Elasticsearch OpenSearch
STDIOElasticsearch/OpenSearch集成MCP服务器
Elasticsearch/OpenSearch集成MCP服务器
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.
https://github.com/user-attachments/assets/f7409e31-fac4-4321-9c94-b0ff2ea7ff15
general_api_request: Perform a general HTTP API request. Use this tool for any Elasticsearch/OpenSearch API that does not have a dedicated tool.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.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.get_cluster_health: Returns basic information about the health of the cluster.get_cluster_stats: Returns high-level overview of cluster statistics.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.The MCP server supports the following environment variables for authentication:
ELASTICSEARCH_USERNAME: Username for basic authenticationELASTICSEARCH_PASSWORD: Password for basic authenticationOPENSEARCH_USERNAME: Username for OpenSearch basic authenticationOPENSEARCH_PASSWORD: Password for OpenSearch basic authenticationELASTICSEARCH_API_KEY: API key for Elasticsearch or Elastic Cloud Authentication.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)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.
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" } } } }
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" } } } }
# 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
# 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
# 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
# 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
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
This project is licensed under the Apache License Version 2.0 - see the LICENSE file for details.