首页
学习
活动
专区
圈层
工具
发布
MCP广场 >详情页
多服务协议中枢2026-10-24516分享添加福利群:解决AI开发者的「MCP实战痛点」
一个实现模型上下文协议标准的模块化服务器,提供通过统一网关与GitHub、GitLab、Google地图、内存存储和网络自动化交互的工具。
By AdamPippert
2026-10-24516
github
详情内容

** 注意:由于小型模型存在内存问题,该项目已不再维护。对于MCP服务器,我更倾向于使用独立的容器化服务器提供者,而非单一的路由提供者。代码仍保留在此,以供其他有需要的人尝试此方案。**

模型上下文协议(MCP)服务器

一个实现了模型上下文协议标准的模块化服务器,提供GitHub、GitLab、Google地图、内存存储和Puppeteer网页自动化等工具。

架构

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=你的密钥
    DEBUG=False
    
    # GitHub配置
    GITHUB_TOKEN=你的GitHub令牌
    
    # GitLab配置
    GITLAB_TOKEN=你的GitLab令牌
    
    # Google地图配置
    GMAPS_API_KEY=你的Google地图API密钥
    
    # 内存配置
    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部署

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

  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的系统,: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": "列出用户或组织的仓库",
          "parameters": {
            "username": {
              "type": "string",
              "description": "GitHub用户名或组织名"
            }
          },
          "returns": {
            "type": "array",
            "description": "仓库对象列表"
          }
        },
        ...
      }
    },
    ...
  }
}

直接工具访问

每个工具也可以通过其自己的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 Maps 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文件。

致谢

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档