elasticsearch-mcp
elasticsearch-mcp
适用于 Elasticsearch 的 MCP 服务器,直接基于 REST API 构建(不依赖 elasticsearch-py,因此也适用于 OpenSearch 以及仅暴露 HTTP 接口的托管集群)。
提供 21 个工具,涵盖查询、诊断、映射和集群操作。默认只读,所有写入路径均受门控。
安装
git clone <your-repo> elasticsearch-mcp && cd elasticsearch-mcp
uv sync # or: pip install -e ".[dev]"
cp .env.example .env
pytest -qRelated MCP server: OpenSearch MCP Server
注册到 Claude Code / Claude Desktop
{
"mcpServers": {
"elasticsearch": {
"command": "uv",
"args": ["--directory", "/abs/path/elasticsearch-mcp", "run", "elasticsearch-mcp"],
"env": {
"ES_MCP_HOSTS": "https://es.internal:9200",
"ES_MCP_API_KEY": "base64-encoded-api-key",
"ES_MCP_INDEX_ALLOW": "logs-*,metrics-*",
"ES_MCP_READ_ONLY": "true"
}
}
}
}远程 / 共享部署(替代 stdio):
elasticsearch-mcp --transport streamable-http工具
查询
工具 | 说明 |
| 执行 Query DSL。限制结果条数、注入超时、拒绝深分页,支持 |
| 将结构化规范转换为有效 DSL,并针对索引进行校验,返回字段目录 |
| 对 |
| 仅返回匹配数量,不获取命中详情 |
诊断工具
工具 | 说明 |
| 状态、分片数量、待处理任务,可选节点级堆内存/磁盘/CPU/拒绝次数 |
| 按索引:文档数、存储、段、平均查询和索引延迟、合并次数 |
|
|
| 按平均查询延迟排序的索引、运行中的搜索任务、线程池拒绝率、慢查询日志阈值 |
映射
工具 | 说明 |
| 索引和别名,包含文档数、大小和存储 |
| 扁平化的 |
| 分析器的分词结果,用于 0 结果匹配查询的调试 |
| 添加字段映射变更(写入门控) |
操作
工具 | 说明 |
| 快照清单和进度 |
| 快照所选索引,默认异步执行 |
| 恢复快照,包含预检以确保打开的索引不存在,并支持重命名 |
| 异步重建索引,支持查询、管道、脚本、切片过滤、节流;返回任务 ID |
| 轮询或取消长时间运行的任务 |
| 版本、发行版以及当前安全策略 |
配置
所有配置项均使用 ES_MCP_ 前缀,从环境变量或 .env 文件中读取。
配置项 | 默认值 | 用途 |
|
| 逗号分隔的地址;在这些可用的之间进行故障转移 |
| – | 选择其中一种认证方式 |
|
| TLS |
|
| 重试覆盖 429/502/503/504 和连接错误,采用 jittered backoff 并遵循 |
|
| 所有写入和破坏性操作的唯一总开关 |
|
| 对 restore、reindex、put_mapping 进行额外的二次门禁(第二道闸门) |
|
| 全局允许列表 |
|
| 全局拒绝列表;拒绝优先级更高 |
|
| 命中数限制 |
|
| 拒绝聚合桶数爆炸 |
|
| 每次查询的自定义超时和提前终止保护 |
|
| 结果字符数限制,控制 token 使用 |
| 未设置 | 每条工具调用及其结果的 JSONL 审计日志 |
|
| 日志输出到 stderr;stderr 仍然覆盖写入,这是为了实现 stdio 传输。 |
安全模型
四层独立防护,全部默认拒绝:
索引策略 —— 每次调用都检查允许列表和拒绝列表;索引权限拒绝优先;拒绝在集群范围内执行通配符写入。
只读 —— 除非
READ_ONLY=false,否则可变工具拒绝执行。破坏性操作门控(第二层) —— restore、reindex 和 put_mapping 额外需要
ALLOW_DESTRUCTIVE=true,且在调用时显式传入confirm=true。查询限制 —— 命中条数限制、聚合桶上限、嵌套聚合深度上限、深分页拒绝,以及注入搜索超时。
工具会以可读文本的形式返回错误(如 原因(run_query):...),而非抛出异常,让模型可以自行修正,而不是卡住。
推荐的生产环境做法:为 ES 创建专用的 API 密钥,仅对允许的索引授予 read 权限,并设置 READ_ONLY=true;只有在确实需要由助手执行 reindex/restore 时,才另开一个启用写入的实例。
扩展
在 src/es_mcp/tools/ 下添加一个模块,导出 register(server, ctx),并在 server.build_server 中进行接线。使用 ctx.guard 进行策略检查,用 ctx.render 处理输出,这样所有限制自动生效。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityCmaintenanceAn MCP server that enables interaction with Elasticsearch and OpenSearch clusters for searching documents and managing indices. It provides tools for cluster health monitoring, index configuration, and general API requests.16Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to interact with OpenSearch clusters to monitor cluster health, manage indices, and perform data searches. It provides a standardized interface for real-time OpenSearch operations within MCP-compatible environments like Open WebUI.
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to interact with OpenSearch clusters for searching indices, retrieving mappings, and managing shards through the MCP protocol.Apache 2.0
- AlicenseNot gradedqualityDmaintenanceRead-only MCP server for exploring and searching OpenSearch clusters, enabling log analysis, index exploration, and query execution.MIT
Related MCP Connectors
Search, document and execute authenticated API calls across 700+ apps via one MCP server
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Read-only Remote MCP for externally grounded AI agent trust receipts.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/baburajr/elasticsearch_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server