Elasticsearch MCP Server
概览
作者提供的说明(英文原文)
MCP server for interacting with Elasticsearch
PopNx MCP 的三大支柱
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
- 用户评价i暂无评价评价功能将在后续阶段与账户功能一起开放
- 我们的基础检查i3 项中通过 3 项依据公开信息检查;尚未扫描代码
- 使用情况i正在增长↓ 2711/周 · ★ 315
它能帮你做什么
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
- 连接方式: 在你的电脑上运行
- 传输方式: stdio
- 分类: 数据库与数据集
- 你需要填写:ELASTICSEARCH_API_KEY, ELASTICSEARCH_PASSWORD
安装
选择你使用的 AI 应用,然后复制设置。
安装之前
- 基础检查:3 项中通过 3 项
- 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
- 需要你自己填写:
ELASTICSEARCH_HOSTS,ELASTICSEARCH_API_KEY,ELASTICSEARCH_USERNAME,ELASTICSEARCH_PASSWORD,ELASTICSEARCH_VERIFY_CERTS
标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
- PyPI已安装 Python 的 uv(用于 uvx 命令)
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"elasticsearch": {
"command": "uvx",
"args": [
"elasticsearch-mcp-server"
],
"env": {
"ELASTICSEARCH_HOSTS": "your-value",
"ELASTICSEARCH_API_KEY": "your-value",
"ELASTICSEARCH_USERNAME": "your-value",
"ELASTICSEARCH_PASSWORD": "your-value",
"ELASTICSEARCH_VERIFY_CERTS": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add elasticsearch --env ELASTICSEARCH_HOSTS=your-value --env ELASTICSEARCH_API_KEY=your-value --env ELASTICSEARCH_USERNAME=your-value --env ELASTICSEARCH_PASSWORD=your-value --env ELASTICSEARCH_VERIFY_CERTS=your-value -- uvx elasticsearch-mcp-server运行前请先填写空着的值。
或者自己复制设置
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"elasticsearch": {
"command": "uvx",
"args": [
"elasticsearch-mcp-server"
],
"env": {
"ELASTICSEARCH_HOSTS": "your-value",
"ELASTICSEARCH_API_KEY": "your-value",
"ELASTICSEARCH_USERNAME": "your-value",
"ELASTICSEARCH_PASSWORD": "your-value",
"ELASTICSEARCH_VERIFY_CERTS": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
或者自己复制设置
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"elasticsearch": {
"type": "stdio",
"command": "uvx",
"args": [
"elasticsearch-mcp-server"
],
"env": {
"ELASTICSEARCH_HOSTS": "your-value",
"ELASTICSEARCH_API_KEY": "your-value",
"ELASTICSEARCH_USERNAME": "your-value",
"ELASTICSEARCH_PASSWORD": "your-value",
"ELASTICSEARCH_VERIFY_CERTS": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
需要你填写的值
ELASTICSEARCH_HOSTSenvComma-separated list of Elasticsearch hosts (e.g., https://localhost:9200)- API key for Elasticsearch or Elastic Cloud authentication (recommended)
ELASTICSEARCH_USERNAMEenvUsername for basic authentication (alternative to API key)- Password for basic authentication (used with ELASTICSEARCH_USERNAME)
ELASTICSEARCH_VERIFY_CERTSenvWhether to verify SSL certificates (true/false)
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它能做什么
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
基础检查i
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日
- ✓ 通过
作者与仓库一致
注册名称已通过 GitHub 账户 cr7258 验证,该账户拥有此仓库
- ✓ 通过
仍在维护
代码最后更新于20天前
- ✓ 通过
有许可证
使用 Apache-2.0
- – 不适用
端点有响应
它在你的电脑上运行,没有互联网端点
- – 不适用
使用 OAuth 登录
在你的电脑上运行,改用本地设置
- … 尚未检查
工具描述中没有隐藏指令
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与“数据库与数据集”中的其他服务器比较i
- 星标数多于此分类中其他 1144 个服务器的 100%
- 发布到注册中心的时间比此分类中其他 1144 个服务器的 0% 更新
- 基础检查结果等于或优于此分类中其他 1144 个服务器的 100%
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
常见问题
Elasticsearch MCP Server 安全吗?
它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
它需要哪些密钥或代码?
你需要填写:ELASTICSEARCH_API_KEY, ELASTICSEARCH_PASSWORD
它在我的电脑上运行还是在云端?
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
它还在维护吗?
GitHub 仓库最后更新于20天前,最新版本(2.0.15)于14个月前进入注册中心。
哪些应用可以使用它?
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。
有什么可以替代它?
同一分类中有:Supabase, MongoDB MCP Server, Postgres MCP
替代选择
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Postgres MCP
Enterprise PostgreSQL MCP server with NL queries, hybrid search (pgvector+BM25), and web UI
作者的 README
打开 README
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Elasticsearch/OpenSearch MCP Server
Overview
A Model Context Protocol (MCP) server implementation that provides Elasticsearch and OpenSearch interaction. This server enables searching documents, analyzing indices, and managing cluster through a set of tools.
Demo
https://github.com/user-attachments/assets/f7409e31-fac4-4321-9c94-b0ff2ea7ff15
Features
General Operations
general_api_request: Perform a general HTTP API request. Use this tool for any Elasticsearch/OpenSearch API that does not have a dedicated tool.
Index Operations
list_indices: List all indices.get_index: Returns information (mappings, settings, aliases) about one or more indices.create_index: Create a new index.delete_index: Delete an index.create_data_stream: Create a new data stream (requires matching index template).get_data_stream: Get information about one or more data streams.delete_data_stream: Delete one or more data streams and their backing indices.
Document Operations
search_documents: Search for documents.index_document: Creates or updates a document in the index.get_document: Get a document by ID.delete_document: Delete a document by ID.delete_by_query: Deletes documents matching the provided query.
Cluster Operations
get_cluster_health: Returns basic information about the health of the cluster.get_cluster_stats: Returns high-level overview of cluster statistics.
Alias Operations
list_aliases: List all aliases.get_alias: Get alias information for a specific index.put_alias: Create or update an alias for a specific index.delete_alias: Delete an alias for a specific index.
Analyzer Operations
analyze_text: Analyze text using a specified analyzer or custom analysis chain. Useful for debugging search queries and understanding how text is tokenized.
Configure Environment Variables
The MCP server supports the following environment variables:
Basic Authentication (Username/Password)
ELASTICSEARCH_USERNAME: Username for basic authenticationELASTICSEARCH_PASSWORD: Password for basic authenticationOPENSEARCH_USERNAME: Username for OpenSearch basic authenticationOPENSEARCH_PASSWORD: Password for OpenSearch basic authentication
API Key Authentication (Elasticsearch only) - Recommended
ELASTICSEARCH_API_KEY: API key for Elasticsearch or Elastic Cloud Authentication.
Connection Settings
ELASTICSEARCH_HOSTS/OPENSEARCH_HOSTS: Comma-separated list of hosts (default:https://localhost:9200)ELASTICSEARCH_CLUSTERS/OPENSEARCH_CLUSTERS: Inline JSON object for named cluster configurations. When set, tools can target a specific cluster with the optionalclusterparameter.ELASTICSEARCH_CLUSTERS_FILE/OPENSEARCH_CLUSTERS_FILE: Path to a JSON file with the clusters object. Recommended when the configuration is embedded inside another JSON file (e.g. the MCP client config) because it avoids JSON-in-JSON escaping. Takes precedence over the inline variable when both are set.DEFAULT_CLUSTER: Default cluster name to use when multi-cluster configuration is set and a tool call omitscluster(defaults to the first configured cluster).VERIFY_CERTS: Whether to verify SSL certificates (default:false)REQUEST_TIMEOUT: Request timeout in seconds (optional, uses client default if not set)
Multiple Cluster Configuration
By default, the server uses a single Elasticsearch cluster from ELASTICSEARCH_HOSTS, ELASTICSEARCH_USERNAME, ELASTICSEARCH_PASSWORD, and ELASTICSEARCH_API_KEY, or a single OpenSearch cluster from OPENSEARCH_HOSTS, OPENSEARCH_USERNAME, and OPENSEARCH_PASSWORD. To configure multiple named clusters, set ELASTICSEARCH_CLUSTERS (or OPENSEARCH_CLUSTERS) to a JSON object inside the MCP server configuration. Because the value is a JSON string embedded in another JSON file, the inner quotes need to be escaped:
{
"mcpServers": { "elasticsearch-mcp-server": { "command": "uvx", "args": [ "elasticsearch-mcp-server" ], "env": { "ELASTICSEARCH_CLUSTERS": "{\"prod\": {\"hosts\": [\"https://prod-es:9200\"], \"api_key\": \" \", \"verify_certs\": true}, \"staging\": {\"hosts\": [\"https://staging-es:9200\"], \"username\": \"elastic\", \"password\": \" \"}}", "DEFAULT_CLUSTER": "prod" } } } }
For better readability, point ELASTICSEARCH_CLUSTERS_FILE (or OPENSEARCH_CLUSTERS_FILE) at a standalone JSON file instead. The value is just a path so it avoids the JSON-in-JSON escaping:
{
"mcpServers": { "elasticsearch-mcp-server": { "command": "uvx", "args": [ "elasticsearch-mcp-server" ], "env": { "ELASTICSEARCH_CLUSTERS_FILE": "/etc/mcp/es-clusters.json", "DEFAULT_CLUSTER": "prod" } } } }
/etc/mcp/es-clusters.json:
{
"prod": { "hosts": ["https://prod-es:9200"], "api_key": " ", "verify_certs": true }, "staging": { "hosts": ["https://staging-es:9200"], "username": "elastic", "password": " " } }
Every tool accepts an optional cluster parameter. If omitted, the server uses DEFAULT_CLUSTER. When DEFAULT_CLUSTER is not set, the first cluster in the JSON object is used as the default. A tool call targeting a specific cluster looks like:
{
"cluster": "staging", "index": "logs-*", "body": { "query": { "match_all": {} } } }
MCP Server Authentication (HTTP Transports Only)
When running the MCP server with HTTP-based transports (SSE or Streamable HTTP), you can enable Bearer token authentication to protect the server from unauthorized access.
MCP_API_KEY: API key for MCP server authentication. Clients must includeAuthorization: Bearerheader.
Important Security Notes:
- Authentication is only applicable for HTTP transports (
sse,streamable-http). Thestdiotransport uses local process communication and doesn't require authentication. - If
MCP_API_KEYis not set, the MCP server will be accessible without authentication. This is a security risk when exposing the server over a network. - For production deployments with HTTP transports, always set `MCP_API_KEY`.
# Generate a secure API key (example using openssl)
export MCP_API_KEY=$(openssl rand -base64 32)
Or set a custom API key
export MCP_API_KEY="your-secure-api-key-here"
Disable High-Risk Operations
DISABLE_HIGH_RISK_OPERATIONS: Set totrueto disable all write operations (default:false)DISABLE_OPERATIONS: Comma-separated list of specific operations to disable (optional, uses default write operations list if not set)
When DISABLE_HIGH_RISK_OPERATIONS is set to true, all MCP tools that perform write operations are completely hidden from the MCP client. In this mode, the following MCP tools are disabled by default.
- Index Operations:
create_indexdelete_index
- Document Operations:
index_documentdelete_documentdelete_by_query
- Data Stream Operations:
create_data_streamdelete_data_stream
- Alias Operations:
put_aliasdelete_alias
- General API Operations:
general_api_request
Optionally, you can specify a comma-separated list of operations to disable in the DISABLE_OPERATIONS environment variable.
# Disable High-Risk Operations
export DISABLE_HIGH_RISK_OPERATIONS=true
Disable specific operations only
export DISABLE_OPERATIONS="delete_index,delete_document,delete_by_query"
GCF Response Encoding (optional)
Opt in to serialize tool-result payloads as GCF (Graph Compact Format), a token-optimized wire format, in the content block the model reads. Elasticsearch returns large, uniform record sets (search hits, aggregation buckets, mappings), the shape GCF compacts best: on representative responses it is ~39% fewer tokens than compact JSON (40% on search hits), losslessly.
export RESPONSE_FORMAT=gcf
structuredContent is preserved unchanged, so a tool's declared output schema still validates and any non-model client keeps receiving JSON; only the model-facing text block is re-encoded. Encoding is fail-safe: any error, including a value outside GCF's canonical int64 numeric domain (which GCF rejects rather than silently approximating), leaves the original JSON result untouched, so a tool call is never dropped over encoding. Default behavior is unchanged when RESPONSE_FORMAT is unset.
Reproduce the token comparison: uv run --with tiktoken python benchmarks/gcf_benchmark.py.
Start Elasticsearch/OpenSearch Cluster
Start the Elasticsearch/OpenSearch cluster using Docker Compose:
# For Elasticsearch
docker-compose -f docker-compose-elasticsearch.yml up -d
For OpenSearch
docker-compose -f docker-compose-opensearch.yml up -d
The default Elasticsearch username is elastic and password is test123. The default OpenSearch username is admin and password is admin.
You can access Kibana/OpenSearch Dashboards from http://localhost:5601.
Stdio
Option 1: Using uvx
Using uvx will automatically install the package from PyPI, no need to clone the repository locally. Add the following configuration to 's config file claude_desktop_config.json.
// For Elasticsearch with username/password
{ "mcpServers": { "elasticsearch-mcp-server": { "command": "uvx", "args": [ "elasticsearch-mcp-server" ], "env": { "ELASTICSEARCH_HOSTS": "https://localhost:9200", "ELASTICSEARCH_USERNAME": "elastic", "ELASTICSEARCH_PASSWORD": "test123" } } } }
// For Elasticsearch with API key { "mcpServers": { "elasticsearch-mcp-server": { "command": "uvx", "args": [ "elasticsearch-mcp-server" ], "env": { "ELASTICSEARCH_HOSTS": "https://localhost:9200", "ELASTICSEARCH_API_KEY": " " } } } }
// For OpenSearch { "mcpServers": { "opensearch-mcp-server": { "command": "uvx", "args": [ "opensearch-mcp-server" ], "env": { "OPENSEARCH_HOSTS": "https://localhost:9200", "OPENSEARCH_USERNAME": "admin", "OPENSEARCH_PASSWORD": "admin" } } } }
Option 2: Using uv with local development
Using uv requires cloning the repository locally and specifying the path to the source code. Add the following configuration to Claude Desktop's config file claude_desktop_config.json.
// For Elasticsearch with username/password
{ "mcpServers": { "elasticsearch-mcp-server": { "command": "uv", "args": [ "--directory", "path/to/elasticsearch-mcp-server", "run", "elasticsearch-mcp-server" ], "env": { "ELASTICSEARCH_HOSTS": "https://localhost:9200", "ELASTICSEARCH_USERNAME": "elastic", "ELASTICSEARCH_PASSWORD": "test123" } } } }
// For Elasticsearch with API key { "mcpServers": { "elasticsearch-mcp-server": { "command"