portmap
portmap
Tu agente tiene localhost:3000 hardcodeado. Esto es un mapa de lo que realmente se ejecuta.
git clone https://github.com/paladini/portmap.git && cd portmap
npm ci && npm run build && node dist/cli.js scan /path/to/your-appDeterminista · Sin LLM · Sin red · Solo lectura
¿Qué es esto?
portmap es una herramienta de línea de comandos y un servidor MCP que responde a una pregunta:
Antes de que tu agente ejecute
curl localhost:3000, ¿hay algo escuchando de verdad ahí?
Fusiona tres capas de la realidad del desarrollo local en un único mapa:
Declarado — puertos en
vite.config, scripts depackage.json, URLs de.env,docker-composeReal — lo que tu sistema operativo dice que está escuchando ahora mismo (Windows, macOS, Linux)
Conectado — cómo las variables de entorno (
VITE_API_URL,API_URL, …) conectan servicios entre sí
Salida: .portmap.json + hallazgos accionables (PRT-01 … PRT-07) que los agentes y la CI pueden consumir sin adivinar.
¿Para quién es?
Desarrolladores cansados del «liberar el puerto 3000» y de la deriva de puertos del «en mi máquina funciona»
Equipos que usan agentes de codificación con IA (Cursor, Claude Code, Copilot) y que hardcodean URLs incorrectas de localhost
Monorepos donde el frontend y la API viven en carpetas hermanas y las referencias de entorno cruzan repositorios
Cualquier persona que quiera una comprobación rápida, de cinco segundos, antes de depurar la conectividad de una API
Lo que no es
Expectativa | Realidad |
Inicia/detiene tus servidores de desarrollo | No — usa Switchboard y PortPilot para el ciclo de vida |
Registro manual de puertos que tú mantienes | No — portmap descubre a partir de configuraciones y del SO |
Monitoreo o uptime en producción | No — solo topología de desarrollo local |
Usa un LLM para inferir puertos | No — 100% determinista: sistema de archivos y tabla de sockets |
Si necesitas terminar un proceso, usa las herramientas de tu sistema operativo. portmap te dice a qué puerto apuntar antes de que pierdas veinte minutos.
Related MCP server: devenv-doctor-mcp
El problema
Toda sesión de desarrollo asistida por IA acaba topándose con esto:
Agent: fetch('http://localhost:3000/api/users')
Reality: Vite on :5173, API on :8080, nothing on :3000Por qué ocurre:
Next.js usa
:3000por defecto — los agentes se lo memorizanVite usa
:5173por defecto — otra pila, otro puertoDocker redirige
8080:3000— la app escucha dentro del contenedor, no en el host que tú crees.env.localapunta a un puerto que no ha arrancado hoy nadiePierdes veinte minutos con CORS, autenticación y «error de red» cuando el fallo real es PRT-04
portmap saca a relucir el desajuste en segundos — lo declarado frente a lo que escucha y las variables de entorno — para que arregles la URL, no el síntoma.
Cómo funciona
Dos escáneres, un paso de conciliación, cero pasos de LLM:
┌─────────────────────────────────────────────────────────────┐
│ Your repo on disk │
├─────────────────────────────────────────────────────────────┤
│ 1. Static discovery │
│ package.json scripts · vite.config · .env localhost URLs│
│ docker-compose port mappings │
├─────────────────────────────────────────────────────────────┤
│ 2. Runtime scan (optional) │
│ OS listeners → port, PID, process, command line │
├─────────────────────────────────────────────────────────────┤
│ 3. Reconcile │
│ declared ↔ actual ↔ env references → service graph │
│ → .portmap.json + findings (PRT-01 … PRT-07) │
└─────────────────────────────────────────────────────────────┘
↓ ↓ ↓
CLI pretty MCP tools CI --min-findingsReglas completas: docs/FINDINGS.md · Antes/después de las correcciones: docs/EXAMPLES.md · Especificación JSON: docs/SCHEMA.md
Pruébalo en 30 segundos
git clone https://github.com/paladini/portmap.git
cd portmap
npm ci && npm run build
npm run demo:mismatch # classic agent mistake → 3 errors
npm run demo:workspace # frontend + API in sibling folders → resolvedCómo se ve demo:mismatch
portmap — mismatch-app
root: …/fixtures/mismatch
Services:
[down] vite — Vite dev server
declared :5173 (vite.config.ts:server.port)
not listening
Env references:
NEXT_PUBLIC_API_URL=http://localhost:3000 → :3000 [unresolved]
VITE_API_URL=http://localhost:8080 → :8080 [unresolved]
Findings: 3 error(s), 0 warning(s)
✖ PRT-01 Declared port 5173 is not listening …
✖ PRT-04 NEXT_PUBLIC_API_URL points to localhost:3000 but nothing is listening …
✖ PRT-04 VITE_API_URL points to localhost:8080 but nothing is listening …Esa es toda la sesión de depuración que un agente se salta cuando lee .portmap.json antes.
Instalación y uso
Opción A — Clonar (funciona hoy)
git clone https://github.com/paladini/portmap.git
cd portmap
npm ci && npm run build
node dist/cli.js scan /path/to/your-appOpción B — npm (cuando se publique)
npx portmap scan .Flujo de trabajo habitual
Ejecuta
portmap scan .(oportmap declare .si aún no está corriendo nada)Lee las
references[]para las URLs correctas delocalhost— nunca des:3000por obvioCorrige PRT-04 (URL de entorno rota) antes de depurar la conectividad de una API
Escribe
.portmap.jsonpara futuras sesiones de agente:portmap scan . --writeOpcional: convierte CI en una puerta con
--min-findings 1 --min-severity error
Comandos
Comando | Qué hace |
| Escaneo completo: estáticos + lo que escucha el SO |
| Solo estático: sin necesidad de procesos corriendo |
| En los que el SO escucha (depurar) |
| Multirrepo: resuelve refs cruzadas entre carpetas |
| Inicia un servidor MCP stdio de solo lectura |
Opciones: --json · --markdown · --write (guarda .portmap.json) · --out <file> · --min-findings N · --quiet
Hallazgos de un vistazo
ID | Regla | Severidad |
PRT-01 | Puerto declarado y no escuchando | error |
PRT-02 | Escuchando sin config declarada | warning |
PRT-03 | Dos servicios declaran el mismo puerto | error |
PRT-04 | La URL de entorno apunta a un puerto sin listener | error |
PRT-05 | Listener en un puerto distinto al declarado | warning |
PRT-06 | El mapeo de puertos host:contenedor de Docker no coincide | warning |
PRT-07 | Referencia de entorno entre espacios de trabajo sin resolver | error |
Catálogo completo con correcciones: docs/FINDINGS.md
MCP para agentes (solo lectura)
Añádelo a .cursor/mcp.json o a la configuración de Claude Code:
{
"mcpServers": {
"portmap": {
"command": "node",
"args": ["/path/to/portmap/dist/cli.js", "mcp"]
}
}
}Herramienta | Úsala cuando... |
| Un reporte |
| Un |
| «¿Qué URL debería usar para |
| Listar los asuntos PRT-* filtrados por severidad |
Skill para Cursor/Claude: .cursor/skills/portmap/SKILL.md
.portmap.json — el artefacto que leen los agentes
portmap scan . --write
git add .portmap.json # optional: commit for stable agent contextEspecificación: docs/SCHEMA.md
Pipeline de preparación de agentes
Parte del paladini agent toolkit — tres comprobaciones deterministas, cero LLM:
harness-score → Is the repo harness ready for agents?
portmap → Do ports and env URLs align locally?
unhappypath → Is the UI ready for real users?Tool | Pregunta |
Madurez de AGENTS.md, reglas, hooks y CI | |
portmap | Puertos declarados, de escucha y grafo de entorno |
Estados de UI: carga, vacío, error y reintento |
Limitaciones (con honestidad)
La atribución PID → repositorio es heurística; las coincidencias de baja confianza se marcan, no se ocultan
Redes WSL / Docker — los listeners dentro de contenedores pueden no aparecer como se espera en el host
Los solo-runtime (hardcodeados en JS con sin config) no se declararán; PRT-02 puede emitir un aviso
YAML compose — v2 se enfoca, v1 parsea patrones comunes de
ports:; las features exóticas de compose se omitenPreferimos falsos negativos a falsos positivos ruidosos — si hay duda, portmap se queda en silencio
Contribuciones y contribuciones
Issues, informes de falsos positivosser bienvenidos.
Canal | Enlace |
Bug report | Crear un issue / https://github.com/paladini/portmap/issues/new?template=bug_report.yml |
Falso positivo | |
Petición de funcionalidad | |
Preguntas e ideas |
Consulta CONTRIBUTING.md · ROADMAP.md · CODE_OF_CONDUCT.md
Problemas de seguridad: SECURITY.md — no los notifiques en público, por favor.
Desarrollo
npm ci
npm run build
npm test
npm run demo:mismatch
npm run demo:workspaceGuía para agentes y colaboradores: AGENTS.md
Licencia
MIT © 2026 Fernando Paladini
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to discover, configure, and manage local development servers. Provides tools for app registration, port allocation, lifecycle control, and log access without manual config editing.338MIT
- AlicenseNot gradedqualityCmaintenanceEnables LLM clients to inspect local dev environments—Docker container health, pnpm workspace integrity, and stuck process detection—without manual terminal copy-pasting.MIT
- AlicenseNot gradedqualityBmaintenanceSee and control the local dev servers your coding agents leave running. Lists listeners with provenance — which agent, terminal and git worktree started each — kills strays, and allocates collision-free ports so parallel agents stop fighting over :3000.MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for managing local dev ports on macOS. It enables AI agents to inspect listening ports, identify owning processes and parent chains, kill processes safely, wait for ports, and report LAN exposure.291MIT
Related MCP Connectors
Give your AI agent a persistent map of your project's structure, dependencies, and bugs.
Lints + auto-fixes how AI coding agents discover any new product. 24 rules, 6 tools, score 0-100.
Scan any URL for AI agent readability — Vercel Spec, llmstxt.org, and agent-protocol manifests.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/paladini/portmap'
If you have feedback or need assistance with the MCP directory API, please join our Discord server