@4da/mcp-server
Inteligencia de dependencias para agentes de IA. Escaneo de CVE, comprobaciones de estado, planificación de actualizaciones.
Documentación
@4da/mcp-server
Inteligencia de dependencias para agentes de codificación con IA. Escaneo de CVE en vivo, comprobaciones de salud de dependencias, planificación de actualizaciones, noticias del ecosistema y memoria de decisiones persistente. Cero configuración, privacidad primero.
You: "Check my dependency health"
Claude: Health: 72/100. 47 dependencies scanned, 3 vulnerable, 1 deprecated, 8 outdated.
CRITICAL openssl-sys 0.9.93 CVE-2025-4231 -> 0.9.96
HIGH serde 1.0.197 RUSTSEC-2026-12 -> 1.0.210
MEDIUM cookie 0.17.0 deprecated -> 0.18.1
Quick wins: 6 patch upgrades, 2 minor. Run upgrade_planner for full plan.
Un solo comando para instalar. Sin claves API. Sin cuentas. Ningún código sale de tu máquina.
Instalar
claude mcp add 4da -- npx @4da/mcp-server
Cursor / Windsurf
Añade a ~/.cursor/mcp.json o ~/.windsurf/mcp.json:
{
"mcpServers": {
"4da": {
"command": "npx",
"args": ["@4da/mcp-server"]
}
}
}
VS Code (Copilot)
Añade a ~/.vscode/mcp.json:
{
"servers": {
"4da": {
"type": "stdio",
"command": "npx",
"args": ["@4da/mcp-server"]
}
}
}
Claude Desktop
Añade a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"4da": {
"command": "npx",
"args": ["@4da/mcp-server"]
}
}
}
Configuración automática (detecta todos los editores instalados)
npx @4da/mcp-server --setup
Luego pregúntale a tu IA: "Comprueba la salud de mis dependencias" o "Escanea vulnerabilidades"
Cómo Funciona
Al iniciar, el servidor lee tus archivos de manifiesto y de bloqueo (package.json, Cargo.toml, go.mod, pyproject.toml), resuelve las versiones exactas de las dependencias y consulta APIs en vivo. Los vuelve a leer cada vez que un archivo de bloqueo cambia, para que un servidor de larga duración nunca responda por el conjunto de dependencias de ayer. Para npm también comprueba lo que node_modules realmente contiene: una copia instalada que difiere del archivo de bloqueo se informa con su comando de reinstalación, en lugar de ocultarse detrás de un archivo de bloqueo parcheado.
- OSV.dev para CVEs conocidos en todos los ecosistemas
- Registro npm para frescura de versiones, estado de deprecación y descargas semanales
- Índice disperso de crates.io para versiones de paquetes Rust (evita el límite de 1 req/s de la API)
- API JSON de PyPI para metadatos de paquetes Python con normalización de licencias
- Proxy de módulos Go para versiones de módulos Go
- API Algolia de Hacker News para noticias del ecosistema filtradas por tu stack tecnológico
Los resultados se almacenan en caché (24h para datos de registro, 1h para vulnerabilidades, 30min para noticias) y se limitan por fuente.
Lo que se envía por la red: nombres de paquetes + versiones, palabras clave técnicas genéricas. Los mismos datos visibles en tu package.json. Sin código fuente, sin rutas de archivos, sin datos personales. Establece FOURDA_OFFLINE=true para desactivar todas las llamadas de red.
La única excepción: si explícitamente configuras un proveedor de embeddings de OpenAI (
FOURDA_EMBED_PROVIDER=openai) para recuperación semántica, el texto de decisiones/memoria que almacenas se envía a OpenAI para ser incrustado. El valor predeterminado — sin proveedor de embeddings, o uno local de Ollama — mantiene todo en tu máquina, yFOURDA_OFFLINE=truelo anula independientemente.
Ecosistemas compatibles: npm, crates.io (Rust), PyPI (Python), Go.
Lo Que Puedes Preguntar
"Check my dependency health" -> dependency_health
"Scan for vulnerabilities" -> vulnerability_scan
"Which deps should I upgrade first?" -> upgrade_planner
"What should I know before I start coding?" -> what_should_i_know
"What's happening in the ecosystem?" -> ecosystem_pulse
"What's my tech stack?" -> get_context
"Record a decision: we chose Postgres" -> decision_memory
"Does switching to MySQL align?" -> check_decision_alignment
"Remember: never use ORM for batch inserts" -> agent_memory
Las 14 Herramientas
Seguridad de Dependencias
| Herramienta | Qué hace |
|---|---|
vulnerability_scan | Escaneo de CVE en vivo vía OSV.dev. Severidad, versiones de corrección, puntuaciones CVSS. |
dependency_health | Puntuación de salud (0-100) + frescura de versiones, deprecación, recuentos de CVE por dependencia. |
upgrade_planner | Recomendaciones de actualización clasificadas. Victorias rápidas vs. cambios disruptivos. Ordenadas por riesgo. |
Inteligencia
| Herramienta | Qué hace |
|---|---|
what_should_i_know | Informe de inteligencia previo a la tarea: vulnerabilidades, decisiones, señales, actualizaciones del ecosistema. |
ecosystem_pulse | Noticias del ecosistema en vivo desde Hacker News, filtradas por tu stack tecnológico detectado. |
get_context | Tu stack tecnológico, versiones de dependencias resueltas, intereses, temas detectados. |
get_relevant_content* | Fuente de contenido puntuado — artículos, avisos, lanzamientos clasificados por relevancia. |
get_actionable_signals* | Alertas clasificadas: avisos de seguridad, cambios disruptivos, repositorios en tendencia. |
knowledge_gaps* | Dependencias que usas a diario pero de las que nunca lees. Superficies de CVEs y actualizaciones omitidas. |
record_feedback* | Guarda o descarta elementos para que 4DA registre el historial de interacción explícito. |
Decisiones y Memoria
| Herramienta | Qué hace |
|---|---|
decision_memory | Registra, consulta y gestiona decisiones arquitectónicas entre sesiones. |
check_decision_alignment | Verifica si un cambio tecnológico propuesto se alinea con las decisiones registradas. |
agent_memory | Memoria persistente que sobrevive entre sesiones, agentes y editores. |
Identidad
| Herramienta | Qué hace |
|---|---|
developer_dna* | Tu identidad tecnológica: stack principal, dependencias principales, puntos ciegos. |
* Requiere la aplicación de escritorio 4DA para datos completos.
Modo Independiente vs. Completo
El servidor MCP funciona sin la aplicación de escritorio. En la primera ejecución crea una base de datos local y escanea tu proyecto:
| Capacidad | Independiente | Con 4DA Desktop |
|---|---|---|
| Escaneo de vulnerabilidades (OSV.dev) | Sí | Sí |
| Salud de dependencias (4 registros) | Sí | Sí |
| Planificador de actualizaciones | Sí | Sí |
| Noticias del ecosistema (Hacker News) | Sí | Sí |
| Informe de inteligencia previo a la tarea | Sí | Sí |
| Detección de stack tecnológico + versiones resueltas | Sí | Sí |
| Memoria de decisiones + verificación de alineación | Sí | Sí |
| Memoria del agente (entre sesiones) | Sí | Sí |
| Fuente de contenido puntuado (20+ fuentes) | -- | Sí |
| Señales accionables + brechas de conocimiento | -- | Sí |
| La capa de análisis (Cadenas de Señales, Brechas de Conocimiento, análisis temporal) | -- | Sí |
Descargar 4DA para la experiencia completa.
Transportes
stdio (predeterminado) -- funciona con todos los hosts MCP:
npx @4da/mcp-server
HTTP Streamable -- para configuraciones remotas o de múltiples clientes:
npx @4da/mcp-server --http --port 4840
El transporte HTTP se vincula a 127.0.0.1 por defecto y aplica una protección de rebinding DNS de encabezado Host a cada solicitud. Exponerlo más allá de esta máquina requiere un secreto compartido:
MCP_AUTH_SECRET=<same value as the relay's JWT_SECRET> \
MCP_ALLOWED_HOSTS=mcp.internal \
npx @4da/mcp-server --http --host 0.0.0.0
Sin MCP_AUTH_SECRET se rechaza un enlace no-loopback al inicio. Con él, cada solicitud debe llevar un token Bearer cuya firma HMAC-SHA256 se verifique contra ese secreto, y el rol del token se aplica por herramienta (viewer es de solo lectura; member y admin pueden escribir). Pon TLS delante de él.
Referencia CLI
npx @4da/mcp-server # Start server (stdio)
npx @4da/mcp-server --http # Start server (Streamable HTTP)
npx @4da/mcp-server --setup # Auto-configure your editors
npx @4da/mcp-server --doctor # Verify installation health
npx @4da/mcp-server --version # Print version
Variables de Entorno
| Variable | Descripción | Predeterminado |
|---|---|---|
FOURDA_DB_PATH | Ruta a la base de datos SQLite de 4DA | Auto-detectada |
FOURDA_OFFLINE | Desactiva todas las llamadas de red | false |
MCP_AUTH_SECRET | Secreto compartido para verificar tokens Bearer en --http (HMAC-SHA256). Recurre a JWT_SECRET. Sin establecer significa que no se acepta ningún token. | Sin establecer |
MCP_AUTH_REQUIRED | Requiere autenticación en un enlace loopback --http. Siempre requerido en un enlace no-loopback. | false |
MCP_ALLOWED_HOSTS | Nombres de host adicionales separados por comas aceptados en Host/Origin (necesario al vincular a 0.0.0.0). | Solo localhost |
Preguntas Frecuentes
¿Esto envía mi código a algún lugar?
No. El servidor envía nombres de paquetes y versiones a APIs públicas (OSV.dev, registro npm, crates.io, PyPI, proxy Go) y palabras clave técnicas genéricas a HN Algolia. Los mismos datos públicos visibles en tu package.json. Sin código fuente, sin rutas de archivos, sin datos personales. Establece FOURDA_OFFLINE=true para desactivar todas las llamadas de red. (La única excepción son los embeddings de OpenAI opt-in — consulta la nota de red anterior.)
¿Necesito la aplicación de escritorio 4DA? No. 9 herramientas funcionan de forma independiente: escaneo de vulnerabilidades, salud de dependencias, planificación de actualizaciones, noticias del ecosistema, informes previos a la tarea, contexto del proyecto, memoria de decisiones, verificación de alineación y memoria del agente. La aplicación de escritorio añade una fuente de contenido puntuado de 20+ fuentes, evaluada contra tu stack real.
¿Con qué herramientas de IA funciona esto? Cualquier herramienta que soporte MCP: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code (Copilot) y cualquier cliente MCP personalizado.
Compilar desde el Código Fuente
git clone https://github.com/4DA-Systems/4DA.git
cd 4DA/mcp-4da-server
pnpm install
pnpm build
pnpm test # 71 contract tests
Licencia
Apache License 2.0 (Apache-2.0). Ver LICENSE.
Construido por 4DA