Token导航 LogoToken导航TokenDH.com
MCP Switch logo
安全风控未说明官方级别未说明来源级核验

MCP Switch

MCP Server

一个轻量级的MCP路由器,用于连接AI工具和其他MCP服务器,处理本地OAuth并将请求转发到下游MCP服务器。

工具数

0

提示词数

0

GitHub Stars

2

资源数

0
TypeScriptClaude安全Claude DesktopClaudeCursorVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

BlueprintLabIO

提供方

BlueprintLabIO

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MCP交换机(支持OAuth!)

一个轻量级的MCP路由器,将AI工具(Claude Desktop、Cursor、VS Code)连接到其他MCP服务器。它在本地处理OAuth,并将请求转发给下游MCP。它本身并不实现特定于API的MCP工具包装器。

范围澄清:本项目的责任是路由和认证。如果您需要特定于API的工具(例如Gmail、日历、GitHub问题),请将这些工具作为单独的MCP服务器运行,并将MCP-switch指向它们。避免在此处添加直接的API包装器,以防止重复和范围蠕变。

🚀 快速开始

# 1. Clone and install
git clone https://github.com/BlueprintDesignLab/mcp-switch
cd mcp-switch
npm install

# 2. Authenticate with providers (opens browser)
npm run auth:google
npm run auth:github
npm run auth:slack

# 3. Start the gateway
npm start
# Server running on http://localhost:8042

# 4. Configure your AI client (see below)

就是这样! 无需创建OAuth应用程序,无需下载凭据,无需复杂的配置。

📋 这有什么作用

  • 单一网关:将请求从客户端路由到一个或多个下游MCP服务器
  • OAuth自动化:处理令牌刷新、PKCE流、提供程序怪癖(适用于需要OAuth的MCP)
  • 本地和私人:您计算机上加密存储的所有令牌
  • 多客户端:多个AI客户端共享同一服务器实例
  • 超出范围:实施特定于API的MCP工具;为此目的构建或重用专用MCP服务器
Claude Desktop ──┐
                 ├── HTTP ──▶ MCP Switch (this repo) ──▶ Downstream MCP servers
VS Code      ────┤                 (localhost:8042)       (e.g., Gmail MCP, GitHub MCP)
                 │
Cursor       ────┘

📦 依赖项

核心依赖关系

{
  "@modelcontextprotocol/sdk": "^1.0.0",
  "express": "^4.18.0",
  "googleapis": "^131.0.0",
  "@octokit/rest": "^20.0.0",
  "@slack/web-api": "^7.0.0",
  "@notionhq/client": "^2.2.0",
  "open": "^10.0.0"
}

预先注册的OAuth应用程序

  • 谷歌:日历、Gmail、驱动器API(默认为只读)
  • GitHub:存储库、问题、档案(公共数据+授权私人数据)
  • Slack:频道、消息、文件(您授权的工作区)
  • 概念:数据库、页面(与集成共享的页面)

系统要求

  • Node.js 18+ (用于ES模块和本机获取)
  • macOS/Linux/Windows (跨平台)
  • 端口8042 可用(可配置)

🔧 安装

1. 提供商身份验证 (如果下游MCP需要OAuth)

仅使用附带的身份验证脚本来获取访问依赖OAuth的下游MCP服务器所需的本地令牌。请勿在此处添加直接的API功能。

谷歌

npm run auth:google
# Opens browser → Sign in → Allow permissions → Done!

GitHub

npm run auth:github  
# Opens browser → Sign in → Allow permissions → Done!
如果需要提供商的功能,请运行或安装其专用MCP服务器,并配置MCP交换机以路由到该服务器。

2. 客户端配置

克劳德桌面

// ~/.config/claude-desktop/config.json
{
  "mcpServers": {
    "oauth-gateway": {
      "url": "http://localhost:8042"
    }
  }
}

VS代码/光标

// settings.json
{
  "mcp.servers": {
    "oauth-gateway": {
      "url": "http://localhost:8042"
    }
  }
}

🔐 安全架构

威胁模型

  • 资产:连接服务的OAuth访问/刷新令牌
  • 边界:您的本地计算机(受信任的环境)
  • 风险:通过恶意软件窃取令牌、意外暴露、令牌重放

安全控制

1. 令牌加密 (AES-256-GCM)

// tokens.json is encrypted at rest
{
  "google": {
    "encrypted": "a1b2c3d4...",
    "iv": "random_iv",
    "authTag": "auth_tag"
  }
}

2. 所有 OAuth 流的 PKCE

// RFC 7636 - prevents authorization code interception
const codeChallenge = crypto
  .createHash('sha256')
  .update(randomCodeVerifier)
  .digest('base64url');

3. 最小范围

// Request only necessary permissions
const googleScopes = [
  'https://www.googleapis.com/auth/calendar.readonly',
  'https://www.googleapis.com/auth/drive.readonly'
  // NO write permissions by default
];

4. 令牌自动刷新

// Refresh tokens before expiry
if (token.expires_at - Date.now() > .gitignore
echo ".env" >> .gitignore

🚨 常见问题

服务器问题

# Port 8042 already in use
# Fix: Use different port
PORT=8043 npm start

# Server won't start
# Check: Node.js version
node --version  # Should be 18+

OAuth错误

# "Browser didn't open"
# Fix: Manual browser navigation
npm run auth:google --manual

# "Token expired"  
# Fix: Re-authenticate with provider
npm run auth:google

MCP连接问题

# Claude can't connect
# Check: Server is running
curl http://localhost:8042/health

# Should return: {"status": "ok"}

🔍 运作原理

建筑

MCP Client ──HTTP/SSE──▶ MCP Switch (router) ──HTTP/SSE──▶ Downstream MCP servers
(Claude/Cursor/VS Code)      (Express)                 (e.g., Gmail MCP, GitHub MCP)

请求流

  1. MCP客户端 通过HTTP POST调用工具 /message
  2. 网关 验证请求并检查令牌
  3. OAuth逻辑 自动刷新过期的令牌
  4. 供应商API 使用有效的Bearer令牌调用
  5. 响应 通过服务器发送的事件流式传输

令牌流

  1. 初始身份验证:用户运行 npm run auth:google → 浏览器OAuth流
  2. 令牌存储:本地加密的访问/刷新令牌
  3. 自动刷新:令牌在到期前自动刷新
  4. 共享实例:所有MCP客户端使用相同的服务器和令牌

📚 发展

项目结构

src/
├── server.js           # Express server + MCP SSE transport
├── providers/
│   ├── google.js       # Google OAuth + API integration
│   ├── github.js       # GitHub OAuth + API integration  
│   └── base.js         # Shared provider interface
├── oauth/
│   ├── manager.js      # OAuth flow orchestration
│   ├── storage.js      # Encrypted token storage
│   └── pkce.js         # PKCE implementation
└── tools/
    └── registry.js     # MCP tool registration

开发命令

npm start               # Start server (production)
npm run dev             # Start with hot reload
npm run test            # Run test suite

添加新目的地

  • 为下游MCP服务器添加路由目标;不要添加直接的API包装。
  • 公开配置以将工具命名空间映射到外部MCP端点。
  • 将OAuth处理限制在达到这些MCP所需的范围内。

📜 许可证

MIT许可证-请参阅 许可证 了解详情。

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支: git checkout -b feature/new-provider
  3. 添加测试: npm run test
  4. 提交拉取请求

⚠️ 免责声明

这是一个供个人使用的开发工具。在使用敏感数据之前,请先查看代码。每个OAuth提供者都有自己的服务条款,您必须遵守。

目录标签

目录标签

TypeScriptClaude安全MCP路由本地部署OAuth处理AI工具集成本地加密存储多客户端支持

支持客户端

Claude DesktopClaudeCursorVS Code

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP