返回 MCP 目录
public公开dns本地运行

AdamPippert_multi-service-mcp-server

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

article

README

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

模型上下文协议(MCP)服务器是一个基于Flask框架构建的Web服务,它借助统一标准接口,为多个工具赋予交互能力,支持GitHub、GitLab、Google Maps、Memory和Puppeteer等工具的操作,极大提升了工具间的协作效率。

🚀 快速开始

模型上下文协议(Model Context Protocol,简称MCP)服务器是一个基于Flask框架构建的Web服务。它通过统一的标准接口为多个工具提供交互能力,支持GitHub、GitLab、Google Maps、Memory和Puppeteer等工具的操作。

✨ 主要特性

  • 模块化架构:采用模块化架构设计,各部分分工明确,便于维护和扩展。
  • 统一接口:所有工具通过统一的MCP协议与服务器交互,支持多种调用方式。
  • 自动文档生成:文档生成模块可自动生成API文档,方便开发者使用。

📦 安装指南

文档中未提及具体安装步骤,故跳过此章节。

💻 使用示例

基础用法

# 假设使用统一接口 /mcp 进行跨工具请求
import requests

url = 'http://your-server-address/mcp'
data = {
    "tool": "github",
    "operation": "listRepos",
    "parameters": {
        "user": "your_username"
    }
}

response = requests.post(url, json=data)
print(response.json())

高级用法

# 使用工具专属接口获取GitHub指定仓库信息
import requests

url = 'http://your-server-address/tool/github/getRepo'
data = {
    "parameters": {
        "repo": "your_repo_name"
    }
}

response = requests.post(url, json=data)
print(response.json())

📚 详细文档

架构

该服务器采用模块化架构设计,分为以下几个核心部分:

  • 工具管理器:负责工具的注册、发现与调用。
  • 请求处理层:解析用户请求并分发到相应工具。
  • 响应生成层:根据工具返回结果生成标准格式的响应。
  • 文档生成模块:自动生成API文档。

功能

标准接口

所有工具通过统一的MCP协议与服务器交互,支持以下两种调用方式:

  1. 统一接口 /mcp:处理所有跨工具请求。
  2. 工具专属接口:如 /tool/github/listRepos

MCP 信息 manifest

提供 /mcp/manifest 端点,返回所有可用工具及其操作的详细说明。

工具文档

GitHub 工具

支持以下操作:

  • listRepos:列出用户或组织的所有仓库。
  • getRepo:获取指定仓库的信息。
  • searchRepos:搜索符合条件的仓库。
  • getIssues:获取仓库中的问题列表。
  • createIssue:新建仓库中的一个问题。

GitLab 工具

支持以下操作:

  • listProjects:列出用户可访问的所有项目。
  • getProject:获取指定项目的详细信息。
  • searchProjects:搜索符合条件的项目。
  • getIssues:获取项目中的问题列表。
  • createIssue:新建项目中的一个问题。
  • getPipelines:获取项目的流水线信息。

Google Maps 工具

支持以下操作:

  • geocode:将地址转换为地理坐标。
  • reverseGeocode:将地理坐标转回地址。
  • getDirections:获取两点之间的路线规划。
  • searchPlaces:搜索附近的地点信息。
  • getPlaceDetails:获取特定地点的详细信息。

Memory 工具

提供持久化的键值存储服务,支持以下操作:

  • get:通过键获取存储项。
  • set:创建或更新存储项。
  • delete:删除指定键的存储项。
  • list:列出所有存储项,可按条件过滤。
  • search:根据内容搜索存储项。

Puppeteer 工具

提供网页自动化功能,支持以下操作:

  • screenshot:截取网页快照。
  • pdf:生成网页的PDF文件。
  • extract:提取网页中的内容信息。

贡献指南

欢迎社区贡献!以下是参与方式:

添加新工具

  1. tools目录下创建新工具文件,如tools/newtool_tool.py
  2. 实现该工具的具体操作方法,参考现有工具的实现模式。
  3. 将新工具添加到manifest配置中。
  4. 注册工具的蓝图路由。

🔧 技术细节

该服务器采用模块化架构设计,各核心部分协同工作,实现了工具的统一管理和交互。工具管理器负责工具的全生命周期管理,请求处理层确保用户请求的准确分发,响应生成层保证了响应的标准化,文档生成模块则提高了开发效率。

📄 许可证

本项目遵循MIT许可证,具体内容详见 LICENSE 文件。

致谢

感谢以下项目的贡献:

  • 模型上下文协议(Model Context Protocol)为规范提供了标准。
  • Flask框架为Web服务构建奠定了基础。
  • Puppeteer为网页自动化提供了强大支持。
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端