Elasticsearch MCP Server
Demo
Feature Overview
Available Features
Cluster Management
- `elasticsearch_health`: Get Elasticsearch cluster health status, optionally including index-level details
Index Operations
- `list_indices`: List available Elasticsearch indices, support regex
- `create_index`: Create Elasticsearch index with optional settings and mappings
- `reindex`: Reindex data from a source index to a target index with optional query and script
Mapping Management
- `get_mappings`: Get field mappings for a specific Elasticsearch index
- `create_mapping`: Create or update mapping structure for an Elasticsearch index
Search & Data Operations
- `search`: Perform an Elasticsearch search with the provided query DSL
- `bulk`: Bulk data into an Elasticsearch index
Template Management
- `create_index_template`: Create or update an index template
- `get_index_template`: Get information about index templates
- `delete_index_template`: Delete an index template
How It Works
- The MCP Client analyzes your request and determines which Elasticsearch operations are needed.
- The MCP server carries out these operations (listing indices, fetching mappings, performing searches).
- The MCP Client processes the results and presents them in a user-friendly format.
Getting Started
Prerequisites
- An Elasticsearch instance
- Elasticsearch authentication credentials (API key or username/password)
- MCP Client (e.g. Claude Desktop, Cursor)
Installation & Setup
Using the Published NPM Package
[!TIP] The easiest way to use Elasticsearch MCP Server is through the published npm package.
- **Configure MCP Client** - Open your MCP Client. See the [list of MCP Clients](https://modelcontextprotocol.io/clients), here we are configuring Claude Desktop. - Go to **Settings > Developer > MCP Servers** - Click `Edit Config` and add a new MCP Server with the following configuration: ```json { "mcpServers": { "elasticsearch-mcp": { "command": "npx", "args": [ "-y", "@awesome-ai/elasticsearch-mcp" ], "env": { "ES_HOST": "your-elasticsearch-host", "ES_API_KEY": "your-api-key" } } } } ```
- **Start a Conversation** - Open a new conversation in your MCP Client. - The MCP server should connect automatically. - You can now ask questions about your Elasticsearch data.
Configuration Options
[!NOTE] You must provide either an API key or both username and password for authentication.
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
Local Development
[!NOTE] If you want to modify or extend the MCP Server, follow these local development steps.
- **Use the correct Node.js version** ```bash nvm use ```
- **Install Dependencies** ```bash npm install ```
- **Build the Project** ```bash npm run build ```
- **Run locally in Claude Desktop App** - Open **Claude Desktop App** - Go to **Settings > Developer > MCP Servers** - Click `Edit Config` and add a new MCP Server with the following configuration: ```json { "mcpServers": { "elasticsearch-mcp": { "command": "node", "args": [ "/path/to/your/project/dist/index.js" ], "env": { "ES_HOST": "your-elasticsearch-host", "ES_API_KEY": "your-api-key" } } } } ```
- **Run locally in Cursor Editor** - Open **Cursor Editor** - Go to **Cursor Settings > MCP** - Click `Add new global MCP Server` and add a new MCP Server with the following configuration: ```json { "mcpServers": { "elasticsearch-mcp": { "command": "node", "args": [ "/path/to/your/project/dist/index.js" ], "env": { "ES_HOST": "your-elasticsearch-host", "ES_API_KEY": "your-api-key" } } } } ```
- **Debugging with MCP Inspector** ```bash ES_HOST=your-elasticsearch-url ES_API_KEY=your-api-key npm run inspector ``` This will start the MCP Inspector, allowing you to debug and analyze requests. You should see: ```bash Starting MCP inspector... Proxy server listening on port 6277 MCP Inspector is up and running at http://127.0.0.1:6274 ```
Example Queries
[!TIP] Here are some natural language queries you can try with your MCP Client.
Cluster Management
- "What is the health status of my Elasticsearch cluster?"
- "How many active nodes are in my cluster?"
Index Operations
- "What indices do I have in my Elasticsearch cluster?"
- "Create a new index called 'users' with 3 shards and 1 replica."
- "Reindex data from 'old_index' to 'new_index'."
Mapping Management
- "Show me the field mappings for the 'products' index."
- "Add a keyword type field called 'tags' to the 'products' index."
Search & Data Operations
- "Find all orders over $500 from last month."
- "Which products received the most 5-star reviews?"
- "Bulk import these customer records into the 'customers' index."
Template Management
- "Create an index template for logs with pattern 'logs-*'."
- "Show me all my index templates."
- "Delete the 'outdated_template' index template."