Live Linux host signal (CPU, memory, processes, network, optional eBPF) for MCP clients.
MCP server that exposes live host signal — CPU, memory, processes, network —
to Cursor / Claude. Default path is /proc (no root). Optional eBPF tools
activate when CAP_BPF / CAP_PERFMON is available.
Repo: https://github.com/arunmm8335/sysmcp · Version: 0.5.0
| Tool | What it returns |
|---|---|
host_dashboard | Full snapshot (CPU, mem, top procs, listeners, eBPF) |
poll_host_stats | Lightweight CPU/mem/process snapshot for auto-refresh |
system_stats | CPU %, memory %, load averages, NIC rx/tx B/s |
top_processes | Top PIDs by CPU % over a sample window, plus skipped_count |
network_connections | IPv4+IPv6 TCP/UDP; filters + resolve_pid; row limit (default 200) |
cgroup_cpu | Top cgroups by CPU % (cgroup v2 cpu.stat) |
iface_rates | Per-interface byte/packet rates (/proc/net/dev) |
ebpf_status | Whether eBPF works; includes how_to_enable when not |
ebpf_activity | Fork + sched_switch rates via eBPF, or available: false |
ebpf_traffic | Kernel RX/TX packet rates (netif_receive_skb / net_dev_xmit) |
True per-connection byte counters need sock-level eBPF; iface_rates +
ebpf_traffic are the practical deeper network signal today.
go build -o sysmcp ./cmd/sysmcp
./sysmcp serve
# open http://127.0.0.1:8787/
Optional: ./sysmcp serve -addr 127.0.0.1:9000
APIs: /api/dashboard, /api/poll (JSON).
Ask “Open the host dashboard” / “Refresh the host dashboard”. The agent
calls host_dashboard and opens a Cursor Canvas beside the chat.
MCP Apps resource ui://sysmcp/dashboard remains for hosts that render Apps
iframes. Cursor often uses Canvas + JSON instead.
network_connections filters| Arg | Effect |
|---|---|
listen_only | TCP LISTEN + unbound UDP |
protocol | tcp / udp |
family | ipv4 / ipv6 |
state | e.g. ESTABLISHED, LISTEN |
local_port | filter by local port |
pid | owning PID (implies resolve_pid) |
limit | max rows (default 200, max 1000); truncated in result |
Release binaries (linux amd64 / arm64) ship on each v* tag:
https://github.com/arunmm8335/sysmcp/releases
# example amd64
curl -fsSL -o sysmcp.tgz \
https://github.com/arunmm8335/sysmcp/releases/download/v0.5.0/sysmcp_0.5.0_linux_amd64.tar.gz
tar -xzf sysmcp.tgz
Or from source:
go install github.com/arunmm8335/sysmcp/cmd/sysmcp@latest
# or
git clone https://github.com/arunmm8335/sysmcp.git
cd sysmcp
go build -o sysmcp ./cmd/sysmcp
Namespace: io.github.arunmm8335/sysmcp. Tag releases build .mcpb assets and
attempt an OIDC publish via mcp-publisher. To publish manually after a
release (recommended if OIDC is not set up):
# fill fileSha256 in server.json from the release *.mcpb.sha256 files, then:
curl -fsSL -o mcp-publisher.tgz \
https://github.com/modelcontextprotocol/registry/releases/download/v1.8.0/mcp-publisher_linux_amd64.tar.gz
tar -xzf mcp-publisher.tgz mcp-publisher
./mcp-publisher login github
./mcp-publisher publish ./server.json
See https://modelcontextprotocol.io/registry/quickstart
{
"mcpServers": {
"sysmcp": {
"command": "/absolute/path/to/sysmcp"
}
}
}
go build -o sysmcp ./cmd/sysmcp
./scripts/grant-caps.sh ./sysmcp
# sets: cap_bpf,cap_perfmon+ep
Restart the MCP server after granting caps. Without caps, eBPF tools return
available: false — /proc tools still work.
go test ./... -count=1
go build -o sysmcp ./cmd/sysmcp
go run ./scripts/smoke.go ./sysmcp
./sysmcp serve # then open http://127.0.0.1:8787/
MIT
This listing does not have a supported local package template. Use the maintainer’s documentation for its hosted endpoint, authentication, and client-specific setup. No install command has been inferred.
https://github.com/arunmm8335/sysmcp/releases/download/v0.5.0/sysmcp_0.5.0_linux_amd64.mcpbothersysmcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.