使用说明
mcp网关
MCP的企业基础架构层。 身份验证、授权、审计日志记录、速率限制、使用计量和秘密管理——用于在生产中调用MCP工具的AI代理。
思考: Cloudflare+Okta+Datadog,但适用于模型上下文协议。
为什么
MCP今日:代理→ 服务器。直接连接。没有身份验证,没有审计跟踪,没有费率限制,没有计费,没有秘密管理。
这对演示来说很好。它不适合:
- 医疗保健 (HIPAA审计要求)
- 金融 (SOC 2,法规遵从性)
- 企业 (RBAC、成本分配、安全)
MCP网关位于代理和服务器之间,对每个工具调用执行策略。
Agent (Claude, GPT, etc.)
↓ MCP protocol
┌──────────────────────────┐
│ MCP Gateway │
│ Auth → Policy → Audit │
│ Rate Limit → Meter │
│ Secrets → Sandbox │
└──────────────────────────┘
↓ MCP protocol
MCP Server (any server)
五柱
1.注册+发现
注册MCP服务器。代理通过网关发现可用的工具。多租户:每个消费者只看到他们被允许看到的内容。
2.策略+权限(RBAC)
- 每个代理/消费者的API密钥身份验证
- 基于角色的工具权限(
reader能get_*和search_*,不delete_*) - 服务器级别限制(阻止访问
mcp-stripe对于只读代理) - 参数级条件(只允许查询自己的客户ID)
3.审计+来源
- 记录每个工具调用:谁、什么、何时、参数、响应、延迟
- 篡改明显的哈希链 --每个条目都对前一个条目进行哈希运算,如果修改了,则可检测
- 可导出到S3、webhook、SIEM
- 按消费者、服务器、工具、状态、时间范围查询
4.计量+计费
- 每个消费者、每个服务器、每个工具的使用情况跟踪
- 呼叫、延迟、错误率
- 退款成本分配
- 条纹集成就绪
5.运行时沙盒+秘密
- MCP服务器作为受管子进程运行
- 通过环境变量注入的秘密——从未暴露给代理
- 超时强制,崩溃时自动重启
- 服务器健康监控
快速开始
# Install
git clone https://github.com/PetrefiedThunder/mcp-gateway.git
cd mcp-gateway
npm install && npm run build
# Generate config
npx mcp-gateway init
# Edit gateway.yaml with your servers and API keys
# Start the gateway (as an MCP server)
npx mcp-gateway serve
配置
网关通过以下方式配置 gateway.yaml:
auth:
type: api-key
keys:
- id: key-1
key: gw_your_key_here
name: "Production Agent"
consumerId: agent-prod
roles: [reader, writer]
enabled: true
servers:
- id: mcp-fred
name: "Federal Reserve Economic Data"
command: node
args: ["./mcp-fred/dist/index.js"]
enabled: true
- id: mcp-stripe
name: "Stripe Payments"
command: node
args: ["./mcp-stripe/dist/index.js"]
env:
STRIPE_SECRET_KEY: "${STRIPE_SECRET_KEY}"
enabled: true
policies:
- id: reader-policy
name: "Read-only access"
roles: [reader]
rules:
- tool: "get_*"
action: allow
- tool: "search_*"
action: allow
- tool: "*"
action: deny
- id: admin-policy
name: "Full access"
roles: [admin]
rules:
- action: allow
audit:
enabled: true
storage: sqlite
path: ./gateway-audit.db
hashChain: true
metering:
enabled: true
dimensions: [calls, latency, errors]
rateLimit:
enabled: true
defaultPerMinute: 60
命令行界面
# API Key Management
mcp-gateway keys list
mcp-gateway keys create "My Agent" agent-1 reader,writer
mcp-gateway keys revoke key-123
# Server Management
mcp-gateway servers list
# Audit
mcp-gateway audit log --limit=50
mcp-gateway audit stats
mcp-gateway audit verify # verify hash chain integrity
# Usage
mcp-gateway usage
mcp-gateway usage agent-1
网关工具(MCP接口)
网关本身是一个MCP服务器。连接到它并使用这些工具:
| 工具 | 说明 |
|---|---|
call |
通过auth/policy/audit管道调用任何已注册的工具 |
list_tools |
列出可用工具(按调用者权限筛选) |
list_servers |
列出已注册的MCP服务器及其状态 |
server_status |
详细的服务器运行状况 |
audit_log |
查询审核日志 |
audit_verify |
验证防篡改哈希链 |
audit_stats |
审计统计 |
usage |
消费者使用指标 |
使用Claude Desktop
{
"mcpServers": {
"gateway": {
"command": "node",
"args": ["/path/to/mcp-gateway/dist/index.js"],
"env": {
"MCP_GATEWAY_CONFIG": "/path/to/gateway.yaml"
}
}
}
}
建筑
src/
├── index.ts # MCP server entry point (stdio transport)
├── serve.ts # HTTP server entry point (network transport)
├── cli.ts # CLI management tool
├── gateway.ts # Core orchestrator — auth → policy → audit → meter → proxy
├── auth.ts # API key + JWT + OIDC authentication
├── policy.ts # RBAC policy engine (glob matching, conditions)
├── audit.ts # SQLite/Postgres audit log with hash chain
├── storage.ts # Storage abstraction (SQLite embedded, PostgreSQL)
├── ratelimit.ts # Token bucket rate limiter with burst
├── meter.ts # Usage metering and aggregation
├── metrics.ts # Prometheus /metrics endpoint
├── registry.ts # Server lifecycle management + auto-restart
├── proxy.ts # MCP JSON-RPC proxy (stdio)
├── redact.ts # PII redaction (SSN, credit card, field-level)
├── ipfilter.ts # IP allowlist/denylist (CIDR, wildcard)
├── tenant.ts # Multi-tenant workspace isolation
├── export.ts # Audit export (JSONL, CSV, webhook, S3)
├── config.ts # YAML config loader + validation + hot-reload
├── middleware.ts # Request tracking, timeouts, structured logging
├── openapi.ts # OpenAPI 3.1 spec generation
└── types.ts # TypeScript domain types
生产部署
# Docker Compose (Gateway + Postgres + Prometheus + Grafana)
docker-compose up -d
# Access:
# Gateway: http://localhost:3100
# Prometheus: http://localhost:9090
# Grafana: http://localhost:3000 (admin/admin)
# Metrics: http://localhost:3100/metrics
# OpenAPI: http://localhost:3100/openapi.json
合规
- 《健康保险携带和责任法案》:PII编辑、防篡改审计日志、现场级访问控制
- SOC 2:完整的审计跟踪、RBAC、速率限制、IP过滤
- PCI-DSS:信用卡编辑、API密钥轮换、网络控制
- GDPR 数据保护:每个租户的数据隔离,数据请求的审计导出
58测试
✓ auth.test.ts (6 tests) — API key auth, disabled/expired keys
✓ auth-jwt.test.ts (5 tests) — JWT verification, claims, issuer
✓ policy.test.ts (6 tests) — RBAC, glob matching, deny precedence
✓ ratelimit.test.ts (6 tests) — token bucket, burst, isolation
✓ audit.test.ts (3 tests) — log, query, hash chain verify
✓ meter.test.ts (4 tests) — usage tracking, isolation
✓ storage.test.ts (4 tests) — SQLite insert, query, upsert, stats
✓ config.test.ts (5 tests) — validation, duplicates, missing fields
✓ redact.test.ts (7 tests) — SSN, CC, email, field-level, per-server
✓ ipfilter.test.ts (5 tests) — allowlist, denylist, CIDR, wildcard
✓ metrics.test.ts (3 tests) — Prometheus format, counters, histograms
✓ middleware.test.ts (4 tests) — request tracking, timeout, drain
许可证
麻省理工学院