Skip to content

mcp-oauth 包名冲突导致依赖项目构建失败 #286

@xuruoyu1979

Description

@xuruoyu1979

Issue: mcp-oauth 包名冲突导致依赖项目构建失败

问题描述

packages/mcp-oauth 包存在于 Poe monorepo 中,提供 OAuth 功能,但未发布到 npm。npm 上已存在同名包 mcp-oauth@1.0.0(punkpeye 的 MCP SSE proxy),导致依赖该包的项目从 npm 安装了错误的包,构建失败。

根本原因

包名冲突

  • Poe monorepo 中的 mcp-oauth@0.0.1:提供 OAuth 功能

    • 导出:createLoopbackAuthorizationSession, generateCodeChallenge, generateCodeVerifier
    • 位置:packages/mcp-oauth
    • 状态:未发布到 npm
  • npm 上的 mcp-oauth@1.0.0:punkpeye 的 MCP SSE proxy

依赖链

opencode-poe-auth@0.0.1 → poe-oauth@0.0.7 → mcp-oauth: "*"

poe-oauth 依赖 mcp-oauth: "*" 时,包管理器从 npm 安装了错误的 mcp-oauth@1.0.0,导致构建失败。

影响

受影响项目

  • OpenCode(已集成 opencode-poe-auth 作为内置插件)
  • 任何依赖 poe-oauthopencode-poe-auth 的项目

构建错误示例

error: No matching export in "mcp-oauth/dist/index.js" for import "createLoopbackAuthorizationSession"
error: No matching export in "mcp-oauth/dist/index.js" for import "generateCodeChallenge"
error: No matching export in "mcp-oauth/dist/index.js" for import "generateCodeVerifier"

建议解决方案

方案 1:发布正确的包到 npm(推荐)

  • packages/mcp-oauth 发布到 npm
  • 版本号建议使用 0.0.1 或更高
  • 确保 package.json 中的名称、版本、描述准确

方案 2:更改包名避免冲突

  • packages/mcp-oauth 重命名为其他名称
  • 例如:poe-mcp-oauth@poe-platform/mcp-oauth
  • 更新所有依赖该包的项目

方案 3:使用 resolutions/overrides

  • 在依赖项目的 package.json 中添加 resolutions 指定正确版本
  • 但这需要上游先发布包

复现步骤

  1. 安装依赖 opencode-poe-authpoe-oauth
  2. 运行构建命令
  3. 包管理器从 npm 安装 mcp-oauth@1.0.0
  4. 构建失败,提示缺少 OAuth 相关导出

具体示例

# 在 OpenCode 项目中
bun install
./packages/opencode/script/build.ts --single

# 错误输出
error: No matching export in "mcp-oauth/dist/index.js" for import "createLoopbackAuthorizationSession"

环境信息

附加信息

OpenCode 临时解决方案
OpenCode 项目已暂时移除 opencode-poe-auth 依赖以避免构建失败:

相关 PR

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions