- Explore MCP Servers
- elasticsearch
Elasticsearch
What is Elasticsearch
The Elasticsearch/OpenSearch MCP Server is an implementation of the Model Context Protocol (MCP) that facilitates interactions with Elasticsearch and OpenSearch. It provides a suite of tools for searching documents, analyzing indices, and managing clusters, making it a valuable resource for developers and data engineers working with these search engines.
Use cases
This MCP server is useful for various tasks, such as managing large sets of data, performing advanced searches, and conducting analytics on indexed documents. It can also aid in managing index and cluster health, enabling users to optimize their search capabilities and ensure queries return relevant data efficiently.
How to use
To use the MCP server, users can configure environment variables and start the Elasticsearch or OpenSearch cluster using Docker Compose. The server can be run via command-line tools such as uvx or uv, with specific configurations for handling different transport methods like SSE or streamable HTTP.
Key features
Key features of the MCP server include general API requests, index and document management (creation, deletion, and updating), cluster health and statistics monitoring, and alias operations. This provides a comprehensive toolset for managing and manipulating data within Elasticsearch or OpenSearch environments.
Where to use
The Elasticsearch/OpenSearch MCP Server can be used in various environments, including local development for testing and prototyping, as well as in production systems where robust data management and advanced search functionalities are essential, such as e-commerce platforms, analytics applications, and large-scale content management systems.
Overview
What is Elasticsearch
The Elasticsearch/OpenSearch MCP Server is an implementation of the Model Context Protocol (MCP) that facilitates interactions with Elasticsearch and OpenSearch. It provides a suite of tools for searching documents, analyzing indices, and managing clusters, making it a valuable resource for developers and data engineers working with these search engines.
Use cases
This MCP server is useful for various tasks, such as managing large sets of data, performing advanced searches, and conducting analytics on indexed documents. It can also aid in managing index and cluster health, enabling users to optimize their search capabilities and ensure queries return relevant data efficiently.
How to use
To use the MCP server, users can configure environment variables and start the Elasticsearch or OpenSearch cluster using Docker Compose. The server can be run via command-line tools such as uvx or uv, with specific configurations for handling different transport methods like SSE or streamable HTTP.
Key features
Key features of the MCP server include general API requests, index and document management (creation, deletion, and updating), cluster health and statistics monitoring, and alias operations. This provides a comprehensive toolset for managing and manipulating data within Elasticsearch or OpenSearch environments.
Where to use
The Elasticsearch/OpenSearch MCP Server can be used in various environments, including local development for testing and prototyping, as well as in production systems where robust data management and advanced search functionalities are essential, such as e-commerce platforms, analytics applications, and large-scale content management systems.
Content
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.
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
Copy the .env.example
file to .env
and update the values accordingly.
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
.
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
.
SSE
Option 1: Using uvx
# export environment variables
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_USERNAME="elastic"
export ELASTICSEARCH_PASSWORD="test123"
# 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
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_USERNAME="elastic"
export ELASTICSEARCH_PASSWORD="test123"
# 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
License
This project is licensed under the Apache License Version 2.0 - see the LICENSE file for details.