Skip to main content
Glama
nithyajangam

Aegis

by nithyajangam

Aegis MCP 治理注册表

Aegis 是一个面向生产的参考实现,用于治理支持租户感知的 MCP 工具。它将两个刻意限定的 Streamable HTTP 参考端点与安全的注册表仪表板、策略结果、短期人工审批流程以及防篡改审计账本相结合。它不连接或操作客户系统。

您可以演示的能力

能力

本仓库中的实现

参考 MCP 端点

POST /mcp/read 托管安全确定性工具,POST /mcp/write 托管模拟破坏性工具。两者都期望使用现代 MCP 请求元数据标头。

能力发现

每个端点在 /.well-known/mcp-capabilities?server=read 或 ?server=write 处具有内部能力元数据。

租户与作用域强制

Bearer 令牌适配器在每次 MCP 工具调用之前解析租户、主体和作用域。

策略门控

本地策略评估器强制执行作用域和负载上限。设置 OPA_URL 可启用兼容 OPA 的决策请求,同时保留安全的本地回退。

人工审批

change.create 生成一个队列项,十五分钟后过期,并一次性消耗已批准的提权。

可审计性

策略、审批和执行活动经过脱敏处理,通过应用程序表面仅追加,租户隔离,并采用哈希链。

操作员控制台

经过身份验证的用户可以检查注册表服务、租户、策略、审批和审计账本。管理员可以验证并启用/禁用参考服务,并做出审批决策。

该实现使其传输和资源发现形态与 MCP Streamable HTTP 和授权规范保持一致。[1] [2] 其私有注册表元数据是内部扩展;它不作为公共 MCP 注册表 server.json 格式呈现。[3]

Related MCP server: agent-mcp-workflow-platform

本地开发

您需要 Node.js 22+ 和兼容 MySQL 的数据库。复制主机所需的环境值,安装依赖项,然后启动应用程序。

pnpm install
pnpm drizzle-kit generate
pnpm db:push
pnpm dev

服务启动后,访问仪表板 URL 并登录。种子记录在治理端点或仪表板查询首次访问注册表时惰性创建。参考界面仅使用确定性种子数据,而非真实的客户系统。

MCP 快速入门

在本地开发期间,演示令牌采用以下确切形式。它们是开发适配器,而非 OAuth 替代品。

demo|northstar|demo:alice|project:read,incident:read,metrics:read,change:write

要确认端点契约,请在服务启动后运行附带的冒烟测试。

pnpm exec node scripts/mcp-smoke.mjs

要发出直接的 JSON-RPC 工具调用:

curl -sS -X POST http://localhost:3000/mcp/read \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer demo|northstar|demo:alice|project:read' \
  -H 'MCP-Protocol-Version: 2026-07-28' \
  -H 'Mcp-Method: tools/call' \
  -H 'Mcp-Name: project.search' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"project.search","arguments":{"query":"telemetry"},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28"}}}'

写入端点在 /mcp/write 处遵循相同的契约,但 change.create 将首先创建审批记录。从 Aegis 控制台批准它,然后在提权过期之前再次提交相同的调用。

初学者部署:TiDB Cloud + Render

这是学习或作品集环境推荐的低成本部署路径。TiDB Cloud Starter 兼容 MySQL,并且公共连接需要 TLS,而 Render 可以将此 Node 应用程序托管为 Web 服务。[4] [5] Render 免费服务在空闲时可以休眠,因此非活动后的首次访问预计需要更长时间。[6]

A. 创建并连接 TiDB Cloud

创建一个Starter实例,并将其支出限额设置为 0。在实例页面上,点击右上角的Connect,保持选择 Public,选择 General,然后生成密码。请将密码保密。

B. 创建 Render Web 服务

将此仓库推送到 GitHub 后,打开 Render 仪表板。点击右上角的 + New,选择 Web Service,点击此仓库旁边的 Connect,并使用以下确切值。

Render 表单字段

值

名称

mcp-governance-registry

分支

main

语言

Node

构建命令

corepack enable && pnpm install --frozen-lockfile && pnpm db:render-migrate && pnpm build

启动命令

pnpm start

实例类型

Free

根目录

留空

C. 添加 Render 环境变量

在同一个 Render 表单中,打开 Advanced。在 Environment Variables 下,添加以下每一行。不要将任何机密值放入 GitHub 或屏幕截图中。

键

值

DATABASE_URL

采用以下形状的 TiDB URL:mysql://USERNAME:PASSWORD@HOST:4000/test。对用户名或密码中的特殊字符进行 URL 编码。

TIDB_ENABLE_SSL

true

NODE_VERSION

22

VITE_PORTABLE_AUTH

true

JWT_SECRET

新生成的长随机机密。

DASHBOARD_ACCESS_KEY

部署后您将输入到仪表板的单独长密码。

ALLOW_DEMO_MCP_TOKENS

false

数据库 URL 是私有的。TiDB Cloud Starter 要求公共连接使用 TLS,而应用程序的 TIDB_ENABLE_SSL=true 配置启用了它。[5]

点击表单底部的 Create Web Service。Render 会打开服务的 Events 页面。等待状态变为 Live,然后点击显示的 onrender.com 链接。首次访问时,输入您为 DASHBOARD_ACCESS_KEY 设置的值,然后点击 Open dashboard。

D. 验证

仪表板打开后,访问 Registry、Approvals 和 Audit ledger。只有在您特意为 MCP 客户端配置了真实的 OAuth 访问令牌验证器之后,才使用您的 Render URL 运行冒烟测试;演示令牌默认处于禁用状态。

验证与负载脚手架

每次发布前运行应用程序测试。

pnpm check
pnpm test
pnpm exec node scripts/mcp-smoke.mjs

负载脚手架发送独立的 JSON-RPC 请求,这适用于验证负载均衡器后面的无状态 Streamable HTTP 部署。从 100 个请求和 20 个并发客户端开始,然后在将部署扩展到第二个副本后重复,并比较 p50/p95 延迟和错误率。

CONCURRENCY=20 REQUESTS=100 pnpm exec node scripts/load-test.mjs

对于官方协议一致性运行,请分别针对 /mcp/read 和 /mcp/write 安装并执行当前的官方 MCP 一致性套件。保留其版本化输出作为发布证据;此仓库的冒烟脚本有意保持狭窄范围,并不声称取代该套件。

扩展平台

通过将新的安全参考工具的注册表记录和模式插入到 server/governance.ts 中的 defaultToolRows,扩展 simulatedToolOutput,然后添加测试并重新运行冒烟脚本。真实集成应位于最小权限服务身份之后,并且仅返回脱敏结果。

将 server/mcp.ts 中的演示 Bearer 适配器替换为针对您配置的颁发者的 JWT 验证,或在 API 网关处执行验证。MCP 授权规范期望支持授权的基于 HTTP 的实现充当 OAuth 资源服务器,并发布受保护资源元数据。[2] 对于生产审计保留,将哈希链事件导出到不可变对象存储或 SIEM,并限制数据库凭据,使服务主体对 auditEvents 没有更新/删除权限。

参考

[1] Model Context Protocol — Streamable HTTP

[2] Model Context Protocol — Authorization

[3] Model Context Protocol — Registry overview

[4] TiDB Cloud — Select Your Plan

[5] TiDB Cloud — Connect to TiDB with node-mysql2

[6] Render — Deploy for Free

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enforces fine-grained, context-aware access control on MCP tool calls, with a tamper-evident, replayable audit log that records denials and verifies every decision.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables policy-governed MCP interactions with deterministic authorization, tenant isolation, minimized PII exposure, and human approval gates for sensitive mutations, while producing structured audit events.
    3
    MIT