Prepare the server locally
Run this once before adding it to Claude Code.
git clone https://github.com/chalshik/mcp-infra
cd mcp-infra
uv syncRegister it in Claude Code
claude mcp add mcp-infra -- uv run /path/to/mcp-infra/server.pyReplace any placeholder paths in the command with the real path on your machine.
Make your agent remember this setup
mcp-infra's config, env vars, and the gotchas you hit — recalled in every future Claude Code, Cursor, and Codex session.
npx conare@latestFree · one command · indexes the sessions already on disk. Set up in the browser instead →
What it does
- Queries active TCP sockets in LISTEN state
- Maps port numbers to process names and PIDs
- Uses Linux ss command for infrastructure introspection
- Provides raw fallback data for parsing failures
Tools 1
get_processes_by_portsReturns the process name and PID for each listening socket given a list of port numbers.Try it
Original README from chalshik/mcp-infra
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 sync
Or with pip:
pip install -e .
Usage
Run directly
uv run server.py
# or
python server.py
Add 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.py
Tool reference
`get_processes_by_ports(ports: list[int]) -> str`
Returns 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 ifssfailed for that port
How it works
Uses the ss command (ss -tlnp sport = :) 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