小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
Apache License 2.0
3
最近更新:1个月前

一个MCP服务器,用于我喜欢的与AI代理一起使用的服务,你可能应该分叉并修改以供自己使用。不接受PR,这只是给我自己用的。不设为私有是因为你或机器人可能会从这里的代码中有所收获。

注意:本项目已不再维护。由于较小模型的内存问题,我倾向于为MCP服务器采用独立容器化服务提供商的方案,而非单一集中式路由提供商。代码保留在此,供有意尝试此路径的人参考。

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

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

架构设计

MCP服务器采用模块化架构,每个工具作为独立模块实现。服务器提供统一网关,将请求路由至对应工具。

MCP服务器架构

功能特性

  • MCP网关:遵循MCP标准的所有工具请求的统一接入点
  • MCP清单:描述所有可用工具及其能力的端点
  • 直接工具访问:每个工具可通过专属API端点直接调用
  • 模块化设计:支持按需增减工具模块

内置工具

  1. GitHub工具:与GitHub仓库、议题及搜索功能交互
  2. GitLab工具:与GitLab项目、议题及流水线交互
  3. Google Maps工具:地理编码、路线规划和地点搜索
  4. 内存工具:持久化数据存取
  5. Puppeteer工具:网页截图、PDF生成及内容提取

快速开始

先决条件

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

安装步骤

  1. 克隆仓库:

    bash 复制代码
    git clone https://github.com/yourusername/mcp-server.git
    cd mcp-server
  2. 安装Python依赖:

    bash 复制代码
    pip install -r requirements.txt
  3. 安装Node.js依赖:

    bash 复制代码
    npm install
  4. 创建配置文件.env

    复制代码
    SECRET_KEY=your-secret-key
    DEBUG=False
    
    # GitHub配置
    GITHUB_TOKEN=your-github-token
    
    # GitLab配置
    GITLAB_TOKEN=your-gitlab-token
    
    # Google Maps配置
    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. 启动服务:

    bash 复制代码
    python app.py

容器化部署

支持使用Docker或Podman(Red Hat容器引擎)运行。

Docker部署

若已安装Docker和docker-compose:

  1. 构建镜像:

    bash 复制代码
    docker build -t mcp-server .
  2. 运行容器:

    bash 复制代码
    docker run -p 5000:5000 --env-file .env mcp-server
  3. 或使用docker-compose:

    创建docker-compose.yml文件:

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

    启动服务:

    bash 复制代码
    docker-compose up -d

Podman部署

Red Hat系系统(RHEL/CentOS/Fedora)使用Podman:

  1. 构建镜像:

    bash 复制代码
    podman build -t mcp-server .
  2. 运行容器:

    bash 复制代码
    podman run -p 5000:5000 --env-file .env mcp-server
  3. 持久化存储配置:

    bash 复制代码
    mkdir -p ./data
    podman run -p 5000:5000 --env-file .env -v ./data:/app/data:Z mcp-server

    注意::Z后缀对启用SELinux的系统至关重要

  4. 使用Podman Compose:

    bash 复制代码
    # 按需安装podman-compose
    pip install podman-compose
    
    # 复用上述docker-compose.yml文件
    podman-compose up -d

MCP服务器使用指南

MCP网关

主端点,通过MCP标准访问所有工具。

端点POST /mcp/gateway

请求格式

json 复制代码
{
  "tool": "github",
  "action": "listRepos",
  "parameters": {
    "username": "octocat"
  }
}

响应格式

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

MCP清单

描述所有可用工具及其能力。

端点GET /mcp/manifest

响应格式

json 复制代码
{
  "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 Maps: /tool/gmaps/...
  • Memory: /tool/memory/...
  • Puppeteer: /tool/puppeteer/...

详见各工具API文档。

工具文档

GitHub工具

提供GitHub API访问能力,涵盖仓库、议题及搜索功能。

动作

  • listRepos:列出用户/组织的仓库
  • getRepo:获取指定仓库详情
  • searchRepos:搜索仓库
  • getIssues:获取仓库议题
  • createIssue:创建新议题

GitLab工具

提供GitLab API访问能力,涵盖项目、议题及流水线功能。

动作

  • listProjects:列出认证用户可访问的所有项目
  • getProject:获取指定项目详情
  • searchProjects:搜索GitLab项目
  • getIssues:获取项目议题
  • createIssue:创建新议题
  • getPipelines:获取项目流水线

Google Maps工具

提供Google Maps API访问能力,涵盖地理编码、路线规划及地点搜索。

动作

  • geocode:地址转地理坐标
  • reverseGeocode:地理坐标转地址
  • getDirections:获取两点间路线
  • searchPlaces:通过Google Places API搜索地点
  • getPlaceDetails:获取指定地点详情

内存工具

提供持久化键值存储功能。

动作

  • get:按键获取存储项
  • set:创建/更新存储项
  • delete:按键删除存储项
  • list:列出所有存储项(支持过滤)
  • search:按值搜索存储项

Puppeteer工具

提供网页自动化能力,包括截图、PDF生成及内容提取。

动作

  • screenshot:网页截图
  • pdf:网页转PDF
  • extract:网页内容提取

贡献指南

欢迎贡献!扩展MCP服务器步骤如下:

添加新工具

  1. tools目录创建新文件,如tools/newtool_tool.py
  2. 参照现有工具模式实现功能
  3. app.py中添加工具到清单
  4. tools/__init__.py中注册工具蓝图

许可协议

本项目采用MIT许可证,详见LICENSE文件。

致谢