io.github.cr7258/elasticsearch-mcp-server
MCP server for seamless interaction with Elasticsearch and OpenSearch.
Key Features
Use Cases
README
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.
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_VERIFY_CERTS/OPENSEARCH_VERIFY_CERTS: Whether to verify SSL certificates (default:false)
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"
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": "<YOUR_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": "uv",
"args": [
"--directory",
"path/to/elasticsearch-mcp-server",
"run",
"elasticsearch-mcp-server"
],
"env": {
"ELASTICSEARCH_HOSTS": "https://localhost:9200",
"ELASTICSEARCH_API_KEY": "<YOUR_ELASTICSEARCH_API_KEY>"
}
}
}
}
// For OpenSearch
{
"mcpServers": {
"opensearch-mcp-server": {
"command": "uv",
"args": [
"--directory",
"path/to/elasticsearch-mcp-server",
"run",
"opensearch-mcp-server"
],
"env": {
"OPENSEARCH_HOSTS": "https://localhost:9200",
"OPENSEARCH_USERNAME": "admin",
"OPENSEARCH_PASSWORD": "admin"
}
}
}
}
SSE
Option 1: Using uvx
# export environment variables (with username/password)
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_USERNAME="elastic"
export ELASTICSEARCH_PASSWORD="test123"
# OR export environment variables (with API key)
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_API_KEY="<YOUR_ELASTICSEARCH_API_KEY>"
# By default, the SSE MCP server will serve on http://127.0.0.1:8000/sse
uvx elasticsearch-mcp-server --transport sse
# The host, port, and path can be specified using the --host, --port, and --path options
uvx elasticsearch-mcp-server --transport sse --host 0.0.0.0 --port 8000 --path /sse
Option 2: Using uv
# By default, the SSE MCP server will serve on http://127.0.0.1:8000/sse
uv run src/server.py elasticsearch-mcp-server --transport sse
# The host, port, and path can be specified using the --host, --port, and --path options
uv run src/server.py elasticsearch-mcp-server --transport sse --host 0.0.0.0 --port 8000 --path /sse
Streamable HTTP
Option 1: Using uvx
# export environment variables (with username/password)
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_USERNAME="elastic"
export ELASTICSEARCH_PASSWORD="test123"
# OR export environment variables (with API key)
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_API_KEY="<YOUR_ELASTICSEARCH_API_KEY>"
# By default, the Streamable HTTP MCP server will serve on http://127.0.0.1:8000/mcp
uvx elasticsearch-mcp-server --transport streamable-http
# The host, port, and path can be specified using the --host, --port, and --path options
uvx elasticsearch-mcp-server --transport streamable-http --host 0.0.0.0 --port 8000 --path /mcp
Option 2: Using uv
# By default, the Streamable HTTP MCP server will serve on http://127.0.0.1:8000/mcp
uv run src/server.py elasticsearch-mcp-server --transport streamable-http
# The host, port, and path can be specified using the --host, --port, and --path options
uv run src/server.py elasticsearch-mcp-server --transport streamable-http --host 0.0.0.0 --port 8000 --path /mcp
Compatibility
The MCP server is compatible with Elasticsearch 7.x, 8.x, and 9.x. By default, it uses the Elasticsearch 8.x client (without a suffix).
| MCP Server | Elasticsearch |
|---|---|
| elasticsearch-mcp-server-es7 | Elasticsearch 7.x |
| elasticsearch-mcp-server | Elasticsearch 8.x |
| elasticsearch-mcp-server-es9 | Elasticsearch 9.x |
| opensearch-mcp-server | OpenSearch 1.x, 2.x, 3.x |
To use the Elasticsearch 7.x client, run the elasticsearch-mcp-server-es7 variant. For Elasticsearch 9.x, use elasticsearch-mcp-server-es9. For example:
uvx elasticsearch-mcp-server-es7
If you want to run different Elasticsearch variants (e.g., 7.x or 9.x) locally, simply update the elasticsearch dependency version in pyproject.toml, then start the server with:
uv run src/server.py elasticsearch-mcp-server
License
This project is licensed under the Apache License Version 2.0 - see the LICENSE file for details.
Star History
Repository Owner
User
Repository Details
Programming Languages
Tags
Join Our Newsletter
Stay updated with the latest AI tools, news, and offers by subscribing to our weekly newsletter.
Related MCPs
Discover similar Model Context Protocol servers
Open-WebSearch MCP Server
Multi-engine web search MCP server without API keys
Open-WebSearch MCP Server is a Model Context Protocol (MCP) compliant server offering web search functionalities using multiple search engines without the need for API keys or authentication. It provides structured search results with titles, URLs, and descriptions, and enables fetching of article content from supported sources such as CSDN and GitHub. The server supports extensive configuration through environment variables, including proxy settings and search engine customization. Designed for flexibility, it operates in both HTTP and stdio modes, making it suitable for integration into larger systems.
- ⭐ 463
- MCP
- Aas-ee/open-webSearch
JVM MCP Server
Lightweight multi-agent protocol server for JVM monitoring and diagnostics.
JVM MCP Server provides a lightweight, zero-dependency server that implements the Multi-Agent Communication Protocol for monitoring and diagnosing Java applications. It leverages native JDK tools to enable powerful AI agent interactions for gathering JVM metrics, analyzing memory and threads, and performing advanced diagnostics without relying on third-party software. The server supports both local and remote Java environments through SSH, ensuring cross-platform compatibility and secure operation.
- ⭐ 71
- MCP
- xzq-xu/jvm-mcp-server
SafeDep VET
Enterprise-grade open source software supply chain security with MCP capabilities.
SafeDep VET is an open source tool that provides supply chain security for open source software, featuring advanced software composition analysis and policy-as-code driven security enforcement. It supports multiple package ecosystems and integrates with CI/CD pipelines. Notably, it offers an MCP (Model Context Protocol) server mode to vet open source packages arising from AI-suggested code, and includes agent-based querying and scan result analysis powered by AI. The tool enables real-time malicious package detection through cloud integration and prioritizes actionable insights by analyzing actual code usage.
- ⭐ 829
- MCP
- safedep/vet
Postman MCP Server
MCP-compliant server providing full access to the Postman API.
Postman MCP Server is a TypeScript-based implementation of an MCP server that offers extensive integration with the Postman API. It enables management of Postman collections, environments, and APIs while supporting advanced features like authentication, webhooks, and enterprise controls. The project is part of the Model Context Protocol initiative and adheres to MCP standards for model context integration. Designed with developers in mind, it provides CRUD operations, version control, and seamless automation capabilities.
- ⭐ 143
- MCP
- delano/postman-mcp-server
MacOS Resource Monitor MCP Server
Lightweight MCP server for monitoring CPU, memory, and network usage on macOS.
MacOS Resource Monitor MCP Server provides real-time monitoring of system resources on macOS devices, exposing an MCP endpoint for integration with LLMs or other clients. It identifies resource-intensive processes across CPU, memory, and network, delivering structured JSON outputs. The server offers advanced filtering, sorting, and system overviews, assisting in performance analysis and bottleneck identification. Designed for seamless integration and lightweight system monitoring.
- ⭐ 16
- MCP
- Pratyay/mac-monitor-mcp
Octomind MCP Server
Let agents create and manage automated end-to-end tests with Octomind.
Octomind MCP Server enables agents to interact with Octomind's end-to-end testing platform, allowing the creation, execution, and management of automated tests. It provides a server that integrates with various clients and allows for configuration, session management, and access to multiple testing tools and resources. The server supports extensible session storage options and integrates with external platforms like TestRail and Redis for advanced scenarios. It is designed to facilitate local development and enhance test management workflows.
- ⭐ 21
- MCP
- OctoMind-dev/octomind-mcp
Didn't find tool you were looking for?