X

Elasticsearch

Information

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/OpenSearch MCP Server [![smithery badge](https://smithery.ai/badge/elasticsearch-mcp-server)](https://smithery.ai/server/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. ## Demo https://github.com/user-attachments/assets/f7409e31-fac4-4321-9c94-b0ff2ea7ff15 ## Features ### 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. ## Usage with Claude Desktop ### Option 1: Installing via Smithery To install Elasticsearch Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/elasticsearch-mcp-server): \`\`\`bash npx -y @smithery/cli install elasticsearch-mcp-server --client claude \`\`\` ### Option 2: Using uvx Using \`uvx\` will automatically install the package from PyPI, no need to clone the repository locally. Add the following configuration to Claude Desktop'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 3: 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" \} \} \} \} \`\`\` - On macOS: \`~/Library/Application Support/Claude/claude_desktop_config.json\` - On Windows: \`%APPDATA%/Claude/claude_desktop_config.json\` Restart Claude Desktop to load the new MCP server. Now you can interact with your Elasticsearch/OpenSearch cluster through Claude using natural language commands like: - "List all indices in the cluster" - "How old is the student Bob?" - "Show me the cluster health status" ## Usage with Anthropic MCP Client \`\`\`python uv run mcp_client/client.py src/server.py \`\`\` ## 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
Last Modified