Skip to main content
Glama

portmap

Ваш агент захардкодил localhost:3000. Здесь показано, что реально запущено.

License: MIT CI

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, действительно ли там кто-то слушает порт?

Он объединяет три слоя реальности локальной разработки в единую карту:

  1. Заявленное — порты в vite.config, скриптах package.json, URL из .env, docker-compose

  2. Фактическое — что ваша ОС сообщает о слушающих портах прямо сейчас (Windows, macOS, Linux)

  3. Связанное — как переменные окружения (VITE_API_URL, API_URL, …) связывают сервисы между собой

Результат: .portmap.json + практичные выводы (PRT-01PRT-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 .

Типичный сценарий

  1. Запустите portmap scan . (или portmap declare ., если сейчас ничего не запущено)

  2. Прочитайте references[] — там верные localhost URL; не думайте, что это всегда :3000

  3. Исправьте PRT-04 (нерабочий env URL), прежде чем отлаживать подключение к API

  4. Запишите .portmap.json для будущих агент-сессий: portmap scan . --write

  5. Опционально: добавьте в CI блокирующую проверку --min-findings 1 --min-severity error


Команды

Команда

Что делает

portmap scan [path]

Полное сканирование: статика + слушатели ОС

portmap declare [path]

Только статика — запущенные процессы не нужны

portmap listen

Список слушателей ОС (отладка)

portmap workspace [dir]

Мультирепо: разрешение env-ссылок между папками

portmap mcp

Запуск MCP-сервера stdio в режиме read-only

Флаги: --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"]
    }
  }
}

Инструмент

Когда использовать

portmap_scan

Полный отчёт .portmap.json

portmap_graph

Краткая схема { services, edges, references }

portmap_resolve_url

«Какой URL использовать для VITE_API_URL

portmap_findings

Список 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?

Инструмент

Какой вопрос закрывает

harness-score

AGENTS.md, правила, хуки, зрелость CI

portmap

Заявленные порты, слушатели, env-граф

unhappypath

UI-состояния: загрузка, пусто, ошибка, повтор


Ограничения (честно)

  • Сопоставление PID → репозиторий — эвристика; низкая уверенность помечается, а не скрывается

  • WSL / Docker networking — то, что слушает внутри контейнера, на хосте может отображаться не так, как вы ожидаете

  • Runtime-only порты (захардкожены в JS без конфига) не будут отдекларированы — возможно предупреждение PRT-02

  • YAML compose — v1 понимает типичные паттерны ports:; экзотические возможности compose не поддерживаются

  • Лучше пропустить находку, чем выдавать шумные ложные срабатывания — если сомнительно, portmap молчит


Участие

Приветствуются баг-репорты, сообщения об ложных срабатываниях и новые парсеры.

Канал

Ссылка

Баг-репорт

Открыть issue

Ложное срабатывание

Сообщить о сцепнении PRT-*

Запрос функции

Предложить парсер/правило

Вопросы и идеи

Дискуссии

См. 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

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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.
    338
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables LLM clients to inspect local dev environments—Docker container health, pnpm workspace integrity, and stuck process detection—without manual terminal copy-pasting.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    See 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
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP 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.
    29
    1
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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