elasticsearch-mcp-server
io.github.cr7258/elasticsearch-mcp-server
About elasticsearch-mcp-server
elasticsearch-mcp-server is an MCP server published by the GitHub account cr7258. MCP server for interacting with Elasticsearch
It runs on your own machine: your AI client starts it from the PyPI package elasticsearch-mcp-server at version 2.0.15.
It asks for 2 secrets: ELASTICSEARCH_API_KEY and ELASTICSEARCH_PASSWORD. Give it a key with the least access that still works.
Version 2.0.15 was published on 15 September 2025, and the source code is public, so you can read it before installing.
Written from the registry entry. 9 automated checks on the registry entry and the package code: 7 pass, 0 warn, 0 fail, 2 info. How we check.
What it asks for
| Variable | Required | Secret | Description |
|---|---|---|---|
ELASTICSEARCH_HOSTS | No | No | Comma-separated list of Elasticsearch hosts (e.g., https://localhost:9200) |
ELASTICSEARCH_API_KEY | No | Yes | API key for Elasticsearch or Elastic Cloud authentication (recommended) |
ELASTICSEARCH_USERNAME | No | No | Username for basic authentication (alternative to API key) |
ELASTICSEARCH_PASSWORD | No | Yes | Password for basic authentication (used with ELASTICSEARCH_USERNAME) |
ELASTICSEARCH_VERIFY_CERTS | No | No | Whether to verify SSL certificates (true/false) |
Checks
| Check | Result | Detail |
|---|---|---|
| Source repository linked | Pass | https://github.com/cr7258/elasticsearch-mcp-server |
| Version pinned | Pass | Every package has an explicit version |
| Secrets requested | Info | Asks for 2 secrets: ELASTICSEARCH_API_KEY, ELASTICSEARCH_PASSWORD |
| Known package registry | Pass | All packages come from npm, PyPI, OCI, NuGet or MCPB |
| Namespace ownership | Info | Name verified via GitHub account cr7258 |
| Registry text aimed at the AI | Pass | Description and settings contain no hidden characters or instructions to the AI |
| Install scripts | Pass | elasticsearch-mcp-server 2.0.15 has no setup.py; nothing runs at install |
| Code red flags | Pass | Read 39 files in elasticsearch-mcp-server 2.0.15: no obfuscation, encoded execution, credential reads or data-collection endpoints found |
| Text aimed at the AI | Pass | No hidden characters or instructions to the AI in 39 files, including comments and the README |
Code review: Pass, with notes
We read all 867 lines in 22 files of elasticsearch-mcp-server 2.0.15 on 2026-10-31, without running it.
Lets an AI search and manage an Elasticsearch or OpenSearch cluster you point it at; it talks only to that cluster. Watch out: it skips TLS certificate checks unless you set VERIFY_CERTS=true, and it includes delete tools and a raw API tool with no read-only switch, so use a limited-permission account.
What we found
- Note TLS certificate verification is OFF by default (VERIFY_CERTS defaults to 'false') and the insecure-request warnings are silenced, so credentials can be intercepted on a hostile network unless the user sets *_VERIFY_CERTS=true.
src/clients/__init__.py:28 + src/clients/base.py:28-39 - Note Destructive tools (delete_index, delete_document, delete_by_query, delete_data_stream, delete_alias) are always registered; this version has no read-only mode or confirmation step.
src/tools/index.py:36-44, document.py:44-64, data_stream.py:37-47, alias.py:36-45 - Note general_api_request lets the AI send any HTTP method to any path on the configured cluster (e.g. cluster settings, snapshot deletes). The base URL is fixed, so it cannot reach other hosts.
src/tools/general.py:9-20 - Note load_dotenv() reads a .env from whatever directory the server is started in.
src/clients/__init__.py:19 - Info HTTP transports bind 127.0.0.1 by default (safe); there is no auth on the MCP endpoint if the user binds wider.
src/server.py:90-92 - Info No pyproject/METADATA in the reviewed copy; dependencies are taken from imports. No obfuscation, install hooks, dynamic code, or hard-coded secrets.
package - Info lines_read (867) is the real line count of every file (Read tool / splitlines). The manifest's 886 counts one extra empty 'line' after the trailing newline of 19 files; no file or line was skipped.
manifest.tsv
| Talks to | ELASTICSEARCH_HOSTS / OPENSEARCH_HOSTS (default https://localhost:9200): search queries, documents, index/alias/data-stream operations, and arbitrary REST calls from general_api_request, with basic auth or ApiKey header (only when a tool is called (client objects are created at startup but do not send until used)) |
|---|---|
| Keys and settings | ELASTICSEARCH_HOSTS / OPENSEARCH_HOSTS: local (target cluster URLs)ELASTICSEARCH_USERNAME / ELASTICSEARCH_PASSWORD (or OPENSEARCH_*): the configured cluster (basic auth)ELASTICSEARCH_API_KEY / OPENSEARCH_API_KEY: the configured cluster (Authorization: ApiKey)ELASTICSEARCH_VERIFY_CERTS / OPENSEARCH_VERIFY_CERTS: local (TLS setting, default false) |
| Files on your machine | Calls load_dotenv(), so a .env file in the working directory is read into the environment. No other file reads or writes. |
| Runs programs | None. No subprocess, eval or exec. |
| Telemetry | None. |
| Tools | list_indices, get_index, create_index, delete_index, search_documents, index_document, get_document, delete_document, delete_by_query, get_cluster_health, get_cluster_stats, list_aliases, get_alias, put_alias, delete_alias, create_data_stream, get_data_stream, delete_data_stream, general_api_request |
| Tool descriptions | clean |
This covers the package's own code only, not the 7 packages it depends on (fastmcp, mcp, elasticsearch, opensearch-py (opensearchpy), httpx, python-dotenv, urllib3 (optional import)). A new version drops this review until we read it again.
Popularity & health: 76 / 100
Worked out from public numbers and our own checks, not from user reviews or ratings. It says how used and how looked-after a server is, not whether it is safe.
67 forks, 46 merged pull requests. Sources: GitHub, npm, PyPI (pypistats.org) and Hacker News (Algolia), fetched 2026-10-31.
What people say
No Hacker News threads link to its source code.
Look further: search Reddit, search Hacker News, read its GitHub issues. These are not reviews we checked.
Facts
| Registry name | io.github.cr7258/elasticsearch-mcp-server |
|---|---|
| Publisher | GitHub account cr7258 |
| How the name is verified | Name verified via GitHub account cr7258. The registry ties the name prefix to that account or domain; it does not check the code. |
| Type | Local: runs on your machine from a package |
| Packages | pypi elasticsearch-mcp-server 2.0.15 (stdio) |
| Version | 2.0.15 |
| Published | |
| Last updated | |
| Source repository | https://github.com/cr7258/elasticsearch-mcp-server |
| Website | None linked |
| Category | Databases & data (assigned by keyword rule, not by hand) |
Related servers in Databases & data
- esmole7/7Elasticsearch 7.x/8.x with connections managed at runtime by the…
- Elasticsearch7/7Elasticsearch MCP Server for ES 5.x-9.x with a query harness, field…
- Databases (read-only, switchable)7/8Read-only SQL, MongoDB, Redis and Elasticsearch access, switchable…
- kibana-mcp7/7Kibana/Elasticsearch MCP — log search, aggregations, index…
Supabase8/8MCP server for interacting with the Supabase platform- postgres7/7MCP server for interacting with PostgreSQL databases