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
📖 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
| Herramienta | Qué hace |
|---|---|
get_latest_version | Cadena de la última versión estable de un paquete. |
get_all_versions | Cada versión publicada (además de un recuento). |
get_version_info | Manifiesto de una versión específica (deps, licencia, engines, …). |
get_dist_tags | Todos los dist-tags (latest, beta, next, …) y las versiones a las que apuntan. |
get_changelog | Notas de versión de GitHub Releases (si se proporciona una versión) o CHANGELOG.md del repositorio vinculado. |
check_version_exists | Verificación booleana: ¿está publicada pkg@version? |
Herramientas de información del paquete
| Herramienta | Qué hace |
|---|---|
get_package_info | Tarjeta de metadatos de alto nivel: nombre, descripción, autor, licencia, página principal, mantenedores, fechas de creación/modificación. |
get_package_readme | README en markdown de la última versión (truncado a 20 000 caracteres). |
get_package_keywords | Palabras clave / etiquetas declaradas en package.json. |
get_package_repository | URL del repositorio fuente, además de un slug owner/repo analizado cuando el repositorio está en GitHub. |
get_package_homepage | URL de la página principal + URL de la página npm como alternativa. |
get_package_license | Licencia declarada (cadena, SPDX o formato de matriz heredado). |
get_package_size | Tamaño descomprimido (bytes + legible para humanos) y número de archivos de una versión específica. |
Herramientas de dependencias
| Herramienta | Qué hace |
|---|---|
get_dependencies | dependencies de tiempo de ejecución para una versión. |
get_peer_dependencies | peerDependencies + peerDependenciesMeta (marca peers opcionales). |
get_dev_dependencies | devDependencies (solo en tiempo de compilación/pruebas). |
get_dependency_tree | Recorre 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_compatibility | Dado {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
| Herramienta | Qué hace |
|---|---|
check_vulnerabilities | Comprueba 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_status | Informa 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_activity | Fecha de la última publicación, número de publicaciones, cadencia media y una etiqueta de estado (active / slowing / stale / abandoned). |
get_download_stats | Recuentos de descargas semanales / mensuales de la API pública de descargas de npm, además de un nivel de popularidad simple. |
check_typosquat_risk | Señala nombres sospechosamente similares a paquetes populares mediante la distancia de Levenshtein — detecta errores tipográficos comunes en la cadena de suministro. |
get_download_trend | Recuentos 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_popularity | Recuentos 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_version | Desglose 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_details | Detalles completos de un ID de aviso específico (GHSA, CVE, OSV) — resumen, severidad, paquetes npm afectados, versiones parcheadas. |
audit_all_dependencies | Auditorí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_risk | Resuelve las dependencias directas de un paquete, las audita todas y devuelve un nivel de riesgo clean / low / medium / high. |
get_patched_version | Dado 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
| Herramienta | Qué hace |
|---|---|
check_node_compatibility | Devuelve el campo engines (restricciones de node / npm / yarn) declarado por una versión de paquete. |
compare_versions | Compara dos versiones de dependencies, devDependencies, peerDependencies y engines — informa de añadidos / eliminados / cambios de rango. |
get_breaking_changes | Escanea 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_semver | Resuelve 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_outdated | Dado {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
| Herramienta | Qué hace |
|---|---|
search_packages | Búsqueda de texto libre en el npm Registry con puntuaciones de relevancia / calidad / popularidad / mantenimiento. |
get_similar_packages | Encuentra alternativas a un paquete buscando en sus palabras clave declaradas — excluye el propio paquete de origen. |
get_packages_by_author | Todos los paquetes publicados por un nombre de usuario npm determinado (mediante el calificador author:). |
get_organization_packages | Todos los paquetes bajo un scope como @babel o @vue. Sobrecarga de obtención + filtro estricto de prefijo para mayor fiabilidad. |
Herramientas de utilidad
| Herramienta | Qué hace |
|---|---|
batch_get_versions | Búsqueda /latest en paralelo para una lista de paquetes — un viaje de ida y vuelta por paquete en lugar de secuencial. |
validate_package_json | Comprueba 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_command | Construye comandos de instalación para npm / pnpm / yarn / bun con dialectos de indicadores --dev y --exact gestionados por cada gestor. |
resolve_cdn_url | URLs 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)
| Herramienta | Qué hace |
|---|---|
get_bundle_size | Tamañ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_history | Historial de tamaños en versiones recientes. Informa de la tendencia growing / stable / shrinking y el delta porcentual. |
check_treeshakeable | Devuelve true cuando el paquete incluye módulos ES Y declara "sideEffects": false — las dos condiciones necesarias para el tree-shaking del bundler. |
compare_bundle_sizes | Búsqueda de tamaño en paralelo para 2–10 paquetes. Clasifica por tamaño gzip (el más ligero primero). |
get_bundle_size_impact | Enmarcado 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
| Herramienta | Qué 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_support | Tipos integrados (types/typings/exports .d.ts) o un paquete @types/<name> de DefinitelyTyped — informa cuál, o ninguno. |
get_exports_map | Devuelve el campo exports sin procesar además de una lista plana de subrutas (p. ej. ., ./router). |
check_browser_compatible | yes / likely / unlikely / no basado en el campo browser, exports.browser, archivos .node nativos y bin de CLI. |
check_deno_compatible | yes / likely / unknown / no — examina ESM/CJS, módulos nativos y presencia en JSR. |
get_package_on_jsr | Comprueba 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
| Herramienta | Qué hace |
|---|---|
suggest_upgrade_path | Recorre 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_package | Detecta la desaprobación y extrae el reemplazo recomendado del mensaje de desaprobación (patrones: "use X instead", "moved to X", "see X"…). |
check_migration_guide | Obtiene 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
pipnormal - Acceso de red a
registry.npmjs.org,api.osv.dev,api.npmjs.orgy (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
mcp_server.pyregistra cada herramienta conFastMCP(del SDK de Python de MCP). Cada herramienta es una funciónasyncque se comunica con el npm Registry, OSV.dev o la API de descargas de npm a través dehttpx, con un helper compartido_fetch_jsonque aplica un tiempo de espera de 10 s y mensajes de error y 404 coherentes.mcp_client.pyenvuelvemcp.ClientSessioncon una pequeña clase gestionada por contexto — solo la usantest_npm_tool.pyy el chat CLI opcional.- El cliente MCP (Claude Code, Claude Desktop, Cursor, etc.) inicia
mcp_server.pycomo 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 encore/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.