
Multi Service Server
一个MCP服务器,用于我喜欢的与AI代理一起使用的服务,你可能应该分叉并修改以供自己使用。不接受PR,这只是给我自己用的。不设为私有是因为你或机器人可能会从这里的代码中有所收获。
注意:本项目已不再维护。由于较小模型的内存问题,我倾向于为MCP服务器采用独立容器化服务提供商的方案,而非单一集中式路由提供商。代码保留在此,供有意尝试此路径的人参考。
模型上下文协议(MCP)服务器
一个模块化服务器,实现模型上下文协议标准,提供GitHub、GitLab、Google Maps、内存存储和Puppeteer网页自动化工具。
架构设计
MCP服务器采用模块化架构,每个工具作为独立模块实现。服务器提供统一网关,将请求路由至对应工具。

功能特性
- MCP网关:遵循MCP标准的所有工具请求的统一接入点
- MCP清单:描述所有可用工具及其能力的端点
- 直接工具访问:每个工具可通过专属API端点直接调用
- 模块化设计:支持按需增减工具模块
内置工具
- GitHub工具:与GitHub仓库、议题及搜索功能交互
- GitLab工具:与GitLab项目、议题及流水线交互
- Google Maps工具:地理编码、路线规划和地点搜索
- 内存工具:持久化数据存取
- Puppeteer工具:网页截图、PDF生成及内容提取
快速开始
先决条件
- Python 3.8或更高版本
- Node.js 14或更高版本
- 基于Red Hat的Linux发行版(RHEL/CentOS/Fedora)或任意Linux/macOS系统
安装步骤
-
克隆仓库:
bashgit clone https://github.com/yourusername/mcp-server.git cd mcp-server
-
安装Python依赖:
bashpip install -r requirements.txt
-
安装Node.js依赖:
bashnpm install
-
创建配置文件
.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
-
启动服务:
bashpython app.py
容器化部署
支持使用Docker或Podman(Red Hat容器引擎)运行。
Docker部署
若已安装Docker和docker-compose:
-
构建镜像:
bashdocker build -t mcp-server .
-
运行容器:
bashdocker run -p 5000:5000 --env-file .env mcp-server
-
或使用docker-compose:
创建
docker-compose.yml
文件:yamlversion: '3' services: mcp-server: build: . ports: - "5000:5000" volumes: - ./data:/app/data env_file: - .env restart: unless-stopped
启动服务:
bashdocker-compose up -d
Podman部署
Red Hat系系统(RHEL/CentOS/Fedora)使用Podman:
-
构建镜像:
bashpodman build -t mcp-server .
-
运行容器:
bashpodman run -p 5000:5000 --env-file .env mcp-server
-
持久化存储配置:
bashmkdir -p ./data podman run -p 5000:5000 --env-file .env -v ./data:/app/data:Z mcp-server
注意:
:Z
后缀对启用SELinux的系统至关重要 -
使用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
:网页转PDFextract
:网页内容提取
贡献指南
欢迎贡献!扩展MCP服务器步骤如下:
添加新工具
- 在
tools
目录创建新文件,如tools/newtool_tool.py
- 参照现有工具模式实现功能
- 在
app.py
中添加工具到清单 - 在
tools/__init__.py
中注册工具蓝图
许可协议
本项目采用MIT许可证,详见LICENSE文件。
致谢

1panel
mcp-1panel 是为 1Panel 实现的 Model Context Protocol (MCP) 服务器。
Aact mcp
与AACT临床试验数据库集成,支持查询和分析大规模试验数据,适用于研究和医疗应用。
Abap Adt
一个服务器,它将模型上下文协议(MCP)与SAP ABAP系统连接起来,使像Cline这样的工具能够检索ABAP源代码、表结构和其他开发工件。
Adwords Mcp
一个令人尴尬的MCP服务器,向Cursor、Claude和其他客户端的开发者提供广告