port-doctor-mcp
port-doctor-mcp
Локальный stdio MCP-сервер на основе FastMCP для проверки занятости портов разработки и завершения соответствующих процессов по номеру порта.
Функции
check_port_status(port: int): проверяет, занят ли порт, и возвращает PID, имя, объём памяти RSS, протокол и состояние соединения процесса, занимающего порт.kill_process_by_port(port: int, force: bool = True): завершает процесс, занимающий порт. По умолчанию используется принудительное завершение; при передачеforce=falseприменяется более мягкий terminate. Сервер не завершает сам себя.scan_common_dev_ports(): сканирует распространённые порты разработки: 3000, 3001, 4173, 5000, 5173, 8000, 8001, 8080, 8081, 8888, 9000.
Related MCP server: localhost-mcp
Установка
Требуется Python 3.10 или новее.
python -m venv .venv
source .venv/bin/activate # Windows PowerShell: .venv\Scripts\Activate.ps1
python -m pip install -r requirements.txtПроверьте, что зависимости действительно установлены в текущем интерпретаторе:
python -c "import sys, psutil, fastmcp; print(sys.executable); print('psutil', psutil.__version__); print('fastmcp', fastmcp.__version__)"Если здесь по-прежнему появляется ModuleNotFoundError, значит, установка зависимостей и запуск сервера выполняются не в одном и том же Python. Не ограничивайтесь только выполнением Invalidate Caches; в PyCharm выберите .venv/bin/python этого проекта в Settings -> Project -> Python Interpreter и используйте тот же интерпретатор в Run Configuration.
Например, путь к интерпретатору проекта должен выглядеть примерно так:
/path/to/port-doctor-mcp/.venv/bin/pythonПример для Windows:
C:\path\to\port-doctor-mcp\.venv\Scripts\python.exeЗапуск
Это stdio-сервер: после запуска он ожидает обмена данными с MCP-клиентом через stdin/stdout и не предоставляет HTTP-порт.
python server.pyТакже можно использовать FastMCP CLI:
fastmcp run server.pyДля разработки и отладки можно использовать MCP Inspector (если это поддерживает установленная версия FastMCP CLI):
fastmcp dev inspector server.pyОтсутствие обычного вывода и постоянное ожидание ввода в терминале после запуска python server.py — это нормальное явление: stdio MCP-сервер ожидает, пока клиент отправит сообщения JSON-RPC через stdin/stdout. Не воспринимайте «процесс не завершается» как сбой запуска.
Чек-лист ручного тестирования
Выполните в корневом каталоге проекта:
source .venv/bin/activate
python -m pip check
python -m py_compile server.py
git diff --check
fastmcp list server.py --input-schema --output-schema --jsonfastmcp list должен отображать следующие три инструмента:
check_port_status: обязательный параметрport, целое число.kill_process_by_port: обязательный параметрport, необязательныйforce, по умолчаниюtrue.scan_common_dev_ports: без параметров.
Тестирование с помощью Inspector
Выполните:
fastmcp dev inspector server.pyВ открывшемся Inspector последовательно проверьте:
Вызовите
check_port_status, передав5000или8000.Вызовите
scan_common_dev_portsи убедитесь, что возвращаютсяscanned_portsиoccupied_ports.Запустите отдельный тестовый сервис:
python -m http.server 8765 --bind 127.0.0.1Вызовите
check_port_status(8765)и убедитесь, что видны PID, имя и объём памяти процесса Python.Вызовите
kill_process_by_port(8765, force=false)и убедитесь, что возвращаетсяsuccess: true, затем закройте тестовый терминал.
Не тестируйте kill_process_by_port напрямую на важных процессах, таких как базы данных, IDE и системные службы. Этот инструмент по умолчанию использует force=true и отправляет сигнал принудительного завершения.
Проверка схемы с помощью FastMCP CLI
fastmcp inspect server.py --format mcpПроверьте, что в выводе корректны имена инструментов, описания, типы параметров и значения по умолчанию.
Конфигурация MCP-клиента
Замените путь ниже на абсолютный путь к этому проекту и добавьте его в конфигурацию клиента, поддерживающего MCP:
{
"mcpServers": {
"port-doctor-mcp": {
"command": "/absolute/path/to/port-doctor-mcp/.venv/bin/python",
"args": ["/absolute/path/to/port-doctor-mcp/server.py"]
}
}
}Пример для Windows:
{
"mcpServers": {
"port-doctor-mcp": {
"command": "C:\\path\\to\\port-doctor-mcp\\.venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\port-doctor-mcp\\server.py"]
}
}
}В MCP.so передаётся информация о каталоге GitHub-репозитория; это не исправит за вас локальный интерпретатор Python. Другим пользователям после установки по-прежнему нужно сначала создать виртуальное окружение и выполнить pip install -r requirements.txt.
Публикация на MCP.so
MCP.so — это каталог MCP-серверов; он не превращает локальный stdio-процесс в публичный HTTP-сервис. Перед публикацией сначала отправьте этот проект в публичный GitHub-репозиторий, затем откройте:
https://mcp.so/submit?type=serverЗаполните:
Repository URL: адрес вашего GitHub-репозитория.Name:port-doctor-mcp.
На странице отправки может быть доступна платная опция ускоренной публикации; покупка не влияет на работу кода этого проекта. После того как пользователи найдут проект в каталоге, им всё равно потребуется настроить локальное окружение Python в соответствии с приведёнными выше шагами установки.
Пример возвращаемого значения
check_port_status(8000) возвращает структуру примерно следующего вида:
{
"port": 8000,
"in_use": true,
"process_count": 1,
"processes": [
{
"pid": 12345,
"name": "python",
"memory_rss_bytes": 52428800,
"memory_rss_mb": 50.0,
"connections": [
{
"protocol": "tcp",
"local_address": "127.0.0.1:8000",
"status": "LISTEN"
}
]
}
]
}Предупреждение о безопасности
kill_process_by_port — инструмент с побочными эффектами. По умолчанию (force=true) отправляется сигнал принудительного завершения, что может привести к потере несохранённых данных; рекомендуется сначала вызвать check_port_status, чтобы подтвердить PID, и только потом решать, завершать ли процесс. При чтении информации о процессах других пользователей или завершении защищённых процессов операционная система может вернуть ошибку прав доступа.
Лицензия
См. LICENSE.
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
- AlicenseAqualityDmaintenanceA unified developer toolkit for AI-assisted workflows. Task timing, doc drift detection, env validation, secret scanning, port conflict resolution, AI context generation, and license auditing — one MCP server, one install.73MIT
- AlicenseAqualityDmaintenanceInspect, manage, and kill local dev servers via MCP. Stop guessing what's on :3000. Five tools: list servers with framework detection, inspect ports, find zombies, diagnose conflicts, safe-kill with dry-run default. Local, no cloud, no telemetry.5203MIT
- AlicenseNot gradedqualityBmaintenanceEnables management of long-running development processes (such as dev servers, compilers, and watchers) from MCP hosts. Provides tools to start, stop, restart, check status, view logs, and send input to managed processes.MIT
- AlicenseNot gradedqualityAmaintenanceSee what's on your ports, then act on it. Diagnostic-first port viewer for Linux, MacOS and Windows.56MIT
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
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/GrantKnoche/port-doctor-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server