多服务协议中枢

@AdamPippert/multi-service-mcp-server
0 Stars 458 次浏览 AdamPippert 更新于 2026-08-23

一个实现模型上下文协议标准的模块化服务器,提供通过统一网关与GitHub、GitLab、Google地图、内存存储和网络自动化交互的工具。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

Model Context Protocol (MCP) 服务器

一个实现 Model Context Protocol 标准的模块化服务器,提供用于 GitHub、GitLab、Google Maps、内存存储和 Puppeteer 网页自动化的工具。

架构

MCP 服务器采用模块化架构构建,每个工具都作为一个独立的模块实现。服务器提供了一个统一的网关,将请求路由到适当的工具。

MCP 服务器架构

特性

  • MCP 网关:遵循 MCP 标准的所有工具请求的统一端点
  • MCP 清单:描述所有可用工具及其功能的端点
  • 直接工具访问:每个工具都可以通过其自己的 API 端点直接访问
  • 模块化设计:根据需要轻松添加或移除工具

包含的工具

  1. GitHub 工具:与 GitHub 仓库、问题和搜索交互
  2. GitLab 工具:与 GitLab 项目、问题和流水线交互
  3. Google 地图工具:地理编码、路线规划和地点搜索
  4. 内存工具:持久地存储和检索数据
  5. Puppeteer 工具:截图、生成 PDF 和从网站中提取内容

开始使用

前提条件

  • Python 3.8 或更高版本
  • Node.js 14 或更高版本
  • 一个基于 Red Hat 的 Linux 发行版(RHEL、CentOS、Fedora)或任何 Linux/macOS 系统

安装

  1. 克隆此仓库:

    git clone https://github.com/yourusername/mcp-server.git
    cd mcp-server
    
  2. 安装 Python 依赖项:

    pip install -r requirements.txt
    
  3. 安装 Node.js 依赖项:

    npm install
    
  4. 创建一个包含配置的 .env 文件:

    SECRET_KEY=your-secret-key
    DEBUG=False
    
    # GitHub 配置
    GITHUB_TOKEN=your-github-token
    
    # GitLab 配置
    GITLAB_TOKEN=your-gitlab-token
    
    # Google 地图配置
    GMAPS_API_KEY=your-google-maps-api-key
    
    # 内存配置
    MEMORY_DB_URI=sqlite:///memory.db
    
    # Puppeteer 配置
    PUPPETEER_HEADLESS=true
    CHROME_PATH=/usr/bin/chromium-browser
    
  5. 启动服务器:

    python app.py
    

容器化部署

您可以使用 Docker 或 Podman(Red Hat 的容器引擎)来运行服务器。

Docker 部署

如果您已经安装了 Docker 和 docker-compose:

  1. 构建 Docker 镜像:

    docker build -t mcp-server .
    
  2. 运行容器:

    docker run -p 5000:5000 --env-file .env mcp-server
    
  3. 或者,使用 docker-compose:

    创建一个 docker-compose.yml 文件:

    version: '3'
    services:
      mcp-server:
        build: .
        ports:
          - "5000:5000"
        volumes:
          - ./data:/app/data
        env_file:
          - .env
        restart: unless-stopped
    

    然后运行:

    docker-compose up -d
    

Podman 部署

对于基于 Red Hat 的系统(RHEL、CentOS、Fedora)使用 Podman:

  1. 构建容器镜像:

    podman build -t mcp-server .
    
  2. 运行容器:

    podman run -p 5000:5000 --env-file .env mcp-server
    
  3. 如果需要持久化存储:

    mkdir -p ./data
    podman run -p 5000:5000 --env-file .env -v ./data:/app/data:Z mcp-server
    

    注意:在启用了 SELinux 的系统上,-v 参数后面的 :Z 后缀非常重要。

  4. 使用 Podman Compose(如果已安装):

    # 如有需要,安装 podman-compose
    pip install podman-compose
    
    # 使用与上述相同的 docker-compose.yml 文件
    podman-compose up -d
    

使用 MCP 服务器

MCP 网关

MCP 网关是访问所有使用 MCP 标准工具的主要端点。

端点: POST /mcp/gateway

请求格式:

{
  "tool": "github",
  "action": "listRepos",
  "parameters": {
    "username": "octocat"
  }
}

响应格式:

{
  "tool": "github",
  "action": "listRepos",
  "status": "success",
  "result": [
    {
      "id": 1296269,
      "name": "Hello-World",
      "full_name": "octocat/Hello-World",
      "owner": {
        "login": "octocat",
        "id": 1
      },
      ...
    }
  ]
}

MCP 清单

MCP 清单描述了所有可用工具及其功能。

端点: GET /mcp/manifest

响应格式:

{
  "manifestVersion": "1.0",
  "tools": {
    "github": {
      "actions": {
        "listRepos": {
          "description": "List repositories for a user or organization",
          "parameters": {
            "username": {
              "type": "string",
              "description": "GitHub username or organization name"
            }
          },
          "returns": {
            "type": "array",
            "description": "List of repository objects"
          }
        },
        ...
      }
    },
    ...
  }
}

直接工具访问

每个工具也可以通过其自己的 API 端点直接访问:

  • GitHub: /tool/github/...
  • GitLab: /tool/gitlab/...
  • Google 地图: /tool/gmaps/...
  • 内存: /tool/memory/...
  • Puppeteer: /tool/puppeteer/...

有关每个工具的可用端点的详细信息,请参阅 API 文档。

工具文档

GitHub 工具

GitHub 工具提供了对仓库、问题和搜索的 GitHub API 访问。

操作:

  • listRepos: 列出用户或组织的仓库
  • getRepo: 获取特定仓库的详细信息
  • searchRepos: 搜索仓库
  • getIssues: 获取仓库的问题
  • createIssue: 在仓库中创建新问题

GitLab 工具

GitLab 工具提供了对项目、问题和流水线的 GitLab API 访问。

操作:

  • listProjects: 列出认证用户可访问的所有项目
  • getProject: 获取特定项目的详细信息
  • searchProjects: 在 GitLab 上搜索项目
  • getIssues: 获取项目的问题
  • createIssue: 在项目中创建新问题
  • getPipelines: 获取项目的流水线

Google 地图工具

Google 地图工具提供了对地理编码、路线和地点搜索的 Google 地图 API 访问。

操作:

  • geocode: 将地址转换为地理坐标
  • reverseGeocode: 将地理坐标转换为地址
  • getDirections: 获取两个地点之间的路线
  • searchPlaces: 使用 Google Places API 搜索地点
  • getPlaceDetails: 获取特定地点的详细信息

内存工具

内存工具提供了一个持久化的键值存储,用于存储和检索数据。

操作:

  • get: 通过键获取内存项
  • set: 创建或更新内存项
  • delete: 通过键删除内存项
  • list: 列出所有内存项,可选过滤
  • search: 按值搜索内存项

Puppeteer 工具

Puppeteer 工具提供了网页自动化功能,包括截屏、生成 PDF 以及从网站中提取内容。

操作:

  • screenshot: 截取网页的屏幕截图
  • pdf: 生成网页的 PDF
  • extract: 从网页中提取内容

贡献

欢迎贡献!以下是您可以扩展 MCP 服务器的方法:

添加新工具

  1. tools 目录下创建一个新文件,例如 tools/newtool_tool.py
  2. 按照现有工具的模式实现该工具及其操作
  3. 将工具添加到 app.py 中的清单里
  4. tools/__init__.py 中注册工具的蓝图

许可证

本项目根据 MIT 许可证发布 - 详情请参阅 LICENSE 文件。

致谢

相关 MCP 服务