MCP Server¶
Wanepia exposes a Model Context Protocol (MCP) server, letting AI assistants query your service catalog and check status in real time. The server runs at https://api.wanepia.com/v1/mcp using SSE transport.
How it works¶
MCP clients discover tools via tools/list and call them via tools/call. Wanepia serves tools from skills — tool manifests you register per tenant. The built-in catalog tools are available to any tenant; you just need to register the provided skill manifest once to make them discoverable.
MCP client → tools/list → returns tools from your registered skills
MCP client → tools/call → dispatched to the built-in implementation
Quickstart¶
1. Register the catalog skill¶
The catalog skill exposes 7 built-in tools for querying your service catalog. Register it once via the API:
curl -X POST https://api.wanepia.com/v1/skills \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"slug": "catalog-ops",
"name": "Catalog Operations",
"description": "Query and manage the service catalog — entities, blueprints, checks, and incidents.",
"version": "1.0.0",
"tools": [
{
"name": "get_status_summary",
"description": "Get current status (up / degraded / down / unknown) for all monitored entities.",
"inputSchema": {"type": "object", "properties": {}}
},
{
"name": "list_entities",
"description": "List entities registered in the catalog, optionally filtered by blueprint type.",
"inputSchema": {
"type": "object",
"properties": {
"blueprint_slug": {"type": "string", "description": "Filter to entities of this blueprint type"}
}
}
},
{
"name": "get_entity",
"description": "Get full details for a specific entity including metadata, current status, and attached checks.",
"inputSchema": {
"type": "object",
"required": ["blueprint_slug", "entity_slug"],
"properties": {
"blueprint_slug": {"type": "string"},
"entity_slug": {"type": "string"}
}
}
},
{
"name": "list_blueprints",
"description": "List all blueprint types defined for the tenant.",
"inputSchema": {"type": "object", "properties": {}}
},
{
"name": "list_incidents",
"description": "List recent state transitions (up→down, down→up, etc.) as an incident feed.",
"inputSchema": {
"type": "object",
"properties": {
"hours": {"type": "integer", "description": "How many hours back to look (default 24)"}
}
}
},
{
"name": "get_check_results",
"description": "Get individual HTTP check results for a specific check, including latency and success/failure per attempt.",
"inputSchema": {
"type": "object",
"required": ["check_id"],
"properties": {
"check_id": {"type": "string"},
"hours": {"type": "integer", "description": "How many hours back to retrieve (default 1)"}
}
}
},
{
"name": "create_check",
"description": "Register a new HTTP health check for an entity.",
"inputSchema": {
"type": "object",
"required": ["entity_id", "target_url"],
"properties": {
"entity_id": {"type": "string"},
"target_url": {"type": "string"},
"interval_seconds": {"type": "integer", "description": "Poll interval in seconds (default 60)"}
}
}
}
]
}'
Verify it registered:
2. Connect your MCP client¶
Add to ~/.claude/mcp_servers.json (global) or .claude/mcp_servers.json (project):
Built-in tools¶
| Tool | Description |
|---|---|
get_status_summary |
Fleet-wide status counts and entity list |
list_entities |
All entities, optionally filtered by blueprint |
get_entity |
Full entity detail with current status |
list_blueprints |
All blueprint types for the tenant |
list_incidents |
Recent state transitions as an incident feed |
get_check_results |
Per-check result history with latency |
create_check |
Register a new HTTP health check |
Custom skills¶
Register your own skills to expose domain-specific context to your AI assistant — deployment info, runbooks, on-call schedules, or anything your team needs.
curl -X POST https://api.wanepia.com/v1/skills \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"slug": "deployment-info",
"name": "Deployment info",
"description": "Provides deployment context for services",
"version": "1.0.0",
"tools": [
{
"name": "get_deployment",
"description": "Get the latest deployment for a service slug",
"inputSchema": {
"type": "object",
"required": ["service"],
"properties": {
"service": {"type": "string", "description": "Service slug"}
}
}
}
]
}'
Manage skills with the CLI:
wnp skills list
wnp skills get catalog-ops
wnp skills enable deployment-info
wnp skills disable deployment-info
wnp skills delete deployment-info
Example session¶
User: Which services are currently down?
Claude: [calls get_status_summary]
[calls list_entities]
Two services are currently down:
- payments-api (down since 03:17)
- reporting-api (down since 22:45 yesterday)
User: What's causing the payments-api failure?
Claude: [calls get_entity for payments-api]
[calls get_check_results for its check ID]
The HTTP check to https://api.acme.com/payments/health is returning
connection refused (status 0). Three consecutive failures starting
at 03:14 triggered the state change at 03:17.