An MCP server for querying OpenObserve (read/query only).
The server provides 5 read-only tools for querying OpenObserve. Tool names follow verb_noun convention well (search_sql, search_logs, list_streams). All tools have descriptions and input schemas are present with type definitions. However, descriptions are terse (mostly 10-15 words), parameter descriptions lack actionable constraints (ranges, formats, valid values), and output schemas are not documented. Error handling is basic, exceptions are caught but recovery guidance is minimal. The server uses tool annotations appropriately (readOnlyHint), which is good. Input validation exists for SQL and pagination parameters but lacks detailed constraint documentation in descriptions. Search tools construct SQL internally (search_logs builds match_all query), which is pragmatic but the SQL construction lacks explanation in the parameter docs. Overall definition quality is solid but inconsistent, good naming and basic structure, but shallow descriptions and missing output documentation hold it back from B grade.
Delete a stream from OpenObserve.
Get the volume of logs (count) over time (histogram).
Get the schema (field names and types) for a specific stream.
List streams for the configured OpenObserve org.
Search logs in a stream using a full-text query string.
Run an OpenObserve SQL query via /api/{org}/_search.
Output schemas not documented. No tool describes what fields the response contains or their types. LLMs cannot plan downstream tool calls or extract the right data without knowing response structure.
Parameter descriptions lack actionable constraints. E.g. 'hours' parameter on search_sql has no min/max, 'interval' on get_log_volume has no enum of valid values, 'size' lacks upper bound. Constraints are enforced in code but not communicated to the LLM.
Discovery hints missing. search_logs defaults stream to 'default' with no mention that list_streams should be called first to discover available streams. get_stream_schema requires a stream name but doesn't guide discovery.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 12 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Tool descriptions are terse (7-11 words each). Rubric baseline for A+ tools is 50-200 chars; these average ~40-60 chars. Descriptions lack WHEN to use the tool and any prerequisites.
Error handling is minimal. Code catches exceptions but does not return actionable recovery guidance. E.g. 'Stream not found' should suggest available streams; API errors should indicate whether to retry.