项目简介
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 两种通信协议接口,方便不同客户端连接。
安装步骤
- 环境要求: 确保您的系统已安装 Java 17+ (推荐 JDK 21 或更高版本) 和 Maven 3.8+。您还需要一个运行中的 Elasticsearch 7.x/8.x/9.x 实例。
- 下载服务器: 访问项目的 GitHub Release 页面,下载最新版本的 'elasticsearch-mcp-server-runner.jar' 文件。
- 运行服务器:
- 默认启动 (连接本地 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 - 环境变量示例:
设置环境变量后再启动:
启动后,MCP 服务器将默认监听 '0.0.0.0:19000' 端口。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
- 命令行参数示例:
- 默认启动 (连接本地 Elasticsearch 9200 端口,无密码):
服务器配置
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 语句,并获取查询结果。
信息
分类
数据库与文件