什么是 Kibana?
提供动态 API 发现能力的 Kibana MCP Server,并与 Elastic Stack 进行全面集成。
README
Kibana MCP Server
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
# Global installation (recommended)
npm install -g @tocharianou/mcp-server-kibana
# Or use directly with npx
npx @tocharianou/mcp-server-kibana
From Source
git clone https://github.com/TocharianOU/mcp-server-kibana.git
cd mcp-server-kibana
npm 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
{
"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
# Using API Key (recommended)
KIBANA_URL=http://localhost:5601 \
KIBANA_API_KEY=your-api-key \
npx @tocharianou/mcp-server-kibana
# Using Basic Auth
KIBANA_URL=http://localhost:5601 \
KIBANA_USERNAME=your-username \
KIBANA_PASSWORD=your-password \
npx @tocharianou/mcp-server-kibana
# Using Cookie Auth
KIBANA_URL=http://localhost:5601 \
KIBANA_COOKIES="sid=xxx; security-session=yyy" \
npx @tocharianou/mcp-server-kibana
HTTP Mode (Remote Access)
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
localhostonly and rejects requests whoseHostheader is not a loopback name (DNS rebinding protection). - To accept remote clients, set
MCP_BEARER_TOKEN. Clients must then sendAuthorization: Bearer <token>on every/mcprequest./healthstays open. - Binding to a non-loopback address (
MCP_HTTP_HOST=0.0.0.0) withoutMCP_BEARER_TOKENlogs a warning at startup: anyone who can reach the port can use your Kibana credentials. - Behind a reverse proxy that forwards its public
Hostheader to a localhost-bound server, list that hostname inMCP_ALLOWED_HOSTS.
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
| Variable | Description | Example |
|---|---|---|
KIBANA_URL | Kibana server address | http://localhost:5601 |
Authentication (choose one method)
| Variable | Description | Priority |
|---|---|---|
KIBANA_API_KEY | API Key (base64 encoded) | 1st |
KIBANA_USERNAME + KIBANA_PASSWORD | Basic authentication | 2nd |
KIBANA_COOKIES | Session cookies | 3rd |
Optional Variables
| Variable | Description | Default |
|---|---|---|
KIBANA_DEFAULT_SPACE | Default Kibana space | default |
KIBANA_CA_CERT | CA certificate path | - |
KIBANA_TIMEOUT | Request timeout (ms) | 60000 |
MCP_TRANSPORT | Transport mode | stdio |
MCP_HTTP_PORT | HTTP server port | 3000 |
MCP_HTTP_HOST | HTTP server host | localhost |
MCP_BEARER_TOKEN | HTTP mode: require Authorization: Bearer <token> on /mcp | - |
MCP_ALLOWED_HOSTS | HTTP mode: extra hostnames accepted in the Host header (comma-separated) | - |
NODE_TLS_REJECT_UNAUTHORIZED | Disable SSL validation | 1 |
🛠️ Available Tools
Base Tools
get_status- Get Kibana server statusexecute_kb_api- Execute custom Kibana API requestssearch_elasticsearch- Search Elasticsearch documents and logs through Kibana's search API, within the user's Elasticsearch index privilegesget_available_spaces- List available Kibana spacessearch_kibana_api_paths- Search API endpointslist_all_kibana_api_paths- List all API endpointsget_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 objectvl_create_saved_object- Create new saved objectvl_update_saved_object- Update single saved objectvl_bulk_update_saved_objects- Bulk update operationsvl_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 dependenciesanalyze_deletion_impact- Check impact before deletioncheck_dashboard_health- Dashboard health checkscan_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:
{
"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 URI | Description |
|---|---|
kibana-api://paths | List 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/proxywhile searching Elasticsearch: Usesearch_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:
npm run inspector
This provides a browser-accessible debugging interface.
📦 Package Information
- NPM: @tocharianou/mcp-server-kibana
- GitHub: TocharianOU/mcp-server-kibana
- Node.js: >= 18.0.0
- License: Apache 2.0
🤝 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.
常见问题
Kibana 是什么?
提供动态 API 发现能力的 Kibana MCP Server,并与 Elastic Stack 进行全面集成。
相关 Skills
MCP构建
by anthropics
聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。
✎ 想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。
Slack动图
by anthropics
面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。
✎ 帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。
接口测试套件
by alirezarezvani
扫描 Next.js、Express、FastAPI、Django REST 的 API 路由,自动生成覆盖鉴权、参数校验、错误码、分页、上传与限流场景的 Vitest 或 Pytest 测试套件。
✎ 帮你把API与集成测试自动化跑顺,减少回归漏测;能力全面,尤其适合复杂接口场景的QA团队。
相关 MCP Server
Slack 消息
编辑精选by Anthropic
Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。
✎ 这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。
by netdata
io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。
✎ 这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。
by d4vinci
Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。
✎ 这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。
