mcp信任雷达
MCP服务器的快速信任评分。
mcp-trust-radar 帮助您在启用任何服务器之前回答一个实际问题:
此服务器现在应该在我的环境中运行吗?
它使用权限风险、身份验证状态、公共暴露风险、及时注入强化信号、命令执行保障、供应链控制、回购新鲜度、发行压力、维护人员深度和许可证状态对服务器进行评分。
为什么这很重要
MCP工具正在快速移动。发现变得越来越容易,但信任决策仍然主要是手动的。
此项目为您提供了一个可重复的第一通滤波器,因此您可以:
- 及早发现明显的高风险服务器
- 在深入安全审查之前对候选人进行排名
- 保持团队间信任检查的一致性
它得分多少
- 权限风险(只读与外壳/写入/网络功能)
- 身份验证姿势(
auth_required) - 公众曝光姿态(
exposed_publicly) - 运输安全态势(
tls_enforced)对于公共端点 - 凭证状态(
credential_posture)以及凭证卫生控制(credential_controls) - 供应链控制(
supply_chain_controls)用于固定、工件完整性、发布者验证和扫描 - 快速注射硬化控制(
prompt_injection_controls) - 命令执行保障态势(对具有命令能力的服务器进行满负荷+人工批准控制)
- 维护健康状况(仓库有多陈旧)
- 发行压力(与回购牵引相关的未解决问题)
- 许可证信号(清除SPDX与丢失)
- 维护者深度(单一维护者vs共享所有权)
安装
pip install -e .快速开始
mcp-radar score \
--input examples/servers.json \
--output trust-report.json \
--markdown trust-report.md默认情况下,当任何服务器登录时,该命令退出非零 caution 层(对CI策略有用)。
您可以使用策略标志收紧或松开释放门:
--minimum-tier review(默认):仅在以下情况下失败caution--minimum-tier trusted:要求每台服务器trusted--minimum-tier caution:禁用基于层的故障--minimum-score N:如果低于任何分数,则失败N--block-public-without-tls:如果任何公共服务器没有明确声明TLS强制,则失败--minimum-public-controls N:如果任何公共服务器声明的可识别控件少于N个,则失败--minimum-risk-surface-controls N:如果任何中/高风险或公共服务器声明的可识别控件少于N个,则失败--minimum-command-controls N:如果任何支持命令的服务器声明的可识别控件少于N个,则失败--block-shared-service-account:如果任何服务器声明共享服务帐户凭据,则失败--minimum-credential-controls N:如果任何中/高风险或公共服务器声明的可识别凭据控件少于N个,则失败--minimum-supply-chain-controls N:如果任何中/高风险或公共服务器声明的可识别供应链控制少于N个,则失败--block-public-command-execution:如果任何公共服务器声明命令执行权限,则失败(exec,shell,command等等)--min-agent-trust N:如果认证代理信任评分低于N,则失败--max-attestation-age S:如果证明时间超过S秒,则失败--on-missing-attestation [ignore|warn|fail]:配置证明策略时缺少证明数据时的行为(默认值:warn)
internet-facing 和 strict 默认情况下,预设还启用公共TLS、公共命令执行、共享凭据和最小控制覆盖门。
示例:
# Strict policy: all servers must be trusted
mcp-radar score --input examples/servers.json --minimum-tier trusted
# Custom score bar: allow review tier, but block scores under 70
mcp-radar score --input examples/servers.json --minimum-tier review --minimum-score 70
# Block command-capable servers that don't declare at least 2 controls
mcp-radar score --input examples/servers.json --minimum-command-controls 2
# Block any publicly exposed server with command-execution permissions
mcp-radar score --input examples/servers.json --block-public-command-execution
# Block any publicly exposed server that does not explicitly enforce TLS
mcp-radar score --input examples/servers.json --block-public-without-tls
# Block shared service-account credentials and require 2 credential hygiene controls
mcp-radar score --input examples/servers.json --block-shared-service-account --minimum-credential-controls 2
# Block marketplace-style servers that do not declare at least 2 provenance controls
mcp-radar score --input examples/servers.json --minimum-supply-chain-controls 2
# Require external agent trust score and fresh attestation
mcp-radar score \
--input examples/servers.json \
--agent-attestation examples/agent-attestation.json \
--min-agent-trust 60 \
--max-attestation-age 300 \
--on-missing-attestation fail可选外部代理认证
当您希望在服务器评分之上添加运行时标识层时,请使用此选项。
mcp-trust-radar 分数 服务器风险态势.证明政策大门打开 代理人信任态势.
支持的信任评分键:
trust_scorescoreagent_trust_score
支持的时间戳键:
attested_at(ISO-8601或纪元)timestamp(纪元)issued_at(ISO-8601或纪元)
有效载荷示例:
{
"agent_id": "agent-runner-42",
"trust_score": 78,
"attested_at": "2026-03-31T22:00:00Z"
}访问和运输姿势的输入字段
auth_required, exposed_publicly,以及 tls_enforced 是可选的布尔值。当提供时,它们会影响分数:
- 公开+无授权将受到严厉处罚
- Public+auth的惩罚较小
- 公共+无TLS声明会增加传输惩罚
- 缺少的字段保持向后兼容的评分行为
{
"name": "ticket-helper",
"permissions": ["issues:read", "issues:update"],
"auth_required": true,
"exposed_publicly": true,
"tls_enforced": true
}用于提示注射姿势的输入字段
prompt_injection_controls 是可选的。它接受JSON数组或逗号分隔的字符串。
公认的控制措施:
allowlist_only_toolstool_description_sanitizationserver_instruction_sanitizationtool_argument_validationresource_content_sanitizationhuman_approval_for_writes
评分行为:
- 缺少字段=没有及时的注射调整(向后兼容)
- 控制薄弱或空白的高风险/公共服务器将受到处罚
- 更好的控制范围带来积极的调整
- 具有命令能力的服务器会收到额外的安全调整:
- allowlist_only_tools + human_approval_for_writes:奖金 - 只有一种控制:惩罚 - 无控:重罚
{
"name": "ops-helper",
"permissions": ["shell:exec", "filesystem:write", "network:http"],
"auth_required": true,
"exposed_publicly": true,
"prompt_injection_controls": [
"allowlist_only_tools",
"tool_description_sanitization",
"tool_argument_validation",
"human_approval_for_writes"
]
}供应链态势输入字段
supply_chain_controls 是可选的。它接受JSON数组或逗号分隔的字符串。
公认的控制措施:
pinned_versionsigned_artifactsverified_publisherinternal_mirrorsbom_availablevuln_scanning
评分行为:
- 缺少字段=无供应链调整(向后兼容)
- 来源控制薄弱或空白的高风险/公共服务器会失去分数
- 更好的控制范围带来积极的调整
internet-facing和strict预设可以控制最小供应链控制范围
这是为了捕捉“有人将随机MCP包粘贴到客户端”和“此服务器通过固定的、可验证的工件的受管路径发货”之间的现实差异
{
"name": "marketplace-helper",
"permissions": ["issues:update", "network:http"],
"auth_required": true,
"exposed_publicly": true,
"supply_chain_controls": [
"pinned_version",
"signed_artifacts",
"verified_publisher",
"vuln_scanning"
]
}凭证姿态的输入字段
credential_posture 是可选的。它接受以下值 per-user, service-account,或 shared-service-account.
credential_controls 是可选的。它接受JSON数组或逗号分隔的字符串。
公认的控制措施:
scoped_tokensshort_lived_tokensresource_scoped_tokenstoken_rotationper_request_reauth
评分行为:
- 共享服务帐户凭据受到严重惩罚,特别是在公共或高风险服务器上
- 每个用户的凭据得到积极的调整
- 凭证控制薄弱的风险面服务器会失去分数
internet-facing和strict预设可以打开共享凭据并控制覆盖范围
{
"name": "ticket-helper",
"permissions": ["issues:read", "issues:update"],
"auth_required": true,
"exposed_publicly": true,
"tls_enforced": true,
"credential_posture": "service-account",
"credential_controls": [
"scoped_tokens",
"short_lived_tokens",
"token_rotation"
]
}可选的实时GitHub丰富功能
如果 repo 如果您的输入中存在新的元数据,您可以提取新的元数据:
export GITHUB_TOKEN=... # optional but recommended for rate limits
mcp-radar score --input examples/servers.json --live层级
trusted(75–100):在正常对照下,试验通常是安全的review(55–74):可用,但需要先进行手动审查caution(0–54):高风险或维护不善;默认情况下阻止
回购布局
src/mcp_trust_radar/:评分引擎+CLIexamples/:用于快速测试的样本输入tests/:单元测试
发展
pip install -e . pytest
pytest许可证
麻省理工学院
