项目简介

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 能力时的交互和引导方式。

安装步骤

  1. 确保您已经安装了 Node.js 和 npm。
  2. 克隆本仓库到您的本地机器:
    git clone https://github.com/TocharianOU/mcp-server-kibana.git
    cd mcp-server-kibana
  3. 安装项目依赖:
    npm install
  4. 编译 TypeScript 代码:
    npm run build
  5. 确保 '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 服务器交互:

  1. 工具模式 (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 以优化此模式的交互。
  2. 资源模式 (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