AgentGuard MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AgentGuard MCP ServerEvaluate the security of my order.refund_order tool call"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AgentGuard
AgentGuard 是面向 MCP Agent 的运行时安全网关。在工具发现、调用、审批恢复、审计和评测之间提供统一控制点。项目中的订单、文件、通知服务都是 Mock MCP Server,不连接真实支付、邮件或云资源。
初次了解项目,建议先阅读 项目介绍书:其中解释了项目用途、令牌的含义、浏览器操作步骤与技术实现。
关于下一阶段的企业登录、身份认证与安全管理后台设计,见身份认证与安全管理后台整合方案。
项目解决的问题
当 Agent 想调用工具时,Gateway 会强制检查:
用户和 Agent 是否有权发现和调用该工具;
参数是否越权、包含 Secret 或危险文件路径;
策略是否应当允许、拒绝、转换参数或要求人工审批;
工具输出中的不可信内容是否诱导后续敏感读取或数据外发;
当前任务是否超过工具调用次数或风险预算;
整个过程是否可以通过 trace_id 进行脱敏审计回放。
Related MCP server: mcp-policy-gateway
主要能力
模块 | 内容 |
MCP Gateway | 代理并聚合 Order、File、Notification 三个 Mock MCP Server |
身份与授权 | JWT、RBAC、ABAC、Agent allowlist;发现与每次执行调用均重新授权 |
策略引擎 | YAML Policy-as-Code:allow、deny、transform、require_approval;草稿、评审、发布与重启恢复 |
风险控制 | Secret、敏感路径、退款阈值、调用次数、风险预算、超时 |
人工审批 | 参数编辑、批准/拒绝、单次执行;恢复时以原请求人的当前身份重新校验 |
不可信内容 | Prompt Injection、Secret/PII 输出标签与跨 Tool 副作用、外发阻断 |
MCP Registry | 扫描、人工准入、Catalog 漂移失效、运行时健康/完整性巡检 |
审计与评测 | PostgreSQL 哈希链 Trace、50 条版本化攻防/可用性语料 |
P0 运行时安全闭环
当前版本已经实现以下强制控制;它们发生在后端 Gateway 中,不能通过 Dashboard、Agent 提示词或跳过 tools/list 来绕过:
执行时统一授权:Tool Discovery 只负责最小化暴露工具;每个
tools/call仍会重新检查 User、Agent、Session、RBAC、ABAC、Agent allowlist、MCP Server 准入和 YAML Policy。审批不提升权限:审批记录绑定参数并只能消费一次。恢复执行时会读取原始请求人的当前 User/Agent/Session 状态,重新执行 Schema、Server 准入、执行授权、Policy 和 Risk 校验;审批人不会因为自己的经理角色而替请求人获得额外权限。
持久化策略发布:本地
policies/是启动时的 Bootstrap Policy。管理员完成草稿、评审、发布后,已发布版本保存到 PostgreSQL;Gateway 重启时会加载最新已发布版本。不可信数据流保护:Tool 结果默认不可信。检测到提示词注入式指令后,同一 Agent Run 的后续副作用调用会被阻断;检测到 Secret 或 PII 输出后,向外部收件人的消息发送会被阻断。审计中只保存信号和摘要,不保存敏感原文。
MCP 运行时完整性:每次调用会验证 Server 当前准入状态和 Tool Metadata;健康巡检会主动
tools/list并比对已批准 Catalog Digest。发现 Tool 描述、Schema 或目录漂移时,Server 会被撤销准入并禁用。
技术栈
Python 3.12、FastAPI、MCP Python SDK、LangGraph、PostgreSQL、Redis、SQLAlchemy、Alembic、Docker Compose、pytest、ruff、mypy。
快速启动
前提:Docker Desktop。
Copy-Item .env.example .env
docker compose up --build -d
docker compose ps
Invoke-RestMethod http://127.0.0.1:8000/health/ready服务 | 地址 |
Gateway 健康检查 | http://127.0.0.1:8000/health/ready(若 |
MCP Streamable HTTP 入口 | |
Dashboard 控制台 | |
PostgreSQL | 127.0.0.1:55432 |
Redis | 127.0.0.1:56379 |
打开 Dashboard 后,选择一个演示身份即可在浏览器内执行 Agent 任务、处理审批、回放 Trace 和查看评测;开发 JWT 由服务端以 HttpOnly Cookie 保存,不再需要在页面或终端中复制粘贴。查看日志:
docker compose logs -f gateway停止服务、保留数据:
docker compose down本地源码开发
前提:Python 3.12、Docker Desktop,且已安装开发依赖。
docker compose up -d postgres redis
./.venv/Scripts/python.exe -m alembic upgrade head
./.venv/Scripts/python.exe -m scripts.seed_dev_data
./.venv/Scripts/python.exe -m uvicorn main:app --reload如何使用
脚本 JWT(仅 API 集成测试)
$token = ./.venv/Scripts/python.exe -m scripts.issue_dev_token在 Dashboard 中操作
打开
http://127.0.0.1:8080,在登录页选择“支持人员”。服务端会签发一个 15 分钟有效的 HttpOnly 会话 Cookie,页面不会显示或保存 JWT。选择“查询订单”或“读取 FAQ”,点击“运行安全任务”。返回结果会显示真实
trace_id。点击右上角“退出”后,可选择“经理”或“管理员”重新登录,再进入审批中心处理待审批请求;不再需要粘贴经理令牌。
开发身份仅用于 development/test 环境。所有请求仍会经过后端 RBAC、ABAC、策略、风险和审批校验;前端选择身份不能绕过这些控制。
如需签发经理身份的测试令牌,可使用:
$managerToken = ./.venv/Scripts/python.exe -m scripts.issue_dev_token `
--subject demo-manager-north `
--session-id 30000000-0000-4000-8000-000000000003启用 DashScope Qwen 真实模型 Agent
Dashboard 中的“Qwen 真实模型 Agent”会让 Qwen 理解自然语言、从 Gateway 提供的最小工具目录中选择工具,并把每一次工具调用交回 AgentGuard 做身份验证、策略、风险、审批和审计。Qwen 不会直接访问订单、文件或通知服务。
在阿里云百炼创建 API Key;不要把 Key 提交到 Git 仓库或发送到聊天中。
在本机
.env中设置:
AG_DASHSCOPE_API_KEY=你的 DashScope API Key
AG_DASHSCOPE_MODEL=qwen-plus重建并启动服务:
docker compose up --build -d gateway dashboard打开 Dashboard,选择“支持人员”进入,在“Qwen 真实模型 Agent”中输入例如“帮我查询订单 ORD-N-1001 的状态和可退款余额”,再点击“让 Qwen 安全执行”。
DashScope 使用 OpenAI 兼容接口;默认北京地域地址为 https://dashscope.aliyuncs.com/compatible-mode/v1,如果你的 Key 属于其他地域或工作空间,请按阿里云文档替换 AG_DASHSCOPE_BASE_URL。详见阿里云 Model Studio Base URL 文档。
Dashboard 仅在 development/test 环境挂载;它通过 Nginx 将 /api 转发到 Gateway,浏览器不会直接连接 PostgreSQL、Redis 或 MCP Server。
运行示例 Agent
./.venv/Scripts/python.exe -m agent_demo.cli get_order --order-id ORD-N-1001 --token $token
./.venv/Scripts/python.exe -m agent_demo.cli read_faq --token $token示例 Agent 只通过 Gateway 调用工具。成功响应带有 trace_id。
回放审计 Trace
./.venv/Scripts/python.exe -m scripts.show_trace <trace-id>输出只包含脱敏后的参数/结果摘要、策略和审计事件。
运行策略与评测演示
./.venv/Scripts/python.exe -m scripts.week3_identity_smoke
./.venv/Scripts/python.exe -m scripts.week4_policy_smoke
./.venv/Scripts/python.exe -m scripts.run_evaluation --output-dir reports评测报告保存为 reports/evaluation-report.json 与 reports/evaluation-report.md。
人工审批演示
大额退款会返回 APPROVAL_REQUIRED 和 approval_id。manager/admin 可编辑金额、批准并执行;恢复的 Agent 任务只使用已经批准的参数。执行前 Gateway 会重新验证原始请求人的 User、Agent、Session、Tool 权限、Server 准入、Schema、Policy 和 Risk;如果请求人已经禁用、会话过期或规则现在拒绝该操作,则不会执行。
审批记录是一次性消费的:成功恢复后不能重放。审批人与请求人是不同角色,但审批不是提升请求人权限的方式。
在 .env 启用本地审批台:
AG_MANAGEMENT_API_ENABLED=true
AG_MANAGEMENT_API_KEY=<至少 32 位随机值>重启 Gateway 后,访问 http://127.0.0.1:8000/approvals/ 。页面需要管理 API Key 和 manager/admin Bearer JWT,仅允许 development/test 环境使用。完整演示见 Demo 脚本。
配置说明
生产 OIDC/SSO
生产环境使用 IdP 签发的短期 OIDC Bearer Token,Gateway 通过 JWKS 校验签名、Issuer、Audience、时效和必需的 agent_id、session_id 绑定声明。必须设置 AG_OIDC_ENABLED=true,并完整提供 AG_OIDC_ISSUER、AG_OIDC_AUDIENCE、AG_OIDC_JWKS_URL、AG_OIDC_CLIENT_ID、AG_OIDC_AUTHORIZATION_ENDPOINT、AG_OIDC_REDIRECT_URI 与 AG_SERVICE_AGENT_ISSUER。
生产环境会拒绝启动,除非上述 OIDC 与服务 Agent 签发方配置完整;同时开发身份切换、开发 JWT、共享管理密钥 API 和安全管理开发入口均不可访问。真实 IdP 的授权码回调地址、MFA/WebAuthn 策略与工作负载身份需在企业 IdP(如 Keycloak、Entra ID、Auth0)中按本组织租户配置,不能使用本项目的演示凭证代替。
主要配置位于 .env,模板见 .env.example:
AG_POSTGRES_*、AG_REDIS_*:基础设施连接;
AG_JWT_*:开发 JWT 签名和校验;
AG_TOOL_TIMEOUT_SECONDS:单次工具调用超时;
AG_MAX_TOOL_CALLS_PER_RUN、AG_MAX_RISK_BUDGET_PER_RUN:任务级限制;
AG_REFUND_APPROVAL_THRESHOLD_MINOR:退款审批阈值;
AG_MANAGEMENT_API_*:开发管理/审批接口。
查看 MCP Server 健康与完整性
/health/ready 除 PostgreSQL、Redis 和 Gateway 进程外,还会返回已批准 MCP Server 的健康状态。Gateway 会对每个 Server 进行工具目录探测与 Catalog Digest 比对:
Invoke-RestMethod http://127.0.0.1:8000/health/ready | ConvertTo-Json -Depth 5出现 unhealthy、pending_review 或 Registry degraded 时,不应继续把该 MCP Server 视为可执行依赖;请在安全管理台中重新扫描、审核并批准。
不要把 .env 中的开发密钥用于共享或生产环境。
测试与质量检查
./.venv/Scripts/python.exe -m ruff format --check gateway mcp_servers agent_demo scripts tests main.py
./.venv/Scripts/python.exe -m ruff check gateway mcp_servers agent_demo scripts tests main.py
./.venv/Scripts/python.exe -m mypy gateway mcp_servers agent_demo scripts main.py
$env:AG_RUN_INFRASTRUCTURE_TESTS='1'; ./.venv/Scripts/python.exe -m pytest -qCI 会执行格式、lint、类型检查、单元测试和评测语料校验。
项目结构
gateway/ Gateway、身份、策略、风险、审批、审计、Registry
mcp_servers/ 订单、文件、通知 Mock MCP Server
agent_demo/ LangGraph 示例 Agent
policies/ YAML Policy-as-Code
scripts/ Seed、Trace、Smoke、评测脚本
tests/ 单元、集成与安全回归测试
docs/ 架构、威胁模型、使用与开发文档安全边界
这是参考实现,不承诺 100% 防 Prompt Injection;
风险检测与内容检测提供可解释信号;权限、参数校验、审批、数据流阻断与执行边界才是强制控制;
跨 Tool 数据流保护目前覆盖已注册 Tool 的副作用标识和 Notification 外部收件人;新增外发型 MCP Tool 时,应同步声明其副作用/外发属性并补充策略与回归用例;
审批台和管理接口仅供 development/test;
LangGraph 当前使用内存 checkpoint,重启后恢复需要持久化 checkpointer;
生产还需要 SSO、多租户、密钥管理、网络隔离和持久化任务存储。
进一步阅读
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
- gatewayOAuthai.sealgate
MCP gateway with runtime security policy, tool-call-level control, and audit of agent actions.
Guarded MCP server for agent-readable business truth, provenance, readiness, and discovery.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceSelf-hosted MCP gateway that applies deterministic, compiled policy to tool discovery, invocation, and outbound data flow, with no model in the enforcement path. Every decision emits a hash-chained receipt sealed with Ed25519 and verifiable using public keys only.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceAn authorizing reverse proxy for MCP servers that enforces per-call policy rules on tool arguments with audit logging, dry-run, and rate limiting.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnforces deterministic security policies as an inline firewall for MCP server tool calls, with AST-based validation, cryptographic audit logging, and CLI-based evaluation and verification.MIT
- AlicenseNot gradedqualityBmaintenanceEnforces 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