Enables infrastructure introspection on Linux systems by providing tools to query and identify process names and PIDs listening on specific network ports.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-infraWhat process is listening on port 8080?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-infra
An MCP (Model Context Protocol) server for infrastructure introspection — lets AI assistants query which processes are listening on specific ports on your machine.
What it does
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."
Requirements
Python 3.11+
Linux (uses
ssfromiproute2)uv (recommended) or pip
Installation
git clone https://github.com/your-username/mcp-infra
cd mcp-infra
uv syncOr with pip:
pip install -e .Usage
Run directly
uv run server.py
# or
python server.pyAdd to Claude Desktop
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"infra": {
"command": "uv",
"args": ["run", "/path/to/mcp-infra/server.py"]
}
}
}Add to Claude Code
claude mcp add infra -- uv run /path/to/mcp-infra/server.pyTool reference
get_processes_by_ports(ports: list[int]) -> str
Returns a JSON string mapping each port to a list of processes.
Field | Type | Description |
|
| Port numbers to query |
Response shape per port:
name— process namepid— process ID as stringraw— unparsed line (fallback if parsing fails)error— error message ifssfailed for that port
How it works
Uses 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.
Contributing
Pull requests are welcome. Keep it focused — this is intentionally a small, single-purpose server.
License
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.