多服务协议中枢
一个实现模型上下文协议标准的模块化服务器,提供通过统一网关与GitHub、GitLab、Google地图、内存存储和网络自动化交互的工具。
服务介绍
Model Context Protocol (MCP) 服务器
一个实现 Model Context Protocol 标准的模块化服务器,提供用于 GitHub、GitLab、Google Maps、内存存储和 Puppeteer 网页自动化的工具。
架构
MCP 服务器采用模块化架构构建,每个工具都作为一个独立的模块实现。服务器提供了一个统一的网关,将请求路由到适当的工具。

特性
- MCP 网关:遵循 MCP 标准的所有工具请求的统一端点
- MCP 清单:描述所有可用工具及其功能的端点
- 直接工具访问:每个工具都可以通过其自己的 API 端点直接访问
- 模块化设计:根据需要轻松添加或移除工具
包含的工具
- GitHub 工具:与 GitHub 仓库、问题和搜索交互
- GitLab 工具:与 GitLab 项目、问题和流水线交互
- Google 地图工具:地理编码、路线规划和地点搜索
- 内存工具:持久地存储和检索数据
- Puppeteer 工具:截图、生成 PDF 和从网站中提取内容
开始使用
前提条件
- Python 3.8 或更高版本
- Node.js 14 或更高版本
- 一个基于 Red Hat 的 Linux 发行版(RHEL、CentOS、Fedora)或任何 Linux/macOS 系统
安装
-
克隆此仓库:
git clone https://github.com/yourusername/mcp-server.git cd mcp-server -
安装 Python 依赖项:
pip install -r requirements.txt -
安装 Node.js 依赖项:
npm install -
创建一个包含配置的
.env文件:SECRET_KEY=your-secret-key DEBUG=False # GitHub 配置 GITHUB_TOKEN=your-github-token # GitLab 配置 GITLAB_TOKEN=your-gitlab-token # Google 地图配置 GMAPS_API_KEY=your-google-maps-api-key # 内存配置 MEMORY_DB_URI=sqlite:///memory.db # Puppeteer 配置 PUPPETEER_HEADLESS=true CHROME_PATH=/usr/bin/chromium-browser -
启动服务器:
python app.py
容器化部署
您可以使用 Docker 或 Podman(Red Hat 的容器引擎)来运行服务器。
Docker 部署
如果您已经安装了 Docker 和 docker-compose:
-
构建 Docker 镜像:
docker build -t mcp-server . -
运行容器:
docker run -p 5000:5000 --env-file .env mcp-server -
或者,使用 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 部署
对于基于 Red Hat 的系统(RHEL、CentOS、Fedora)使用 Podman:
-
构建容器镜像:
podman build -t mcp-server . -
运行容器:
podman run -p 5000:5000 --env-file .env mcp-server -
如果需要持久化存储:
mkdir -p ./data podman run -p 5000:5000 --env-file .env -v ./data:/app/data:Z mcp-server注意:在启用了 SELinux 的系统上,
-v参数后面的:Z后缀非常重要。 -
使用 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": "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/... - 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 地图 API 访问。
操作:
geocode: 将地址转换为地理坐标reverseGeocode: 将地理坐标转换为地址getDirections: 获取两个地点之间的路线searchPlaces: 使用 Google Places API 搜索地点getPlaceDetails: 获取特定地点的详细信息
内存工具
内存工具提供了一个持久化的键值存储,用于存储和检索数据。
操作:
get: 通过键获取内存项set: 创建或更新内存项delete: 通过键删除内存项list: 列出所有内存项,可选过滤search: 按值搜索内存项
Puppeteer 工具
Puppeteer 工具提供了网页自动化功能,包括截屏、生成 PDF 以及从网站中提取内容。
操作:
screenshot: 截取网页的屏幕截图pdf: 生成网页的 PDFextract: 从网页中提取内容
贡献
欢迎贡献!以下是您可以扩展 MCP 服务器的方法:
添加新工具
- 在
tools目录下创建一个新文件,例如tools/newtool_tool.py - 按照现有工具的模式实现该工具及其操作
- 将工具添加到
app.py中的清单里 - 在
tools/__init__.py中注册工具的蓝图
许可证
本项目根据 MIT 许可证发布 - 详情请参阅 LICENSE 文件。
致谢
- Model Context Protocol 提供标准规范
- Flask 作为 Web 框架
- Puppeteer 用于网页自动化