关于 Central MCP Host
Central MCP Host 使用 Docker、Traefik 和 SuperGateway,在家庭实验室集中运行多个 MCP 服务。它适合希望避免在每台机器分别部署服务的用户,并支持按配置档选择服务。
主要功能
- 01集中托管多个 MCP 服务
- 02Traefik 按路径路由请求
- 03SuperGateway 转换 stdio 与 SSE
- 04按配置档启动指定服务
- 05提供 Traefik 监控面板
适用场景
- 01在家庭实验室运行 Notion、Linear 和 GitHub 服务
- 02为 MCP 客户端提供 SSE 端点
- 03只启动所需的 MCP 服务
MCP 相关
它托管 Notion、Linear、GitHub 和 Memory Bank 的 MCP 服务,并通过 SuperGateway 将 stdio 转为 SSE,向 MCP 客户端提供 HTTP 端点。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Central MCP Host
本项目使用 Docker、Traefik 和 SuperGateway,为 Model Context Protocol(MCP)服务提供集中式托管环境。
概述
此配置运行 Traefik 反向代理,将请求路由到各个 MCP 服务。SuperGateway 用于在 stdio 和 SSE 传输方式之间转换,使 MCP 服务能够通过 SSE 与客户端通信。
包含的 MCP 服务
- Notion:与 Notion 数据库和页面交互
- Linear:与 Linear 工单交互
- GitHub:与 GitHub 仓库、议题和拉取请求交互
- Memory Bank:用于记录项目笔记、思路轨迹和经验的工具
前提条件
- Docker 和 Docker Compose
- Notion API 令牌
- Linear API 令牌
- GitHub API 令牌
设置
- 克隆此仓库
- 将
.env.example文件复制为.env,并填入你的 API 令牌:cp .env.example .env # Edit .env with your API tokens - 启动服务:
docker compose up -d
Docker Compose 结构
本项目采用模块化的 Docker Compose 结构:
docker-compose.yml:主文件,包含 Traefik 配置,并引用特定服务的文件docker-compose/github.yml:GitHub MCP 服务配置docker-compose/notion.yml:Notion MCP 服务配置docker-compose/memory-bank.yml:Memory Bank MCP 服务配置docker-compose/linear.yml:Linear MCP 服务配置
这种模块化方式使你能够:
- 启动所有服务:
docker compose up -d(使用.env中设置的默认all配置文件) - 使用配置文件启动特定服务:
- 仅启动 GitHub:
docker compose --profile github up -d - 仅启动 Notion:
docker compose --profile notion up -d - 仅启动 Memory Bank:
docker compose --profile memory-bank up -d - 仅启动 Linear:
docker compose --profile linear up -d - 显式启动所有服务:
docker compose --profile all up -d
- 仅启动 GitHub:
- 只需在
docker-compose目录中创建新文件,即可轻松添加新服务
注意: 本项目遵循现代 Docker Compose 实践,不使用
version键,因为 Docker Compose V2 及更高版本已不再需要该键。
注意: 网络配置仅在主
docker-compose.yml文件中定义,以避免冲突。所有服务都会引用此网络,但不会重新定义它。
注意: 默认配置文件通过
COMPOSE_PROFILES环境变量在.env文件中设置为all,因此你可以直接运行docker compose up,无需显式指定配置文件。
访问服务
服务启动后,你可以通过各工具对应的路径路由访问服务。
基于路径的路由
- Traefik 控制面板:http://$HOSTNAME/dashboard/
- Notion MCP 服务:
- SSE 端点:http://$HOSTNAME/notion/sse
- 消息端点:http://$HOSTNAME/notion/message
- GitHub MCP 服务:
- SSE 端点:http://$HOSTNAME/github/sse
- 消息端点:http://$HOSTNAME/github/message
- Linear MCP 服务:
- SSE 端点:http://$HOSTNAME/linear/sse
- 消息端点:http://$HOSTNAME/linear/message
- Memory-bank MCP 服务:
- SSE 端点:http://$HOSTNAME/memory-bank/sse
- 消息端点:http://$HOSTNAME/memory-bank/message
工作原理
SuperGateway
SuperGateway 用于在 stdio 和 SSE 传输方式之间转换:
- 在容器中安装 SuperGateway
- 使用
--stdio标志运行 MCP 服务命令 - 暴露用于 SSE 连接和发送消息的 HTTP 端点
Traefik 配置
Traefik 配置用于:
- 根据路径前缀路由请求,例如(
/notion、/github、/dashboard) - 在转发到相应服务之前移除路径前缀
- 设置适当的配置,确保连接不会中断
- 提供用于监控的控制面板
测试配置
你可以使用 MCP Inspector 测试此配置:
npx @modelcontextprotocol/inspector node build/index.js
故障排除
- 路径路由问题:检查 traefik 标签中的路径前缀、SuperGateway 的 baseUrl 选项以及 strip 中间件配置
- MCP 服务错误:检查容器日志:
docker compose logs -f notion-gateway docker compose logs -f github-gateway - SuperGateway 问题:确保 MCP 服务命令正确,且软件包存在于 node 注册表中——有些软件包在 mcp 和 node 注册表中的名称不同。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。