portmap
portmap
Ваш агент захардкодил localhost:3000. Здесь показано, что реально запущено.
git clone https://github.com/paladini/portmap.git && cd portmap
npm ci && npm run build && node dist/cli.js scan /path/to/your-appДетерминировано · Без LLM · Без сети · Только чтение
Что это?
portmap — это инструмент командной строки + MCP-сервер, который отвечает на один вопрос:
Прежде чем ваш агент запустит
curl localhost:3000, действительно ли там кто-то слушает порт?
Он объединяет три слоя реальности локальной разработки в единую карту:
Заявленное — порты в
vite.config, скриптахpackage.json, URL из.env,docker-composeФактическое — что ваша ОС сообщает о слушающих портах прямо сейчас (Windows, macOS, Linux)
Связанное — как переменные окружения (
VITE_API_URL,API_URL, …) связывают сервисы между собой
Результат: .portmap.json + практичные выводы (PRT-01 … PRT-07), которые агенты и CI могут использовать без угадывания.
Для кого это?
Разработчики, которых достал дрейф портов — «убей порт 3000» и «работает на моей машине»
Команды, использующие AI-агентов для написания кода (Cursor, Claude Code, Copilot), которые захардкожили неверные localhost URL
Монорепозитории, где фронтенд и API живут в соседних папках, а env-ссылки выходят за пределы репозитория
Все, кто хочет быструю проверку за 5 секунд перед отладкой подключения к API
Чем это не является
Ожидание | Реальность |
Запускает/останавливает ваши dev-серверы | Нет — используйте Switchboard или PortPilot для управления жизненным циклом |
Ручной реестр портов, который вы поддерживаете | Нет — portmap обнаруживает их в конфигах и в ОС |
Мониторинг продакшена / аптайм | Нет — только топология локальной разработки |
Использует LLM для определения портов | Нет — 100% детерминированно: файловая система + таблица сокетов |
Если нужно убить процесс — используйте инструменты ОС. portmap подскажет, какой порт использовать, прежде чем вы потратите двадцать минут.
Related MCP server: devenv-doctor-mcp
Проблема
Каждая AI-ассистируемая сессия разработки рано или поздно упирается в это:
Agent: fetch('http://localhost:3000/api/users')
Reality: Vite on :5173, API on :8080, nothing on :3000Почему так происходит:
Next.js по умолчанию выбирает
:3000— агенты это запоминаютVite по умолчанию выбирает
:5173— другой стек, другой портDocker переопределяет
8080:3000— приложение слушает порт внутри контейнера, а не там, где вы думаете.env.localуказывает на порт, который сегодня никто не запускал20 минут отладки CORS, авторизации и «network error», а настоящая причина — PRT-04
portmap выявляет расхождения за считанные секунды — заявленное, фактическое и env — так что вы исправляете URL, а не симптом.
Как это работает
Два сканера, один шаг сверки, ни одного 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-findingsПолный список правил: docs/FINDINGS.md · Примеры до/после исправлений: docs/EXAMPLES.md · JSON-спецификация: docs/SCHEMA.md
Попробовать за 30 секунд
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 → resolvedКак выглядит 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 …Вот она, вся сессия отладки, которую агент пропускает, если сначала читает .portmap.json.
Установка и запуск
Вариант A — склонировать (работает уже сегодня)
git clone https://github.com/paladini/portmap.git
cd portmap
npm ci && npm run build
node dist/cli.js scan /path/to/your-appВариант B — npm (после публикации)
npx portmap scan .Типичный сценарий
Запустите
portmap scan .(илиportmap declare ., если сейчас ничего не запущено)Прочитайте
references[]— там верные localhost URL; не думайте, что это всегда:3000Исправьте PRT-04 (нерабочий env URL), прежде чем отлаживать подключение к API
Запишите
.portmap.jsonдля будущих агент-сессий:portmap scan . --writeОпционально: добавьте в CI блокирующую проверку
--min-findings 1 --min-severity error
Команды
Команда | Что делает |
| Полное сканирование: статика + слушатели ОС |
| Только статика — запущенные процессы не нужны |
| Список слушателей ОС (отладка) |
| Мультирепо: разрешение env-ссылок между папками |
| Запуск MCP-сервера |
Флаги: --json · --markdown · --write (сохраняет .portmap.json) · --out <file> · --min-findings N · --quiet
Находки вкратце
ID | Правило | Серьёзность |
PRT-01 | Заявленный порт не слушает | error |
PRT-02 | Слушатель без объявленного конфига | warning |
PRT-03 | Два сервиса объявляют один и тот же порт | error |
PRT-04 | URL из env указывает на порт без слушателя | error |
PRT-05 | Слушатель работает на другом порту, чем заявлено | warning |
PRT-06 | Несовпадение портов Docker host/контейнера | warning |
PRT-07 | Cross-workspace env-ссылка не разрешена | error |
Полный каталог с исправлениями: docs/FINDINGS.md
MCP для агентов (только чтение)
Добавьте в .cursor/mcp.json или в конфиг Claude Code:
{
"mcpServers": {
"portmap": {
"command": "node",
"args": ["/path/to/portmap/dist/cli.js", "mcp"]
}
}
}Инструмент | Когда использовать |
| Полный отчёт |
| Краткая схема |
| «Какой URL использовать для |
| Список PRT-* проблем с фильтром по severity |
Скилл для Cursor/Claude: .cursor/skills/portmap/SKILL.md
.portmap.json — артефакт, который читают агенты
portmap scan . --write
git add .portmap.json # optional: commit for stable agent contextСпецификация: docs/SCHEMA.md
Пайплайн готовности агентов
Часть набора инструментов paladini для агентов — три детерминированные проверки, ни одного 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?Инструмент | Какой вопрос закрывает |
AGENTS.md, правила, хуки, зрелость CI | |
portmap | Заявленные порты, слушатели, env-граф |
UI-состояния: загрузка, пусто, ошибка, повтор |
Ограничения (честно)
Сопоставление PID → репозиторий — эвристика; низкая уверенность помечается, а не скрывается
WSL / Docker networking — то, что слушает внутри контейнера, на хосте может отображаться не так, как вы ожидаете
Runtime-only порты (захардкожены в JS без конфига) не будут отдекларированы — возможно предупреждение PRT-02
YAML compose — v1 понимает типичные паттерны
ports:; экзотические возможности compose не поддерживаютсяЛучше пропустить находку, чем выдавать шумные ложные срабатывания — если сомнительно, portmap молчит
Участие
Приветствуются баг-репорты, сообщения об ложных срабатываниях и новые парсеры.
Канал | Ссылка |
Баг-репорт | |
Ложное срабатывание | |
Запрос функции | |
Вопросы и идеи |
См. CONTRIBUTING.md · ROADMAP.md · CODE_OF_CONDUCT.md
Проблемы безопасности: SECURITY.md — пожалуйста, не открывайте их публично.
Разработка
npm ci
npm run build
npm test
npm run demo:mismatch
npm run demo:workspaceГайд для агентов и контрибьюторов: AGENTS.md
License
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