portmap
portmap
Dein Agent hat localhost:3000 hartkodiert. Dies bildet ab, was tatsächlich läuft.
git clone https://github.com/paladini/portmap.git && cd portmap
npm ci && npm run build && node dist/cli.js scan /path/to/your-appDeterministisch · Kein LLM · Kein Netzwerk · Nur Lesen
Was ist das?
portmap ist ein Kommandozeilen-Tool + MCP-Server, der eine einzige Frage beantwortet:
Bevor dein Agent
curl localhost:3000ausführt, lauscht dort überhaupt etwas?
Es verschmilzt drei Ebenen der lokalen Dev-Realität zu einer einzigen Karte:
Deklariert — Ports in
vite.config,package.json-Skripten,.env-URLs,docker-composeTatsächlich — was dein Betriebssystem gerade als lauschend meldet (Windows, macOS, Linux)
Verbunden — wie Umgebungsvariablen (
VITE_API_URL,API_URL, …) Dienste miteinander verknüpfen
Ausgabe: .portmap.json + umsetzbare Findings (PRT-01 … PRT-07), die Agents und CI ohne Raten konsumieren können.
Für wen ist das?
Entwickler, die den „Port 3000 killen“- und „läuft bei mir“-Port-Drift satt haben
Teams, die KI-Coding-Agenten (Cursor, Claude Code, Copilot) einsetzen, die falsche localhost-URLs hartkodieren
Monorepos, in denen Frontend und API in Schwesterordnern liegen und Env-Referenzen Repos kreuzen
Menschen, die einen 5-Sekunden-Plausibilitätscheck brauchen, bevor sie API-Verbindungen debuggen
Was es nicht ist
Erwartung | Realität |
Startet/stoppt deine Dev-Server | Nein — nutze Switchboard oder PortPilot für den Lebenszyklus |
Manuell gepflegte Port-Registry | Nein — portmap entdeckt Ports aus Konfigs + Betriebssystem |
Produktions-Monitoring / Uptime | Nein — nur lokale Dev-Topologie |
Nutzt ein LLM zum Raten der Ports | Nein — 100 % deterministisches Dateisystem + Socket-Tabelle |
Wenn du einen Prozess beenden willst, nutze die Tools deines Betriebssystems. portmap sagt dir welchen Port du treffen solltest, bevor du zwanzig Minuten mit Debugging verschwendest.
Related MCP server: devenv-doctor-mcp
Das Problem
Jede KI-gestützte Dev-Session stößt irgendwann darauf:
Agent: fetch('http://localhost:3000/api/users')
Reality: Vite on :5173, API on :8080, nothing on :3000Warum passiert das:
Next.js nutzt standardmäßig
:3000— das merken sich AgentsVite nutzt standardmäßig
:5173— anderer Stack, anderer PortDocker mappt
8080:3000— die App lauscht im Container, nicht dort, wo du denkst.env.localzeigt auf einen Port, den heute niemand gestartet hatDu debugst CORS, Auth und den „network error“ zwanzig Minuten lang, obwohl der eigentliche Bug PRT-04 ist
portmap deckt die Abweichung in Sekunden auf — deklariert vs. lauschend vs. Env — damit du die URL fixst, nicht das Symptom.
So funktioniert es
Zwei Scanner, ein Abgleich, kein 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-findingsVollständige Regelliste: docs/FINDINGS.md · Vorher/Nachher-Fixes: docs/EXAMPLES.md · JSON-Spezifikation: docs/SCHEMA.md
Probier es in 30 Sekunden
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 → resolvedSo sieht demo:mismatch aus
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 …Das ist die gesamte Debug-Session, die sich ein Agent spart, wenn er zuerst .portmap.json liest.
Installation & Ausführung
Option A — Klonen (funktioniert heute)
git clone https://github.com/paladini/portmap.git
cd portmap
npm ci && npm run build
node dist/cli.js scan /path/to/your-appOption B — npm (sobald veröffentlicht)
npx portmap scan .Typischer Ablauf
Führe aus
portmap scan .(oderdeclare ., wenn noch nichts läuft)Lies
references[]für die korrekten localhost-URLs — nimm niemals:3000anBehebe PRT-04 (defekte Env-URL), bevor du API-Verbindungen debugst
Schreibe
.portmap.jsonfür zukünftige Agent-Sessions:portmap scan . --writeOptional: CI mit
--min-findings 1 --min-severity errorabsichern
Befehle
Befehl | Was er tut |
| Voller Scan: statische Konfigs + OS-Listener |
| Nur statisch — keine laufenden Prozesse nötig |
| OS-Listener auflisten (Debug) |
| Multi-Repo: Env-Referenzen über Repos hinweg auflösen |
| Read-only-MCP-Stdio-Server starten |
Flags: --json · --markdown · --write (speichert .portmap.json) · --out <file> · --min-findings N · --quiet
Findings auf einen Blick
ID | Regel | Schweregrad |
PRT-01 | Deklararbter Port lauscht nicht | error |
PRT-02 | Listener ohne deklarierte Konfiguration | warning |
PRT-03 | Zwei Dienste deklarieren denselben Port | error |
PRT-04 | Env-URL zeigt auf Port ohne Listener | error |
PRT-05 | Listener auf anderem Port als deklariert | warning |
PRT-06 | Docker-Host:Container-Port-Mismatch | warning |
PRT-07 | Cross-Workspace-Env-Referenz nicht aufgelöst | warning |
Vollständiger Katalog mit Fixes: docs/FINDINGS.md
MCP für Agents (nur Lesen)
Füge es zu .cursor/mcp.json oder der Claude-Code-Konfiguration hinzu:
{
"mcpServers": {
"portmap": {
"command": "node",
"args": ["/path/to/portmap/dist/cli.js", "mcp"]
}
}
}Tool | Verwendung |
| Voller |
| Schlanker |
| Antwort auf „Welche URL soll ich für |
| Listet PRT-*-Probleme, gefiltert nach Schweregrad |
Skill für Cursor/Claude: .cursor/skills/portmap/SKILL.md
.portmap.json — das Artefakt, das Agents lesen
portmap scan . --write
git add .portmap.json # optional: commit for stable agent contextSpezifikation: docs/SCHEMA.md
Pipeline für die Agent-Bereitschaft
Teil der present — drei deterministische Checks, kein 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 | Frage |
AGENTS.md, Regeln, Hooks, CI-Maturität | |
portmap | Dekalbene Ports, Listener, Env-Graph |
Lade-, Leer-, Fehler- und Retry-UI-Zustände |
Einschränkungen (ehrlich)
Die PID → Repo-Zuordnung ist heuristisch; Treffer mit niedriger Konfidenz werden markiert, nicht versteckt
WSL / Docker-Netzwerk — Listener in Containern erscheinen evtl. nicht wie erwartet auf dem Host
Reine Laufzeit-Ports (ohne Konfig in JS hartkodiert) werden nicht deklariert — PRT-02 kann warnen
YAML-Compose — v1 parst gängige
ports:-Muster; exotische Compose-Features werden ausgelassenFalsch-Negative werden lauten Falsch-Positiven vorgezogen — bei Unsicherheit bleibt portmap ruhig
Beitragen
Issues, Falsch-Positive-Meldungen und Parser-Beiträge sind willkommen.
Kanal | Link |
Bug melden | |
Falsch-Positiv | |
Feature anfordern | |
Fragen & Ideen |
Siehe CONTRIBUTING.md · ROADMAP.md · CODE_OF_CONDUCT.md
Sicherheitsprobleme: SECURITY.md — bitte nicht öffentlich melden.
Entwicklung
npm ci
npm run build
npm test
npm run demo:mismatch
npm run demo:workspaceAgent-/Contributor-Guide: AGENTS.md
Lizenz
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