返回市场
MCPHub

MCPHub

作者:samanhappy1562 星标更新:2025-11-23

项目介绍

MCPHub:统一的模型上下文协议(MCP)服务器中心

English | Français | 中文版

MCPHub通过组织灵活的流式HTTP(SSE)端点,使管理多个MCP(模型上下文协议)服务器变得容易,支持访问所有服务器、单个服务器或逻辑服务器组。

仪表盘预览

🌐 在线演示 & 文档

🚀 特性

  • 广泛的MCP服务器支持: 通过最小配置无缝集成任何MCP服务器。
  • 集中式仪表盘: 从一个简洁的Web UI监控实时状态和性能指标。
  • 灵活的协议处理: 完全兼容stdio和SSE MCP协议。
  • 热插拔配置: 实时添加、移除或更新MCP服务器——无需停机。
  • 基于组的访问控制: 将服务器组织成可定制的组,以简化权限管理。
  • 安全认证: 内置用户管理,基于角色的访问由JWT和bcrypt提供支持。
  • OAuth 2.0 支持:
    • 完整的OAuth支持,用于上游MCP服务器的代理授权能力
    • 新功能: 作为OAuth 2.0授权服务器,供外部客户端(如ChatGPT Web、自定义应用)使用。
  • 环境变量扩展: 在配置中的任何地方使用环境变量进行安全凭证管理。参见环境变量指南
  • Docker就绪: 使用容器化设置即时部署。

🔧 快速开始

配置

创建一个mcp_settings.json文件来自定义您的服务器设置:

{
  "mcpServers": {
    "amap": {
      "command": "npx",
      "args": ["-y", "@amap/amap-maps-mcp-server"],
      "env": {
        "AMAP_MAPS_API_KEY": "your-api-key"
      }
    },
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest", "--headless"]
    },
    "fetch": {
      "command": "uvx",
      "args": ["mcp-server-fetch"]
    },
    "slack": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-slack"],
      "env": {
        你的bot令牌和团队ID
      }
    }
  }
}

OAuth配置(可选)

MCPHub支持OAuth 2.0,用于与上游MCP服务器进行身份验证。参见OAuth特性指南以获取完整步骤。实践中你会遇到两种配置模式:

  • 动态注册服务器(例如Vercel、Linear)发布所有元数据并允许MCPHub自我注册。只需声明服务器URL,MCPHub会处理其余部分。
  • 手动配置的服务器(例如GitHub Copilot)需要您创建一个OAuth应用,并向MCPHub提供颁发的客户端ID/密钥。

动态注册示例:

{
  "mcpServers": {
    "vercel": {
      "type": "sse",
      "url": "https://mcp.vercel.com"
    }
  }
}

手动注册示例:

{
  "mcpServers": {
    "github": {
      "type": "sse",
      "url": "https://api.githubcopilot.com/mcp/",
      "oauth": {
        "clientId": "${GITHUB_OAUTH_APP_ID}",
        "clientSecret": "${GITHUB_OAUTH_APP_SECRET}"
      }
    }
  }
}

对于手动提供商,需在上游控制台创建OAuth应用,设置重定向URI为http://localhost:3000/oauth/callback(或您部署的域名),然后将凭据插入到仪表板或配置文件中。

OAuth授权服务器(新功能)

MCPHub现在可以作为OAuth 2.0授权服务器,允许外部应用程序使用标准OAuth流程安全地访问您的MCP服务器。这对于与ChatGPT Web和其他需要OAuth认证的服务集成特别有用。

启用OAuth服务器:

{
  "systemConfig": {
    "oauthServer": {
      "enabled": true,
      "accessTokenLifetime": 3600,
      "refreshTokenLifetime": 1209600,
      "allowedScopes": ["read", "write"]
    }
  },
  "oauthClients": [
    {
      "clientId": "your-client-id",
      "name": "ChatGPT Web",
      "redirectUris": ["https://chatgpt.com/oauth/callback"],
      "grants": ["authorization_code", "refresh_token"],
      "scopes": ["read", "write"]
    }
  ]
}

关键特性:

  • 标准OAuth 2.0授权码流程
  • 增强安全性的PKCE支持
  • 刷新令牌的能力
  • 兼容ChatGPT Web和其他OAuth客户端

详细设置说明,请参阅OAuth服务器文档

Docker部署

推荐:挂载您的自定义配置:

docker run -p 3000:3000 -v ./mcp_settings.json:/app/mcp_settings.json -v ./data:/app/data samanhappy/mcphub

或者使用默认设置运行:

docker run -p 3000:3000 samanhappy/mcphub

访问仪表盘

打开http://localhost:3000并使用您的凭据登录。

注意:默认凭据是admin / admin123

仪表盘概览

  • 所有MCP服务器的实时状态
  • 启用/禁用或重新配置服务器
  • 组管理以组织服务器
  • 用户管理以控制访问

流式HTTP端点

目前,对流式HTTP端点的支持因不同的AI客户端而异。如果您遇到问题,可以使用SSE端点或等待未来的更新。

连接AI客户端(例如Claude Desktop、Cursor、DeepChat等)通过:

http://localhost:3000/mcp

此端点为所有MCP服务器提供统一的流式HTTP接口。它允许您:

  • 发送请求到任何已配置的MCP服务器
  • 实时接收响应
  • 轻松集成各种AI客户端和工具
  • 对所有服务器使用相同的端点,简化集成过程

智能路由(实验性)

智能路由是MCPHub的智能工具发现系统,它使用向量语义搜索自动找到最相关的工具。

# 搜索所有服务器
http://localhost:3000/mcp/$smart

# 搜索特定组内的服务器
http://localhost:3000/mcp/$smart/{group}

工作原理:

  1. 工具索引:所有MCP工具自动转换为向量嵌入并存储在PostgreSQL中,使用pgvector。
  2. 语义搜索:用户查询被转换为向量并与工具嵌入使用余弦相似度匹配。
  3. 智能过滤:动态阈值确保相关结果无噪声。
  4. 精确执行:找到的工具可以直接执行,带有适当的参数验证。
  5. 组范围限制:可选择限制搜索到特定组内的服务器,以获得专注的结果。

设置要求:

智能路由

要启用智能路由,您需要:

  • PostgreSQL并安装pgvector扩展
  • OpenAI API密钥(或其他兼容的嵌入服务)
  • 在MCPHub设置中启用智能路由

组范围智能路由

您可以结合智能路由和组过滤来仅搜索特定的服务器组:

# 仅搜索生产服务器
http://localhost:3000/mcp/$smart/production

# 仅搜索开发服务器
http://localhost:3000/mcp/$smart/development

这实现了:

  • 专注发现:仅从相关服务器查找工具
  • 环境隔离:按环境(开发、测试、生产)分离工具发现
  • 团队访问:限制工具搜索到特定团队的服务器组

组特定端点(推荐)

组管理

为了有针对性地访问特定的服务器组,使用基于组的HTTP端点:

http://localhost:3000/mcp/{group}

其中{group}是您在仪表盘中创建的组的ID或名称。这允许您:

  • 连接到按用途组织的特定子集的MCP服务器
  • 隔离不同的AI工具,仅访问相关的服务器
  • 实现更细粒度的不同环境或团队的访问控制

服务器特定端点: 为了直接访问单个服务器,使用服务器特定的HTTP端点:

http://localhost:3000/mcp/{server}

其中{server}是要连接的服务器名称。这允许您直接访问特定的MCP服务器。

注意:如果服务器名称和组名称相同,则组名称优先。

SSE端点(未来可能弃用)

连接AI客户端(例如Claude Desktop、Cursor、DeepChat等)通过:

http://localhost:3000/sse

对于智能路由,使用:

# 搜索所有服务器
http://localhost:3000/sse/$smart

# 搜索特定组内的服务器
http://localhost:3000/sse/$smart/{group}

为了有针对性地访问特定的服务器组,使用基于组的SSE端点:

http://localhost:3000/sse/{group}

为了直接访问单个服务器,使用服务器特定的SSE端点:

http://localhost:3000/sse/{server}

🧑‍💻 本地开发

git clone https://github.com/samanhappy/mcphub.git
cd mcphub
pnpm install
pnpm dev

这将以开发模式启动前端和后端,并具有热重载功能。

对于Windows用户,您可能需要分别启动后端服务器和前端:pnpm backend:devpnpm frontend:dev

🛠️ 常见问题

使用Nginx作为反向代理

如果您使用Nginx作为MCPHub的反向代理,请确保在Nginx设置中添加以下配置:

proxy_buffering off

🔍 技术栈

  • 后端: Node.js, Express, TypeScript
  • 前端: React, Vite, Tailwind CSS
  • 认证: JWT & bcrypt
  • 协议: 模型上下文协议SDK

👥 贡献

欢迎任何形式的贡献!

  • 新功能及优化
  • 文档改进
  • 错误报告及修复
  • 翻译及建议

欢迎加入我们的Discord社区,参与讨论和支持。

❤️ 赞助

如果您喜欢这个项目,也许您可以考虑:

ko-fi

🌟 星标历史

星标历史图表

📄 许可证

本项目根据Apache 2.0许可证授权。