Enterprise MCP Server Management Platform - Multi-tenancy, RBAC, Audit Logging & Cost Tracking
MCP Hub - 企业级 MCP 服务治理平台
📖 简介
MCP Hub 是一个企业级的 Model Context Protocol (MCP) 服务治理平台,提供统一的 MCP Server 管理、权限控制、审计日志和成本追踪功能。
核心特性
- 🚀 统一管理 - 集中管理所有 MCP Server 的注册、配置和生命周期
- 🔐 权限控制 - 基于 RBAC 的细粒度权限管理,支持 JWT 认证
- 📊 多租户 - 完整的工作区隔离,支持团队协作
- 📝 审计日志 - 完整的操作审计追踪
- 💰 成本追踪 - API 调用成本统计和分析
- 🗄️ 轻量级 - 使用 SQLite 数据库,无需额外依赖
- 🔌 协议适配 - 完整的 MCP 协议支持
🏗️ 架构设计
┌─────────────────────────────────────────────────────────┐
│ API Gateway │
│ (RESTful API + JWT Auth) │
└─────────────────────────────────────────────────────────┘
│
┌───────────────────┼───────────────────┐
│ │ │
┌───────▼────────┐ ┌──────▼──────┐ ┌────────▼────────┐
│ Permission │ │ Workspace │ │ Server │
│ Engine │ │ Manager │ │ Manager │
│ (RBAC + JWT) │ │ (Multi- │ │ (Lifecycle) │
│ │ │ Tenant) │ │ │
└────────────────┘ └─────────────┘ └─────────────────┘
│ │ │
└───────────────────┼───────────────────┘
│
┌───────────────────┼───────────────────┐
│ │ │
┌───────▼────────┐ ┌──────▼──────┐ ┌────────▼────────┐
│ Audit Logger │ │ Cost │ │ Protocol │
│ │ │ Tracker │ │ Adapter │
└────────────────┘ └─────────────┘ └─────────────────┘
│
┌───────▼────────┐
│ SQLite Store │
│ (Data Layer) │
└────────────────┘
🚀 快速开始
前置要求
- Go 1.20 或更高版本
- Git
安装步骤
1. 克隆仓库
git clone https://github.com/yourusername/mcp-hub.git
cd mcp-hub
2. 安装依赖
# 如果在中国大陆,建议配置代理
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=off
# 下载依赖
go mod download
3. 运行服务
# 直接运行
go run cmd/server/main.go
# 或者编译后运行
go build -o mcp-hub cmd/server/main.go
./mcp-hub
服务将在 http://localhost:8080 启动
4. 验证安装
curl http://localhost:8080/health
# 响应: {"status":"healthy"}
📚 使用指南
默认凭据
首次启动时,系统会自动创建管理员账户:
- 用户名:
admin - 密码:
admin
⚠️ 生产环境请立即修改默认密码!
API 使用示例
1. 用户登录
curl -X POST http://localhost:8080/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"password": "admin"
}'
响应:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "user_admin",
"username": "admin",
"email": "admin@mcp-hub.local"
}
}
2. 创建工作区
TOKEN="your-jwt-token"
curl -X POST http://localhost:8080/api/v1/workspaces \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "我的工作区",
"description": "团队协作空间"
}'
3. 注册 MCP Server
curl -X POST http://localhost:8080/api/v1/servers \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "文件系统服务",
"source": "npm",
"version": "1.0.0",
"workspace_id": "your-workspace-id",
"config": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/files"]
}
}'
4. 查询 Servers
curl http://localhost:8080/api/v1/servers?workspace_id=your-workspace-id \
-H "Authorization: Bearer $TOKEN"
5. 启动 Server
curl -X POST http://localhost:8080/api/v1/servers/{server_id}/start \
-H "Authorization: Bearer $TOKEN"
6. 查看审计日志
curl "http://localhost:8080/api/v1/audit/logs?workspace_id=your-workspace-id&limit=50" \
-H "Authorization: Bearer $TOKEN"
7. 查看成本统计
curl "http://localhost:8080/api/v1/cost/stats?workspace_id=your-workspace-id&start_time=2024-01-01T00:00:00Z&end_time=2024-12-31T23:59:59Z" \
-H "Authorization: Bearer $TOKEN"
🔧 配置说明
环境变量
| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| PORT | 服务监听端口 | 8080 |
| JWT_SECRET | JWT 签名密钥 | default-secret-change-in-production |
| MCP_HUB_DATA_DIR | 数据存储目录 | ~/.mcp-hub/data |
配置示例
# Linux/Mac
export PORT=3000
export JWT_SECRET="your-super-secret-key-change-me"
export MCP_HUB_DATA_DIR="/var/lib/mcp-hub"
# Windows
set PORT=3000
set JWT_SECRET=your-super-secret-key-change-me
set MCP_HUB_DATA_DIR=C:\mcp-hub\data
📡 API 端点
认证相关
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/v1/auth/login | 用户登录 |
| POST | /api/v1/auth/logout | 用户登出 |
| POST | /api/v1/auth/refresh | 刷新 Token |
用户管理
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/v1/users | 列出用户 |
| POST | /api/v1/users | 创建用户 |
| GET | /api/v1/users/{id} | 获取用户详情 |
| PUT | /api/v1/users/{id} | 更新用户 |
| DELETE | /api/v1/users/{id} | 删除用户 |
工作区管理
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/v1/workspaces | 列出工作区 |
| POST | /api/v1/workspaces | 创建工作区 |
| GET | /api/v1/workspaces/{id} | 获取工作区详情 |
| PUT | /api/v1/workspaces/{id} | 更新工作区 |
| DELETE | /api/v1/workspaces/{id} | 删除工作区 |
Server 管理
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/v1/servers | 列出 Servers |
| POST | /api/v1/servers | 注册 Server |
| GET | /api/v1/servers/{id} | 获取 Server 详情 |
| PUT | /api/v1/servers/{id} | 更新 Server |
| DELETE | /api/v1/servers/{id} | 删除 Server |
| POST | /api/v1/servers/{id}/start | 启动 Server |
| POST | /api/v1/servers/{id}/stop | 停止 Server |
审计日志
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/v1/audit/logs | 查询审计日志 |
成本统计
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/v1/cost/stats | 获取成本统计 |
系统
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /health | 健康检查 |
🔐 权限系统
内置角色
| 角色 | 权限 |
|------|------|
| admin | 完全访问权限 |
| developer | Server 管理权限 |
| viewer | 只读权限 |
权限矩阵
| 资源 | admin | developer | viewer | |------|-------|-----------|--------| | 用户管理 | ✅ | ❌ | ❌ | | 工作区管理 | ✅ | ✅ | ❌ | | Server 管理 | ✅ | ✅ | ❌ | | 查看数据 | ✅ | ✅ | ✅ | | 审计日志 | ✅ | ✅ | ✅ |
🗄️ 数据库结构
核心表
users- 用户信息roles- 角色定义user_roles- 用户角色关联workspaces- 工作区servers- MCP Server 注册信息audit_logs- 审计日志cost_records- 成本记录
详细的数据库 Schema 请参考 internal/datastore/sqlite.go
🧪 测试
运行测试
# 运行所有测试
go test ./...
# 运行单元测试
go test ./tests/unit/...
# 运行集成测试
go test ./tests/integration/...
# 运行 E2E 测试
go test ./tests/e2e/...
# 生成覆盖率报告
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
测试报告
查看完整的测试报告:RUNTIME_TEST_REPORT.md
📦 部署
Docker 部署
# Dockerfile
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
RUN go mod download
RUN go build -o mcp-hub cmd/server/main.go
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/mcp-hub .
EXPOSE 8080
CMD ["./mcp-hub"]
# 构建镜像
docker build -t mcp-hub:latest .
# 运行容器
docker run -d \
-p 8080:8080 \
-e JWT_SECRET=your-secret-key \
-v /path/to/data:/root/.mcp-hub/data \
--name mcp-hub \
mcp-hub:latest
Systemd 服务
# /etc/systemd/system/mcp-hub.service
[Unit]
Description=MCP Hub Service
After=network.target
[Service]
Type=simple
User=mcp-hub
WorkingDirectory=/opt/mcp-hub
ExecStart=/opt/mcp-hub/mcp-hub
Restart=on-failure
Environment="JWT_SECRET=your-secret-key"
Environment="PORT=8080"
[Install]
WantedBy=multi-user.target
# 启动服务
sudo systemctl daemon-reload
sudo systemctl enable mcp-hub
sudo systemctl start mcp-hub
sudo systemctl status mcp-hub
🛠️ 开发指南
项目结构
mcp-hub/
├── cmd/
│ └── server/ # 主程序入口
│ └── main.go
├── internal/
│ ├── api/ # API 网关层
│ ├── audit/ # 审计日志
│ ├── cost/ # 成本追踪
│ ├── datastore/ # 数据持久层
│ ├── permission/ # 权限引擎
│ ├── protocol/ # MCP 协议适配
│ ├── server/ # Server 管理
│ └── workspace/ # 工作区管理
├── tests/
│ ├── unit/ # 单元测试
│ ├── integration/ # 集成测试
│ └── e2e/ # 端到端测试
├── go.mod
├── go.sum
└── README.md
添加新功能
- 在
internal/下创建新模块 - 实现业务逻辑
- 在
internal/api/中添加 API 端点 - 编写测试用例
- 更新文档
代码规范
- 遵循 Go 官方代码规范
- 使用
gofmt格式化代码 - 使用
golint检查代码质量 - 编写单元测试,保持测试覆盖率 > 80%
🤝 贡献指南
欢迎贡献代码!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
提交规范
feat: 新功能
fix: 修复 bug
docs: 文档更新
style: 代码格式调整
refactor: 重构
test: 测试相关
chore: 构建/工具链相关
📄 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件
🙏 致谢
📞 联系方式
- 问题反馈: GitHub Issues
- 功能建议: GitHub Discussions
🗺️ 路线图
v1.0 (当前版本)
- ✅ 核心功能实现
- ✅ RESTful API
- ✅ JWT 认证
- ✅ RBAC 权限控制
- ✅ 审计日志
- ✅ 成本追踪
v1.1 (计划中)
- ⏸️ Web 管理界面
- ⏸️ CLI 命令行工具
- ⏸️ Server 健康检查
- ⏸️ 性能监控
v2.0 (未来)
- ⏸️ PostgreSQL 支持
- ⏸️ 分布式部署
- ⏸️ 插件系统
- ⏸️ 监控告警
⭐ 如果这个项目对你有帮助,请给个 Star!⭐
Made with ❤️ by MCP Hub Team