Kibana

io.github.TocharianOU由 GitHub 账号 TocharianOU 发布v0.11.1更新于 Oct 24, 2026

Kibana MCP Server with dynamic API discovery and comprehensive Elastic Stack integration

已验证STDIO仅桌面安全与监控数据与分析

概览

AI 生成的概览

社区维护的 Kibana MCP 服务器,让助手查询 Kibana 状态、搜索 Elasticsearch 日志,并管理仪表板、可视化等已保存对象

可以做什么
检查 Kibana 服务器状态、列出可用空间,并浏览和搜索 Kibana API 端点目录,查看端点详情或执行自定义 API 请求。通过 Kibana 的搜索路由,用受限的 Query DSL 搜索 Elasticsearch 文档、日志和聚合结果。搜索、读取、创建、更新已保存对象,并支持批量更新和批量删除仪表板、可视化、索引模式、Lens、地图、标签等。分析已保存对象的依赖关系、评估删除影响,并对单个或全部仪表板做健康检查。
适用场景
适合让助手对接已有的 Kibana 实例:排查日志与追踪、查找或修改仪表板和可视化,或在改动前检查仪表板健康状况与依赖关系。
运行要求
以 npm 包形式在本地运行(需 Node.js 18 或更高版本),通过 stdio 通信;也可用 MCP_TRANSPORT 和 MCP_HTTP_PORT 启用 HTTP 模式。需要 KIBANA_URL,并选择一种认证方式:KIBANA_API_KEY、KIBANA_USERNAME 加 KIBANA_PASSWORD,或会话 Cookie。需要能访问该 Kibana 实例的网络。
安装前请注意
服务器以其启动时配置的 Kibana 凭据行事,权限即该账号的权限。已保存对象工具可创建、更新和批量删除对象。HTTP 模式会暴露这些凭据:在绑定到非本机地址前应设置 MCP_BEARER_TOKEN,否则任何能访问该端口的人都能使用它们。Elasticsearch 搜索工具允许缺少 Dev Tools 权限的账号执行 Query DSL 查询,而管理员可能正依赖该权限限制临时查询。关闭 TLS 校验有风险。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Kibana,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[MseeP.ai Security Assessment Badge]

Kibana MCP Server

[npm version] [Downloads] [Ask DeepWiki]

A Kibana MCP server implementation that allows any MCP-compatible client (such as Claude Desktop) to access your Kibana instance via natural language or programmatic requests.

This project is based on the official Elastic Kibana API documentation and uses the OpenAPI YAML specification from Elastic Stack 8.x. For details, see the Kibana API documentation.

This project is community-maintained and is not an official product of Elastic or MCP.

💡 Companion Project: For complete Elastic Stack integration, pair this with Elasticsearch MCP Server for direct Elasticsearch data operations.


🚀 Installation

bash
# Global installation (recommended)npm install -g @tocharianou/mcp-server-kibana
# Or use directly with npxnpx @tocharianou/mcp-server-kibana

From Source

bash
git clone https://github.com/TocharianOU/mcp-server-kibana.gitcd mcp-server-kibananpm install && npm run build

🎯 Quick Start

Claude Desktop Integration (Recommended)

Add to your Claude Desktop configuration file:

  • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
json
{  "mcpServers": {    "kibana": {      "command": "npx",      "args": ["@tocharianou/mcp-server-kibana"],      "env": {        "KIBANA_URL": "http://your-kibana-server:5601",        "KIBANA_API_KEY": "your-api-key",        "KIBANA_DEFAULT_SPACE": "default"      }    }  }}

Direct CLI Usage

bash
# Using API Key (recommended)KIBANA_URL=http://localhost:5601 \KIBANA_API_KEY=your-api-key \npx @tocharianou/mcp-server-kibana
# Using Basic AuthKIBANA_URL=http://localhost:5601 \KIBANA_USERNAME=your-username \KIBANA_PASSWORD=your-password \npx @tocharianou/mcp-server-kibana
# Using Cookie AuthKIBANA_URL=http://localhost:5601 \KIBANA_COOKIES="sid=xxx; security-session=yyy" \npx @tocharianou/mcp-server-kibana

HTTP Mode (Remote Access)

bash
MCP_TRANSPORT=http \MCP_HTTP_PORT=3000 \KIBANA_URL=http://localhost:5601 \KIBANA_API_KEY=your-api-key \npx @tocharianou/mcp-server-kibana

Access at: http://localhost:3000/mcp
Health check: http://localhost:3000/health

Securing HTTP mode. Every session on /mcp acts with the Kibana credentials the server was started with, so treat the endpoint as sensitive:

  • By default the server listens on localhost only and rejects requests whose Host header is not a loopback name (DNS rebinding protection).
  • To accept remote clients, set MCP_BEARER_TOKEN. Clients must then send Authorization: Bearer <token> on every /mcp request. /health stays open.
  • Binding to a non-loopback address (MCP_HTTP_HOST=0.0.0.0) without MCP_BEARER_TOKEN logs a warning at startup: anyone who can reach the port can use your Kibana credentials.
  • Behind a reverse proxy that forwards its public Host header to a localhost-bound server, list that hostname in MCP_ALLOWED_HOSTS.
bash
MCP_TRANSPORT=http \MCP_HTTP_HOST=0.0.0.0 \MCP_BEARER_TOKEN="$(openssl rand -hex 32)" \KIBANA_URL=http://localhost:5601 \KIBANA_API_KEY=your-api-key \npx @tocharianou/mcp-server-kibana

✨ Features

Core Capabilities

  • Dual transport modes: Stdio (local) and HTTP (remote access)
  • Multiple authentication methods: API Key, Basic Auth, Cookie-based
  • Multi-space support: Enterprise-ready Kibana space management
  • SSL/TLS support: Custom CA certificate configuration
  • Session management: Automatic UUID generation for HTTP mode
  • Dynamic API discovery: Based on official Kibana OpenAPI specification

Saved Objects Management

  • Complete CRUD operations for all Kibana saved object types
  • Intelligent search with pagination support
  • Bulk operations for efficient mass updates
  • Version control with optimistic concurrency
  • Reference management for object relationships

🔧 Configuration

Required Variables

VariableDescriptionExample
KIBANA_URLKibana server addresshttp://localhost:5601

Authentication (choose one method)

VariableDescriptionPriority
KIBANA_API_KEYAPI Key (base64 encoded)1st
KIBANA_USERNAME + KIBANA_PASSWORDBasic authentication2nd
KIBANA_COOKIESSession cookies3rd

Optional Variables

VariableDescriptionDefault
KIBANA_DEFAULT_SPACEDefault Kibana spacedefault
KIBANA_CA_CERTCA certificate path-
KIBANA_TIMEOUTRequest timeout (ms)60000
MCP_TRANSPORTTransport modestdio
MCP_HTTP_PORTHTTP server port3000
MCP_HTTP_HOSTHTTP server hostlocalhost
MCP_BEARER_TOKENHTTP mode: require Authorization: Bearer <token> on /mcp-
MCP_ALLOWED_HOSTSHTTP mode: extra hostnames accepted in the Host header (comma-separated)-
NODE_TLS_REJECT_UNAUTHORIZEDDisable SSL validation1

🛠️ Available Tools

Base Tools

  • get_status - Get Kibana server status
  • execute_kb_api - Execute custom Kibana API requests
  • search_elasticsearch - Search Elasticsearch documents and logs through Kibana's search API, within the user's Elasticsearch index privileges
  • get_available_spaces - List available Kibana spaces
  • search_kibana_api_paths - Search API endpoints
  • list_all_kibana_api_paths - List all API endpoints
  • get_kibana_api_detail - Get API endpoint details

Saved Objects Tools

  • vl_search_saved_objects - Search saved objects (universal)
  • vl_get_saved_object - Get single saved object
  • vl_create_saved_object - Create new saved object
  • vl_update_saved_object - Update single saved object
  • vl_bulk_update_saved_objects - Bulk update operations
  • vl_bulk_delete_saved_objects - Bulk delete operations

Supported Object Types: dashboard, visualization, index-pattern, search, config, lens, map, tag, canvas-workpad, canvas-element

Analysis Tools (v0.6.0+)

  • analyze_object_dependencies - Analyze saved object dependencies
  • analyze_deletion_impact - Check impact before deletion
  • check_dashboard_health - Dashboard health check
  • scan_all_dashboards_health - Batch health scanning

Elasticsearch Data Search

Use search_elasticsearch when you need to search documents, application logs, traces, or aggregations in Elasticsearch. It sends Query DSL through Kibana's /internal/search/es route instead of the Dev Tools Console proxy.

The tool is read-only and does not widen data access: Elasticsearch enforces the configured user's index privileges on every search, exactly as it does for Discover and dashboards. Indices the user cannot read return no results.

It exists because the Dev Tools Console proxy (/api/console/proxy) is gated by a separate Kibana privilege, since the Console can call any Elasticsearch API including write and admin endpoints. A user who can read the target indices but has no Dev Tools privilege gets 403 from the Console proxy; this tool gives that user search, and nothing more. If your Kibana administrators rely on withholding Dev Tools to block ad-hoc queries from an account, be aware that this tool allows Query DSL searches for it.

Example tool arguments for a bounded log search:

json
{  "index": "application-logs-*",  "body": {    "size": 20,    "_source": [      "@timestamp",      "message",      "trace.id",      "service.name"    ],    "sort": [      { "@timestamp": "desc" }    ],    "query": {      "bool": {        "filter": [          {            "range": {              "@timestamp": {                "gte": "2025-01-15T10:00:00Z",                "lt": "2025-01-15T11:00:00Z"              }            }          },          {            "term": {              "service.name.keyword": "example-service"            }          }        ]      }    }  }}

For high-volume logs, start with a small time window and a small size. After finding a trace or correlation id, use that value in a second narrow search instead of repeatedly scanning a broad time range. Use _source to keep only fields needed for the current investigation.

The tool rejects wildcard-only index segments such as *, **, or _all (including inside comma-separated index expressions), an empty search body, and body.size above 100. String size values are coerced and validated as numbers. The endpoint is an internal Kibana API, so compatibility should be verified after major Kibana upgrades.


📖 Resources

Resource URIDescription
kibana-api://pathsList all available API endpoints
kibana-api://paths?search=<keyword>Search endpoints by keyword
kibana-api://path/{method}/{encoded_path}Get specific endpoint details

💬 Example Queries

Basic Operations

  • "What is the status of my Kibana server?"
  • "List all available Kibana spaces"
  • "Show me all API endpoints related to dashboards"

Elasticsearch & Logs

  • "Search the production logs for errors from service X in the last hour"
  • "Find this trace id and show the surrounding log events in chronological order"
  • "Search index application-logs-* using this Elasticsearch Query DSL"
  • "Aggregate error counts by service for this time range"

Saved Objects

  • "Search for all dashboards"
  • "Find visualizations containing 'nginx' in the title"
  • "Create a new dashboard named 'Sales Overview'"
  • "Update the description of dashboard 'my-dashboard-123'"
  • "Delete multiple dashboards by their IDs"

Health & Analysis

  • "Check health of dashboard 'overview'"
  • "Analyze dependencies for visualization 'viz-123'"
  • "Scan all dashboards for health issues"

🐛 Troubleshooting

Connection Issues

  • Verify Kibana URL is accessible
  • Check authentication credentials
  • For SSL issues: NODE_TLS_REJECT_UNAUTHORIZED=0 (use with caution)

Claude Desktop Issues

  • Restart Claude Desktop after config changes
  • Validate JSON config syntax
  • Check console logs for errors

Common Errors

  • "import: command not found": Update to latest version
  • Authentication failed: Verify credentials and permissions
  • SSL errors: Check CA certificate or disable SSL validation
  • 403 from /api/console/proxy while searching Elasticsearch: Use search_elasticsearch. The Console proxy can require the Kibana Dev Tools privilege even when the user has permission to read the target indices.

🔍 Debugging

Use MCP Inspector for debugging:

bash
npm run inspector

This provides a browser-accessible debugging interface.


📦 Package Information


🤝 Contributing

This project is community-maintained. Contributions and feedback are welcome!

Please follow the Elastic Community Code of Conduct in all communications.


📄 License

Apache License 2.0 - See LICENSE file for details.

来源:README.md,提交 1fe0eb9

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

3
  1. v0.11.1最新Oct 11, 2026
  2. v0.11.0Oct 11, 2026
  3. v0.10.2Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分