Elasticsearch MCP 服务器

Elasticsearch MCP 服务器是一个通过模型上下文协议(MCP)连接Elasticsearch集群的服务,允许用户通过自然语言对话与Elasticsearch索引进行交互。

  • by awesimon
  • TypeScript
  • 本地部署
  • 24 星标
  • 更新于
在 GitHub 查看 awesimon/elasticsearch-mcp

使用说明

Elasticsearch MCP服务器

英语 | 中文

MCP服务器,用于直接从任何MCP客户端(如Claude Desktop、Cursor)连接到Elasticsearch集群。

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

演示

功能概述

可用特征

群集管理

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

索引操作

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

地图管理

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

搜索和数据操作

  • search:使用提供的查询DSL执行Elasticsearch搜索
  • bulk:将数据批量放入Elasticsearch索引

模板管理

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

运作原理

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

入门指南

先决条件

  • Elasticsearch实例
  • Elasticsearch身份验证凭据(API密钥或用户名/密码)
  • MCP客户端(例如克劳德桌面、光标)

安装和设置

使用已发布的NPM包

[!提示] 使用Elasticsearch MCP Server最简单的方法是通过发布的npm包。

  1. 配置MCP客户端

    • 打开您的MCP客户端。请参阅 MCP客户端列表,这里我们正在配置Claude Desktop。
    • 首选 设置>开发人员>MCP服务器
    • 点击 Edit Config 并添加具有以下配置的新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:

[!注意] 您必须提供API密钥或用户名和密码进行身份验证。

环境变量 描述 必填
ES_HOST 您的Elasticsearch实例URL-支持单个URL或逗号分隔的多个URL(也支持传统URL HOST) 是
ES_API_KEY 用于身份验证的Elasticsearch API密钥(也支持遗留 API_KEY) 没有
ES_USERNAME 用于基本身份验证的Elasticsearch用户名(也支持传统身份验证) USERNAME) 没有
ES_PASSWORD 用于基本身份验证的Elasticsearch密码(也支持传统密码 PASSWORD) 没有
ES_CA_CERT Elasticsearch SSL/TLS的自定义CA证书路径(也支持传统CA证书 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"
      }
    }
  }
}

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

地方发展

[!注意] 如果要修改或扩展MCP服务器,请按照以下本地开发步骤进行操作。

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

    nvm use
    
  2. 再进行

    npm install
    
  3. 构建项目

    npm run build
    
  4. 在Claude桌面应用程序中本地运行

    • 打开 Claude桌面应用程序
    • 首选 设置>开发人员>MCP服务器
    • 点击 Edit Config 并添加具有以下配置的新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. 在游标编辑器中本地运行

    • 打开 光标编辑器
    • 首选 光标设置>MCP
    • 点击 Add new global MCP Server 并添加具有以下配置的新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检查器进行调试

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

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

    Starting MCP inspector...
    ⚙️ Proxy server listening on port 6277
    🔍 MCP Inspector is up and running at http://127.0.0.1:6274 🚀
    

查询示例

[!提示] 以下是您可以使用MCP客户端尝试的一些自然语言查询。

群集管理

  • “我的Elasticsearch集群的健康状况如何?”
  • “我的群集中有多少个活动节点?”

索引操作

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

地图管理

  • “显示‘products’索引的字段映射。”
  • “在‘products’索引中添加一个名为‘tags’的关键字类型字段。”

搜索和数据操作

  • “查找上个月所有超过500美元的订单。”
  • “哪些产品获得了最多的五星评价?”
  • “将这些客户记录批量导入到‘客户’索引中。”

模板管理

  • “使用模式'logs-*'为日志创建索引模板。”
  • “显示我的所有索引模板。”
  • “删除'outdated_template'索引模板。”

如果您遇到问题,请随时在GitHub存储库上打开问题。