io.github.mshegolev/kibana-mcp

السجل الرسمي البحث والويب

Kibana/Elasticsearch MCP — log search, aggregations, index discovery, dashboards.

التثبيت

أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: ‏.cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).

PYPI package kibana-mcp
Claude Code
claude mcp add kibana-mcp -e 'KIBANA_URL=<KIBANA_URL>' -e 'ELASTICSEARCH_URL=<ELASTICSEARCH_URL>' -e 'KIBANA_API_KEY=<your kibana_api_key>' -e 'KIBANA_USERNAME=<KIBANA_USERNAME>' -e 'KIBANA_PASSWORD=<your kibana_password>' -e 'KIBANA_SSL_VERIFY=true' -- uvx kibana-mcp==0.1.1
إعداد JSON (Claude Desktop وCursor وVS Code)
{
    "mcpServers": {
        "kibana-mcp": {
            "command": "uvx",
            "args": [
                "kibana-mcp==0.1.1"
            ],
            "env": {
                "KIBANA_URL": "<KIBANA_URL>",
                "ELASTICSEARCH_URL": "<ELASTICSEARCH_URL>",
                "KIBANA_API_KEY": "<your kibana_api_key>",
                "KIBANA_USERNAME": "<KIBANA_USERNAME>",
                "KIBANA_PASSWORD": "<your kibana_password>",
                "KIBANA_SSL_VERIFY": "true"
            }
        }
    }
}

متغيرات البيئة

  • KIBANA_URL إلزامي Kibana base URL (e.g. https://kibana.example.com)
  • ELASTICSEARCH_URL Direct 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_USERNAME HTTP Basic auth username. Used only when KIBANA_API_KEY is not set.
  • KIBANA_PASSWORD سري HTTP Basic auth password.
  • KIBANA_SSL_VERIFY Verify SSL certificates (true/false). Set to 'false' for self-signed certs.

التوثيق

مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.

المحتويات
  1. kibana-mcp
  2. Why another Kibana MCP?
  3. Tools
  4. Installation
  5. Configuration
  6. Usage Examples
  7. Performance Characteristics
  8. Development
  9. License

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 client
  • Is read-only — all tools carry readOnlyHint: true, no data is modified

Tools

ToolAPIDescription
kibana_list_indicesGET ES/_cat/indicesDiscover available indices with health, docs, size
kibana_search_logsPOST ES/{index}/_searchFull-text log search with time range, sort, size
kibana_aggregate_logsPOST ES/{index}/_searchTerms grouping with count/avg/sum/min/max metric
kibana_list_dashboardsGET Kibana/api/saved_objects/_findList saved dashboards with search + pagination
kibana_get_dashboardGET Kibana/api/saved_objects/dashboard/{id}Fetch one dashboard with panel breakdown

Installation

pip install kibana-mcp

Or run directly with uvx:

uvx kibana-mcp

Configuration

Environment Variables
VariableRequiredDescription
KIBANA_URLYesKibana base URL (e.g. https://kibana.example.com)
ELASTICSEARCH_URLNoDirect ES endpoint. If unset, ES requests go through Kibana Console proxy
KIBANA_API_KEYNoES API key (ApiKey base64(id:api_key) format). Recommended for agents
KIBANA_USERNAMENoHTTP Basic auth username (used if API key not set)
KIBANA_PASSWORDNoHTTP Basic auth password
KIBANA_SSL_VERIFYNotrue (default) or false for self-signed certificates

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-mcp

Usage Examples

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 proxy
  • Aggregations (kibana_aggregate_logs): size:0 queries — no hits transferred, usually 10-100ms
  • Index listing: single _cat/indices call, O(index_count) response, typically <100ms
  • Dashboard APIs: Kibana Saved Objects API, typically 50-200ms; latency is Kibana-side, not network
  • Set ELASTICSEARCH_URL directly 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 tests

License

MIT — see LICENSE.

الأسئلة الشائعة

ما هو io.github.mshegolev/kibana-mcp؟

Kibana/Elasticsearch MCP — log search, aggregations, index discovery, dashboards.

كيف أثبّت io.github.mshegolev/kibana-mcp؟

يعمل على جهازك. في Claude Code: claude mcp add kibana-mcp -e 'KIBANA_URL=<KIBANA_URL>' -e 'ELASTICSEARCH_URL=<ELASTICSEARCH_URL>' -e 'KIBANA_API_KEY=<your kibana_api_key>' -e 'KIBANA_USERNAME=<KIBANA_USERNAME>' -e 'KIBANA_PASSWORD=<your kibana_password>' -e 'KIBANA_SSL_VERIFY=true' -- uvx kibana-mcp==0.1.1. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.

هل يحتاج io.github.mshegolev/kibana-mcp إلى مفتاح API؟

نعم. يتطلب KIBANA_URL, KIBANA_API_KEY, KIBANA_PASSWORD، وتضبطها في إعداداته.

هل io.github.mshegolev/kibana-mcp مفتوح المصدر؟

نعم. شيفرته متاحة على GitHub بترخيص MIT.

من يصون io.github.mshegolev/kibana-mcp؟

ينشره mshegolev. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.

من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.