Paw Pulse — Claude Code MCP server: monitor your self-hosted LLM
Watches a home box running Ollama, llama.cpp or vLLM and fires an alert when it stops answering or slows down. Nothing has to be exposed to the internet.
claude mcp add --transport http pawpulse https://pulse.dougalpaw.com/mcpWhat Paw Pulse does
A small client script, pawpulse.sh, sits on the machine that hosts your LLM server and pushes a heartbeat out every few minutes. Once the signals stop for longer than the grace period you set, the monitor flips to down and a webhook goes out. The server itself never takes an inbound connection, so there is no port to open.
On Ollama it also catches the quiet problems. Set slow_tps_threshold and you hear about generation crawling; set min_gpu_pct and you hear when a model has dropped from GPU to CPU. That second check reads size_vram from /api/ps, so jq has to be present on the box. No LLM on the host? LLM_KIND=none sends a plain heartbeat, and the same alerts can watch a NAS or a cron job.
The MCP endpoint is remote and speaks Streamable HTTP. It keeps no sessions: one JSON-RPC message per POST, one JSON reply. Tools are create_monitor, setup_instructions, get_status, list_heartbeats, update_monitor and delete_monitor. Connecting needs no auth, but changing a monitor means passing its manage_token as an argument. Alerts reach Discord, Slack, Microsoft Teams, Telegram and Google Chat natively; any other https URL gets generic JSON.
What it helps with
- find out a home Ollama box died without exposing it publicly
- get a Discord alert when token generation slows to a crawl
- catch a model falling back from GPU to CPU
- watch a NAS or cron job with the same heartbeat setup
- share a public status page and badge for a monitor
Example prompts for the agent
- Create a monitor for my home Ollama server and show me the setup instructions
- List the recent heartbeats for my monitor and tell me its current state
- Update the slow_tps_threshold on my monitor, here is the manage_token
How to install Paw Pulse
Platform CLI: remote server
claude mcp add --transport http pawpulse https://pulse.dougalpaw.com/mcpPlatform CLI: remote server
codex mcp add paw-pulse --url https://pulse.dougalpaw.com/mcpConfig file
{
"mcpServers": {
"paw-pulse": {
"url": "https://pulse.dougalpaw.com/mcp"
}
}
}Config file
{
"servers": {
"paw-pulse": {
"type": "http",
"url": "https://pulse.dougalpaw.com/mcp"
}
}
}Platform CLI: remote server
gemini mcp add -t http paw-pulse https://pulse.dougalpaw.com/mcpStep by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about Paw Pulse
How do I install Paw Pulse in Claude Code?
Run claude mcp add --transport http pawpulse https://pulse.dougalpaw.com/mcp. The server then shows up in Claude's MCP server list.
What does Paw Pulse do?
It takes heartbeats from a script on your machine and marks the monitor down when they stop arriving. Each state change triggers a webhook.
Do I need an API key or an account?
No. The MCP server accepts connections without auth, and there are no accounts or IP logs. Editing a monitor requires the manage_token issued at creation.