mshegolev/kibana-mcp
kibana-mcp
用于 Kibana / Elasticsearch 的 MCP 服务器 — 通过 Claude 和任何兼容 MCP 的代理进行日志搜索、聚合、索引发现和仪表板浏览。
为什么需要另一个 Kibana MCP?
现有的集成通常需要一个运行中的 Kibana 实例,并使用浏览器级别的凭据,且往往是封装 Kibana UI 而非稳定的 REST API。本服务器:
直接访问 Elasticsearch REST API 进行日志查询(速度更快,在 Kibana UI 变更时依然稳定)
在未配置直接 ES URL 时,回退至 Kibana 控制台代理(无需额外的防火墙规则)
支持 ApiKey 认证(最适合代理)以及基本认证和匿名访问
同时返回 结构化 JSON (
outputSchema) 和 Markdown 文本,因此适用于任何 MCP 客户端是 只读的 — 所有工具均带有
readOnlyHint: true,不会修改任何数据
工具
工具 | API | 描述 |
|
| 发现可用索引及其健康状态、文档数、大小 |
|
| 全文日志搜索,支持时间范围、排序、大小限制 |
|
| 基于术语的分组,支持计数/平均值/总和/最小值/最大值指标 |
|
| 列出已保存的仪表板,支持搜索和分页 |
|
| 获取单个仪表板及其面板详情 |
安装
pip install kibana-mcp或者直接使用 uvx 运行:
uvx kibana-mcp配置
环境变量
变量 | 必需 | 描述 |
| 是 | Kibana 基础 URL (例如 |
| 否 | 直接 ES 端点。如果未设置,ES 请求将通过 Kibana 控制台代理 |
| 否 | ES API 密钥 ( |
| 否 | HTTP 基本认证用户名(如果未设置 API 密钥则使用) |
| 否 | HTTP 基本认证密码 |
| 否 |
|
认证优先级:ApiKey > 基本认证 > 匿名。
将 .env.example 复制为 .env 并填入您的值。
MCP 客户端配置 (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"
}
}
}
}或者使用直接 ES 访问以获得更好的性能:
{
"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-mcp使用示例
日志搜索
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)
聚合
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")
索引发现
What log indices are available?→ kibana_list_indices()
Show me all filebeat indices→ kibana_list_indices(pattern="filebeat-*")
仪表板
Find the infrastructure dashboard→ kibana_list_dashboards(search="infrastructure")
What panels does dashboard X have?→ kibana_get_dashboard(dashboard_id="<id from list_dashboards>")
性能特征
日志搜索 (
kibana_search_logs):使用直接 ES URL 时通常为 50-500ms;通过 Kibana 控制台代理路由时增加 100-200ms聚合 (
kibana_aggregate_logs):size:0查询 — 无需传输命中结果,通常为 10-100ms索引列表:单次
_cat/indices调用,响应时间为 O(index_count),通常 <100ms仪表板 API:Kibana Saved Objects API,通常为 50-200ms;延迟主要在 Kibana 端,而非网络
如果您的代理需要频繁进行日志搜索,请直接设置
ELASTICSEARCH_URL— 可消除代理开销
开发
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 tests许可证
MIT — 参见 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