Fetter MCP

Obtén el paquete de Python más reciente sin vulnerabilidades, y más.

Documentación

Fetter MCP

Fetter proporciona un servidor remoto de Model Context Protocol (MCP) en https://mcp.fetter.io/mcp que brinda a los agentes de codificación de IA acceso en tiempo real a datos de vulnerabilidades de paquetes de Python. Construido sobre fetter, consulta PyPI y OSV para revelar CVEs conocidos, puntuaciones CVSS y versiones seguras, de modo que tu agente pueda tomar decisiones informadas sobre dependencias mientras escribe código.

Herramientas:

  • most_recent_not_vulnerable: encuentra la versión más reciente de un paquete que esté libre de vulnerabilidades conocidas
  • is_vulnerable: verifica si una versión fijada específica tiene CVEs conocidos
  • lookup: encuentra versiones disponibles y sus vulnerabilidades para cualquier paquete o especificador

Instalación

El servidor Fetter MCP utiliza el transporte HTTP y no requiere instalación local. Solo registra la URL remota con tu cliente MCP.

Claude Code

claude mcp add --transport http fetter https://mcp.fetter.io/mcp

Codex

codex mcp add fetter --url https://mcp.fetter.io/mcp

Otros Clientes MCP

Para cualquier otro cliente compatible con MCP, proporciona la siguiente URL de servidor remoto usando el transporte HTTP:

https://mcp.fetter.io/mcp

Uso del Agente

Una vez instalado, las herramientas de Fetter MCP están disponibles para tu agente de IA durante las sesiones de codificación. El agente puede llamarlas automáticamente al agregar o auditar dependencias; no se requiere invocación explícita de herramientas en tus indicaciones.

Ejemplos de indicaciones

  • "Agrega la última versión segura de requests a requirements.txt"
  • "¿Hay vulnerabilidades conocidas en mis dependencias actuales?"
  • "¿Cuál es la versión más reciente de pillow sin CVEs?"
  • "Antes de fijar cryptography, verifica si 42.0.5 es vulnerable"

El agente selecciona la herramienta adecuada según el contexto:

  • Agregar un nuevo paquete: most_recent_not_vulnerable para encontrar una versión segura
  • Validar una versión fijada específica: is_vulnerable para una respuesta definitiva
  • Auditar un especificador existente: lookup para ver versiones afectadas

most_recent_not_vulnerable

Encuentra la versión más reciente de un paquete que no tenga vulnerabilidades conocidas. Proporciona solo un nombre de paquete y el servidor buscará en versiones recientes una versión segura. Útil al fijar una dependencia a la versión limpia más reciente.

Parámetros

  • package_name — solo nombre del paquete (sin especificador de versión), p. ej. "requests"

Solicitud de Ejemplo

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 2,
  "params": {
    "name": "most_recent_not_vulnerable",
    "arguments": {
      "name": "cryptography"
    }
  }
}

Respuesta de Ejemplo:

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [],
    "structuredContent": {
      "package": "cryptography",
      "version": "46.0.5",
      "vulnerabilities": [],
      "vulnerable": false
    },
    "isError": false
  }
}

is_vulnerable

Verifica si una versión específica de un paquete tiene vulnerabilidades conocidas. Requiere un especificador de versión exacto. Devuelve IDs de vulnerabilidad, resúmenes, puntuaciones CVSS, clasificaciones de severidad y URLs de referencia.

Parámetros

  • dep_spec — especificador de versión exacto, p. ej. "requests==2.31.0"

Solicitud de Ejemplo

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 2,
  "params": {
    "name": "is_vulnerable",
    "arguments": {
      "name": "requests==2.19.1"
    }
  }
}

Respuesta de Ejemplo:

{
  "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

Busca un paquete por nombre y especificador de versión opcional para encontrar qué versiones están disponibles y si tienen vulnerabilidades conocidas. Admite especificadores como "requests", "numpy>=2.0" o "flask==3.0.0".

Parámetros

  • dep_specs — nombre del paquete o especificador de versión
  • cvss_threshold — filtra a vulnerabilidades con puntuación CVSS igual o superior a este valor (0–10)
  • max_observed_score — devuelve solo la puntuación CVSS más alta por versión en lugar de todas las vulnerabilidades individuales
  • count — limita el número de versiones recientes verificadas
  • retain_passing — incluye versiones sin vulnerabilidades conocidas en los resultados

Solicitud de Ejemplo

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 2,
  "params": {
    "name": "lookup",
    "arguments": {
      "name": "requests>=2.32.0",
      "retain_passing": true
    }
  }
}

Respuesta de Ejemplo:

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