Watchpup
Free uptime monitoring: HTTP/TCP/TLS/DNS + MCP server checks, cron heartbeats, status pages, alerts.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"watchpup": {
"url": "https://watchpup.watchpup.workers.dev/mcp"
}
}
}リモートエンドポイント
https://watchpup.watchpup.workers.dev/mcpstreamable-httpできること
ツール一覧
ツール(12)
🟢check_url(url, kind)
Check any public URL RIGHT NOW: is it up, HTTP status, response time in ms. With kind:"mcp" it instead performs a real JSON-RPC initialize handshake against a streamable-HTTP MCP server endpoint and reports the server’s self-declared name/version/protocol — useful to tell "the MCP server is down" from "my client is misconfigured". Works without an API key (rate limit 30/hour per IP). For continuous monitoring with alerts, use create_monitor.
入力スキーマ
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Public http(s) URL to check, e.g. https://example.com — for kind=mcp the MCP endpoint URL, e.g. https://mcp.deepwiki.com/mcp"
},
"kind": {
"type": "string",
"enum": [
"http",
"mcp"
],
"description": "What to speak: plain HTTP (default) or an MCP initialize handshake"
}
},
"required": [
"url"
]
}🟢list_monitors(tag)
List all monitors on the account: current up/down status, kind, target, interval, last check. Optionally filter by tag.
入力スキーマ
{
"type": "object",
"properties": {
"tag": {
"type": "string",
"description": "Only monitors carrying ALL these tags (comma-separated), e.g. \"prod\" or \"prod,eu\""
}
}
}🟢get_monitor(id)
Full detail for one monitor: status, config, 24h latency percentiles and trend (http/tcp), SLA budget if a target is set. Heartbeat monitors include their ping_url and ping_email.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Monitor id (from list_monitors)"
}
},
"required": [
"id"
]
}🟡create_monitor(kind, url, target, name, interval)
Create a monitor. kind=http (needs url), tcp (target "host:port"), tls (target host[:port] — cert-expiry watch), domain (target — registration-expiry via RDAP), dns (target + rtype A/AAAA/MX/... , optional expect_value), heartbeat (dead-man’s switch for cron jobs/agent loops: needs name; response includes ping_url to curl from the job, and a ping_email address). Common options: name, interval (seconds, min 60), tags. http options: expect ("2xx,301"), keyword, keyword_absent:"absent", slow_ms (number or "auto"), method, headers, body, json_path/json_expect, header_name/header_expect. heartbeat options: grace (seconds), cron ("0 3 * * *") + tz, max_duration_s. Any other documented field (see /llms.txt) also works — extra properties are passed through.
入力スキーマ
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"http",
"tcp",
"tls",
"domain",
"dns",
"heartbeat",
"mcp"
],
"description": "Monitor kind (default http; \"mcp\" monitors an MCP server via JSON-RPC initialize)"
},
"url": {
"type": "string",
"description": "For kind=http: the URL to check"
},
"target": {
"type": "string",
"description": "For tcp/tls/domain/dns: host[:port] or domain name"
},
"name": {
"type": "string",
"description": "Display name (required for heartbeat, defaults to the target host otherwise)"
},
"interval": {
"type": "integer",
"description": "Check interval in seconds, min 60 (heartbeat: expected ping interval)"
}
},
"additionalProperties": true
}🟡update_monitor(id, status)
PATCH any monitor field: name, url, target, interval, expect, keyword, slow_ms, grace, cron, tags, sla_target, renotify, channels (alert routing)... Pause with {"status":"paused"}, resume with {"status":"new"}. Empty string clears optional fields.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Monitor id"
},
"status": {
"type": "string",
"enum": [
"paused",
"new"
],
"description": "\"paused\" stops checking; \"new\" resumes"
}
},
"required": [
"id"
],
"additionalProperties": true
}🔴delete_monitor(id)
Permanently delete a monitor and all its check history, events and rollups. Cannot be undone.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Monitor id"
}
},
"required": [
"id"
]
}🟢list_incidents(days)
Downtime incidents (ongoing and resolved) across all monitors: start, duration, cause, acknowledgement, notes.
入力スキーマ
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"description": "Lookback window in days, 1-90 (default 30)"
}
}
}🟡ack_incident(id, un)
Mark an ongoing incident as "someone is on it" — pauses still-down reminder alerts for that monitor until recovery. Set un=true to un-acknowledge (re-arms reminders).
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Incident id (from list_incidents)"
},
"un": {
"type": "boolean",
"description": "true = remove an existing acknowledgement"
}
},
"required": [
"id"
]
}🟡add_incident_note(id, note)
Attach/replace a note (max 500 chars) on an incident. Notes publish with the incident on public status pages, their JSON and the Atom feed. Empty string clears.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Incident id (from list_incidents)"
},
"note": {
"type": "string",
"description": "The note text (\"\" clears)"
}
},
"required": [
"id",
"note"
]
}🟢list_channels
Alert delivery channels on the account (email / webhook / Discord / Slack / ntfy / Telegram), their verification state and delivery health.
入力スキーマ
{
"type": "object",
"properties": {}
}🟢get_status_page(slug)
Machine-readable state of any public Watchpup status page by slug: per-monitor status, uptime, incidents last 30d. No API key needed.
入力スキーマ
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Status page slug (the part after /s/)"
}
},
"required": [
"slug"
]
}🟢get_account
Who am I: account email, monitor count/limit, plan limits. Good first call to verify the API key works.
入力スキーマ
{
"type": "object",
"properties": {}
}コミュニティ
エビデンス