A side-by-side look at the Openobserve Community MCP and Langfuse MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Openobserve Community MCP for monitoring work as a local process; choose Langfuse MCP for monitoring as a local process. You can also run both side by side in one mcpServers block.
OO_BASE_URL, OO_ORG_ID, OO_AUTH_MODE, OO_USERNAME, OO_PASSWORD, OO_TOKEN, OO_TIMEOUT_SECONDS, OO_VERIFY_SSL.list_streams, get_stream_schema, search_logs.LANGFUSE_PUBLIC_KEY.listTraces, getTrace, listObservations.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Monitoring | Monitoring |
| Quality signal | 56/100 · Good | 57/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | other | API key required |
| Pricing | Free | BYOK (pay the provider) |
| Required env vars | OO_BASE_URLOO_ORG_IDOO_AUTH_MODEOO_USERNAMEOO_PASSWORDOO_TOKENOO_TIMEOUT_SECONDSOO_VERIFY_SSL | LANGFUSE_PUBLIC_KEY |
| Verified owner | Community listing | Community listing |
| GitHub stars | 16 | 1 |
| Directory activity | 2 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 8 | 27 |
| Full listing | View Openobserve Community MCP | View Langfuse MCP |
list_streamsList streams available in the current organization.get_stream_schemaGet schema information for a specific stream. Use this first to confirm real field names before writing SQL; many log streams expose `message` rather than `log`. Increase fields_limit to inspect more fields from large schemas.search_logsRun a full SQL search against OpenObserve logs. Example row query: SELECT _timestamp, message FROM "my_stream" ORDER BY _timestamp DESC LIMIT 20. Example aggregate query: SELECT level, count(*) AS cnt FROM "my_stream" GROUP BY level ORDER BY cnt DESC LIMIT 20. Prefer double quotes around stream names in SQL when in doubt, and confirm actual field names with get_stream_schema instead of assuming a `log` column. start_time and end_time accept Unix timestamps in seconds, milliseconds, microseconds, or nanoseconds and are normalized to microseconds. The limit parameter sets the API page size; if your OpenObserve/DataFusion setup still complains about ORDER BY without a SQL LIMIT, add an explicit LIMIT to the SQL as well. output_format can be 'records' or 'columns'; 'columns' is especially useful for wide SELECT * queries and can save roughly 35-40% tokens. record_profile can be 'generic' or 'kubernetes_compact'; the Kubernetes compact profile trims common noisy metadata fields such as pod labels and pod IP metadata.search_aroundFetch records around a specific log entry. key accepts Unix timestamps in seconds, milliseconds, microseconds, or nanoseconds for convenience, but the best input is the exact `_timestamp` returned by search_logs; otherwise OpenObserve may return no nearby rows. output_format can be 'records' or 'columns' for a more token-efficient table shape. record_profile can be 'generic' or 'kubernetes_compact'.search_valuesGet distinct field values for a stream over a time range. stream_name is the raw stream name path segment, for example my_stream; do not quote it like SQL. fields is a comma-separated field list. filter_query uses OpenObserve's _values filter syntax, e.g. kubernetes_pod_namespace=litellm. Simple SQL-like equality such as kubernetes_pod_namespace='litellm' is normalized automatically. start_time and end_time accept Unix timestamps in seconds, milliseconds, microseconds, or nanoseconds and are normalized to microseconds. In this tool, total means the number of field groups returned, not the total number of matching log records.list_dashboardsList dashboards in the current organization.get_dashboardGet a dashboard definition by id.get_latest_tracesGet the latest trace data from a trace stream. start_time and end_time accept Unix timestamps in seconds, milliseconds, microseconds, or nanoseconds and are normalized to microseconds.listTracesList traces with filters. Returns summary metadata.getTraceFetch a single trace by id including the full observation tree.listObservationsList spans, generations, and events with filters.getObservationFetch a single observation by id.listSessionsList sessions within a time range.getSessionFetch a session by id, including its traces.listScoresList scores with filters.getScoreFetch a single score by id.listScoreConfigsList score configurations (definitions, ranges, categories).getScoreConfigFetch a score configuration by id.listPromptsList prompt definitions, optionally filtered by name, label, or tag.getPromptFetch a prompt by name, optionally pinned to a specific version or label.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"alilxxey-openobserve-community-mcp": {
"command": "uvx",
"args": [
"--from",
"openobserve-community-mcp",
"openobserve-mcp"
],
"env": {
"OO_BASE_URL": "YOUR_OO_BASE_URL_HERE",
"OO_ORG_ID": "YOUR_OO_ORG_ID_HERE",
"OO_AUTH_MODE": "YOUR_OO_AUTH_MODE_HERE",
"OO_USERNAME": "YOUR_OO_USERNAME_HERE",
"OO_PASSWORD": "YOUR_OO_PASSWORD_HERE",
"OO_TOKEN": "YOUR_OO_TOKEN_HERE",
"OO_TIMEOUT_SECONDS": "YOUR_OO_TIMEOUT_SECONDS_HERE",
"OO_VERIFY_SSL": "YOUR_OO_VERIFY_SSL_HERE"
}
}
}
}
{
"mcpServers": {
"hugoles-langfuse-mcp": {
"command": "npx",
"args": [
"-y",
"langfuse-mcp"
],
"env": {
"LANGFUSE_PUBLIC_KEY": "YOUR_LANGFUSE_PUBLIC_KEY_HERE"
}
}
}
}