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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions