mshegolev/kibana-mcp
Provides direct Elasticsearch access for log queries, aggregations, and index discovery, with optional Kibana Console proxy fallback.
Allows searching logs, performing aggregations, discovering indices, and browsing dashboards in Kibana/Elasticsearch via REST API.
kibana-mcp
MCP server for Kibana / Elasticsearch — log search, aggregations, index discovery, and dashboard browsing via Claude and any MCP-compatible agent.
Why another Kibana MCP?
Existing integrations require a running Kibana instance with browser-level credentials and often wrap the Kibana UI rather than the stable REST APIs. This server:
Hits Elasticsearch REST API directly for log queries (faster, stable across Kibana UI changes)
Falls back to the Kibana Console proxy when no direct ES URL is configured (zero extra firewall rules)
Supports ApiKey auth (best for agents) as well as Basic auth and anonymous access
Returns both structured JSON (
outputSchema) and markdown text so it works with any MCP clientIs read-only — all tools carry
readOnlyHint: true, no data is modified
Tools
Tool | API | Description |
|
| Discover available indices with health, docs, size |
|
| Full-text log search with time range, sort, size |
|
| Terms grouping with count/avg/sum/min/max metric |
|
| List saved dashboards with search + pagination |
|
| Fetch one dashboard with panel breakdown |
Installation
pip install kibana-mcpOr run directly with uvx:
uvx kibana-mcpConfiguration
Environment Variables
Variable | Required | Description |
| Yes | Kibana base URL (e.g. |
| No | Direct ES endpoint. If unset, ES requests go through Kibana Console proxy |
| No | ES API key ( |
| No | HTTP Basic auth username (used if API key not set) |
| No | HTTP Basic auth password |
| No |
|
Auth priority: ApiKey > Basic > anonymous.
Copy .env.example to .env and fill in your values.
MCP Client Configuration (Claude Desktop / claude.app)
{
"mcpServers": {
"kibana": {
"command": "uvx",
"args": ["kibana-mcp"],
"env": {
"KIBANA_URL": "https://kibana.example.com",
"KIBANA_API_KEY": "your-api-key-here"
}
}
}
}Or with direct ES access for better performance:
{
"mcpServers": {
"kibana": {
"command": "uvx",
"args": ["kibana-mcp"],
"env": {
"KIBANA_URL": "https://kibana.example.com",
"ELASTICSEARCH_URL": "https://es.example.com:9200",
"KIBANA_API_KEY": "your-api-key-here"
}
}
}
}Docker
docker run --rm -i \
-e KIBANA_URL=https://kibana.example.com \
-e KIBANA_API_KEY=your-key \
ghcr.io/mshegolev/kibana-mcpUsage Examples
Log Search
Find the last 50 ERROR logs from the API service in the last hour→ kibana_search_logs(index="logs-*", query="level:ERROR AND service:api", size=50, time_from="2026-04-18T09:00:00Z")
Show 500 HTTP errors sorted oldest first for incident replay→ kibana_search_logs(index="nginx-*", query="status:500", sort_order="asc", size=100)
Aggregations
How many logs per log level in the last hour?→ kibana_aggregate_logs(index="logs-*", group_by="level", time_from="2026-04-18T09:00:00Z")
What is the average response time per service?→ kibana_aggregate_logs(index="logs-*", group_by="service.keyword", metric="avg", metric_field="response_time_ms")
Index Discovery
What log indices are available?→ kibana_list_indices()
Show me all filebeat indices→ kibana_list_indices(pattern="filebeat-*")
Dashboards
Find the infrastructure dashboard→ kibana_list_dashboards(search="infrastructure")
What panels does dashboard X have?→ kibana_get_dashboard(dashboard_id="<id from list_dashboards>")
Performance Characteristics
Log search (
kibana_search_logs): typically 50-500ms with direct ES URL; add 100-200ms when routing through Kibana Console proxyAggregations (
kibana_aggregate_logs):size:0queries — no hits transferred, usually 10-100msIndex listing: single
_cat/indicescall, O(index_count) response, typically <100msDashboard APIs: Kibana Saved Objects API, typically 50-200ms; latency is Kibana-side, not network
Set
ELASTICSEARCH_URLdirectly if your agent does frequent log searches — eliminates the proxy overhead
Development
git clone https://github.com/mshegolev/kibana-mcp
cd kibana-mcp
pip install -e '.[dev]'
pytest tests/ -v
ruff check src tests
ruff format src testsLicense
MIT — see LICENSE.
Maintenance
Latest Blog Posts
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/mshegolev/kibana-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server