关于 Fetter MCP
Fetter MCP 是供编码 Agent 查询 Python 软件包漏洞信息的远程服务。它查询 PyPI 和 OSV,检查版本、CVE、严重性评分及可用发行版,无需本地安装。
主要功能
- 01检查固定版本是否存在 CVE
- 02查找最新无已知漏洞的发行版
- 03查询版本与漏洞
- 04按 CVSS 评分筛选结果
- 05通过 HTTP 连接,无需本地安装
适用场景
- 01固定依赖版本前检查漏洞
- 02添加软件包时查找安全发行版
- 03按版本范围审计漏洞
MCP 相关
远程 MCP 服务提供三种工具,用于检查指定版本、查找最新的已知安全发行版,以及查询版本和漏洞数据。MCP 客户端通过 HTTP 端点连接。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.fetter.io/mcpclaude mcp add --transport http fetter-io-fetter https://mcp.fetter.io/mcp{"mcpServers":{"fetter-io-fetter":{"type":"http","url":"https://mcp.fetter.io/mcp"}}}在 Cursor 中打开{"servers":{"fetter-io-fetter":{"type":"http","url":"https://mcp.fetter.io/mcp"}}}在 VS Code 中打开{"mcpServers":{"fetter-io-fetter":{"type":"http","url":"https://mcp.fetter.io/mcp"}}}{"mcpServers":{"fetter-io-fetter":{"serverUrl":"https://mcp.fetter.io/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
3| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 要查询的包名(例如 "requests"、"numpy>=2.0"、"flask==3.0.0")。请注意,指定精确的 "==" 版本时,`limit` 和 `retain_passing` 参数不起作用。 |
| limit | integer | 否 | 名称不是精确版本时,限制要检查的近期版本数量。 |
| cvss_filter | string | 否 | CVSS 分数筛选器:"all" 显示所有漏洞,"max" 仅显示观察到的最高分,或使用数字(0.0-10.0)按阈值筛选 |
| retain_passing | boolean | 否 | 名称不是精确版本时,将此项设为 True 会返回所有包的参考信息,包括没有漏洞的包(默认值:false) |
详细介绍
Fetter MCP
Fetter 提供远程 Model Context Protocol(MCP)服务,地址为 https://mcp.fetter.io/mcp,可让 AI 编码 Agent 实时访问 Python 包漏洞数据。它基于 fetter 构建,通过查询 PyPI 和 OSV,展示已知 CVE、CVSS 评分和安全版本,帮助 Agent 在编写代码时做出明智的依赖决策。
工具:
most_recent_not_vulnerable:查找没有已知漏洞的最新包版本is_vulnerable:检查指定的固定版本是否存在已知 CVElookup:查找任意包或版本说明符的可用版本及其漏洞
安装
Fetter MCP 服务使用 HTTP 传输,无需本地安装。只需向 MCP 客户端注册远程 URL。
Claude Code
claude mcp add --transport http fetter https://mcp.fetter.io/mcp
Codex
codex mcp add fetter --url https://mcp.fetter.io/mcp
其他 MCP 客户端
对于任何其他兼容 MCP 的客户端,使用 HTTP 传输提供以下远程服务 URL:
https://mcp.fetter.io/mcp
Agent 用法
安装后,Fetter MCP 工具即可在编码会话期间供 AI Agent 使用。添加或审计依赖时,Agent 可以自动调用这些工具;无需在提示词中明确要求调用工具。
提示词示例
- “将 requests 的最新安全版本添加到 requirements.txt”
- “我当前的依赖中是否存在已知漏洞?”
- “pillow 中没有 CVE 的最新版本是什么?”
- “固定 cryptography 版本之前,检查一下 42.0.5 是否存在漏洞”
Agent 会根据上下文选择合适的工具:
- 添加新包:使用
most_recent_not_vulnerable查找安全版本 - 验证指定的固定版本:使用
is_vulnerable获取明确结果 - 审计现有版本说明符:使用
lookup查看受影响的版本
most_recent_not_vulnerable
查找没有已知漏洞的最新包版本。只需提供包名,服务就会搜索近期发布的版本,找到安全版本。适用于将依赖固定到最新的安全版本。
参数
package_name— 仅包名(不含版本说明符),例如"requests"
请求示例
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 2,
"params": {
"name": "most_recent_not_vulnerable",
"arguments": {
"name": "cryptography"
}
}
}
响应示例:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [],
"structuredContent": {
"package": "cryptography",
"version": "46.0.5",
"vulnerabilities": [],
"vulnerable": false
},
"isError": false
}
}
is_vulnerable
检查指定的包版本是否存在已知漏洞。需要提供精确的版本说明符。返回漏洞 ID、摘要、CVSS 评分、严重性评级和参考 URL。
参数
dep_spec— 精确的版本说明符,例如"requests==2.31.0"
请求示例
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 2,
"params": {
"name": "is_vulnerable",
"arguments": {
"name": "requests==2.19.1"
}
}
}
响应示例:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [],
"structuredContent": {
"package": "requests",
"version": "2.19.1",
"vulnerabilities": [
{
"cvss_score": 5.3,
"id": "GHSA-9hjg-9r4m-mvj7",
"severity": "(Medium):",
"summary": "Requests vulnerable to .netrc credentials leak via malicious URLs",
"url": "https://osv.dev/vulnerability/GHSA-9hjg-9r4m-mvj7"
},
{
"cvss_score": 5.6,
"id": "GHSA-9wx4-h78v-vm56",
"severity": "(Medium):",
"summary": "Requests Session object does not verify requests after making first request with verify=False",
"url": "https://osv.dev/vulnerability/GHSA-9wx4-h78v-vm56"
},
{
"cvss_score": 6.1,
"id": "GHSA-j8r2-6x86-q33q",
"severity": "(Medium):",
"summary": "Unintended leak of Proxy-Authorization header in requests",
"url": "https://osv.dev/vulnerability/GHSA-j8r2-6x86-q33q"
},
{
"cvss_score": 7.5,
"id": "GHSA-x84v-xcm2-53pg",
"severity": "(High):",
"summary": "Insufficiently Protected Credentials in Requests",
"url": "https://osv.dev/vulnerability/GHSA-x84v-xcm2-53pg"
},
{
"cvss_score": null,
"id": "PYSEC-2018-28",
"severity": null,
"summary": "",
"url": "https://osv.dev/vulnerability/PYSEC-2018-28"
},
{
"cvss_score": null,
"id": "PYSEC-2023-74",
"severity": null,
"summary": "",
"url": "https://osv.dev/vulnerability/PYSEC-2023-74"
}
],
"vulnerable": true
},
"isError": false
}
}
lookup
根据包名和可选的版本说明符查找包,了解有哪些可用版本以及它们是否存在已知漏洞。支持 "requests"、"numpy>=2.0" 或 "flask==3.0.0" 等说明符。
参数
dep_specs— 包名或版本说明符cvss_threshold— 筛选 CVSS 评分达到或高于此值的漏洞(0–10)max_observed_score— 每个版本仅返回最高 CVSS 评分,而不是所有单个漏洞count— 限制检查的近期版本数量retain_passing— 在结果中包含没有已知漏洞的版本
请求示例
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 2,
"params": {
"name": "lookup",
"arguments": {
"name": "requests>=2.32.0",
"retain_passing": true
}
}
}
响应示例:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [],
"structuredContent": {
"package": "requests",
"versions": [
{
"version": "2.32.0",
"vulnerabilities": [
{
"cvss_score": 5.3,
"id": "GHSA-9hjg-9r4m-mvj7",
"severity": "(Medium):",
"summary": "Requests vulnerable to .netrc credentials leak via malicious URLs",
"url": "https://osv.dev/vulnerability/GHSA-9hjg-9r4m-mvj7"
}
],
"vulnerable": true
},
{
"version": "2.32.1",
"vulnerabilities": [
{
"cvss_score": 5.3,
"id": "GHSA-9hjg-9r4m-mvj7",
"severity": "(Medium):",
"summary": "Requests vulnerable to .netrc credentials leak via malicious URLs",
"url": "https://osv.dev/vulnerability/GHSA-9hjg-9r4m-mvj7"
}
],
"vulnerable": true
},
{
"version": "2.32.2",
"vulnerabilities": [
{
"cvss_score": 5.3,
"id": "GHSA-9hjg-9r4m-mvj7",
"severity": "(Medium):",
"summary": "Requests vulnerable to .netrc credentials leak via malicious URLs",
"url": "https://osv.dev/vulnerability/GHSA-9hjg-9r4m-mvj7"
}
],
"vulnerable": true
},
{
"version": "2.32.3",
"vulnerabilities": [
{
"cvss_score": 5.3,
"id": "GHSA-9hjg-9r4m-mvj7",
"severity": "(Medium):",
"summary": "Requests vulnerable to .netrc credentials leak via malicious URLs",
"url": "https://osv.dev/vulnerability/GHSA-9hjg-9r4m-mvj7"
}
],
"vulnerable": true
},
{
"version": "2.32.4",
"vulnerabilities": [],
"vulnerable": false
},
{
"version": "2.32.5",
"vulnerabilities": [],
"vulnerable": false
}
]
},
"isError": false
}
}
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。