Multi-service MCP Server

Multi-service MCP Server

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

Category
访问服务器

README

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

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

架构

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. 克隆此存储库:

    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 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. 启动服务器:

    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
    

    注意::Z 后缀对于启用 SELinux 的系统非常重要。

  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 Maps: /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 Maps 工具

Google Maps 工具提供对 Google Maps API 的访问,用于地理编码、路线和地点搜索。

操作:

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

内存工具

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

操作:

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

Puppeteer 工具

Puppeteer 工具提供 Web 自动化功能,用于截取屏幕截图、生成 PDF 以及从网站提取内容。

操作:

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

贡献

欢迎贡献!以下是如何扩展 MCP 服务器:

添加新工具

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

许可证

该项目已获得 MIT 许可证的许可 - 有关详细信息,请参阅 LICENSE 文件。

致谢

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选