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
[](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.
Reply