Skip to main content
Glama
staffdill

observe-mcp

by staffdill
README.md
# observe-mcp

An MCP server for querying [Observe.com](https://www.observeinc.com/) logs using OPAL. Compatible with Claude Desktop, Claude Code, and any MCP client.

## Tools

| Tool | Description |
|---|---|
| `observe_query` | Run a raw OPAL pipeline query against any dataset |
| `list_datasets` | Discover available datasets in your Observe tenant |
| `inspect_dataset` | Live-sample a dataset to see available fields |
| `get_dataset_schema` | Return cached field schema (instant, no API call) |
| `search_service_logs` | Search logs for a named service |
| `search_entity_logs` | Search logs by any field/value pair (userId, requestId, deviceId, etc.) |
| `observe_docs` | OPAL language reference and query examples |

## Configuration

| Variable | Required | Description |
|---|---|---|
| `OBSERVE_CUSTOMER_ID` | Yes | Your Observe tenant ID (numeric). Found in your Observe URL: `https://<id>.observeinc.com` |
| `OBSERVE_TOKEN` | Yes | Observe bearer token. Generate at: Observe UI → Settings → API Tokens |
| `OBSERVE_DEFAULT_DATASET` | No | Default dataset path used when `dataset_path` is not passed |

## Usage with Claude Code

```bash
claude mcp add observe docker run -i --rm \
  -e OBSERVE_CUSTOMER_ID=<your-id> \
  -e OBSERVE_TOKEN=<your-token> \
  staffdill/observe-mcp
```

## Usage with Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "observe": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "OBSERVE_CUSTOMER_ID=<your-id>",
        "-e", "OBSERVE_TOKEN=<your-token>",
        "staffdill/observe-mcp"
      ]
    }
  }
}
```

## Schema Cache

`get_dataset_schema` returns instant results from a local cache file (`data/fields.json`). This file is tenant-specific and not included in the image. If the cache is absent, use `inspect_dataset` for a live field sample instead.

## License

MIT

TDQS

A3.6/5.0

Scored across 7 tools

Disambiguation4/5

Tools have distinct purposes overall, but get_dataset_schema and inspect_dataset both deal with field discovery, potentially causing confusion. search_entity_logs and search_service_logs are similarly structured but target different scopes.

Naming Consistency3/5

Most tools use snake_case with verb-first naming, but observe_docs and observe_query break the pattern by using the server name prefix instead of a verb. get_dataset_schema and inspect_dataset share 'dataset' but use different verbs, causing slight inconsistency.

Tool Count5/5

Seven tools is well-scoped for a query-focused Observe MCP server, covering dataset discovery, schema inspection, query execution, and log searching without being overwhelming.

Completeness4/5

The tool surface covers core querying tasks: listing datasets, inspecting schemas, running queries, and searching logs. Missing might be dataset creation or alert management, but these are outside the apparent query-focused scope.

Maintenance

ActivityStale
ResponsivenessNo issues