kibana-mcp について
Claude などの MCP 対応エージェントから Kibana と Elasticsearch を照会する、読み取り専用の MCP サーバーです。設定時は Elasticsearch REST API を直接使い、未設定の場合は Kibana Console プロキシにフォールバックし、JSON と Markdown を返します。
主な機能
- 01時間や並び順を指定したログ検索
- 02フィールドや指標によるログ集計
- 03インデックスと詳細の確認
- 04ダッシュボードの一覧と取得
- 05API キー、Basic、匿名認証に対応
- 06JSON と Markdown で結果を返却
活用シーン
- 01インシデント中のエラー調査
- 02サービス別のログ件数や指標の比較
- 03関連イベントを含むインデックスの特定
- 04ダッシュボードのパネル確認
MCP 対応
MCP クライアント向けに、インデックス検索、ログ検索、集計、ダッシュボード閲覧の読み取り専用ツールを提供します。Elasticsearch リクエストには設定済みの直接接続先を使い、未設定時は Kibana Console プロキシにフォールバックします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx kibana-mcpKIBANA_URLKibana base URL (e.g. https://kibana.example.com)ELASTICSEARCH_URLDirect Elasticsearch URL. If unset, ES requests route through the Kibana Console proxy.KIBANA_API_KEYシークレットElasticsearch API key (ApiKey base64(id:api_key) format). Takes priority over Basic auth.KIBANA_USERNAMEHTTP Basic auth username. Used only when KIBANA_API_KEY is not set.KIBANA_PASSWORDシークレットHTTP Basic auth password.KIBANA_SSL_VERIFYVerify SSL certificates (true/false). Set to 'false' for self-signed certs.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
kibana-mcp
Kibana / Elasticsearch 用の MCP サーバーです。Claude や MCP 対応の任意のエージェントから、ログ検索、集計、インデックスの検出、ダッシュボードの閲覧ができます。
なぜ別の Kibana MCP が必要なのですか?
既存の統合では、ブラウザーレベルの認証情報を使って Kibana インスタンスを起動しておく必要があり、多くの場合、安定した REST API ではなく Kibana UI をラップしています。このサーバーには次の特長があります。
- ログクエリには Elasticsearch REST API に直接アクセスします(高速で、Kibana UI の変更に左右されません)
- Elasticsearch の URL が直接設定されていない場合は、Kibana Console プロキシにフォールバックします(追加のファイアウォールルールは不要です)
- ApiKey 認証(エージェントに最適)に加えて、Basic 認証と匿名アクセスに対応しています
- 構造化 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} | パネルの内訳とともに1つのダッシュボードを取得します |
インストール
pip install kibana-mcp
または、uvx を使って直接実行します。
uvx kibana-mcp
設定
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
KIBANA_URL | はい | Kibana のベース URL(例:https://kibana.example.com) |
ELASTICSEARCH_URL | いいえ | Elasticsearch の直接接続先。未設定の場合、Elasticsearch へのリクエストは Kibana Console プロキシ経由で送信されます |
KIBANA_API_KEY | いいえ | Elasticsearch の API キー(ApiKey base64(id:api_key) 形式)。エージェントでの使用を推奨します |
KIBANA_USERNAME | いいえ | HTTP Basic 認証のユーザー名(API キーが未設定の場合に使用) |
KIBANA_PASSWORD | いいえ | HTTP Basic 認証のパスワード |
KIBANA_SSL_VERIFY | いいえ | true(デフォルト)または、自己署名証明書の場合は false |
認証の優先順位: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"
}
}
}
}
パフォーマンスを高めるために Elasticsearch に直接アクセスする場合:
{
"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 を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。