mcpField
T
Tooltrust Scanner

Tooltrust Scanner

本地服务
github.com/AgentSafe-AI开发工具192 周前更新

关于 Tooltrust Scanner

Tooltrust Scanner 是用于检查 MCP 工具定义的静态安全扫描器,可作为 MCP 服务、命令行工具和 CI 检查运行。它在 Agent 使用工具前评定风险等级并给出策略决定。

主要功能

  1. 01静态分析 MCP 工具定义
  2. 02检测提示词注入和权限风险
  3. 03发现供应链及软件包威胁
  4. 04评定 A–F 等级并给出执行策略
  5. 05扫描配置、服务和 JSON 定义

适用场景

  1. 01安装前审查 MCP 服务
  2. 02在 CI 中检查工具定义
  3. 03检查本地 MCP 配置
  4. 04对高风险工具阻止或要求审批

MCP 相关

作为 MCP 服务,它提供扫描配置、运行中的服务和原始 JSON 定义、列出规则及查询目录等级的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"tooltrust-scanner": {
"command": "npx",
"args": [
"-y",
"tooltrust-mcp"
]
}
}
}
启动命令npx -y tooltrust-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmtooltrust-mcp1.0.9

工具

5

收录的工具列表 · 更新于 3 周前

此工具无需参数。

详细介绍

ToolTrust

ToolTrust Scanner

MCP 工具定义的静态安全扫描器
在 Agent 调用工具前评定信任等级(A–F)——可作为 MCP 服务、命令行工具或 CI 检查运行。

CI Security Go Report Card License: MIT GitHub stars


Agent 调用的每个 MCP 工具都是一个攻击面——提示词注入、数据窃取、权限提升、供应链后门。ToolTrust 会在 Agent 信任工具之前扫描工具定义,并评定信任等级(A–F),让你了解风险。ToolTrust 是一个 MCP 服务和命令行/CI 工具,而非宿主、网关或运行时代理。其覆盖范围正从当前以 MCP 为中心的工作流扩展;技能及其他 Agent 工具格式也已列入路线图。

浏览 ToolTrust 在线目录 — 安装前查看信任等级和基于扫描的报告。

ToolTrust 目录界面

MCP 演示:从你的 Agent 运行完整的配置扫描。

ToolTrust MCP 演示

30 秒内扫描你的配置

将 ToolTrust 添加为 MCP 服务,让 Agent 审查自己的工具(stdio 传输——不监听网络;宿主会将其作为子进程启动):

{
  "mcpServers": {
    "tooltrust": {
      "command": "npx",
      "args": ["-y", "tooltrust-mcp"]
    }
  }
}

然后向 Agent 提问:“运行 tooltrust_scan_config”

它会读取你的 MCP 配置,并行连接到每个服务,扫描所有工具,然后返回包含等级和执行决策的风险报告——整个过程只需几秒。

也可以使用命令行工具:

curl -sfL https://raw.githubusercontent.com/AgentSafe-AI/tooltrust-scanner/main/install.sh | bash
tooltrust-scanner scan --server "npx -y @modelcontextprotocol/server-filesystem /tmp"

示例快照(研究样本)

公开的 ToolTrust 目录 会随着扫描规模扩大,持续更新当前等级和汇总数据。一轮已发布的研究展示了问题的大致情况——207 个 MCP 服务、3,235 个工具——并非我们目前扫描的所有内容的完整统计:

指标数量
样本中的 MCP 服务207
分析的独立工具3,235
安全问题总数3,613
至少存在一个问题的服务145(70%)
获得干净 A 级的服务22(10%)
可任意执行代码的服务16

该样本中只有 10% 的服务获得了干净的 A 级。 请访问 tooltrust.dev 查看最新的全目录结果(此表仅作为带有明确标注的快照)。

🔍 检测内容

ToolTrust 在本仓库中运行 16 条静态工具定义规则(AS-001–AS-011、AS-013–AS-017),并运行 2 条针对嵌入式 MCP 实现的源码扫描规则(AS-018、AS-019)。AS-012(工具变更)会在新扫描结果与先前运行结果进行比较时,由 ToolTrust Directory 评估。

ID严重程度检测内容
🛡️ AS‑001Critical工具投毒 — 工具描述中隐藏的对抗性提示词(ignore previous instructions、<INST>)
🔑 AS‑002High/Low权限范围 — exec、network、db、fs 超出声明用途;输入架构范围过宽
📐 AS‑003High范围不匹配 — 工具名称与其权限相矛盾(例如,read_config 具有 exec 权限)
📦 AS‑004High/Critical供应链 CVE — 通过 OSV 检测捆绑依赖中的已知 CVE
🔓 AS‑005High权限提升 — admin/:write OAuth 作用域;描述中的 sudo/impersonate
⚡ AS‑006Critical任意代码执行 — evaluate_script、_evaluate 后缀、execute javascript、page.evaluate() 模式
ℹ️ AS‑007Info工具数据不足 — 工具缺少有效描述或架构
🚨 AS‑008Critical已知受攻击的软件包 — 离线内嵌的已确认供应链攻击黑名单(LiteLLM 1.82.7/1.82.8、Trivy v0.69.4-v0.69.6、Langflow <1.9.0、Axios 1.14.1/0.30.4)。零延迟,无需网络。
🔤 AS‑009Medium仿冒名称 — 工具名称与知名 MCP 工具的编辑距离不超过 2,疑似冒充
🗝️ AS‑010Medium密钥处理 — 输入参数接受 API 密钥/密码;凭据以不安全的方式记录
⚡ AS‑011Low抗拒绝服务能力 — 网络/exec 工具未配置速率限制、超时或重试
🔄 AS‑012High暗中变更 — 同一版本的工具集在多次扫描之间发生变化,却未提升版本号 (仅限目录流水线)
👥 AS‑013High/Medium工具劫持 — 重名或近似重名的工具劫持原本发往可信工具的调用
ℹ️ AS‑014Info依赖清单不可用 — MCP 服务既未公开 metadata.dependencies,也未提供 repo_url,因此供应链覆盖范围有限,必须视为不完整
⚠️ AS‑015Medium/High可疑的 NPM 生命周期脚本 — npm 依赖包发布 preinstall / postinstall / 类似的安装时脚本;若包含远程获取或内联执行模式,严重程度会升高
🚨 AS‑016Critical可疑的 NPM IOC 依赖 — 已发布的 npm 元数据或安装时脚本引用已知恶意 IOC 软件包、域名、URL 或经审核的脚本模式(如 plain-crypto-js),即使顶层软件包名称是新的也不例外
⚠️ AS‑017Medium可疑的数据外传描述 — 工具描述明确建议将用户数据、内容或对话历史发送至外部 / 远程端点,但未将其归类为提示词注入
ℹ️ AS‑018Info检测到嵌入式 MCP 服务 — 发现源码层面的 MCP SDK 使用情况,但无法从清单或实时握手中枚举工具,因此仍需人工审核
🔓 AS‑019High未认证的 MCP 路由暴露 — 嵌入式 MCP HTTP 路由暴露了同一个处理程序,却未使用等效的身份验证中间件

完整规则详情:docs/RULES.md

工作原理

  1. 解析 — 连接到正在运行的 MCP 服务(或读取 JSON 文件),并提取其中的所有工具定义
  2. 分析 — 针对每个工具的名称、描述、架构和权限运行工具定义规则;源代码扫描还会检查嵌入的 MCP 实现
  3. 评级 — 为每个工具分配数值风险评分和字母等级(A–F)
  4. 执行 — 将每个等级映射到网关策略:ALLOW、REQUIRE_APPROVAL 或 BLOCK

纯静态分析。不调用大模型。除可选的 CVE 查询外,不会有数据离开你的计算机。毫秒级运行。结果确定且可复现。

安装

# One-line install (macOS / Linux)
curl -sfL https://raw.githubusercontent.com/AgentSafe-AI/tooltrust-scanner/main/install.sh | bash

# Go
go install github.com/AgentSafe-AI/tooltrust-scanner/cmd/tooltrust-scanner@latest

# npx (no install needed)
npx -y tooltrust-mcp

MCP 工具

作为 MCP 服务运行时,ToolTrust 会向你的 Agent 提供以下工具:

工具功能数据访问
tooltrust_scan_config扫描 .mcp.json 或 ~/.claude.json 中的所有 MCP 服务读取本地配置;将每个服务作为子进程启动
tooltrust_scan_server按命令启动并扫描指定的 MCP 服务将用户提供的命令作为子进程运行(stdio)
tooltrust_scanner_scan扫描原始 JSON 工具定义数据仅在内存中处理;不使用子进程或网络
tooltrust_lookup从 ToolTrust Directory 查询服务的信任等级向 ToolTrust Directory API 发起网络请求
tooltrust_list_rules列出所有内置安全规则仅访问本地目录

CI / GitHub Actions

在你的流水线中阻止有风险的 MCP 服务:

- name: Audit MCP Server
  uses: AgentSafe-AI/tooltrust-scanner@main
  with:
    server: "npx -y @modelcontextprotocol/server-filesystem /tmp"
    fail-on: "approval"

部署与安全

部署时,请使用安装中的安装路径,或 CI / GitHub Actions 中的工作流示例。有关漏洞报告和披露政策,请参阅 docs/SECURITY.md。

安装前扫描拦截

不再将不受信任的 MCP 服务添加到配置中:

# Scans the server, then auto-installs if Grade A/B, prompts on C/D, blocks on F
tooltrust-scanner gate @modelcontextprotocol/server-memory -- /tmp

# Replace `claude mcp add` with a scanned install
alias mcp-add='tooltrust-scanner gate'

完整的拦截选项和 pre-commit 钩子设置方法:docs/USAGE.md

为你的项目添加信任徽章

如果你的 MCP 服务通过了 ToolTrust 检查,请告知用户:

[![ToolTrust Grade A](https://img.shields.io/badge/ToolTrust-Grade%20A-brightgreen)](https://www.tooltrust.dev/)

ToolTrust 等级 A


供应链警报: ToolTrust 能检测并阻止已确认遭到入侵的软件包,包括 LiteLLM v1.82.7/8(TeamPCP 后门)、Trivy v0.69.4–v0.69.6 和 Langflow < 1.9.0。如果遇到带有规则 AS-008 的 F 级评分,请立即移除该软件包并轮换所有凭据。


使用指南 · 开发者指南 · 参与贡献 · 部署与安全 · 更新日志 · 安全 · 许可证:MIT

漏洞查询完整性

如果 OSV 查询失败(包括遭遇速率限制、服务错误、响应格式错误或超时),扫描会以 scan incomplete 失败,而不会生成成功报告或安全等级。部分查询失败也会导致扫描失败。CLI 会以非零状态码退出,MCP 扫描调用会返回工具错误,拦截程序不会安装该服务。此设计有意优先返回明确的不完整结果,而非保证可用性;OSV 服务中断可能导致无法扫描声明了依赖项的工具。

TOOLTRUST_OSV_URL 可用于选择兼容 OSV 的查询端点(默认值:https://api.osv.dev/v1/query)。请仅使用可信服务:声明的依赖项名称和版本会发送到该端点。除用于本地集成测试的数字回环地址 HTTP 外,必须使用 HTTPS;不允许包含内嵌凭据或片段。如果覆盖端点查询失败,不会回退到公共 API。

项目本地验证技能会在 GitHub Actions 中以 CLI and MCP Verification 运行,涵盖基准路径、发现功能回归测试以及自有的回环 OSV 测试夹具。即使验证失败,也会上传报告和命令记录。此任务不包含对公共 OSV 服务可用性的实时检查,也不包含 MCP HTTP 传输。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。