智能体安全的灯塔。
扫描任意 MCP 服务器,获得安全报告卡。
你的 MCP 服务器向 AI 智能体暴露工具。它有多安全?
大多数 MCP 服务器出厂时没有认证、没有按工具设置权限、没有输入验证,而且工具描述容易受到提示注入攻击。只是你还不知道而已。
AgentsID Scanner 会告诉你答案。
npx @agentsid/scanner -- npx @some/mcp-server
仅此而已。你会得到一个字母等级和详细的发现报告。
| 类别 | 检查内容 | 为什么重要 |
|---|---|---|
| 注入 | 工具描述中的 11 种提示注入模式 | 恶意工具描述可能劫持智能体行为 |
| 权限 | 按风险分类的工具名称(破坏性、执行、财务、凭证) | 50 个无访问控制的工具就是 50 个攻击面 |
| 验证 | 输入模式中缺失约束、无界字符串、仅可选参数 | 无验证意味着对工具处理程序输入任意数据 |
| 认证 | 工具表面的认证指示 | 无认证工具意味着未认证智能体可调用你的工具 |
| 密钥 | 可能暴露凭证输出的工具 | API 密钥、令牌、密码在响应中泄露 |
| 输出 | 未经过滤的文件/数据输出 | 敏感文件内容未脱敏返回 |
╔══════════════════════════════════════════════════════════════╗
║ AgentsID 安全扫描器 — 报告 ║
╚══════════════════════════════════════════════════════════════╝
服务器: my-mcp-server v1.0.0
工具: 23
扫描时间: 2026-03-29T12:00:00.000Z
总体等级: D (42/100)
分类等级:
注入 A
权限 F
验证 D
认证 F
输出 B
工具风险画像:
破坏性 ████ 4
执行 ██ 2
凭证访问 █ 1
发现: 31
严重: 2
高危: 8
中危: 15
低危: 6
建议:
1. 立即处理严重和高危发现
2. 添加按工具权限控制 (agentsid.dev/docs)
3. 对所有工具参数实施输入验证
4. 为服务器端点添加认证
# 扫描任意可安装的 npx MCP 服务器
agentsid-scan -- npx @modelcontextprotocol/server-filesystem ./
# 扫描本地服务器文件
agentsid-scan -- node my-server.mjs
# 扫描 Python MCP 服务器
agentsid-scan -- python -m my_mcp_server
agentsid-scan --url https://mcp.example.com/mcp
agentsid-scan --json -- npx @some/mcp-server > report.json
agentsid-scan --env API_KEY=xxx --env DB_URL=postgres://... -- node server.mjs
初始 100 分。每项发现扣分:
中危和低危发现按工具数量归一化,这样每个工具的问题(例如每个输入缺少 maxLength)不会随服务器大小线性叠加。一个 50 工具服务器有 50 个低危发现,与一个 5 工具服务器有 5 个低危发现得分相同。严重和高危保持绝对 — 真实漏洞不管服务器大小都一样有害。
扫描器检查工具描述中的 11 种提示注入模式:
每个工具按名称模式分类:
扫描器会告诉你哪里有问题。以下是如何修复:
npm install @agentsid/guard
AgentsID Guard 在执行前验证每个工具调用是否满足权限规则。50 个工具,16 个类别,全部受保护。
npm install @agentsid/sdk
在 MCP 服务器中添加三行中间件。完整文档请访问 agentsid.dev/docs。
import { scanStdio, scanHttp, scanToolDefinitions } from "@agentsid/scanner";
// 扫描本地服务器
const report = await scanStdio("npx @some/server", { json: true });
// 扫描远程服务器
const report = await scanHttp("https://mcp.example.com", { json: true });
// 直接扫描工具定义(无需服务器)
const report = scanToolDefinitions(myToolArray, { json: true });
发现我们未检测到的模式?请提交 issue 或 PR。规则引擎位于 src/rules.mjs — 添加一条新模式只需一个正则表达式。
所有 15,982 个服务器均已评分并可搜索: agentsid.dev/registry
MIT
| 严重程度 | 扣分 | 归一化 | 上限 |
|---|
| 严重 | 每个 -25 | 绝对 — 始终全额 | 无上限 |
| 高危 | 每个 -15 | 绝对 — 始终全额 | 最多 -45 |
| 中危 | 每个 -8 | 除以 √(工具数量) | 最多 -25 |
| 低危 | 每个 -3 | 除以 √(工具数量) | 最多 -15 |
| 信息 | 0 | — | — |
| 等级 | 分数 | 含义 |
|---|
| A | 90-100 | 优秀的安全态势 |
| B | 75-89 | 良好 — 小问题 |
| C | 60-74 | 可接受 — 需要改进 |
| D | 40-59 | 差 — 重大风险 |
| F | 0-39 | 不及格 — 严重漏洞 |
| 风险等级 | 模式 | 示例工具 |
|---|
| 严重 | execute, shell, admin, sudo, payment | shell_run, admin_reset, process_payment |
| 高危 | delete, remove, drop, deploy, credential | delete_user, deploy_prod, get_api_key |
| 中危 | create, update, send, write | create_issue, send_email, write_file |
| 信息 | read, get, list, search, describe | get_status, list_users, search_docs |