模块化的 Model Context Protocol (MCP) 服务管理平台
- 🚀 模块化设计:每个服务独立管理,互不干扰
- 🎯 统一管理:
mcp命令行工具统一管理所有服务 - 📦 通用镜像:基于
node:20的通用 Gateway 镜像,内置常用 MCP Servers - 🔧 易于扩展:只需编写简单的 docker-compose 文件即可添加新服务
- 🐳 Docker 化:完全容器化,环境一致
- 🌐 网络隔离:独立网络,安全可靠
- Docker 20.10+
- Docker Compose 2.0+
- Bash 4.0+(macOS/Linux)
# 克隆项目
git clone https://github.com/yourusername/mcp-infra.git
cd mcp-infra
# 复制环境变量模板
cp .env.example .env
# 编辑配置(如修改端口)
vim .env
# 添加执行权限
chmod +x mcp
# 创建 Docker 网络
./mcp network
# 构建基础镜像
./mcp build gateway
# 启动所有服务
./mcp start# 查看服务状态
./mcp status
# 查看所有可用服务
./mcp list
# 查看日志
./mcp logs# 构建镜像(必须指定镜像名)
./mcp build gateway
# 启动服务
./mcp start # 启动所有服务
./mcp start filesystem # 启动指定服务
./mcp start filesystem obsidian # 启动多个服务
# 停止服务
./mcp stop # 停止所有服务
./mcp stop obsidian # 停止指定服务
# 重启服务
./mcp restart filesystem # 重启指定服务
# 查看状态和日志
./mcp status # 查看服务状态
./mcp ps # 查看容器列表
./mcp logs filesystem # 查看服务日志
./mcp logs # 查看所有日志
# 维护
./mcp clean # 清理未使用的容器和镜像
./mcp list # 列出所有可用服务和镜像
# 帮助
./mcp help # 显示帮助信息mcp-infra/
├── mcp # 🔧 服务管理脚本(核心入口)
│
├── services/ # 服务定义目录
│ ├── filesystem/ # 文件系统服务
│ │ └── docker-compose.yaml
│ ├── obsidian/ # Obsidian 服务
│ │ └── docker-compose.yaml
│ └── postgres/ # PostgreSQL 服务
│ └── docker-compose.yaml
│
├── images/ # Docker 镜像定义
│ ├── gateway/ # 通用网关镜像(核心)
│ │ ├── Dockerfile
│ │ └── build.sh # 构建脚本
│ └── ...
│
├── .env.example # 环境变量模板
├── .gitignore # Git 忽略列表
│
└── config/ # 客户端配置示例
├── cursor_mcp.json # Cursor 配置
└── vscode_mcp.json # VS Code 配置
| 服务名 | 端口 | 说明 | 实现方式 |
|---|---|---|---|
| filesystem | 8080 | 文件系统访问服务 | @modelcontextprotocol/server-filesystem |
| obsidian | 8082 | Obsidian 笔记管理 | 直接挂载 Vault + server-filesystem |
| postgres | 8081 | PostgreSQL 数据库访问 | @modelcontextprotocol/server-postgresql |
- 在
services/下创建新目录(如myservice)。 - 创建
docker-compose.yaml,使用mcp-infra/gateway:latest镜像。 - 在
mcp脚本的SERVICES数组中注册新服务。 - 在
.env中添加端口配置。
# mcp 脚本配置示例
SERVICES=(
...
"myservice:services/myservice/docker-compose.yaml:我的新服务"
)复制 .env.example 为 .env 并配置:
# 文件系统服务
MCP_FS_PORT=8080
# Obsidian 服务
MCP_OBSIDIAN_PORT=8082
# PostgreSQL 服务
MCP_PG_PORT=8081
DATABASE_URL=postgresql://user:pass@host:5432/db创建或编辑 .cursor/mcp.json:
{
"mcpServers": {
"filesystem": {
"url": "http://localhost:8080/sse"
},
"obsidian": {
"url": "http://localhost:8082/sse"
}
}
}images/gateway/Dockerfile 是项目的核心,预装了:
supergateway: 将 stdio 转换为 SSE@modelcontextprotocol/server-filesystem@modelcontextprotocol/server-memory@modelcontextprotocol/server-brave-search@modelcontextprotocol/server-github(可选)
- ✨ 架构升级:分离构建与运行逻辑
- 🚀 独立构建:
images/*/build.sh独立管理镜像构建 - 📂 服务归档:所有服务配置移至
services/目录 - 🔄 Obsidian 优化:改用原生
server-filesystem方案,移除复杂中间件
- ✨ 重构为模块化架构
- ✨ 新增
mcp命令行工具
MIT License - 详见 LICENSE
维护者: @yourusername
最后更新: 2024-11-26