内容
# 企业MCP网关与AI工具注册中心
用于AI代理集成的 安全工具发现和执行网关。本项目结合了一个可运行的FastAPI网关和一个可选的、基于标准的MCP服务器入口,使用官方的Python MCP SDK构建。
## 亮点
- 使用演示管理员、开发者和查看者角色的JWT身份验证
- 工具执行和行政操作的RBAC强制执行
- 使用SQLAlchemy的持久化工具注册和审计日志
- 内置计算器、摘要器、关键词提取器和网关健康工具
- 允许列出的HTTP工具注册,用于受控的外部API集成
- 使用内存备用Redis的速率限制
- 可选的OpenTelemetry导出到Jaeger
- 在`/metrics`处的Prometheus风格的网关指标
- 用于浏览器测试的REST端点和可选的FastMCP可流式HTTP服务器
- 自动化测试和GitHub Actions CI
## 架构
```text
AI 客户端 / 开发者
|
v
FastAPI 网关 -----> JWT 身份验证 + RBAC
|
+-----> 工具注册中心 -----> 内置工具
| `----> 允许列出的HTTP工具
|
+-----> 速率限制器 ------> Redis 或内存备用
|
+-----> 审计存储 -------> SQLite 快速启动 / PostgreSQL Docker 模式
|
`-----> OpenTelemetry -----> Jaeger(可选)
```
## 快速启动
```bash
python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements-dev.txt
cp .env.example .env
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000
```
打开 `http://localhost:8000/docs`。
## 演示账户
| 用户名 | 密码 | 角色 |
|---|---|---|
| `admin` | `admin123` | 管理员 |
| `developer` | `developer123` | 开发者 |
| `viewer` | `viewer123` | 查看者 |
这些是故意仅用于演示的凭证。在部署前请替换身份验证层。
## 运行测试
```bash
python -m pytest -q
```
## 可选的基于标准的MCP服务器
```bash
python -m pip install -r requirements-mcp.txt
python mcp_server.py
```
将MCP客户端或MCP检查器连接到 `http://localhost:8000/mcp`。
## Docker Compose
```bash
docker compose up --build
```
- API 文档:`http://localhost:8000/docs`
- Jaeger UI:`http://localhost:16686`
## 文档
参见 [`docs/`](./docs) 获取设置、架构、API参考、MCP笔记和安全注意事项。
## 安全注意
REST网关演示了身份验证、授权、速率限制、审计和允许列出的出站调用。可选的本地MCP服务器是单独的SDK演示。远程MCP部署应使用OAuth 2.1资源服务器保护和生产身份基础设施。