项目简介

Elasticsearch MCP Server 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在让 MCP 客户端(如 Claude Desktop, Cursor)能够直接与 Elasticsearch 集群进行交互。它通过提供一系列工具,使得用户可以使用自然语言查询、分析和管理 Elasticsearch 中的数据。

主要功能点

  • 索引管理
    • 'list_indices': 列出 Elasticsearch 集群中的索引,支持通过正则表达式进行过滤。
    • 'create_index': 创建新的 Elasticsearch 索引,可以自定义索引设置和映射。
    • 'create_mapping': 为 Elasticsearch 索引创建或更新字段映射,定义字段类型。
  • 数据查询与分析
    • 'search': 执行 Elasticsearch 搜索,支持完整的 Query DSL 语法,并高亮显示关键词。
    • 'get_mappings': 获取指定 Elasticsearch 索引的字段映射信息。
  • 集群监控
    • 'elasticsearch_health': 获取 Elasticsearch 集群的健康状态,可以选择包含索引级别的详细信息。
  • 数据导入
    • 'bulk_import': 批量导入数据到 Elasticsearch 索引中。

安装步骤

本服务器可以通过 npm 包(即将发布)或本地开发方式安装和使用。

方法一:使用 npm 包 (推荐,即将发布)

  1. 配置 MCP 客户端

    打开您的 MCP 客户端(例如 Claude Desktop 或 Cursor),进入 MCP 服务器配置页面(通常在设置或开发者选项中)。点击“编辑配置”并添加一个新的 MCP 服务器配置,内容如下:

    {
      "mcpServers": {
        "elasticsearch-mcp": {
          "command": "npx",
          "args": [
            "-y",
            "@awesome-ai/elasticsearch-mcp"
          ],
          "env": {
            "HOST": "your-elasticsearch-host",  // 替换为您的 Elasticsearch 地址,例如:http://localhost:9200
            "API_KEY": "your-api-key"         // 替换为您的 Elasticsearch API 密钥 (可选,也可以使用用户名和密码)
          }
        }
      }
    }
  2. 开始对话

    在 MCP 客户端中开始新的对话,服务器应该会自动连接。现在您可以开始使用自然语言与 Elasticsearch 数据进行交互了。

方法二:本地开发

  1. 安装 Node.js 依赖

    确保您已安装 Node.js 和 npm。克隆仓库到本地后,在项目根目录下运行:

    npm install
  2. 构建项目

    npm run build
  3. 配置 MCP 客户端

    打开您的 MCP 客户端,添加新的 MCP 服务器配置,内容如下:

    {
      "mcpServers": {
        "elasticsearch-mcp": {
          "command": "node",
          "args": [
            "/path/to/your/project/dist/index.js"  // 替换为您的项目 dist/index.js 文件的实际路径
          ],
          "env": {
            "HOST": "your-elasticsearch-host",      // 替换为您的 Elasticsearch 地址,例如:http://localhost:9200
            "API_KEY": "your-api-key"             // 替换为您的 Elasticsearch API 密钥 (可选,也可以使用用户名和密码)
          }
        }
      }
    }

服务器配置

MCP 客户端需要配置 MCP 服务器的启动命令 (command) 及其参数 (args) 才能建立连接。以下是 'elasticsearch-mcp' 服务器的客户端配置信息:

{
  "mcpServers": {
    "elasticsearch-mcp": {  // 服务器名称,可自定义
      "command": "npx",      // 启动命令,如果使用本地开发,则为 "node"
      "args": [              // 命令参数
        "-y",
        "@awesome-ai/elasticsearch-mcp" // npm 包名称,如果使用本地开发,则为项目 dist/index.js 文件的路径
      ],
      "env": {                // 环境变量
        "HOST": "your-elasticsearch-host",    // (必填) Elasticsearch 集群的 URL 地址,例如:http://localhost:9200
        "API_KEY": "your-api-key",           // (可选) Elasticsearch API 密钥,用于身份验证,与用户名/密码二选一
        "USERNAME": "your-username",         // (可选) Elasticsearch 用户名,用于基本身份验证,与 API 密钥二选一,需要同时配置 PASSWORD
        "PASSWORD": "your-password",         // (可选) Elasticsearch 密码,用于基本身份验证,与 API 密钥二选一,需要同时配置 USERNAME
        "CA_CERT": "path/to/your/ca.crt"    // (可选) 自定义 CA 证书路径,用于 Elasticsearch SSL/TLS 连接
      }
    }
  }
}

注意:

  • 必须提供 Elasticsearch 集群的 'HOST' 地址。
  • 身份验证方式:可以使用 'API_KEY' 或 'USERNAME' 和 'PASSWORD',两者选其一。
  • 如果 Elasticsearch 集群使用了 SSL/TLS,并且需要自定义 CA 证书,请配置 'CA_CERT' 环境变量。

基本使用方法

配置完成后,在 MCP 客户端中,您可以使用自然语言提出关于 Elasticsearch 数据的各种问题和指令。例如:

  • "我的 Elasticsearch 集群里有哪些索引?"
  • "展示 'products' 索引的字段映射。"
  • "查找上个月订单金额超过 500 美元的所有订单。"
  • "哪些产品收到了最多的 5 星评价?"
  • "我的 Elasticsearch 集群健康状态如何?"
  • "创建一个名为 'users' 的新索引,包含 3 个分片和 1 个副本。"
  • "向 'products' 索引添加一个名为 'tags' 的 keyword 类型字段。"
  • "批量导入这些客户记录到 'customers' 索引。"

更多示例和高级用法,请参考项目文档和 MCP 客户端的使用说明。

信息

分类

数据库与文件