项目简介

Elasticsearch MCP Server 是一个轻量级、高性能的服务器,它遵循 Model Context Protocol (MCP) 标准,使大型语言模型(LLM)能够通过标准化的方式与 Elasticsearch 数据库进行交互。它基于 Quarkus 框架构建,具有快速启动、低内存占用和云原生支持的特点,提供了一系列易于使用的工具,用于查询、管理和操作 Elasticsearch 数据。

主要功能点

  • Elasticsearch 健康检查: 快速获取 Elasticsearch 集群的运行状态。
  • 索引与别名管理: 列出 Elasticsearch 中的所有索引和别名,帮助理解数据结构。
  • 映射信息查询: 获取指定索引的字段映射(schema)信息。
  • SQL 查询: 支持使用 SQL 语句直接查询 Elasticsearch 文档,简化数据检索。
  • DSL 高级搜索: 允许通过 Elasticsearch DSL(Domain Specific Language)进行复杂的查询和过滤。
  • 文档ID查询: 通过文档的唯一ID快速检索特定文档内容。
  • 高性能与低资源占用: 利用 Quarkus 框架的优势,实现毫秒级启动和极低的内存消耗,非常适合容器化部署。
  • 双协议支持: 提供 SSE (Server-Sent Events) 和 Streamable HTTP 两种通信协议接口,方便不同客户端连接。

安装步骤

  1. 环境要求: 确保您的系统已安装 Java 17+ (推荐 JDK 21 或更高版本) 和 Maven 3.8+。您还需要一个运行中的 Elasticsearch 7.x/8.x/9.x 实例。
  2. 下载服务器: 访问项目的 GitHub Release 页面,下载最新版本的 'elasticsearch-mcp-server-runner.jar' 文件。
  3. 运行服务器:
    • 默认启动 (连接本地 Elasticsearch 9200 端口,无密码):
      java -jar elasticsearch-mcp-server-runner.jar
    • 连接远程 Elasticsearch 或设置认证信息: 您可以选择通过命令行参数或环境变量配置 Elasticsearch 连接信息。
      • 命令行参数示例:
        java -jar elasticsearch-mcp-server-runner.jar -Delasticsearch.host=http://your-es-server:9200 -Delasticsearch.username=your_username -Delasticsearch.password=your_password
      • 环境变量示例: 设置环境变量后再启动:
        export ELASTICSEARCH_HOST=http://your-es-server:9200
        export ELASTICSEARCH_USERNAME=your_username
        export ELASTICSEARCH_PASSWORD=your_password
        java -jar elasticsearch-mcp-server-runner.jar
        启动后,MCP 服务器将默认监听 '0.0.0.0:19000' 端口。

服务器配置

MCP 客户端需要配置 MCP 服务器的启动命令及其参数才能与本服务器建立连接。以下是 JSON 格式的配置示例及参数说明:

{
  "server_name": "elasticsearch-mcp-server",
  "command": "java",
  "args": [
    "-jar",
    "path/to/elasticsearch-mcp-server-runner.jar",
    // 以下为可选参数,根据您的Elasticsearch配置进行调整
    "-Delasticsearch.host=http://localhost:9200", // Elasticsearch 服务器地址,例如:http://your-es-server:9200
    "-Delasticsearch.username=your_username",     // Elasticsearch 用户名,如果您的Elasticsearch需要认证
    "-Delasticsearch.password=your_password"      // Elasticsearch 密码,如果您的Elasticsearch需要认证
  ],
  "env": {
    // 也可以通过环境变量配置Elasticsearch连接信息,例如:
    // "ELASTICSEARCH_HOST": "http://localhost:9200",
    // "ELASTICSEARCH_USERNAME": "your_username",
    // "ELASTICSEARCH_PASSWORD": "your_password"
  },
  "protocol": "sse", // 或 "streamable",根据客户端和服务器支持选择
  "endpoint": "/mcp/sse" // 如果protocol为sse,endpoint是/mcp/sse;如果protocol为streamable,endpoint是/mcp
}

参数注释:

  • 'server_name': 给这个MCP服务器实例起一个易于识别的名称。
  • 'command': 启动 MCP 服务器的可执行命令,这里是 'java'。
  • 'args': 启动命令的参数列表。
    • 'path/to/elasticsearch-mcp-server-runner.jar': 指向您下载的 'elasticsearch-mcp-server-runner.jar' 文件的完整路径。
    • '-Delasticsearch.host=...': 指定 Elasticsearch 服务器的完整地址(包含协议和端口)。
    • '-Delasticsearch.username=...': 如果 Elasticsearch 配置了认证,提供用户名。
    • '-Delasticsearch.password=...': 如果 Elasticsearch 配置了认证,提供密码。
  • 'env': 可选的环境变量配置,与 'args' 中的 '-D' 参数效果类似,用于设置 Elasticsearch 连接信息。
  • 'protocol': MCP 客户端与服务器通信使用的协议。本项目支持 'sse' (Server-Sent Events) 和 'streamable' (Streamable HTTP)。
  • 'endpoint': 根据所选的 'protocol' 配置对应的通信路径。对于 'sse' 协议,默认路径是 '/mcp/sse';对于 'streamable' 协议,默认路径是 '/mcp'。

基本使用方法

一旦 MCP 服务器成功启动,它将对外暴露 MCP 接口。您的 LLM 客户端(例如,一个支持 MCP 的 AI 助手前端)可以通过配置上述的 'command' 和 'args' 来连接到此服务器。连接成功后,LLM 客户端即可发现并调用服务器提供的各种 Elasticsearch 工具(例如 'health'、'sql'、'search' 等),实现对 Elasticsearch 数据的智能交互。

例如,一个 LLM 客户端可能会通过调用 'sql' 工具,将用户输入的自然语言问题(如“查询过去24小时内访问量最高的5个网页”)转换为 Elasticsearch SQL 语句,并获取查询结果。

信息

分类

数据库与文件