Multi-service MCP Server

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides access to GitHub's API for managing repositories, issues, and performing searches, allowing users to list repositories, get repository details, search repositories, get issues, and create new issues.

  • Enables interaction with GitLab's API to access projects, issues, and pipelines, with capabilities to list projects, get project details, search projects, manage issues, and retrieve pipeline information.

  • Provides geocoding, reverse geocoding, directions, and places search capabilities through the Google Maps API, allowing users to convert addresses to coordinates, find routes between locations, and search for places.

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

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

建筑学

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

特征

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

附带的工具

  1. GitHub 工具:与 GitHub 存储库、问题和搜索进行交互
  2. GitLab 工具:与 GitLab 项目、问题和管道进行交互
  3. Google 地图工具:地理编码、路线和地点搜索
  4. 记忆工具:持久存储和检索数据
  5. Puppeteer Tool :截取屏幕截图、生成 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 configuration GITHUB_TOKEN=your-github-token # GitLab configuration GITLAB_TOKEN=your-gitlab-token # Google Maps configuration GMAPS_API_KEY=your-google-maps-api-key # Memory configuration MEMORY_DB_URI=sqlite:///memory.db # Puppeteer configuration 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(如果已安装):
    # Install podman-compose if needed pip install podman-compose # Use the same docker-compose.yml file as above 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/...
  • 谷歌地图: /tool/gmaps/...
  • 记忆: /tool/memory/...
  • 木偶师: /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 地图 API 的访问,以进行地理编码、路线和地点搜索。

行动

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

记忆工具

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

行动

  • get :通过 key 获取内存项
  • 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 文件。

致谢

-
security - not tested
A
license - permissive license
-
quality - not tested

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

  1. Architecture
    1. Features
      1. Included Tools
    2. Getting Started
      1. Prerequisites
      2. Installation
      3. Containerized Deployment
    3. Using the MCP Server
      1. MCP Gateway
      2. MCP Manifest
      3. Direct Tool Access
    4. Tool Documentation
      1. GitHub Tool
      2. GitLab Tool
      3. Google Maps Tool
      4. Memory Tool
      5. Puppeteer Tool
    5. Contributing
      1. Adding a New Tool
    6. License
      1. Acknowledgements
        ID: uanzup2jvu