Skip to main content
Glama
mshegolev

mshegolev/kibana-mcp

kibana-mcp

PyPI version Python 3.10+ License: MIT Tests

用于 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

描述

kibana_list_indices

GET ES/_cat/indices

发现可用索引及其健康状态、文档数、大小

kibana_search_logs

POST ES/{index}/_search

全文日志搜索,支持时间范围、排序、大小限制

kibana_aggregate_logs

POST ES/{index}/_search

基于术语的分组,支持计数/平均值/总和/最小值/最大值指标

kibana_list_dashboards

GET Kibana/api/saved_objects/_find

列出已保存的仪表板,支持搜索和分页

kibana_get_dashboard

GET Kibana/api/saved_objects/dashboard/{id}

获取单个仪表板及其面板详情

安装

pip install kibana-mcp

或者直接使用 uvx 运行:

uvx kibana-mcp

配置

环境变量

变量

必需

描述

KIBANA_URL

Kibana 基础 URL (例如 https://kibana.example.com)

ELASTICSEARCH_URL

直接 ES 端点。如果未设置,ES 请求将通过 Kibana 控制台代理

KIBANA_API_KEY

ES API 密钥 (ApiKey base64(id:api_key) 格式)。推荐用于代理

KIBANA_USERNAME

HTTP 基本认证用户名(如果未设置 API 密钥则使用)

KIBANA_PASSWORD

HTTP 基本认证密码

KIBANA_SSL_VERIFY

true (默认) 或 false(用于自签名证书)

认证优先级: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

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)

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