port-doctor-mcp
port-doctor-mcp
Un servidor MCP stdio local basado en FastMCP para comprobar la ocupación de puertos de desarrollo y terminar los procesos correspondientes según el puerto.
Funciones
check_port_status(port: int): comprueba si el puerto está ocupado y devuelve el PID, el nombre, el uso de memoria RSS, el protocolo y el estado de conexión del proceso que lo ocupa.kill_process_by_port(port: int, force: bool = True): termina el proceso que ocupa el puerto. Por defecto usa terminación forzada; si se pasaforce=false, usa un terminate más suave. El servidor no se termina a sí mismo.scan_common_dev_ports(): escanea puertos de desarrollo comunes: 3000, 3001, 4173, 5000, 5173, 8000, 8001, 8080, 8081, 8888, 9000.
Related MCP server: localhost-mcp
Instalación
Requiere Python 3.10 o superior.
python -m venv .venv
source .venv/bin/activate # Windows PowerShell: .venv\Scripts\Activate.ps1
python -m pip install -r requirements.txtComprueba que el intérprete actual tiene realmente instaladas las dependencias:
python -c "import sys, psutil, fastmcp; print(sys.executable); print('psutil', psutil.__version__); print('fastmcp', fastmcp.__version__)"Si aquí sigue apareciendo ModuleNotFoundError, significa que la instalación de dependencias y la ejecución del servidor no están usando el mismo Python. No te limites a ejecutar Invalidate Caches; en PyCharm, selecciona .venv/bin/python de este proyecto en Settings -> Project -> Python Interpreter y usa el mismo intérprete en la Run Configuration.
Por ejemplo, la ruta del intérprete del proyecto debería ser similar a:
/path/to/port-doctor-mcp/.venv/bin/pythonEjemplo en Windows:
C:\path\to\port-doctor-mcp\.venv\Scripts\python.exeEjecución
Este es un servidor stdio. Al iniciarse, espera que el cliente MCP se comunique a través de stdin/stdout; no proporciona un puerto HTTP.
python server.pyTambién puedes usar la CLI de FastMCP:
fastmcp run server.pyPara depurar durante el desarrollo, puedes usar MCP Inspector (según el soporte de la versión de FastMCP CLI actualmente instalada):
fastmcp dev inspector server.pyAl ejecutar directamente python server.py, es normal que la terminal no muestre salida normal y se quede esperando entrada: un servidor MCP stdio espera que el cliente envíe mensajes JSON-RPC por stdin/stdout. No interpretes «el proceso no sale» como un fallo de arranque.
Lista de comprobación de pruebas manuales
En la raíz del proyecto, ejecuta:
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 debería mostrar las siguientes tres herramientas:
check_port_status: obligatorioport, entero.kill_process_by_port: obligatorioport, opcionalforce, por defectotrue.scan_common_dev_ports: sin parámetros.
Probar con Inspector
Ejecuta:
fastmcp dev inspector server.pyEn el Inspector abierto, prueba en orden:
Invoca
check_port_statuscon5000o8000.Invoca
scan_common_dev_portsy confirma que devuelvescanned_portsyoccupied_ports.Inicia un servicio de prueba dedicado:
python -m http.server 8765 --bind 127.0.0.1Invoca
check_port_status(8765)y confirma que puedes ver el PID, el nombre y la memoria del proceso de Python.Invoca
kill_process_by_port(8765, force=false)y confirma que devuelvesuccess: true; luego cierra la terminal de prueba.
No pruebes kill_process_by_port directamente contra procesos importantes como bases de datos, IDE o servicios del sistema. Esta herramienta usa force=true por defecto y enviará una señal de terminación forzada.
Comprobar el esquema con FastMCP CLI
fastmcp inspect server.py --format mcpComprueba que en la salida los nombres de las herramientas, las descripciones, los tipos de parámetros y los valores predeterminados sean correctos.
Configuración del cliente MCP
Reemplaza la siguiente ruta por la ruta absoluta de este proyecto e introdúcela en la configuración de un cliente compatible con MCP:
{
"mcpServers": {
"port-doctor-mcp": {
"command": "/absolute/path/to/port-doctor-mcp/.venv/bin/python",
"args": ["/absolute/path/to/port-doctor-mcp/server.py"]
}
}
}Ejemplo en 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"]
}
}
}A MCP.so se envía la información del directorio del repositorio de GitHub; no arreglará tu intérprete de Python local. Después de la instalación, otros usuarios aún deben crear un entorno virtual y ejecutar pip install -r requirements.txt.
Publicar en MCP.so
MCP.so es un directorio de servidores MCP; no convierte un proceso stdio local en un servicio HTTP público. Antes de publicar, sube primero este proyecto a un repositorio público de GitHub y luego abre:
https://mcp.so/submit?type=serverCompleta:
Repository URL: la dirección de tu repositorio de GitHub.Name:port-doctor-mcp.
La página de envío puede ofrecer una opción de publicación acelerada de pago; comprarla o no no afecta la ejecución del código de este proyecto. Cuando los usuarios encuentren el proyecto en el directorio, aún deberán configurar el entorno Python local siguiendo los pasos de instalación anteriores.
Ejemplo de valor de retorno
check_port_status(8000) devuelve una estructura similar a:
{
"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"
}
]
}
]
}Aviso de seguridad
kill_process_by_port es una herramienta con efectos secundarios. Por defecto force=true envía una señal de terminación forzada, lo que puede provocar la pérdida de datos no guardados. Se recomienda llamar primero a check_port_status para confirmar el PID y luego decidir si terminar el proceso. Al leer información de procesos de otros usuarios o intentar terminar procesos protegidos, el sistema operativo puede devolver errores de permisos.
Licencia
Ver 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