返回市场
弹性搜索-mcp

弹性搜索-mcp

作者:awesimon17 星标更新:2025-08-04

项目介绍

Elasticsearch MCP 服务器

English | 中文

smithery 徽章

用于连接到您的 Elasticsearch 集群的 MCP 服务器(如 Claude Desktop, Cursor)。

此服务器通过模型上下文协议将代理连接到您的 Elasticsearch 数据。它允许您通过自然语言对话与您的 Elasticsearch 索引进行交互。

演示

Elasticsearch MCP 演示

功能概述

可用功能

集群管理

  • elasticsearch_health: 获取 Elasticsearch 集群健康状态,可选包括索引级别的详细信息

索引操作

  • list_indices: 列出可用的 Elasticsearch 索引,支持正则表达式
  • create_index: 创建 Elasticsearch 索引,可选设置和映射
  • reindex: 将数据从源索引重新索引到目标索引,可选查询和脚本

映射管理

  • get_mappings: 获取特定 Elasticsearch 索引的字段映射
  • create_mapping: 创建或更新 Elasticsearch 索引的映射结构

搜索及数据操作

  • search: 执行 Elasticsearch 查询,提供查询 DSL
  • bulk: 批量导入数据到 Elasticsearch 索引

模板管理

  • create_index_template: 创建或更新索引模板
  • get_index_template: 获取关于索引模板的信息
  • delete_index_template: 删除索引模板

工作原理

  1. MCP 客户端分析您的请求并确定需要哪些 Elasticsearch 操作。
  2. MCP 服务器执行这些操作(列出索引、获取映射、执行搜索)。
  3. MCP 客户端处理结果,并以用户友好的格式呈现。

快速开始

先决条件

  • 一个 Elasticsearch 实例
  • Elasticsearch 认证凭据(API 密钥或用户名/密码)
  • MCP 客户端(例如 Claude Desktop, Cursor)

安装与设置

使用已发布的 NPM 包

[!TIP] 使用 Elasticsearch MCP 服务器最简单的方法是通过已发布的 npm 包。

  1. 配置 MCP 客户端

    • 打开您的 MCP 客户端。参见 MCP 客户端列表,这里我们正在配置 Claude Desktop。
    • 转到 设置 > 开发者 > MCP 服务器
    • 点击 编辑配置 并添加一个新的 MCP 服务器,配置如下:
    {
      "mcpServers": {
        "elasticsearch-mcp": {
          "command": "npx",
          "args": [
            "-y",
            "@awesome-ai/elasticsearch-mcp"
          ],
          "env": {
            "ES_HOST": "your-elasticsearch-host",
            "ES_API_KEY": "your-api-key"
          }
        }
      }
    }
    
  2. 启动对话

    • 在您的 MCP 客户端中打开新的对话。
    • MCP 服务器应自动连接。
    • 您现在可以询问有关您的 Elasticsearch 数据的问题。

配置选项

Elasticsearch MCP 服务器支持配置选项以连接到您的 Elasticsearch:

[!NOTE] 您必须提供 API 密钥或用户名和密码来进行认证。

环境变量描述是否必需
ES_HOST您的 Elasticsearch 实例 URL(支持单个 URL 或逗号分隔的多个 URL,也支持旧版 HOST
ES_API_KEYElasticsearch API 密钥用于认证(也支持旧版 API_KEY
ES_USERNAMEElasticsearch 用户名用于基本认证(也支持旧版 USERNAME
ES_PASSWORDElasticsearch 密码用于基本认证(也支持旧版 PASSWORD
ES_CA_CERT自定义 CA 证书路径用于 Elasticsearch SSL/TLS(也支持旧版 CA_CERT

多个 URL 配置

您可以配置多个 Elasticsearch 节点以实现高可用性和负载均衡:

{
  "mcpServers": {
    "elasticsearch-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@awesome-ai/elasticsearch-mcp"
      ],
      "env": {
        "ES_HOST": "https://es-node1:9200,https://es-node2: 9200,https://es-node3:9200",
        "ES_API_KEY": "your-api-key"
      }
    }
  }
}

客户端将自动处理节点之间的故障转移和负载均衡。

本地开发

[!NOTE] 如果您想修改或扩展 MCP 服务器,请遵循以下本地开发步骤。

  1. 使用正确的 Node.js 版本

    nvm use
    
  2. 安装依赖项

    npm install
    
  3. 构建项目

    npm run build
    
  4. 在 Claude Desktop 应用中本地运行

    • 打开 Claude Desktop 应用
    • 转到 设置 > 开发者 > MCP 服务器
    • 点击 编辑配置 并添加一个新的 MCP 服务器,配置如下:
    {
      "mcpServers": {
        "elasticsearch-mcp": {
          "command": "node",
          "args": [
            "/path/to/your/project/dist/index.js"
          ],
          "env": {
            "ES_HOST": "your-elasticsearch-host",
            "ES_API_KEY": "your-api-key"
          }
        }
      }
    }
    
  5. 在 Cursor 编辑器中本地运行

    • 打开 Cursor 编辑器
    • 转到 Cursor 设置 > MCP
    • 点击 添加新的全局 MCP 服务器 并添加一个新的 MCP 服务器,配置如下:
    {
      "mcpServers": {
        "elasticsearch-mcp": {
          "command": "node",
          "args": [
            "/path/to/your/project/dist/index.js"
          ],
          "env": {
            "ES_HOST": "your-elasticsearch-host",
            "ES_API_KEY": "your-api-key"
          }
        }
      }
    }
    
  6. 使用 MCP Inspector 进行调试

    ES_HOST=your-elasticsearch-url ES_API_KEY=your-api-key npm run inspector
    

    这将启动 MCP Inspector,允许您调试和分析请求。您应该看到:

    正在启动 MCP inspector...
    ⚙️ 代理服务器正在监听端口 6277
    🔍 MCP Inspector 正在运行于 http://127.0.0.1:6274 🚀
    

示例查询

[!TIP] 这里有一些自然语言查询,您可以尝试使用您的 MCP 客户端。

集群管理

  • "我的 Elasticsearch 集群的健康状况如何?"
  • "我的集群中有多少活跃节点?"

索引操作

  • "我在 Elasticsearch 集群中有哪些索引?"
  • "创建一个名为 'users' 的新索引,具有 3 个分片和 1 个副本。"
  • "将数据从 'old_index' 重新索引到 'new_index'。"

映射管理

  • "显示 'products' 索引的字段映射。"
  • "向 'products' 索引添加一个名为 'tags' 的关键字类型字段。"

搜索及数据操作

  • "查找上个月超过 $500 的所有订单。"
  • "哪些产品获得了最多的 5 星评价?"
  • "批量导入这些客户记录到 'customers' 索引。"

模板管理

  • "为日志创建一个模式为 'logs-*' 的索引模板。"
  • "显示我所有的索引模板。"
  • "删除 'outdated_template' 索引模板。"

如果您遇到问题,请随时在 GitHub 存储库中提交问题。