mcpField
F
Fetter MCP

Fetter MCP

远程服务
fetter.io安全135 周前更新

关于 Fetter MCP

Fetter MCP 是供编码 Agent 查询 Python 软件包漏洞信息的远程服务。它查询 PyPI 和 OSV,检查版本、CVE、严重性评分及可用发行版,无需本地安装。

主要功能

  1. 01检查固定版本是否存在 CVE
  2. 02查找最新无已知漏洞的发行版
  3. 03查询版本与漏洞
  4. 04按 CVSS 评分筛选结果
  5. 05通过 HTTP 连接,无需本地安装

适用场景

  1. 01固定依赖版本前检查漏洞
  2. 02添加软件包时查找安全发行版
  3. 03按版本范围审计漏洞

MCP 相关

远程 MCP 服务提供三种工具,用于检查指定版本、查找最新的已知安全发行版,以及查询版本和漏洞数据。MCP 客户端通过 HTTP 端点连接。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.fetter.io/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

3
参数类型必填说明
namestring是要查询的包名(例如 "requests"、"numpy>=2.0"、"flask==3.0.0")。请注意,指定精确的 "==" 版本时,`limit` 和 `retain_passing` 参数不起作用。
limitinteger否名称不是精确版本时,限制要检查的近期版本数量。
cvss_filterstring否CVSS 分数筛选器:"all" 显示所有漏洞,"max" 仅显示观察到的最高分,或使用数字(0.0-10.0)按阈值筛选
retain_passingboolean否名称不是精确版本时,将此项设为 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:检查指定的固定版本是否存在已知 CVE
  • lookup:查找任意包或版本说明符的可用版本及其漏洞

安装

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
  }
}

评论

支持 Markdown

第一次接触 MCP?

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

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