observe-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@observe-mcpsearch logs for service 'api-gateway' with status 500"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
observe-mcp
An MCP server for querying Observe.com logs using OPAL. Compatible with Claude Desktop, Claude Code, and any MCP client.
Tools
Tool | Description |
| Run a raw OPAL pipeline query against any dataset |
| Discover available datasets in your Observe tenant |
| Live-sample a dataset to see available fields |
| Return cached field schema (instant, no API call) |
| Search logs for a named service |
| Search logs by any field/value pair (userId, requestId, deviceId, etc.) |
| OPAL language reference and query examples |
Related MCP server: openobserve-community-mcp
Configuration
Variable | Required | Description |
| Yes | Your Observe tenant ID (numeric). Found in your Observe URL: |
| Yes | Observe bearer token. Generate at: Observe UI → Settings → API Tokens |
| No | Default dataset path used when |
Usage with Claude Code
claude mcp add observe docker run -i --rm \
-e OBSERVE_CUSTOMER_ID=<your-id> \
-e OBSERVE_TOKEN=<your-token> \
staffdill/observe-mcpUsage with Claude Desktop
Add to your claude_desktop_config.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
Available Tools
7 toolsget_dataset_schemaA
Return cached field names, example values, and suggested OPAL filter snippets for a dataset. Instant — no API call. Call this before writing any OPAL query. Generate the cache by running the discover script externally.
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_path | No | Dataset path. Falls back to OBSERVE_DEFAULT_DATASET. Use list_datasets to find paths. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the data is cached and that the cache must be generated externally, which is important behavioral context. However, it doesn't explain what happens if the cache is missing or if there are any permissions requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each serving a purpose: first states outputs, second emphasizes speed, third gives usage direction. No unnecessary words; front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately hints at return values (field names, example values, OPAL snippets). The parameter is fully covered. While error handling is not discussed, the tool is simple and the description is sufficient for an AI to understand its basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter dataset_path is fully described in the schema with details about default fallback and how to find paths. The description adds no additional semantic value beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns cached field names, example values, and OPAL filter snippets for a dataset. It emphasizes that it's instant and no API call is needed, distinguishing its lightweight nature from potentially heavier sibling tools like inspect_dataset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises calling this before writing any OPAL query, which defines the primary use case. It also mentions the prerequisite of generating the cache externally via the discover script. However, it does not explicitly mention when not to use this tool or compare it to alternatives like inspect_dataset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_datasetA
Sample a dataset to discover available field names and example values. Call this before writing OPAL queries so you know exactly which fields to filter on.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline | No | Optional OPAL filter to scope the sample, e.g. 'filter service = "api-server"'. Defaults to no filter. | |
| sample_size | No | Number of rows to sample (default 5). More rows = better field coverage. | |
| dataset_path | No | Observe dataset path. Falls back to OBSERVE_DEFAULT_DATASET env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description carries full burden. It implies a safe, non-destructive sample operation but does not explicitly state read-only behavior or any side effects. The purpose is clear but lacks explicit behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the action and outcome, then add usage context. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains purpose and usage but fails to describe the output format (e.g., list of field names with example values, or a sample table). Without an output schema, the description should clarify what the tool returns, which is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described meaningfully (pipeline filter, sample_size, dataset_path). The description adds no additional parameter details beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool samples a dataset to discover field names and example values, with a specific verb and resource. It differentiates from sibling tools like get_dataset_schema and observe_query by focusing on field discovery before writing queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to call this before writing OPAL queries to know which fields to filter on. This provides clear when-to-use guidance, though it does not mention when not to use or alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_datasetsA
List all datasets in Observe, optionally filtered by name keyword. Use this to discover dataset paths before running queries.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Case-insensitive keyword to filter dataset names, e.g. 'logs', 'metrics' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It only states 'List all datasets' and does not mention safety (e.g., read-only), required permissions, or potential side effects. This is a significant gap for a tool that interacts with data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long with no wasted words. It efficiently states the functionality and usage context, making it easy for an AI agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the tool's purpose and usage context reasonably well, it lacks details about the output format (e.g., list of dataset names, paths). Given there is no output schema, this missing information reduces completeness for an agent that needs to use the results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for the single parameter 'filter' with full description (case-insensitive keyword). The description adds minimal value beyond calling it 'name keyword,' which is redundant. Therefore, baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all datasets in Observe, optionally filtered by name keyword' clearly specifies the verb (List) and resource (datasets). It also provides use context 'Use this to discover dataset paths before running queries,' effectively distinguishing it from sibling tools like get_dataset_schema (schema of specific dataset) and inspect_dataset (details of dataset) which operate on known datasets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool to discover dataset paths before running queries, providing clear context for when to use it. However, it does not explicitly mention when not to use it or list alternatives, leaving some ambiguity for edge cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
observe_docsA
Show OPAL query language reference and examples for writing Observe queries. Call this before writing OPAL pipelines.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool shows reference material, which implies a read-only, non-destructive action. However, it does not explicitly disclose behavioral traits such as idempotency or side effects, leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the purpose and then provide usage instruction. Every word earns its place with no redundancy or filler. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple documentation tool with no parameters and no output schema, the description covers the core function and usage context. It lacks details about the output format (e.g., text, links), but is otherwise complete for the agent's decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the schema coverage is trivially 100%. The description adds no parameter info, but none is needed per guidelines (baseline 4 for 0 params).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows OPAL query language reference and examples, distinguishing it from sibling tools like observe_query which executes queries. The verb 'Show' and resource 'OPAL query language reference and examples' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call this before writing OPAL pipelines,' providing clear when-to-use guidance. It does not contrast with alternatives or state when not to use, but the context of sibling tools implies the differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
observe_queryB
Run a raw OPAL pipeline query against Observe. Returns up to rowCount rows.
| Name | Required | Description | Default |
|---|---|---|---|
| end_time | No | ISO8601 end time. Defaults to now. | |
| pipeline | Yes | OPAL pipeline string, e.g. 'filter service = "api-server" | limit 50' | |
| raw_json | No | Return raw JSON instead of formatted text. Use only when you need structured data for further OPAL analysis. | |
| row_count | No | Max rows to return (default 200) | |
| start_time | No | ISO8601 start time. Defaults to 1 hour ago. | |
| dataset_path | No | Observe dataset path, e.g. 'Default.Logs'. Falls back to OBSERVE_DEFAULT_DATASET env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for disclosing behavior. It only states that the tool returns up to rowCount rows, but does not mention if the query is read-only, authentication requirements, rate limits, or whether the query can mutate data. The description is insufficient for understanding behavioral implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core purpose. It is front-loaded and contains no superfluous words. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters and no output schema, the description is too minimal. It does not explain the return format (e.g., table, JSON), error handling, or time range behavior. The description leaves important gaps for an agent to correctly use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all 6 parameters. The description adds no additional meaning beyond the schema; it simply echoes the row_count parameter. According to guidelines, with high schema coverage, baseline is 3, and the description does not exceed that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a raw OPAL pipeline query against Observe and returns up to rowCount rows. This distinguishes it from sibling tools like search_entity_logs (which are more specific) and list_datasets (which lists datasets). The verb 'run' and resource 'raw OPAL pipeline query' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternative tools like search_entity_logs or search_service_logs. The description does not mention when to choose this over other query-related tools or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_entity_logsA
Search Observe logs filtered by a specific field value — useful for correlating logs to a particular entity such as a user ID, request ID, device ID, or any other identifier.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 100) | |
| service | No | Optional service name to narrow results | |
| hours_ago | No | How many hours back to search (default 2) | |
| field_name | Yes | Field name to filter on, e.g. 'userId', 'requestId', 'deviceId' | |
| field_value | Yes | Value to match against the field | |
| dataset_path | No | Observe dataset path. Falls back to OBSERVE_DEFAULT_DATASET env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks information on behavioral traits such as read-only nature, side effects, or performance implications. It only describes the basic search function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence that front-loads the core purpose and provides concrete examples, achieving conciseness without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description offers no details about return format, pagination, or error behavior, leaving the agent without sufficient context for result handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description adds marginal value beyond the schema, primarily framing the use case for correlating entities.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches Observe logs filtered by a specific field value, with explicit examples (user ID, request ID, device ID). This distinguishes it from sibling tools like search_service_logs which filter by service.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when correlating logs to a specific entity but does not provide explicit when-to-use or when-not-to-use guidance, nor mention alternatives directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_service_logsB
Search Observe logs for a specific service. Convenience wrapper around OPAL.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Filter by log level | |
| limit | No | Max rows (default 100) | |
| keyword | No | Keyword to filter log messages | |
| service | Yes | Service name, e.g. 'api-server' | |
| hours_ago | No | How many hours back to search (default 1) | |
| dataset_path | No | Observe dataset path. Falls back to OBSERVE_DEFAULT_DATASET env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions it's a wrapper but does not disclose behavioral traits such as authentication requirements, error handling, rate limits, or what happens when the service is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very short (two sentences) and front-loaded, which is concise. However, it lacks essential information, so it is not a model of efficient communication; it is under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should provide more context about return values, default behaviors, and what the tool does beyond the schema. It is incomplete for a tool with 6 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond what the schema already provides for each parameter. It only reiterates that it searches for a specific service.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it searches Observe logs for a specific service, using a specific verb and resource. It distinguishes from siblings like 'search_entity_logs' by being a convenience wrapper around OPAL.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'observe_query' or 'search_entity_logs'. The description only says it's a convenience wrapper, without explaining trade-offs or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v1.0.0- First observed
get_dataset_schema - First observed
inspect_dataset - First observed
list_datasets - First observed
observe_docs - First observed
observe_query - First observed
search_entity_logs - First observed
search_service_logs
TDQS
Scored across 7 tools
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.
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.
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.
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
Related MCP Connectors
An MCP server that provides tools to discover and retrieve podcast episodes transcripts.
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
An MCP server giving access to Grafana dashboards, data and more.
Access New Relic observability data through MCP - query metrics, logs, traces, entities, and more
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceA Model Context Protocol server that provides access to Observe API functionality, enabling LLMs to execute OPAL queries, manage datasets/monitors, and leverage vector search for documentation and troubleshooting runbooks.1-
- AlicenseBqualityCmaintenanceA read-only MCP server for OpenObserve Community Edition that works over the REST API. Provides tools for searching logs, traces, stream schemas, and dashboards - no Enterprise license required.817GPL 3.0

opal-mcpofficial
AlicenseNot gradedqualityDmaintenanceMCP server for interacting with the Opal Security platform, enabling operations like managing access rules, apps, and bundles via natural language.74Apache 2.0- AlicenseNot gradedqualityBmaintenanceAn MCP server that enables AI assistants to query and explore your OpenObserve observability data. Provides read-only access to logs, metrics, and traces for analysis and troubleshooting.5MIT