\*\*注意:此项目不再维护,因为较小模型的模型内存问题意味着我对MCP服务器的首选方法是作为单独的容器化服务器提供商,而不是单片路由提供商。代码被保留下来,以防其他人仍然想走这条路。
模型上下文协议(MCP)服务器
实现以下功能的模块化服务器 模型上下文协议 标准,为GitHub、GitLab、谷歌地图、内存存储和Puppeteer网络自动化提供工具。
建筑
MCP服务器采用模块化架构构建,其中每个工具都作为单独的模块实现。服务器提供了一个统一的网关,将请求路由到适当的工具。
特性
- MCP网关:遵循MCP标准的所有工具请求的统一端点
- MCP清单:描述所有可用工具及其功能的端点
- 直接工具访问:每个工具都可以通过自己的API端点直接访问
- 模块化设计:根据需要轻松添加或删除工具
包含的工具
- GitHub工具:与GitHub存储库、问题和搜索进行交互
- GitLab工具:与GitLab项目、问题和管道进行交互
- 谷歌地图工具:地理编码、方向和地点搜索
- 记忆工具:持久存储和检索数据
- 木偶工具:截图、生成PDF和从网站提取内容
入门指南
先决条件
- Python 3.8或更高版本
- Node.js 14或更高版本
- 基于红帽的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(红帽的容器引擎)运行服务器。
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 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注: :Z 后缀对于支持SELinux的系统很重要。
- 使用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:为项目获取管道
谷歌地图工具
谷歌地图工具提供对谷歌地图API的访问,用于地理编码、方向和地点搜索。
行动:
geocode:将地址转换为地理坐标reverseGeocode:将地理坐标转换为地址getDirections:获取两个地点之间的路线searchPlaces:使用Google places API搜索地点getPlaceDetails:获取特定地点的详细信息
记忆工具
Memory工具提供了一个持久的键值存储,用于存储和检索数据。
行动:
get:按键获取记忆项set:创建或更新内存项delete:按键删除存储项list:列出所有内存项,可选筛选search:按值搜索内存项
木偶工具
Puppeteer工具提供网络自动化功能,用于截图、生成PDF和从网站提取内容。
行动:
screenshot:截取网页的屏幕截图pdf:生成网页的PDFextract:从网页中提取内容
贡献
欢迎投稿!以下是如何扩展MCP服务器:
添加新工具
- 在中创建新文件
tools目录。,tools/newtool_tool.py - 使用与现有工具相同的模式执行操作来实现该工具
- 将工具添加到清单中
app.py - 在中注册工具的蓝图
tools/__init__.py
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

