MCP server
Observer runs a remote Model Context Protocol server at mcp.use.observer. Connect Claude, Cursor, or any MCP client and let an assistant read your metrics, services, SLOs, incidents, and maintenance windows, and run operations, using your Observer API key.
Observer runs a remote Model Context Protocol server at https://mcp.use.observer/mcp.
It lets any MCP-compatible assistant (Claude, Cursor, and other MCP clients) work with your
Observer data: read metrics, services, SLOs, incidents, and maintenance windows, and run
write operations such as opening an incident or applying config.
Every tool maps one-to-one to a public API operation and is governed by the same API key, the same scopes, and the same plan entitlement as the REST API. The server is stateless and holds no data: it forwards each call to the API with the key you supply on the connection.
Requirements
You need an obs_pub_ API key (create one under Settings → API keys in the console) with
the scopes for the tools you intend to use, on a plan that includes public API access.
Connect
Create an API key
In the console, open Settings → API keys, create a key, and grant
only the scopes you need (see the catalog below). Copy the obs_pub_… value.
Add the server to your MCP client
The server speaks Streamable HTTP and reads your key
from the Authorization header. Most clients accept a remote server like this:
{
"mcpServers": {
"observer": {
"url": "https://mcp.use.observer/mcp",
"headers": { "Authorization": "Bearer obs_pub_your_key_here" }
}
}
}
Config shapes vary by client. Some expect a "type": "http" field alongside the url; check
your client's remote-MCP documentation. The endpoint and the Authorization: Bearer header are
the same in every case.
Confirm the connection
Ask the assistant to list your metrics. It should call listMetrics
and return your metric definitions. If a call fails with a scope message, add the named scope to
the key (or confirm your plan includes public API access).
Scopes are the boundary
A tool only runs if the key carries its scope. A call without the right scope returns an error naming the scope it needs. Give read-only keys for analysis, and scope write keys to just the operations you want an assistant to perform.
Agent skills
Ready-made skills that teach an assistant the working model (scope discipline, the export/apply loop, the incident lifecycle) live in the public skills repository. Copy a skill folder into your agent's skills directory, or let the assistant read it directly.
Tool catalog
Metrics
| Tool | Scope | What it does |
|---|---|---|
listMetrics | read:metrics | List metric definitions. |
getMetric | read:metrics | Get a metric by id. |
getMetricHistory | read:metrics | Aggregated metric values over a window (max 30 days). |
setManualMetricStatus | write:metrics | Set the status on a manually-managed metric. |
Services and SLOs
| Tool | Scope | What it does |
|---|---|---|
listServices | read:services | List services. |
getService | read:services | Get a service by id. |
listSlos | read:slos | List SLOs. |
getSlo | read:slos | Get an SLO with its latest burn event. |
Incidents
| Tool | Scope | What it does |
|---|---|---|
listIncidents | read:incidents | List incidents. |
getIncident | read:incidents | Get an incident. |
createIncident | write:incidents | Create an incident (draft or published). |
patchIncident | write:incidents | Edit title, severity, affected services, visibility. |
publishIncident | write:incidents | Publish a draft incident. |
resolveIncident | write:incidents | Resolve an incident, with an optional final message. |
appendIncidentMessage | write:incidents | Append a timeline message (a Resolved message auto-resolves the parent). |
draftIncidentFromMetric | write:incidents | Pre-fill a draft incident from a metric's current state (idempotent within 30 minutes). |
deleteIncident | write:incidents | Soft-delete an incident. |
Maintenance
| Tool | Scope | What it does |
|---|---|---|
listMaintenances | read:maintenances | List maintenance windows. |
getMaintenance | read:maintenances | Get a maintenance window. |
createMaintenance | write:maintenances | Schedule a maintenance window. |
patchMaintenance | write:maintenances | Edit a maintenance (only before it has started). |
startMaintenance | write:maintenances | Move a scheduled maintenance to in-progress. |
completeMaintenance | write:maintenances | Move an in-progress maintenance to completed. |
cancelMaintenance | write:maintenances | Cancel a maintenance before completion. |
Config as code
| Tool | Scope | What it does |
|---|---|---|
exportConfig | read:config | Export the org's configuration as a canonical apply document. |
applyConfig | write:config | Apply a config-as-code document (idempotent upsert by config key). |
Change events
| Tool | Scope | What it does |
|---|---|---|
createChangeEvent | write:change_events | Record a deploy, commit, or release event for status-transition correlation. |
Notes
- The server is stateless: it opens a fresh session per request and keeps nothing. Your key is read from the connection header on each call and never stored.
- Tool inputs and outputs match the REST API one-to-one. For full field shapes, request/response bodies, and error codes, see the API reference.
- For safe exploration, connect a key with only
read:*scopes. Addwrite:*scopes when you want an assistant to open incidents, schedule maintenance, or apply config.