Kodus OSV

Consulta de vulnerabilidades de código abierto mediante las herramientas osv_query/osv_query_batch.

Documentación

OSV MCP Server (Bun)

Servidor HTTP de Model Context Protocol (MCP) remoto que envuelve la API OSV v1 para consultas bajo demanda de vulnerabilidades de código abierto (feed de ejemplo: https://osv.dev/list?q=%40NESTJS%2FCORE&ecosystem=npm). Exportado como herramientas MCP para que los agentes puedan consultar OSV directamente.

Características

  • Endpoint MCP HTTP transmisible en /mcp.
  • Herramientas: osv_query (objetivo único) y osv_query_batch (múltiples).
  • URL base configurable (OSV_API_URL, por defecto https://api.osv.dev/v1).
  • Esquemas claros y validación para guiar a los LLM (commit XOR version, reglas de purl, paginación).

Inicio rápido

Requisitos: Bun.

bun install
PORT=3000 HOST=0.0.0.0 OSV_API_URL=https://api.osv.dev/v1 bun run index.ts

Endpoint MCP: http://<host>:<port>/mcp.

Variables de entorno:

  • PORT / HOST: enlace HTTP (por defecto 3000 / 0.0.0.0).
  • OSV_API_URL: anula la URL base de OSV.

Configuración del cliente MCP

  • Claude Code CLI: claude mcp add --transport http mcp-osv http://localhost:3000/mcp
  • VS Code: code --add-mcp "{\"name\":\"mcp-osv\",\"type\":\"http\",\"url\":\"http://localhost:3000/mcp\"}"
  • MCP Inspector: npx @modelcontextprotocol/inspector -> conectar a http://localhost:3000/mcp Reemplaza localhost con tu host/puerto si es remoto.

Herramientas y parámetros

osv_query

{
  "commit": "sha OR",
  "version": "version string OR",
  "package": {
    "name": "required with ecosystem if not using purl",
    "ecosystem": "required with name if not using purl",
    "purl": "pkg:pypi/jinja2 // purl OR name+ecosystem; if version is present, omit @version here"
  },
  "pageToken": "optional pagination token from previous OSV response"
}

Reglas:

  • Usa commit XOR version (uno u otro, nunca ambos).
  • Si version está presente, package es obligatorio.
  • package debe ser purl o (name + ecosystem).
  • Si version existe y se usa package.purl, omite @version en el purl.

osv_query_batch

{
  "queries": [
    {
      "commit": "sha OR",
      "version": "version string OR",
      "package": {
        "name": "pkg name",
        "ecosystem": "ecosystem",
        "purl": "pkg:ecosys/name"
      },
      "pageToken": "optional"
    }
  ]
}

Reglas: cada elemento sigue las mismas reglas que osv_query.

Ejemplos de llamadas

  • Versión PyPI: {"package":{"purl":"pkg:pypi/jinja2"},"version":"3.1.4"}
  • npm con nombre+ecosistema: {"package":{"name":"@nestjs/core","ecosystem":"npm"},"version":"10.2.10"}
  • Búsqueda de commit: {"commit":"<sha>","package":{"ecosystem":"Go","name":"github.com/foo/bar"}}

Depuración

  • Registro del servidor: OSV MCP server listening on http://<host>:<port>/mcp
  • Inicialización con curl: curl -H "content-type: application/json" -H "accept: application/json, text/event-stream" -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","clientInfo":{"name":"curl","version":"0.0.0"},"capabilities":{}}}' http://localhost:3000/mcp
  • Listar herramientas: mismo endpoint con {"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}

Licencia

Licencia MIT. Consulta LICENSE.