Paw Pulse
Heartbeat and tokens/sec monitoring for self-hosted LLM servers (Ollama etc.), with down alerts.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"pawpulse": {
"url": "https://pawpulse.dougalpaw.workers.dev/mcp"
}
}
}远程端点
https://pawpulse.dougalpaw.workers.dev/mcpstreamable-http它能做什么
工具清单
工具(6)
🟡create_monitor(name, grace_seconds, slow_tps_threshold, webhook_url, public)
Create a new anonymous Paw Pulse monitor. Returns ingest_token and manage_token exactly once — store them, they cannot be recovered.
输入模式
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Display name, not treated as identifying."
},
"grace_seconds": {
"type": "number",
"description": "60-86400, default 300."
},
"slow_tps_threshold": {
"type": "number",
"description": "Optional tokens/sec floor."
},
"webhook_url": {
"type": "string",
"description": "Optional https:// webhook for alerts."
},
"public": {
"type": "boolean",
"description": "Whether /v1/monitors/:id/status and /s/:id are public."
}
}
}🟢get_status(id, manage_token)
Get the current status of a monitor. Private monitors require manage_token.
输入模式
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Monitor id, as returned by create_monitor."
},
"manage_token": {
"type": "string",
"description": "The monitor's manage_token (returned once by create_monitor)."
}
},
"required": [
"id"
]
}🟢list_heartbeats(id, manage_token, limit)
List recent heartbeats for a monitor (newest first). Private monitors require manage_token.
输入模式
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Monitor id, as returned by create_monitor."
},
"manage_token": {
"type": "string",
"description": "The monitor's manage_token (returned once by create_monitor)."
},
"limit": {
"type": "number",
"description": "1-500, default 50."
}
},
"required": [
"id"
]
}🟡update_monitor(id, manage_token, name, grace_seconds, slow_tps_threshold, ...)
Change a monitor's name, grace period, slow threshold, webhook or visibility. Only the fields you pass change.
输入模式
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Monitor id, as returned by create_monitor."
},
"manage_token": {
"type": "string",
"description": "The monitor's manage_token (returned once by create_monitor)."
},
"name": {
"type": "string",
"description": "New display name."
},
"grace_seconds": {
"type": "number",
"description": "60-86400."
},
"slow_tps_threshold": {
"type": [
"number",
"null"
],
"description": "Tokens/sec floor, or null to clear."
},
"webhook_url": {
"type": [
"string",
"null"
],
"description": "https:// webhook, or null to clear."
},
"public": {
"type": "boolean"
}
},
"required": [
"id",
"manage_token"
]
}🔴delete_monitor(id, manage_token)
Permanently delete a monitor and all its heartbeats. Cannot be undone.
输入模式
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Monitor id, as returned by create_monitor."
},
"manage_token": {
"type": "string",
"description": "The monitor's manage_token (returned once by create_monitor)."
}
},
"required": [
"id",
"manage_token"
]
}🟢setup_instructions(id, ingest_token, llm_kind)
Shell commands to install the heartbeat script on the box being monitored and run it from cron. Pass the id and ingest_token from create_monitor.
输入模式
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Monitor id, as returned by create_monitor."
},
"ingest_token": {
"type": "string",
"description": "The monitor's ingest_token (returned once by create_monitor)."
},
"llm_kind": {
"type": "string",
"enum": [
"ollama",
"openai",
"none"
],
"description": "none = plain heartbeat, no LLM probe. Default ollama."
}
},
"required": [
"id",
"ingest_token"
]
}社区
证据