🚀 Kibana MCP Server
本项目基于官方 Elastic Kibana API 文档,利用 Elastic Stack 8.x (ES8) 的 OpenAPI YAML 规范动态检索和管理所有 Kibana API 端点。最新详情请参阅 Kibana API 文档。
这是一个 Kibana MCP 服务器的实现,它允许任何兼容 MCP 的客户端(如 Claude Desktop)通过自然语言或编程请求访问你的 Kibana 实例。
本项目由社区维护,并非 Elastic 或 MCP 的官方产品。
✨ 主要特性
- 连接本地或远程 Kibana 实例
- 安全认证(用户名/密码)
- 支持 SSL/TLS 和自定义 CA 证书
- 将 Kibana API 端点作为工具和资源公开
- 从 MCP 客户端搜索、查看和执行 Kibana API
- 类型安全、可扩展且易于集成
📁 目录结构
├── index.ts # 服务器入口点
├── src/
│ ├── types.ts # 类型定义和模式
│ ├── base-tools.ts # 工具注册和 API 逻辑
│ ├── prompts.ts # 提示注册(专家和资源助手)
│ └── resources.ts # 资源注册(API 路径/URI)
├── kibana-openapi-source.yaml # Kibana API OpenAPI 索引
├── README.md # 英文文档
├── README_zh.md # 中文文档
📜 资源
资源 URI |
描述 |
kibana-api://paths |
返回所有可用的 Kibana API 端点(可使用 search 参数过滤) |
kibana-api://path/{method}/{encoded_path} |
返回特定 API 端点的详细信息 |
示例:
kibana-api://paths?search=saved_objects
kibana-api://path/GET/%2Fapi%2Fstatus
🛠️ 工具
工具名称 |
描述 |
输入参数 |
get_status |
获取 Kibana 服务器的当前状态 |
无 |
execute_api |
执行自定义 Kibana API 请求 |
method (GET/POST/PUT/DELETE)、path (字符串)、body (可选)、params (可选) |
search_kibana_api_paths |
按关键字搜索 Kibana API 端点 |
search (字符串) |
list_all_kibana_api_paths |
列出所有 Kibana API 端点 |
无 |
get_kibana_api_detail |
获取特定 Kibana API 端点的详细信息 |
method (字符串)、path (字符串) |
💬 提示
提示名称 |
描述 |
kibana-tool-expert |
工具专家模式(强烈推荐在 Claude Desktop 中使用),支持通过工具对 Kibana API 进行智能分析、搜索、执行和解释。适合大多数用户。 |
kibana-resource-helper |
资源助手模式,指导如何通过资源 URI 访问和使用 Kibana API 信息。适用于仅支持资源访问或需要原始 API 元数据的客户端。 |
⚙️ 配置
通过环境变量配置服务器:
变量名 |
描述 |
是否必需 |
KIBANA_URL |
Kibana 服务器地址(例如 http://localhost:5601) |
是 |
KIBANA_USERNAME |
Kibana 用户名 |
是 |
KIBANA_PASSWORD |
Kibana 密码 |
是 |
KIBANA_CA_CERT |
CA 证书路径(可选,用于 SSL 验证) |
否 |
KIBANA_TIMEOUT |
请求超时时间(毫秒,默认 30000) |
否 |
KIBANA_MAX_RETRIES |
最大请求重试次数(默认 3) |
否 |
NODE_TLS_REJECT_UNAUTHORIZED |
设置为 0 以禁用 SSL 证书验证(谨慎使用) |
否 |
💻 使用示例
启动服务器
KIBANA_URL=http://your-kibana-server:5601 \
KIBANA_USERNAME=your-username \
KIBANA_PASSWORD=your-password \
NODE_TLS_REJECT_UNAUTHORIZED=0 \
npm start
示例 MCP 客户端配置
添加到 Claude Desktop 配置文件(MacOS 路径:~/Library/Application Support/Claude/claude_desktop_config.json
):
{
"mcpServers": {
"kibana-mcp-server": {
"command": "node",
"args": ["/path/to/mcp-server-kibana/dist/index.js"],
"env": {
"KIBANA_URL": "http://your-kibana-server:5601",
"KIBANA_USERNAME": "your-username",
"KIBANA_PASSWORD": "your-password",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}
示例查询
- "我的 Kibana 服务器状态如何?"
- "列出所有可用的 Kibana API 端点。"
- "显示 POST /api/saved_objects/_find 端点的详细信息。"
- "执行针对 /api/status 的自定义 API 请求。"
- "获取 Kibana 中所有仪表板的列表。"
- "查询与端点事件相关的 API 端点。"
- "列出所有与案例相关的 API 端点。"
- "在 Kibana 中创建一个新案例。"
- "在 Kibana 中创建一个新仪表板。"
🗨️ Claude Desktop 中的两种提示模式
在将此服务器与 Claude Desktop 一起使用时,支持两种不同的提示交互模式:
1. 基于工具的提示模式
- 工作原理: Claude Desktop 可以直接调用服务器工具(如
get_status
、execute_api
、search_kibana_api_paths
等)来回答你的问题或执行操作。
- 适用场景: 希望获得对话式引导体验的用户。服务器将自动搜索、执行和解释 Kibana API。
- 示例: "显示所有与保存对象相关的 Kibana API 端点。"
- 测试提示: 在 Claude Desktop 中选择
kibana-tool-expert
提示进行集成测试,然后开始使用。
2. 基于资源的提示模式
- 工作原理: Claude Desktop 通过资源 URI(如
kibana-api://paths
或 kibana-api://path/GET/%2Fapi%2Fstatus
)与服务器交互,服务器返回结构化数据供 Claude 解析。
- 适用场景: 高级用户、仅支持资源访问的 MCP 客户端或需要原始 API 元数据的编程场景。
- 示例: "获取资源 kibana-api://paths?search=dashboard"
注意: resources
中的两个端点(kibana-api://paths
和 kibana-api://path/{method}/{encoded_path}
)有对应的基础工具(list_all_kibana_api_paths
、get_kibana_api_detail
)。这种设计确保了与无法智能选择多个资源的 MCP 客户端的兼容性,使 Claude Desktop 等工具更易于与 Kibana 交互。
提示: 大多数用户建议使用工具模式以获得更自然、强大的体验;资源模式为高级和兼容用例提供了最大的灵活性。
👨💻 开发
安装依赖:
npm install
构建服务器:
npm run build
在开发模式下自动重建:
npm run watch
🐞 调试
由于 MCP 服务器通过标准输入输出进行通信,调试可能不太方便。建议使用 MCP Inspector:
npm run inspector
启动后,Inspector 将提供一个可通过浏览器访问的调试工具 URL。
👥 社区
本项目由社区维护。欢迎贡献和反馈!请在所有交流中保持尊重和包容,并遵守 Elastic 社区行为准则。
📄 许可证
本项目采用 Apache 许可证 2.0 版。详情请参阅 LICENSE 文件。
🚧 故障排除
- 检查 MCP 配置是否正确
- 确保 Kibana 地址可访问
- 验证认证凭据是否有足够的权限
- 如果使用自定义 CA,确保证书路径正确且可读
- 如果使用
NODE_TLS_REJECT_UNAUTHORIZED=0
,请注意安全风险
- 检查终端输出的错误消息