项目简介
Kibana MCP 服务器是一个基于 Model Context Protocol (MCP) 实现的后端服务,旨在将您的 Kibana 实例的能力暴露给 MCP 兼容的客户端,例如支持 MCP 的大型语言模型 (LLM) 客户端(如 Claude Desktop)或其他应用程序。它通过标准化的 MCP 接口,将 Kibana 的 API endpoints 转化为可供 LLM 访问和调用的工具 (Tools) 和资源 (Resources)。
主要功能点
- 连接 Kibana: 能够连接到本地或远程的 Kibana 服务器。
- 安全认证: 支持使用用户名和密码连接到 Kibana。
- API 暴露: 将 Kibana 的众多 API endpoint 以结构化的方式暴露为 MCP 中的工具和资源。
- API 操作: 允许客户端通过工具或资源搜索、查看、获取详细信息以及执行 Kibana API 调用,实现对 Kibana 数据的查询和管理。
- Prompt 支持: 提供预定义的 Prompt 模板,优化 LLM 在使用 Kibana 能力时的交互和引导方式。
安装步骤
- 确保您已经安装了 Node.js 和 npm。
- 克隆本仓库到您的本地机器:
git clone https://github.com/TocharianOU/mcp-server-kibana.git cd mcp-server-kibana - 安装项目依赖:
npm install - 编译 TypeScript 代码:
npm run build - 确保 'kibana-openapi-source.yaml' 文件位于项目根目录或构建后的 'dist/src' 目录中。这个文件包含了 Kibana API 的定义。
服务器配置
MCP 服务器通常通过环境变量获取其运行所需的配置信息。在启动服务器时,您需要设置以下必要的环境变量来连接到您的 Kibana 实例:
- 'KIBANA_URL': 您的 Kibana 服务器地址(例如 'http://localhost:5601' 或 'https://your-kibana.example.com')。
- 'KIBANA_USERNAME': 用于连接 Kibana 的用户名。
- 'KIBANA_PASSWORD': 用于连接 Kibana 的密码。
- 'NODE_TLS_REJECT_UNAUTHORIZED' (可选): 如果您使用自签名或无效的 SSL 证书,可以设置为 '0' 以禁用证书验证(不推荐用于生产环境)。
对于 MCP 客户端(如 Claude Desktop),您需要在客户端的配置文件中指定如何启动这个 MCP 服务器。典型的配置格式如下(请根据您的客户端实际配置格式进行调整):
{ "mcpServers": { "kibana-mcp-server-name": { // 您为这个服务器指定一个唯一的名称 "command": "node", // 启动服务器的命令,这里是运行Node.js "args": ["/path/to/mcp-server-kibana/dist/index.js"], // 实际服务器入口文件的路径 "env": { // 传递给服务器进程的环境变量 "KIBANA_URL": "http://your-kibana-server:5601", // 您的Kibana地址 "KIBANA_USERNAME": "your-username", // Kibana用户名 "KIBANA_PASSWORD": "your-password", // Kibana密码 "NODE_TLS_REJECT_UNAUTHORIZED": "0" // (可选) 禁用SSL证书验证 // 其他 Kibana 配置变量如 KIBANA_CA_CERT 等也可以在这里设置 } } // 可以配置其他 MCP 服务器 } }
请将 '/path/to/mcp-server-kibana' 替换为您实际克隆仓库的路径。
基本使用方法
连接并配置好 MCP 客户端后,您可以通过两种主要模式与 Kibana MCP 服务器交互:
-
工具模式 (Tool-based): 这是推荐给大多数 LLM 客户端的交互方式。LLM 会根据您的自然语言请求,智能地调用服务器提供的工具来完成任务。
- 示例请求: "Show me the status of my Kibana server." (调用 'get_status' 工具)
- 示例请求: "Search for Kibana APIs related to 'saved objects'." (调用 'search_kibana_api_paths' 工具)
- 示例请求: "Execute a GET request to /api/status." (调用 'execute_api' 工具) 服务器会将工具执行的结果返回给 LLM,LLM 再将结果或进一步分析呈现给您。您可以在客户端选择 'kibana-tool-expert' Prompt 以优化此模式的交互。
-
资源模式 (Resource-based): 这适用于需要直接访问原始数据或元数据,或者客户端只支持资源访问的场景。您需要构造特定的 URI 来获取信息。
- 示例请求: 'kibana-api://paths?search=dashboard' (获取包含 'dashboard' 关键词的 API 路径列表)
- 示例请求: 'kibana-api://path/GET/%2Fapi%2Fstatus' (获取 '/api/status' GET 请求的详细信息) 服务器会返回结构化的数据(通常是 JSON 格式),供客户端或您自己解析和使用。您可以在客户端选择 'kibana-resource-helper' Prompt 以获得资源使用的指导。
大多数情况下,LLM 客户端的工具调用能力配合 'kibana-tool-expert' Prompt 能提供更流畅、自然的交互体验。
信息
分类
网页与API