MCP服务器托管平台

一个基于Docker、Traefik和SuperGateway的集中式Model Context Protocol(MCP)服务器托管环境,支持Notion、Linear、GitHub和Memory Bank等多种服务的交互。

  • by odgrim
  • Shell
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 odgrim/central-mcp-proxy

使用说明

中央MCP主机

该项目使用Docker、Traefik和SuperGateway为模型上下文协议(MCP)服务器提供了一个集中式托管环境。

概述

此设置运行Traefik反向代理,将请求路由到各种MCP服务器。SuperGateway用于在stdio和SSE传输之间进行转换,允许MCP服务器使用SSE与客户端通信。

包括MCP服务器

  • 概念:与Notion数据库和页面交互
  • 线性:与线性票互动
  • GitHub:与GitHub存储库、问题和拉取请求交互
  • 存储体:用于记录项目笔记、思维轨迹和学习的工具

先决条件

  • Docker和Docker Compose
  • 通知API令牌
  • 线性API令牌
  • GitHub API令牌

设置

  1. 克隆此存储库
  2. 复制 .env.example 文件到 .env 并填写您的API令牌:
    cp .env.example .env
    # Edit .env with your API tokens
    
  3. 启动服务:
    docker compose up -d
    

Docker编写结构

该项目使用模块化的Docker Compose结构:

  • docker-compose.yml:包含Traefik配置和对特定服务文件的引用的主文件
  • docker-compose/github.yml:GitHub MCP服务器配置
  • docker-compose/notion.yml:注意MCP服务器配置
  • docker-compose/memory-bank.yml:内存库MCP服务器配置
  • docker-compose/linear.yml:线性MCP服务器配置

这种模块化方法允许您:

  • 启动所有服务: docker compose up -d (使用默认值 all 配置文件已设置 .env)
  • 使用配置文件启动特定服务:
    • 仅限GitHub: docker compose --profile github up -d
    • 仅供参考: docker compose --profile notion up -d
    • 仅限存储库: docker compose --profile memory-bank up -d
    • 仅线性: docker compose --profile linear up -d
    • 所有服务明确: docker compose --profile all up -d
  • 通过在中创建新文件,可以轻松添加新服务 docker-compose 目录

注: 该项目遵循现代Docker Compose实践,省略了 version key,在Docker Compose V2及以上版本中不再需要。

注: 网络配置仅在主目录中定义 docker-compose.yml 文件以避免冲突。所有服务都引用此网络,但不要重新定义它。

注: 默认配置文件设置为 all 在 .env 文件使用 COMPOSE_PROFILES 环境变量,允许您运行 docker compose up 而无需明确指定配置文件。

访问服务

运行后,您可以使用每个工具各自的基于路径的路由访问服务

基于路径的路由

  • Traefik仪表板:http://$HOSTNAME/dashboard/
  • MCP服务器概念:
    • SSE端点:http://$HOSTNAME/concept/SSE
    • 消息端点:http://$HOSTNAME/concept/Message
  • GitHub MCP服务器:
    • SSE端点:http://$HOSTNAME/github/SSE
    • 消息端点:http://$HOSTNAME/github/Message
  • 线性MCP服务器:
    • SSE端点:http://$HOSTNAME/linear/SSE
    • 消息端点:http://$HOSTNAME/linear/Message
  • 存储库MCP服务器:
    • SSE端点:http://$HOSTNAME/内存库/SSE
    • 消息端点:http://$HOSTNAME/内存库/Message

运作原理

超级网关

SuperGateway用于在stdio和SSE传输之间进行转换:

  1. SuperGateway已安装在容器中
  2. 它使用以下命令运行MCP服务器命令 --stdio 旗帜
  3. 它为SSE连接和消息发送公开HTTP端点

Traefik配置

Traefik配置为:

  1. 基于路径前缀路由请求,例如(/notion, /github, /dashboard)
  2. 在转发到相应的服务之前,删除路径前缀
  3. 设置适当的连接,确保连接不会中断
  4. 提供用于监控的仪表板

测试设置

要测试设置,您可以使用MCP检查器:

npx @modelcontextprotocol/inspector node build/index.js

故障排除

  • 路径路由问题:验证traefik标签中的路径前缀、SuperGateway baseUrl选项和条形中间件配置
  • MCP服务器错误:检查容器的日志:
    docker compose logs -f notion-gateway
    docker compose logs -f github-gateway
    
  • SuperGateway问题:确保MCP服务器命令正确,并且该包存在于节点注册表中——一些包在MCP与节点注册表中以不同的名称进行通告。