mshegolev/kibana-mcp
kibana-mcp
Claude および MCP 互換エージェントを介して Kibana / Elasticsearch のログ検索、集計、インデックス探索、ダッシュボード閲覧を行うための MCP サーバーです。
なぜ別の Kibana MCP なのか?
既存の統合機能では、ブラウザレベルの認証情報を持つ実行中の Kibana インスタンスが必要であり、多くの場合、安定した REST API ではなく Kibana UI をラップしています。このサーバーの特徴は以下の通りです:
ログクエリのために Elasticsearch REST API を直接呼び出す(高速で、Kibana UI の変更に左右されず安定している)
直接の ES URL が設定されていない場合は Kibana Console プロキシ にフォールバックする(追加のファイアウォールルールが不要)
ApiKey 認証(エージェントに最適)、Basic 認証、匿名アクセスをサポート
構造化 JSON (
outputSchema) と Markdown テキスト の両方を返すため、あらゆる MCP クライアントで動作する読み取り専用 — すべてのツールに
readOnlyHint: trueが設定されており、データは一切変更されない
ツール
ツール | API | 説明 |
|
| ヘルス、ドキュメント数、サイズを含む利用可能なインデックスを探索 |
|
| 時間範囲、ソート、サイズ指定による全文ログ検索 |
|
| カウント/平均/合計/最小/最大メトリクスによる項目のグループ化 |
|
| 検索とページネーションを備えた保存済みダッシュボードの一覧表示 |
|
| パネルの内訳を含むダッシュボードの取得 |
インストール
pip install kibana-mcpまたは uvx を使用して直接実行します:
uvx kibana-mcp設定
環境変数
変数 | 必須 | 説明 |
| はい | Kibana ベース URL (例: |
| いいえ | 直接の ES エンドポイント。未設定の場合、ES リクエストは Kibana Console プロキシを経由する |
| いいえ | ES API キー ( |
| いいえ | HTTP Basic 認証ユーザー名 (API キーが設定されていない場合に使用) |
| いいえ | HTTP Basic 認証パスワード |
| いいえ |
|
認証の優先順位: ApiKey > Basic > 匿名。
.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 Console プロキシ経由の場合は 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