关于 Model Context Protocol (MCP) Server
这是一个已停止维护的模块化 MCP 服务,可将请求路由到 GitHub、GitLab、Google Maps、持久化记忆和 Puppeteer 工具。适合希望使用统一网关并按需修改服务的用户。
主要功能
- 01统一 MCP 网关
- 02GitHub 与 GitLab 操作
- 03Google Maps 搜索与路线
- 04持久化键值记忆
- 05Puppeteer 网页自动化
适用场景
- 01搜索仓库并管理议题
- 02查询地点与路线
- 03持久化存储和检索数据
- 04捕获或提取网页内容
MCP 相关
通过统一 MCP 网关提供各项工具,并以清单描述可用能力。每项工具也提供直接 API 端点。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
** 注意:由于较小模型存在记忆问题,而我更倾向于将 MCP 服务作为独立的容器化服务提供方,而不是单体路由服务提供方,因此本项目已不再维护。代码仍会保留,以便其他人继续尝试这条路线。
Model Context Protocol (MCP) 服务
一个模块化服务,实现了 Model Context Protocol 标准,为 GitHub、GitLab、Google Maps、Memory 存储和 Puppeteer 网页自动化提供工具。
架构
MCP 服务采用模块化架构构建,每个工具都作为单独的模块实现。服务提供统一的网关,将请求路由到相应的工具。

功能
- MCP 网关:遵循 MCP 标准,为所有工具请求提供统一的端点
- MCP 清单:用于描述所有可用工具及其功能的端点
- 直接访问工具:每个工具都可以通过自己的 API 端点直接访问
- 模块化设计:可根据需要轻松添加或移除工具
内置工具
- GitHub 工具:与 GitHub 仓库、议题交互并进行搜索
- GitLab 工具:与 GitLab 项目、议题和流水线交互
- Google Maps 工具:地理编码、路线查询和地点搜索
- Memory 工具:持久化存储和检索数据
- 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 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 -
启动服务:
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 部署
对于使用 Podman 的基于 Red Hat 的系统(RHEL、CentOS、Fedora):
-
构建容器镜像:
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 的系统,
:Z后缀很重要。 -
使用 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/... - Google Maps:
/tool/gmaps/... - Memory:
/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:获取特定地点的详细信息
Memory 工具
Memory 工具提供持久化键值存储,用于存储和检索数据。
操作:
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 提供网页自动化功能
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。