X

Elasticsearch

Information

# Elasticsearch/OpenSearch MCP Server [![MseeP.ai Security Assessment Badge](https://mseep.net/pr/cr7258-elasticsearch-mcp-server-badge.png)](https://mseep.ai/app/cr7258-elasticsearch-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. Elasticsearch MCP Server ## 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: \`\`\`bash # 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\`. \`\`\`json // For Elasticsearch \{ "mcpServers": \{ "elasticsearch-mcp-server": \{ "command": "uvx", "args": [ "elasticsearch-mcp-server" ], "env": \{ "ELASTICSEARCH_HOSTS": "https://localhost:9200", "ELASTICSEARCH_USERNAME": "elastic", "ELASTICSEARCH_PASSWORD": "test123" \} \} \} \} // 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\`. \`\`\`json // For Elasticsearch \{ "mcpServers": \{ "elasticsearch-mcp-server": \{ "command": "uv", "args": [ "--directory", "path/to/src/elasticsearch_mcp_server", "run", "elasticsearch-mcp-server" ], "env": \{ "ELASTICSEARCH_HOSTS": "https://localhost:9200", "ELASTICSEARCH_USERNAME": "elastic", "ELASTICSEARCH_PASSWORD": "test123" \} \} \} \} // For OpenSearch \{ "mcpServers": \{ "opensearch-mcp-server": \{ "command": "uv", "args": [ "--directory", "path/to/src/elasticsearch_mcp_server", "run", "opensearch-mcp-server" ], "env": \{ "OPENSEARCH_HOSTS": "https://localhost:9200", "OPENSEARCH_USERNAME": "admin", "OPENSEARCH_PASSWORD": "admin" \} \} \} \} \`\`\` ## SSE ### Option 1: Using uvx \`\`\`bash # 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 \`\`\`bash # 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 \`\`\`bash # 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 \`\`\`bash # 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). 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: \`\`\`bash uvx elasticsearch-mcp-server-es7 \`\`\` | 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 | ## License This project is licensed under the Apache License Version 2.0 - see the [LICENSE](LICENSE) file for details.

Prompts

Reviews

Tags


  • HaoZLi 2025-04-27 08:57
    Interesting:3,Helpfulness:3,Correctness:4

    Am I the only one who is curious about if the ES index MCP is not that useful? Not sure if it is designed for developer or just Claude end users without any search engine developing skills. If it's intended for Claude users without any developing skills who don't have knowledge of index and how to set up the ES index in the first place, it will be less helpful. If it's intended for experienced developers who at least know ES, index and search engine, using LLM to call ES and manipulate the API directly such as the list index, search index will be an additional wrapper of the business API. Why don't they just integrate the ES in the infra layer and give their custom API to Claude like find_my_preferred_documents() or find_all_bills().

Write Your Review

Detailed Ratings

ALL
Correctness
Helpfulness
Interesting
Upload Pictures and Videos

Name
Size
Type
Download
Last Modified
mcp_config_elastic_mcp-server-elasticsearch_1.json
253.0 B
json
mcp_config_elastic_mcp-server-elasticsearch_0.json
274.0 B
json
mcp_config_elastic_mcp-server-elasticsearch_docker_0.json
274.0 B
json

Upload Files

  • Community

Add Discussion

Upload Pictures and Videos