loading…
Search for a command to run...
loading…
Enables AI assistants to identify processes listening on specific network ports by returning process names and PIDs. It provides infrastructure introspection ca
Enables AI assistants to identify processes listening on specific network ports by returning process names and PIDs. It provides infrastructure introspection capabilities through the Linux ss command to help users monitor and debug local services.
An MCP (Model Context Protocol) server for infrastructure introspection — lets AI assistants query which processes are listening on specific ports on your machine.
Exposes a single tool to MCP clients (like Claude Desktop or Claude Code):
get_processes_by_ports — given a list of port numbers, returns the process name and PID for each listening socket.
// Example response for ports [8000, 3000]
{
"8000": [{ "name": "python", "pid": "12345" }],
"3000": [{ "name": "node", "pid": "67890" }]
}
This is useful when you want your AI assistant to understand what's running on your machine — e.g. "what's listening on port 5432?" or "check if my dev server is up."
ss from iproute2)git clone https://github.com/your-username/mcp-infra
cd mcp-infra
uv sync
Or with pip:
pip install -e .
uv run server.py
# or
python server.py
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"infra": {
"command": "uv",
"args": ["run", "/path/to/mcp-infra/server.py"]
}
}
}
claude mcp add infra -- uv run /path/to/mcp-infra/server.py
get_processes_by_ports(ports: list[int]) -> strReturns a JSON string mapping each port to a list of processes.
| Field | Type | Description |
|---|---|---|
ports |
list[int] |
Port numbers to query |
Response shape per port:
name — process namepid — process ID as stringraw — unparsed line (fallback if parsing fails)error — error message if ss failed for that portUses the ss command (ss -tlnp sport = :<port>) to list TCP sockets in LISTEN state, then parses the users:((...)) field to extract process names and PIDs.
Pull requests are welcome. Keep it focused — this is intentionally a small, single-purpose server.
MIT
Add this to claude_desktop_config.json and restart Claude Desktop.
{
"mcpServers": {
"mcp-infra": {
"command": "npx",
"args": []
}
}
}