openobserve-mcp
Click on "Install 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., "@openobserve-mcpsearch my app_logs for errors in the last hour"
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.
openobserve-mcp
An MCP server that lets any MCP client — Claude Code, Cursor, a custom agent — query an OpenObserve instance: logs, traces, and metrics.
Quick start
npm install
npm run build
npm run o2:up # OpenObserve on http://localhost:5080
npm run seed # sample logs, traces, and metrics
npm run smoke # call every tool over a real stdio MCP sessionnpm run smoke should print eight ok lines. Log in to the UI at http://localhost:5080 with root@example.com / Complexpass#123.
Related MCP server: openobserve-community-mcp
Connecting a client
Claude Code
claude mcp add openobserve \
--env O2_URL=http://localhost:5080 \
--env O2_ORG=default \
--env O2_USER=root@example.com \
--env O2_PASSWORD='Complexpass#123' \
-- node /absolute/path/to/openobserve-mcp/dist/index.jsRestart the client afterwards — MCP servers are loaded at session start.
Any client (JSON config)
{
"mcpServers": {
"openobserve": {
"command": "node",
"args": ["/absolute/path/to/openobserve-mcp/dist/index.js"],
"env": {
"O2_URL": "http://localhost:5080",
"O2_ORG": "default",
"O2_USER": "root@example.com",
"O2_PASSWORD": "Complexpass#123"
}
}
}
}Configuration
Variable | Default | Purpose |
|
| Base URL of the instance |
|
| Organization id |
| — | Login email |
| — | Password |
See .env.example. Credentials are read from the process environment only; nothing is written to disk.
Tools
Tool | Purpose |
| Enumerate streams, optionally filtered by type |
| Field names and types for a stream |
| Stream count, storage, pipelines, alerts, dashboards |
| Rows matching a SQL |
|
|
| Recent traces with root operation, duration, services |
| Every span of one trace, ordered by start time |
| PromQL over a time range |
Time ranges
Every time argument takes an ISO timestamp or relative shorthand: 30s, 15m, 2h, 7d, 1w. end_time defaults to now.
aggregate_logs table token
Write the table as the literal token stream; it is substituted with the real stream name in FROM / JOIN position only, so a column or string literal containing the word is left alone.
{
"stream": "app_logs",
"sql": "SELECT service, COUNT(*) AS c FROM stream GROUP BY service ORDER BY c DESC",
"start_time": "1h"
}Logs and traces live in separate indexes. To aggregate spans, pass "stream_type": "traces" — otherwise OpenObserve reports stream not found.
Layout
src/
index.ts entrypoint — stdio transport only
server.ts builds a wired McpServer (importable for tests)
config.ts environment → Config
client.ts OpenObserve HTTP API wrapper
time.ts ISO / relative range parsing → micros + seconds
tools/
index.ts registers every tool
helpers.ts JSON result shape, SQL quoting, shared schema
streams.ts list_streams, get_schema, get_org_summary
logs.ts search_logs, aggregate_logs
traces.ts search_traces, get_trace
metrics.ts query_metrics
scripts/
seed.mjs sample logs, traces, metrics
smoke.mjs stdio MCP client — exercises every tool
docker-compose.yml local OpenObserveAdding a tool means one file in src/tools/ plus a line in src/tools/index.ts.
Verified against
OpenObserve public.ecr.aws/zinclabs/openobserve:latest (v0.15.x), MCP SDK 1.25, Node 22.
Endpoint paths are version-sensitive. Two in particular differ from what the API docs suggest: stream schema is /api/{org}/streams/{stream}/schema (not /api/{org}/{stream}/schema), and there is no /traces/{trace_id} endpoint — get_trace searches the trace stream by id instead. If you upgrade OpenObserve, re-run npm run smoke.
Development
npm run watch # tsc --watch
npm run smoke # regression check against a live instance
node scripts/smoke.mjs list # inspect registered tools
node scripts/smoke.mjs get_schema '{"stream":"app_logs"}'scripts/smoke.mjs speaks the real MCP protocol over stdio, so it catches schema and transport regressions that a direct HTTP test would miss.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceAn MCP server that enables AI assistants to interact with Signoz observability platform, providing tools to query dashboards, metrics, traces, logs, and APM data with time range support.Last updated14MIT
- 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.Last updated816GPL 3.0
- AlicenseAqualityDmaintenanceMCP server that gives AI agents access to your application's OpenTelemetry traces for querying, analysis, and debugging.Last updated5182MIT
- Flicense-qualityFmaintenanceAn 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.Last updated5
Related MCP Connectors
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/devShahriar/OpenObserve-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server