项目简介
'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规范。
安装步骤
- 克隆仓库: 打开终端,使用git克隆项目代码(请替换为您实际克隆的仓库URL):
git clone https://github.com/sajitsasi/es_mcp_server.git cd es_mcp_server - 安装依赖: 安装项目所需的Python库,包括Elasticsearch客户端和MCP SDK:
pip install -r requirements.txt - 配置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的强大功能来获取和处理信息,增强其理解和响应能力。
信息
分类
数据库与文件