项目简介

'es_mcp_server' 是一个专为Elasticsearch设计的模型上下文协议(Model Context Protocol, MCP)服务器。它充当LLM客户端(如支持MCP的AI助手)与Elasticsearch集群之间的桥梁,使LLM能够方便地访问、搜索和管理Elasticsearch中的数据和元信息。

主要功能点

  • Elasticsearch工具集: 提供一系列工具,使LLM能够执行特定的Elasticsearch操作,包括:
    • 列出集群中的所有索引。
    • 获取特定索引的字段映射信息。
    • 使用Elasticsearch查询语言(DSL)进行高级搜索。
    • 使用简单的查询字符串进行搜索。
    • 获取特定索引的统计信息(如文档数、存储大小)。
  • Elasticsearch资源访问: 允许LLM通过标准化的MCP资源URI直接访问和获取结构化的Elasticsearch信息,例如:
    • 获取所有索引的列表及其基本信息。
    • 获取特定索引的详细配置和统计信息。
    • 获取特定索引的完整映射定义。
  • 标准化协议通信: 使用JSON-RPC over Stdio等传输协议与LLM客户端通信,符合MCP规范。

安装步骤

  1. 克隆仓库: 打开终端,使用git克隆项目代码(请替换为您实际克隆的仓库URL):
    git clone https://github.com/sajitsasi/es_mcp_server.git
    cd es_mcp_server
  2. 安装依赖: 安装项目所需的Python库,包括Elasticsearch客户端和MCP SDK:
    pip install -r requirements.txt
  3. 配置Elasticsearch连接: 设置环境变量 'ES_CLOUD_ID' 和 'ES_API_KEY' 以连接您的Elasticsearch集群。您可以复制 '.env.example' 文件为 '.env' 并编辑,或直接在shell环境中设置:
    # 示例 (请替换为您的实际凭据)
    export ES_CLOUD_ID=your_elasticsearch_cloud_id
    export ES_API_KEY=your_elasticsearch_api_key

服务器配置

本仓库提供的是一个MCP服务器实现,需要由支持MCP协议的LLM客户端来启动和连接。您需要将此服务器的启动信息配置到您的LLM客户端设置中。具体的配置方式取决于您的LLM客户端软件。

通常,MCP客户端的配置会包含一个列表或映射,定义可用的MCP服务器。对于此Elasticsearch MCP服务器,您需要配置如下信息:

  • 服务器名称 (server name): 用于在客户端中标识此服务器的名称,例如 'elasticsearch-mcp-server'。
  • 启动命令 (command): 启动服务器程序的命令,例如 'python'。
  • 启动参数 (args): 传递给启动命令的参数列表,通常是服务器主脚本的路径,例如您的仓库目录下 'es_mcp_server.py' 文件的绝对路径。
  • 环境变量 (env): 需要为服务器进程设置的环境变量,必须包含 'ES_CLOUD_ID' 和 'ES_API_KEY' 及其对应的值。

例如,一个概念上的JSON配置结构可能如下(请注意,这仅为说明配置所需信息的结构,不是您直接执行的代码):

{
  "mcpServers": {
    "elasticsearch-mcp-server": {
      "command": "python",
      "args": [ "/path/to/your/es_mcp_server/es_mcp_server.py" ], // 请替换为 es_mcp_server.py 的实际绝对路径
      "env": {
        "ES_CLOUD_ID": "您的Elasticsearch Cloud ID",
        "ES_API_KEY": "您的Elasticsearch API Key"
      },
      "disabled": false, // 是否启用
      "autoApprove": [] // 可选:自动批准的工具/资源
    }
  }
}

请查阅您的LLM客户端软件的文档,了解如何添加或编辑MCP服务器配置。仓库中提供的 'configure_mcp_server.py' 脚本是一个针对特定客户端(Claude的VS Code插件)的配置示例。

基本使用方法

配置完成后,当您的LLM客户端需要访问Elasticsearch数据或执行相关操作时,它会根据您的请求通过MCP协议与此服务器通信。您通常不需要手动启动服务器,客户端会在需要时自动管理其生命周期。

您可以在LLM客户端中使用其提供的界面或特定语法(如Claude的XML标签)来调用服务器提供的工具和资源。

  • 访问资源示例 (使用Claude的 'access_mcp_resource'):
    • 列出所有索引:
      <access_mcp_resource>
      <server_name>elasticsearch-mcp-server</server_name>
      <uri>elasticsearch://indices</uri>
      </access_mcp_resource>
    • 获取特定索引映射信息 (将 'your_index_name' 替换为实际索引名):
      <access_mcp_resource>
      <server_name>elasticsearch-mcp-server</server_name>
      <uri>elasticsearch://mapping/your_index_name</uri>
      </access_mcp_resource>
  • 调用工具示例: 您可以通过客户端提供的工具调用界面或语法来触发如 'search' 或 'list_indices' 等工具函数,并提供必要的参数。具体语法取决于客户端。

通过这些接口,LLM即可利用Elasticsearch的强大功能来获取和处理信息,增强其理解和响应能力。

信息

分类

数据库与文件