多服务协议中枢添加福利群:解决AI开发者的「MCP实战痛点」** 注意:由于小型模型存在内存问题,该项目已不再维护。对于MCP服务器,我更倾向于使用独立的容器化服务器提供者,而非单一的路由提供者。代码仍保留在此,以供其他有需要的人尝试此方案。**
一个实现了模型上下文协议标准的模块化服务器,提供GitHub、GitLab、Google地图、内存存储和Puppeteer网页自动化等工具。
MCP服务器采用模块化架构,每个工具都作为独立模块实现。服务器提供一个统一的网关,将请求路由到相应的工具。
克隆此仓库:
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=你的密钥 DEBUG=False # GitHub配置 GITHUB_TOKEN=你的GitHub令牌 # GitLab配置 GITLAB_TOKEN=你的GitLab令牌 # Google地图配置 GMAPS_API_KEY=你的Google地图API密钥 # 内存配置 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-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

注意:对于启用了SELinux的系统,:Z后缀很重要。
使用Podman Compose(如果已安装):
# 如果需要安装podman-compose
pip install podman-compose
# 使用上述相同的docker-compose.yml文件
podman-compose up -d

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清单描述了所有可用工具及其功能。
端点:GET /mcp/manifest
响应格式:
{
"manifestVersion": "1.0",
"tools": {
"github": {
"actions": {
"listRepos": {
"description": "列出用户或组织的仓库",
"parameters": {
"username": {
"type": "string",
"description": "GitHub用户名或组织名"
}
},
"returns": {
"type": "array",
"description": "仓库对象列表"
}
},
...
}
},
...
}
}

每个工具也可以通过其自己的API端点直接访问:
/tool/github/.../tool/gitlab/.../tool/gmaps/.../tool/memory/.../tool/puppeteer/...有关可用端点的详细信息,请参阅每个工具的API文档。
GitHub工具提供对GitHub API的访问,用于仓库、问题和搜索。
操作:
listRepos:列出用户或组织的仓库getRepo:获取特定仓库的详细信息searchRepos:搜索仓库getIssues:获取仓库的问题createIssue:在仓库中创建新问题GitLab工具提供对GitLab API的访问,用于项目、问题和流水线。
操作:
listProjects:列出认证用户可访问的所有项目getProject:获取特定项目的详细信息searchProjects:在GitLab上搜索项目getIssues:获取项目的问题createIssue:在项目中创建新问题getPipelines:获取项目的流水线Google地图工具提供对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.pyapp.py中将工具添加到清单中tools/__init__.py中注册工具的蓝图此项目根据MIT许可证授权 - 详情请参阅LICENSE文件。