Add comprehensive documentation for MCPHub including deployment, configuration, and smart routing features (#142)

This commit is contained in:
samanhappy
2025-05-29 15:44:39 +08:00
committed by GitHub
parent e2c5cc8ed1
commit 80c6aae116
15 changed files with 179 additions and 273 deletions

BIN
articals/assets/sr-conf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
articals/assets/sr-dc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
articals/assets/sr-time.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
articals/assets/sr-web.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

73
articals/intro.md Normal file
View File

@@ -0,0 +1,73 @@
# 如何一键部署你的专属 MCP 服务
随着 MCP 逐渐成为行业事实标准,如何高效搭建和管理多个 MCP 服务已成为个人开发者面临的主要挑战。本文将介绍一种简便的解决方案,帮助您快速构建自己的 MCP 服务。
## 什么是 MCP
模型上下文协议Model Context ProtocolMCP是由 Anthropic 推出的开放标准旨在为大型语言模型LLMs提供标准化接口使其能够直接连接外部数据源和工具。简言之MCP 如同 AI 应用的 USB-C 接口,统一解决了数据孤岛和定制化集成的问题。
通过 MCPAI 模型不仅可以实时获取最新信息,还能调用外部工具完成各类任务,实现跨平台、跨数据源的无缝交互,大幅提升 AI 应用的实用性和灵活性。
## 当下的 MCP 生态
尽管 MCP 的标准化接口为 AI 应用开发提供了便利,但在实际应用中,如何快速搭建和高效管理多个 MCP 服务仍然是一个不小的挑战。MCPHub 正是为解决这一痛点而诞生,它提供了集中管理和动态配置的解决方案,让个人开发者能够轻松应对多样化的需求,无需深入了解每个服务的具体实现细节。
## 一键部署,轻松满足个人需求
对于个人开发者而言繁琐的部署流程常常成为创新的绊脚石。MCPHub 的最大亮点在于其"一键部署"功能:
- **极简部署**:只需一条 Docker 命令,即可在几分钟内启动完整的 MCPHub 服务,快速搭建专属 MCP 服务平台,满足个人项目或实验室环境的各种需求。
- **动态扩展**:在使用过程中,您可以随时通过 Web 仪表盘添加、移除或调整 MCP 服务器配置,无需重启整个系统。这种灵活性不仅适用于个人开发测试,也为未来功能扩展提供了无限可能。
- **标准化接口**:基于 MCP 标准,您的服务可以无缝对接各种 AI 工具,无论是 Claude Desktop、Cursor 还是其他定制化应用,都能通过统一接口调用外部数据或执行工具操作,实现真正的多源协同工作流程。
## 快速上手指南
下面,我们将以一个实例演示如何使用 MCPHub 快速搭建基于高德地图 MCP 服务的行程规划助手。
### 使用 Docker 部署
执行以下命令,即可在本地快速启动 MCPHub 服务:
```bash
docker run -p 3000:3000 samanhappy/mcphub
```
### 访问仪表盘
MCPHub 已内置多个常用 MCP 服务如高德地图、GitHub、Slack、Fetch、Tavily、Playwright 等,开箱即可使用。在浏览器中打开 `http://localhost:3000`,直观的仪表盘将实时显示各个 MCP 服务器的状态,让您轻松管理和监控服务运行情况。
![仪表盘预览](../assets/dashboard.png)
可以看到这些 MCP 服务都已成功连接并正常运行。
### 配置高德地图
由于高德地图的 MCP 服务需要 API Key我们需要在仪表盘中进行配置。点击 amap-maps 右侧的 Edit 按钮,在弹出窗口的环境变量部分配置高德地图的 API Key。
![配置高德地图](../assets/amap-edit.png)
点击保存后MCP Hub 将自动重启高德地图的 MCP 服务,使新配置生效。
### 配置 MCP Hub SSE
MCP Hub 提供了单一聚合的 MCP Server SSE 端点:`http://localhost:3000/sse`,可在任意支持 MCP 的客户端中配置使用。这里我们选择开源的 Cherry Studio 进行演示。
![配置 Cherry Studio](../assets/cherry-mcp.png)
配置成功后,可用工具列表中将显示所有高德 MCP 服务支持的工具功能。
### 使用高德地图 MCP 服务
现在,我们可以在 Cherry Studio 中使用高德地图的 MCP 服务了。选择智源的 Qwen2.5-7B-Instruct 模型,并确保启用 MCP Server 开关,然后输入:"我明天要从南京去上海旅游,晚上想住在外滩附近,帮我规划一下交通和酒店行程",点击发送按钮。
![高德地图行程规划](../assets/amap-result.png)
可以看到Cherry Studio 在回答过程中调用了高德地图 MCP 服务的多个工具,包括坐标解析、路线规划、周边搜索等,从而实现了一个更强大的行程规划助手。
## 结语
MCPHub 的一键部署和动态配置功能,使个人开发者能够轻松搭建和管理多个 MCP 服务极大地提升了开发效率和应用灵活性。无论是个人项目还是实验室环境MCPHub 都能提供高效、便捷的解决方案。
随着 MCP 生态的不断扩展我们将持续增加更多服务和功能为开发者提供更加丰富的工具集。MCPHub 完全开源,采用 MIT 许可证,项目地址 [https://github.com/samanhappy/mcphub](https://github.com/samanhappy/mcphub),期待您的体验与反馈,共同推动 MCP 生态的繁荣发展!

232
articals/intro2.md Normal file
View File

@@ -0,0 +1,232 @@
# 本地部署、一键安装、分组路由MCPHub 重塑 MCP 服务器体验
## 概述
现代 AI 应用场景中将大模型LLM与各种数据源和工具无缝对接往往需要手动编写大量胶水代码并且无法快速复用。MCPModel Context Protocol协议由 Anthropic 在 2024 年开源旨在提供类似“USBC”接口般的标准化通信方式简化 AI 助手与内容仓库、业务系统等的集成流程。然而MCP 服务器部署常常需要大量环境依赖、手动配置及持续运行开发者常因安装和配置耗费大量时间和精力。MCPHub 作为一款开源的一站式聚合平台,通过直观的 Web UI、Docker 镜像和热插拔配置,实现本地或容器里的“一键安装”与“分组路由”,大幅降低 MCP 服务器的使用门槛和运维成本​。
## MCPHub 是什么
### MCP 协议简介
Model Context ProtocolMCP是一种开放标准类似“USBC”接口为 AI 助手与内容仓库、业务系统和第三方服务之间提供统一通信协议。它支持 stdio 与 SSE最新协议中被 Streamable HTTP 取代两种通信方式既能满足实时流式数据交换也可用于批量任务。2024 年由 Anthropic 团队开源发布后MCP 已在各类 AI 客户端(如 Claude Desktop中得到应用成功实现与 GitHub、Slack、网页自动化工具等的无缝对接。
### MCPHub 项目概览
MCPHub 是一个统一的 MCP 服务器聚合平台,内置 MCP 服务器市场实现一键安装。前端基于 React、Vite 和 Tailwind CSS 构建,后端兼容任意使用 npx 或 uvx 命令启动的 MCP 服务器。它通过一个集中式 Dashboard 实时展示各服务器的运行状态,并支持在运行时热插拔增删改服务器配置,无需停机维护。支持分组式访问控制,可以通过独立的 SSE 端点访问不同的 MCP 服务器组合,管理员可灵活定义不同团队或环境的权限策略。官方提供 Docker 镜像,仅需一条命令即可快速启动本地或云端服务。
![MCPHub 控制面板](../assets/dashboard.zh.png)
## 为什么要使用 MCPHub
### 1. 复杂的环境依赖与配置
- MCP 服务器常依赖 Node.js、Python 等多种运行时,需手动维护大量命令、参数和环境变量。
- MCPHub 内置 MCP 服务器市场,包含众多常用 MCP 服务器,支持一键安装和自动配置,简化了环境搭建过程。
- 通过 Docker 部署MCPHub 可在任何支持 Docker 的平台上运行,避免了环境不一致的问题。
![MCPHub 市场](../assets/market.zh.png)
### 2. 持续运行的服务压力
- MCP 要求长连接服务常驻内存,重启或升级时需要人工干预,缺乏弹性。
- 借助 Docker 容器化部署MCPHub 可快速重建环境,享受容器带来的弹性与隔离优势。
### 3. 路由与分组管理缺乏统一视图
- 传统方式下,很难可视化地将不同 MCP 服务按场景分类,容易造成 token 浪费和工具选择精度下降。
- MCPHub 支持动态创建分组(如“地图检索”、“网页自动化”、“聊天”等),为每个分组生成独立的 SSE 端点,实现各类用例的隔离与优化。
![MCPHub 分组](../assets/group.zh.png)
## 如何使用 MCPHub
### 快速部署
```bash
docker run -p 3000:3000 samanhappy/mcphub
```
一条命令就可以在本地快速启动 MCPHub默认监听 3000 端口。
MCPHub 使用`mcp_settings.json`保存所有服务器、分组和用户的配置。你可以创建一个 `mcp_settings.json` 文件,并将其挂载到 Docker 容器中,以便在重启时保留配置。
```json
{
"mcpServers": {
"amap": {
"command": "npx",
"args": ["-y", "@amap/amap-maps-mcp-server"],
"env": {
"AMAP_MAPS_API_KEY": "your-api-key"
}
},
"time-mcp": {
"command": "npx",
"args": [
"-y",
"time-mcp"
]
},
"sequential-thinking": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sequential-thinking"
]
}
}
}
```
然后挂载配置文件启动:
```bash
docker run -p 3000:3000 -v $(pwd)/mcp_settings.json:/app/mcp_settings.json samanhappy/mcphub
```
> 注意首次运行时MCPHub 会自动下载并安装所需的依赖包,可能需要一些时间。
### 访问控制台
启动后访问 `http://localhost:3000` 即可进入控制台。
> 默认登录用户名和密码为 `admin`/`admin123`,登录后可以修改密码以确保安全。
控制台提供了服务器管理、分组管理和市场管理等功能,你可以在这里查看所有已安装的 MCP 服务器、创建新的分组、添加或删除服务器等。
### 分组路由 & SSE 端点
#### 全局 SSE 端点
```
http://localhost:3000/sse
```
通过全局 SSE 端点可以访问所有已启用的 MCP 服务器。
#### 基于分组的 SSE 端点
除了全局 SSE 端点MCPHub 还支持基于分组的 SSE 端点。你可以为每个分组创建独立的 SSE 端点,以便更好地管理和路由请求。
分组的 SSE 端点格式如下:
```
http://localhost:3000/sse/{groupId}
```
其中 `{groupId}` 是分组的唯一标识符,可以从控制台获取。比如我在上面的截图中创建了一个名为 `map` 的分组,选择了 `amap``sequential-thinking` 两个服务器,那么可以通过以下 URL 访问这个分组的 SSE 端点:
```
http://localhost:3000/sse/a800bef7-c4c1-4460-9557-5f4404cdd0bd
```
#### 使用分组路由
创建了路由分组后,我们就可以在任意支持 MCP 的客户端中使用这个分组的 SSE 端点了。比如在 `Cursor` 中,我们可以在配置文件中指定分组的 SSE 端点:
```json
{
"mcpServers": {
"mcphub": {
"url": "http://localhost:3000/sse/a800bef7-c4c1-4460-9557-5f4404cdd0bd"
}
}
}
```
配置完成后,可以从 `Cursor` 中看到所有可用的 MCP 服务器工具列表。
![Cursor 中的 MCP 配置](../assets/cursor-mcp.png)
然后,我们可以测试一下,比如输入:深度思考一下,帮我制定一个五一假期从南京出发的自驾行出游计划,要求避开拥堵路线,结合天气情况,并且可以体验到不同的自然风光。
![Cursor 中的测试输入](../assets/cursor-query.png)
接着可以看到,`Cursor` 在运行过程中调用了多个工具。
![Cursor 中的工具调用](../assets/cursor-tools.png)
最终生成结果如下:
```markdown
基于对路线和天气的全面分析,我为你制定了一个四天的五一自驾游行程方案:
### 第一天4月29日南京→黄山
- 出发时间建议早上8点出发
- 行驶路线G42沪蓉高速 → S11巢黄高速
- 行驶时间约4.5小时282公里
- 住宿地点:黄山风景区附近
- 特别提醒:
* 路线多隧道,注意安全
* 天气较好,适合出行
* 建议提前订好黄山景区附近酒店
### 第二天4月30日黄山→婺源
- 游览时间:上午游览黄山景区
- 下午出发前往婺源
- 行驶路线G3京台高速 → G56杭瑞高速
- 行驶时间约2.5小时139公里
- 住宿地点:婺源县城或特色古村落
- 特别提醒:
* 注意天气可能有阵雨
* 建议游览篁岭、李坑等著名古村落
### 第三天5月1日婺源→景德镇
- 上午游览婺源景点
- 中午后出发前往景德镇
- 行驶路线G56杭瑞高速
- 行驶时间约1.5小时77公里
- 住宿地点:景德镇市区
- 特别提醒:
* 可能遇到阵雨天气
* 建议参观陶瓷博物馆和古窑址
### 第四天5月2日景德镇→南京
- 建议上午游览景德镇景点
- 中午后出发返回南京
- 行驶路线G35济广高速 → G4211宁芜高速
- 行驶时间约5小时429公里
- 特别提醒:
* 路程较长,建议做好休息安排
* 注意途中加油站分布
* 建议错峰返程,避免拥堵
### 整体建议:
1. 避堵建议:
- 选择错峰出行时间
- 提前查看实时路况
- 准备备选绕行路线
2. 安全建议:
- 全程多雨,注意雨天行车安全
- 保持车距,谨慎驾驶
- 途经隧道较多,注意灯光使用
3. 行程准备:
- 提前预订住宿
- 准备雨具和应急用品
- 建议下载离线地图
- 检查车况,特别是雨刮和轮胎
4. 景点安排:
- 黄山:建议游览迎客松、光明顶等
- 婺源:篁岭、李坑、江岭等
- 景德镇:陶瓷博物馆、古窑民俗博览区
这条路线可以让你体验到:
- 黄山的壮丽山景
- 婺源的田园风光
- 景德镇的人文历史
既避开了主要拥堵路段,又能欣赏到不同的自然风光。
```
可以看到,`Cursor` 通过调用 `amap``sequential-thinking` 两个服务器,成功生成了一个五一假期的自驾游行程方案,并且避开了拥堵路线,结合了天气情况。但是细心的同学可能发现,计划中的开始时间是 4 月 29 日,而今年的五一假期是 5 月 1 日开始的,产生偏差的原因是 `sequential-thinking` 使用了错误的假期时间。如何解决这个问题呢?我们可以尝试在分组中添加支持搜索的 MCP 服务器,这样就可以在查询时自动纠正错误的假期时间了,具体就不在这里展开了。
## 结语
MCPHub 将本地部署、一键安装、分组路由和可视化管理融为一体,以简洁而强大的设计,彻底解决了 MCP 服务器的部署、配置与运维难题。无论是追求快速验证的开发者,还是需要稳定可靠 AI 工具链的企业用户,都能通过 MCPHub 专注于核心业务与创新,而无需被底层细节所困扰。
尽管目前各家平台都在陆续推出各类 MCP 云服务但在数据隐私、合规性和定制化需求日益增长的背景下MCPHub 仍然是一个值得关注的本地部署解决方案​。
MCPHub 只是我一时兴起开发的小项目,没想到竟收获了这么多关注,非常感谢大家的支持!目前 MCPHub 还有不少地方需要优化和完善我也专门建了个交流群方便大家交流反馈。如果你也对这个项目感兴趣欢迎一起参与建设项目地址为https://github.com/samanhappy/mcphub。
![企业微信交流群](../assets/wegroup.jpg)

177
articals/smart-routing.md Normal file
View File

@@ -0,0 +1,177 @@
# 无限工具智能路由MCPHub 引领 AI 工具使用新范式
## 概述
在现代 AI 应用中,随着 MCP 服务器数量的快速增长和工具种类的不断丰富,如何从数百个可用工具中快速定位最适合当前任务的工具,成为开发者和 AI 助手面临的一项重要挑战。
传统做法要么将所有工具暴露给 AI 助手处理,导致 token 消耗巨大、响应延迟严重;要么依赖开发者手动分组配置,灵活性和智能性不足。
MCPHub 推出的智能路由功能,基于向量语义搜索技术,实现了自然语言驱动的工具发现与精准推荐。它让 AI 助手能够像人类专家一样,根据任务描述自动选择最优工具组合,大幅提升了系统效率和用户体验。
## 什么是智能路由
### 技术原理
智能路由是 MCPHub 的核心功能之一。它将每个 MCP 工具的名称和描述嵌入为高维语义向量。当用户发起自然语言任务请求时,系统会将该请求也转换为向量,通过计算相似度,快速返回最相关的工具列表。
这一过程摒弃了传统的关键词匹配,具备更强的语义理解能力,能够处理自然语言的模糊性和多样性。
### 核心组件
- **向量嵌入引擎**:支持如 `text-embedding-3-small``bge-m3` 等主流模型,将文本描述转为语义向量。
- **PostgreSQL + pgvector**:使用开源向量数据库方案,支持高效的向量索引和搜索。
- **两步工作流分离**
- `search_tools`:负责语义工具发现
- `call_tool`:执行实际工具调用逻辑
## 为什么需要智能路由
### 1. 减少认知负荷
- 当工具数量超过 100 个AI 模型难以处理所有工具上下文。
- 智能路由通过语义压缩,将候选工具缩小至 510 个,提高决策效率。
### 2. 显著降低 token 消耗
- 传统做法传入全量工具描述,可能消耗上千 token。
- 使用智能路由,通常可将 token 使用降低 7090%。
### 3. 提升调用准确率
- 理解任务语义:如“图片增强”→选择图像处理工具,而不是依赖命名关键词。
- 上下文感知:考虑输入/输出格式和工具组合能力,匹配更合理的执行链路。
## 智能路由配置指南
### 1. 启动支持 `pgvector` 的 PostgreSQL 数据库
```bash
docker run --name mcphub-postgres \
-e POSTGRES_DB=mcphub \
-e POSTGRES_USER=mcphub \
-e POSTGRES_PASSWORD=your_password \
-p 5432:5432 \
-d pgvector/pgvector:pg17
```
如已部署 PostgreSQL可直接创建数据库并启用 `pgvector` 扩展:
```sql
CREATE DATABASE mcphub;
CREATE EXTENSION vector;
```
### 2. 获取 embedding 模型的 API Key
前往 OpenAI 或其他提供商获取嵌入模型的 API Key。国内用户推荐使用硅基流动 `bge-m3` 免费模型,没有注册过的用户可以使用我的邀请链接:[https://cloud.siliconflow.cn/i/TQhVYBvA](https://cloud.siliconflow.cn/i/TQhVYBvA)。
### 3. 控制台配置
![配置](./assets/sr-conf.png)
在 MCPHub 控制台中,进入「智能路由」配置页面,填写以下信息:
- **数据库 URL**`postgresql://mcphub:your_password@localhost:5432/mcphub`
- **OpenAI API Key** :填写你获取的嵌入模型 API Key
- **OpenAI 基础 URL**`https://api.siliconflow.cn/v1`
- **嵌入模型**:推荐使用 `BAAI/bge-m3`
开启「启用智能路由」后系统会自动:
- 对所有工具生成向量嵌入
- 构建向量索引
- 自动监听新增工具,更新索引
## 工具定义
### search_tools - 工具搜索
```ts
{
"name": "search_tools",
"arguments": {
"query": "help me resize and convert images",
"limit": 10
}
}
```
### call_tool - 工具执行
```ts
{
"name": "call_tool",
"arguments": {
"toolName": "image_resizer",
"arguments": {
"input_path": "/path/to/image.png",
"width": 800,
"height": 600
}
}
}
```
## 演示
下面我将通过几个示例来展示如何使用智能路由。
首先,我们需要在 mcphub 添加几个不同类型的 MCP 服务器:`amap``time-map``fetch`
![添加服务器](./assets/sr-servers.png)
然后我们需要选择一个支持 MCP 的客户端,这里选择国产的 DeepChat聊天模型选择 `Qwen3-14B`
接着,在 DeepChat 中添加 mcphub 的智能路由端点:
![添加智能路由](./assets/sr-dc.png)
添加成功后,就可以在工具中看到 `search_tools``call_tool` 两个工具了:
![工具列表](./assets/sr-tools.png)
### 示例 1地图导航
输入:从北京如何导航到上海。
结果:
![地图导航](./assets/sr-map-result.png)
可以看到DeepChat 先调用了 `search_tools` 工具:
![搜索工具](./assets/sr-map-search.png)
然后再调用 `call_tool` 查询具体的导航信息:
![调用工具](./assets/sr-map-call.png)
### 示例 2查询时间
输入:使用工具查询美国现在的时间是几点
结果:
![查询时间](./assets/sr-time.png)
需要说明的是,由于不同的模型对工具调用的支持程度不同,可能会出现一些差异。比如在这个例子中,为了提高准确性,我在输入中明确提到了“使用工具”。
### 示例 3查看网页
输入:打开 baidu.com 看看有什么
结果:
![查看网页](./assets/sr-web.png)
可以看到DeepChat 成功调用了工具,不过由于百度的 robots.txt 限制,无法获取到具体内容。
## 结语
借助 MCPHub 的智能路由功能AI 助手能够更高效地处理复杂任务,显著减少不必要的 token 消耗,同时提升工具调用的准确性与灵活性。作为面向未来的 AI 工具发现与调用基础设施,智能路由不仅使 AI 更聪明地选择和组合工具,还为多 Agent 协同提供了清晰、可控且可扩展的底层能力支撑。
> MCPHub 只是我一时兴起开发的小项目,没想到收获了这么多关注,非常感谢大家的支持!目前 MCPHub 还有不少地方需要优化和完善,我也专门建了个交流群,感兴趣的可以添加下面的微信。
![微信](../assets/wexin.png)
> 同时,欢迎大家一起参与建设!项目地址为:[https://github.com/samanhappy/mcphub](https://github.com/samanhappy/mcphub)。