Elasticsearch MCP Server - 官方搜索引擎集成
简介
Elasticsearch MCP Server 是 Elastic 官方推出的 Model Context Protocol 服务器实现,为 AI 应用提供了与 Elasticsearch 集群的无缝连接能力。通过这个服务器,用户可以使用自然语言直接连接和查询 Elasticsearch 索引,无需编写复杂的查询语句。该项目使用 Rust 语言开发,确保了高性能和内存安全性。作为官方支持的实验性项目,它为实时数据检索架构、日志分析和全文搜索应用提供了强大的支持。项目在 GitHub 上获得了 512 颗星,并持续接收来自 Elastic 团队的更新和改进。
核心特性
- 索引管理 - 列出所有可用索引及其健康状态,实时监控索引状况
- 映射查询 - 获取索引的字段映射信息,了解数据结构和字段类型
- 灵活搜索 - 使用 Query DSL 执行复杂的搜索查询,支持全文搜索和结构化查询
- ES|QL 支持 - 支持 Elasticsearch 查询语言,提供更强大的数据分析能力
- 分片信息 - 获取详细的分片分布和健康信息,优化集群性能
- 多版本兼容 - 完全支持 Elasticsearch 8.x 和 9.x 版本
- 多协议支持 - 提供 stdio、SSE 和 HTTP 三种连接协议,适应不同使用场景
- 灵活认证 - 支持 API Key 和用户名密码两种认证方式
工具列表
索引管理工具
list_indices
描述: 列出 Elasticsearch 集群中所有可用的索引及其健康状态,包括索引大小、文档数量等关键指标
参数: 无需参数
get_mappings
描述: 获取指定索引的完整字段映射信息,包括字段类型、分析器配置等
参数:
index(string): 要查询映射的索引名称 [必需]
get_shards
描述: 获取索引的分片详细信息,包括分片状态、大小、所在节点等
参数:
index(string): 索引名称,不指定则返回所有索引的分片信息 [可选]
查询工具
search
描述: 使用 Elasticsearch Query DSL 执行复杂的搜索查询,支持全文搜索、过滤、聚合等功能
参数:
index(string): 要搜索的索引名称,可以使用通配符 [必需]query(object): Query DSL 查询对象,定义搜索条件 [必需]size(number): 返回的结果数量 [可选,默认: 10]
esql
描述: 执行 ES|QL 查询,Elasticsearch 的新一代查询语言,提供更强大和简洁的数据分析能力
参数:
query(string): ES|QL 查询语句 [必需]
配置方式
基础配置
1 | { |
环境变量说明
- ES_URL: Elasticsearch 集群的完整 URL 地址(如:https://your-cluster.es.io:9200)
- ES_API_KEY: Elasticsearch API 密钥,用于认证
- ES_USERNAME: 用户名(当使用用户名密码认证时)
- ES_PASSWORD: 密码(当使用用户名密码认证时)
使用示例
1 | # 启动 stdio 服务器 |
查询示例
1 | # 列出所有索引 |
实际应用场景
实时日志分析 - 通过自然语言查询应用日志,快速定位错误和异常,缩短故障排查时间
企业搜索门户 - 构建企业内部搜索引擎,让员工用自然语言查询文档、知识库和数据
数据探索和分析 - 使用 AI 助手探索 Elasticsearch 中的数据,发现数据模式和洞察
监控和告警 - 通过自然语言定义监控条件,自动查询指标数据并触发告警
电商搜索优化 - 分析搜索查询和结果,优化搜索相关性和用户体验
安全事件调查 - 使用自然语言查询安全日志,快速调查安全事件和威胁
技术实现
Elasticsearch MCP Server 使用 Rust 语言实现,体现了 Elastic 对性能和安全的重视:
- Rust 高性能 - 93.8% 的代码使用 Rust 编写,提供接近 C/C++ 的性能,同时保证内存安全
- 零成本抽象 - Rust 的所有权系统确保无垃圾回收开销,实现高效的资源管理
- 多协议架构 - 支持 stdio、SSE 和 streamable-HTTP 三种协议,适应不同的集成场景
- 安全优先 - Rust 的类型系统和借用检查器在编译时防止内存安全问题
- 异步 I/O - 使用 Tokio 异步运行时,高效处理并发请求
- 容器化部署 - 官方 Docker 镜像简化部署流程,确保环境一致性
- 实验性迭代 - 作为实验性项目,持续集成最新的 Elasticsearch 特性和 MCP 协议改进
该项目还提供了与 Elasticsearch 8.x 和 9.x 的完整兼容性,确保用户可以在不同版本的集群上使用。
获取方式
- GitHub: https://github.com/elastic/mcp-server-elasticsearch
- Docker Hub: docker.elastic.co/mcp/elasticsearch
- 安装方式:
- 使用官方 Docker 镜像(推荐)
- 从源码编译:
cargo build --release
- 系统要求:
- Docker(使用容器部署)
- Rust 1.70+(从源码编译)
- Elasticsearch 8.x 或 9.x 集群
- 有效的 Elasticsearch 认证凭据
相关资源
- 官方文档: Elasticsearch 官方文档提供详细的 Query DSL 和 ES|QL 语法说明
- 项目仓库: github.com/elastic/mcp-server-elasticsearch
- Elastic Community: 加入 Elastic 社区论坛获取支持和最佳实践
- 问题反馈: 通过 GitHub Issues 报告问题和建议
- Docker Registry: docker.elastic.co/mcp/elasticsearch