Depverse

Servidor MCP que proporciona a agentes de codificación de IA versiones de paquetes npm y PyPI en tiempo real, metadatos e información de dependencias.

Documentación

Depverse

Docs Python MCP npm Registry Tools

📖 Documentación completa → Guías de instalación, referencia de herramientas y configuración para Claude Code, Claude Desktop, Cursor, Cline, Windsurf y Copilot.

Depverse es un servidor MCP (Model Context Protocol) que expone el npm Registry público como 39 herramientas estructuradas que Claude (o cualquier cliente compatible con MCP) puede invocar — versiones, dependencias, changelogs, avisos de seguridad, tendencias de descargas y más — sin salir nunca del editor.

El servidor habla el transporte stdio de MCP, por lo que se conecta directamente a Claude Code, Claude Desktop, Cursor, Cline, Windsurf y Copilot Chat. No se requiere clave API — el cliente aporta su propia autenticación.


Características

Depverse expone 58 herramientas agrupadas en diez categorías.

Herramientas de versiones

HerramientaQué hace
get_latest_versionCadena de la última versión estable de un paquete.
get_all_versionsCada versión publicada (además de un recuento).
get_version_infoManifiesto de una versión específica (deps, licencia, engines, …).
get_dist_tagsTodos los dist-tags (latest, beta, next, …) y las versiones a las que apuntan.
get_changelogNotas de versión de GitHub Releases (si se proporciona una versión) o CHANGELOG.md del repositorio vinculado.
check_version_existsVerificación booleana: ¿está publicada pkg@version?

Herramientas de información del paquete

HerramientaQué hace
get_package_infoTarjeta de metadatos de alto nivel: nombre, descripción, autor, licencia, página principal, mantenedores, fechas de creación/modificación.
get_package_readmeREADME en markdown de la última versión (truncado a 20 000 caracteres).
get_package_keywordsPalabras clave / etiquetas declaradas en package.json.
get_package_repositoryURL del repositorio fuente, además de un slug owner/repo analizado cuando el repositorio está en GitHub.
get_package_homepageURL de la página principal + URL de la página npm como alternativa.
get_package_licenseLicencia declarada (cadena, SPDX o formato de matriz heredado).
get_package_sizeTamaño descomprimido (bytes + legible para humanos) y número de archivos de una versión específica.

Herramientas de dependencias

HerramientaQué hace
get_dependenciesdependencies de tiempo de ejecución para una versión.
get_peer_dependenciespeerDependencies + peerDependenciesMeta (marca peers opcionales).
get_dev_dependenciesdevDependencies (solo en tiempo de compilación/pruebas).
get_dependency_treeRecorre el grafo de dependencias transitivas. Resuelve nodos en paralelo, elimina duplicados y limita a max_depth (por defecto 2, con límite máximo de 4).
check_peer_compatibilityDado {peer_name: installed_version}, informa por peer de yes / no / unknown / missing / missing-optional. Incluye un pequeño comparador semver que maneja ^, ~, >=, <=, >, <, =, *, `

Herramientas de seguridad y salud

HerramientaQué hace
check_vulnerabilitiesComprueba un paquete + versión contra la base de datos de OSV.dev. Devuelve todos los avisos coincidentes (GHSA, CVE) con severidad y referencias.
get_deprecation_statusInforma si un paquete o una versión específica está en desuso, además del mensaje de desaprobación. Escanea todas las versiones cuando no se proporciona version.
check_maintainer_activityFecha de la última publicación, número de publicaciones, cadencia media y una etiqueta de estado (active / slowing / stale / abandoned).
get_download_statsRecuentos de descargas semanales / mensuales de la API pública de descargas de npm, además de un nivel de popularidad simple.
check_typosquat_riskSeñala nombres sospechosamente similares a paquetes populares mediante la distancia de Levenshtein — detecta errores tipográficos comunes en la cadena de suministro.
get_download_trendRecuentos de descargas día a día en un rango (last-month, last-year o fechas personalizadas) con una etiqueta de tendencia growing / declining / flat.
compare_popularityRecuentos de descargas lado a lado para 2–10 paquetes. Devuelve una clasificación además de la cuota de cada paquete sobre el total combinado.
get_download_by_versionDesglose de descargas por versión de la última semana — muestra qué versiones están instalando realmente los usuarios, además de la línea de versión principal más popular.
get_vulnerability_detailsDetalles completos de un ID de aviso específico (GHSA, CVE, OSV) — resumen, severidad, paquetes npm afectados, versiones parcheadas.
audit_all_dependenciesAuditoría de vulnerabilidades en una sola llamada de un package.json completo mediante el endpoint por lotes de OSV. Informa recuentos de vulnerabilidades por dependencia.
check_supply_chain_riskResuelve las dependencias directas de un paquete, las audita todas y devuelve un nivel de riesgo clean / low / medium / high.
get_patched_versionDado un ID de CVE/GHSA/OSV, devuelve la primera versión parcheada por paquete npm afectado — a qué versión debes actualizar.

Herramientas de compatibilidad y actualización

HerramientaQué hace
check_node_compatibilityDevuelve el campo engines (restricciones de node / npm / yarn) declarado por una versión de paquete.
compare_versionsCompara dos versiones de dependencies, devDependencies, peerDependencies y engines — informa de añadidos / eliminados / cambios de rango.
get_breaking_changesEscanea un diff de versión from → to en busca de dependencias directas o peers cuyo rango declarado cruzó un límite de versión principal (major).
resolve_semverResuelve un rango npm (^18.0.0, ~4.17.20, >=2 <3, 1.x, *) a la versión publicada más alta que lo satisfaga.
check_outdatedDado {package_name: installed_version}, devuelve el indicador outdated por paquete y el nivel de brecha (major / minor / patch). Expansión en paralelo.

Herramientas de búsqueda y descubrimiento

HerramientaQué hace
search_packagesBúsqueda de texto libre en el npm Registry con puntuaciones de relevancia / calidad / popularidad / mantenimiento.
get_similar_packagesEncuentra alternativas a un paquete buscando en sus palabras clave declaradas — excluye el propio paquete de origen.
get_packages_by_authorTodos los paquetes publicados por un nombre de usuario npm determinado (mediante el calificador author:).
get_organization_packagesTodos los paquetes bajo un scope como @babel o @vue. Sobrecarga de obtención + filtro estricto de prefijo para mayor fiabilidad.

Herramientas de utilidad

HerramientaQué hace
batch_get_versionsBúsqueda /latest en paralelo para una lista de paquetes — un viaje de ida y vuelta por paquete en lugar de secuencial.
validate_package_jsonComprueba que los rangos de dependencias en un package.json se resuelvan al menos a una versión publicada. Señala errores tipográficos como lodash@999.0.0.
generate_install_commandConstruye comandos de instalación para npm / pnpm / yarn / bun con dialectos de indicadores --dev y --exact gestionados por cada gestor.
resolve_cdn_urlURLs fijadas de jsDelivr, unpkg y esm.sh para un paquete + ruta de archivo opcional. Resuelve automáticamente "latest" cuando no se proporciona versión.

Herramientas de tamaño de bundle (a través de bundlephobia.com)

HerramientaQué hace
get_bundle_sizeTamaño minificado + gzip de un paquete (con una versión específica o la última), además del número de dependencias y disponibilidad de ESM.
get_bundle_size_historyHistorial de tamaños en versiones recientes. Informa de la tendencia growing / stable / shrinking y el delta porcentual.
check_treeshakeableDevuelve true cuando el paquete incluye módulos ES Y declara "sideEffects": false — las dos condiciones necesarias para el tree-shaking del bundler.
compare_bundle_sizesBúsqueda de tamaño en paralelo para 2–10 paquetes. Clasifica por tamaño gzip (el más ligero primero).
get_bundle_size_impactEnmarcado para revisión de PR: "añadir X añadirá Y KB en gzip con Z dependencias transitivas" — además de un nivel impact (diminuto / pequeño / moderado / pesado).

Herramientas de módulo y compatibilidad

HerramientaQué hace
check_esm_support¿El paquete incluye módulos ES? Lee exports.import, el campo module, type: "module".
check_cjs_support¿Admite CommonJS? Lee main, exports.require y las reglas predeterminadas cuando no existen marcadores ESM.
check_typescript_supportTipos integrados (types/typings/exports .d.ts) o un paquete @types/<name> de DefinitelyTyped — informa cuál, o ninguno.
get_exports_mapDevuelve el campo exports sin procesar además de una lista plana de subrutas (p. ej. ., ./router).
check_browser_compatibleyes / likely / unlikely / no basado en el campo browser, exports.browser, archivos .node nativos y bin de CLI.
check_deno_compatibleyes / likely / unknown / no — examina ESM/CJS, módulos nativos y presencia en JSR.
get_package_on_jsrComprueba si un paquete con scope también está en JSR (el registro moderno centrado en TypeScript utilizado por Deno).

Herramientas de migración y actualización

HerramientaQué hace
suggest_upgrade_pathRecorre de versión-origen → versión-destino en saltos por versión principal, recomendando la versión estable más alta de cada línea principal y llamando a get_breaking_changes en cada salto.
find_replacement_packageDetecta la desaprobación y extrae el reemplazo recomendado del mensaje de desaprobación (patrones: "use X instead", "moved to X", "see X"…).
check_migration_guideObtiene MIGRATION.md / UPGRADING.md / UPGRADE.md del repositorio GitHub del paquete. Como alternativa, escanea el contenido del repositorio en busca de nombres de archivo relacionados con la migración.

Todas las herramientas devuelven JSON. Los errores se convierten en ValueError con un mensaje claro (p. ej. "npm package 'foo' was not found."), que MCP presenta al cliente como un error de herramienta.


Estructura del proyecto

Depverse/
├── mcp_server.py       # The MCP server — all 39 npm tools live here
├── mcp_client.py       # Thin MCP client wrapper (stdio transport)
├── test_npm_tool.py    # Manual end-to-end test for the server
├── pyproject.toml
├── uv.lock
├── .mcp.json           # Example MCP server config for external clients
├── docs/               # Documentation site (GitHub Pages)
│
│   # --- Optional: bundled CLI chat (main.py) ---
├── main.py             # Entrypoint for the optional CLI chat
└── core/
    ├── chat.py         # Tool-using chat loop
    ├── cli_chat.py     # CLI-flavoured chat (supports @docs and /commands)
    ├── cli.py          # prompt-toolkit UI (autocompletion, history, key bindings)
    ├── claude.py       # Anthropic API wrapper
    └── tools.py        # Bridges MCP tool calls into Anthropic tool_use blocks

Requisitos previos

  • Python 3.10+
  • uv (recomendado) o pip normal
  • Acceso de red a registry.npmjs.org, api.osv.dev, api.npmjs.org y (para changelogs) api.github.com / raw.githubusercontent.com

No se requiere clave API de Anthropic. Claude Code (o cualquier cliente MCP) aporta su propia autenticación. Solo se necesita una clave si también quieres usar el chat CLI opcional incluido (main.py).


Instalación

git clone https://github.com/yash-neural/Depverse.git
cd Depverse
uv venv
source .venv/bin/activate     # Windows: .venv\Scripts\activate
uv pip install -e .

O sin uv:

python -m venv .venv
source .venv/bin/activate
pip install -e .

Verifica que el servidor se inicia correctamente:

uv run test_npm_tool.py   # spawns the server, lists tools, calls each once

Uso de Depverse desde otros clientes MCP

Depverse es un servidor MCP stdio estándar — puedes conectarlo a Claude Desktop, Claude Code o cualquier otro cliente MCP apuntando su configuración a mcp_server.py.

Ejemplo (.mcp.json / Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "Depverse": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/Depverse",
        "run",
        "mcp_server.py"
      ],
      "env": {}
    }
  }
}

Usa "command": "python" y elimina "run" de args si no estás usando uv.


Prueba manual de extremo a extremo

test_npm_tool.py inicia el servidor, lista sus herramientas y llama a cada una con una entrada realista. Útil para verificar cambios sin el bucle completo de Claude:

uv run test_npm_tool.py

Imprime cada llamada de herramienta y la respuesta JSON (truncada), para que puedas revisar la salida visualmente.


Cómo funciona

  1. mcp_server.py registra cada herramienta con FastMCP (del SDK de Python de MCP). Cada herramienta es una función async que se comunica con el npm Registry, OSV.dev o la API de descargas de npm a través de httpx, con un helper compartido _fetch_json que aplica un tiempo de espera de 10 s y mensajes de error y 404 coherentes.
  2. mcp_client.py envuelve mcp.ClientSession con una pequeña clase gestionada por contexto — solo la usan test_npm_tool.py y el chat CLI opcional.
  3. El cliente MCP (Claude Code, Claude Desktop, Cursor, etc.) inicia mcp_server.py como subproceso a través de stdio. Los marcos JSON-RPC fluyen en ambas direcciones; las llamadas a herramientas devuelven JSON estructurado sobre el que el modelo puede razonar. El servidor MCP es el punto central — todo en core/ es un andamiaje para el chat CLI opcional incluido, que puedes ignorar si solo estás conectando Depverse a Claude Code.

Licencia

Aún no se ha incluido ningún archivo de licencia — añade uno (MIT es una opción sensata por defecto) antes de publicar o aceptar contribuciones externas.