Elasticsearch/OpenSearch MCP Server

1

Add it to Claude Code

Run this in a terminal.

Run in terminal
claude mcp add -e "ELASTICSEARCH_HOSTS=${ELASTICSEARCH_HOSTS}" -e "ELASTICSEARCH_USERNAME=${ELASTICSEARCH_USERNAME}" -e "ELASTICSEARCH_PASSWORD=${ELASTICSEARCH_PASSWORD}" elasticsearch-opensearch -- uvx elasticsearch-mcp-server
Required:ELASTICSEARCH_HOSTSELASTICSEARCH_USERNAMEELASTICSEARCH_PASSWORD+ 1 optional
README.md

Interact with Elasticsearch and OpenSearch clusters for search and management.

Elasticsearch/OpenSearch 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.

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:

# 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.

// 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.

// For Elasticsearch
{
  "mcpServers": {
    "elasticsearch-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "path\\to_folder_proyect\\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_folder_proyect\\elasticsearch-mcp-server",
        "run",
        "opensearch-mcp-server"
      ],
      "env": {
        "OPENSEARCH_HOSTS": "https://localhost:9200",
        "OPENSEARCH_USERNAME": "admin",
        "OPENSEARCH_PASSWORD": "admin",
        "OPENSEARCH_VERIFY_CERTS": "false"
      }
    }
  }
}

SSE

Option 1: Using uvx

# 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


py -m pip install u #LOCAL MACHINE
pip install uv     #VIRTUAL ENV

# By default, the SSE MCP server will serve on http://127.0.0.1:8000/sse
uv run src/s

Tools (16)

general_api_requestPerform a general HTTP API request for Elasticsearch/OpenSearch.
list_indicesList all indices.
get_indexReturns information about one or more indices.
create_indexCreate a new index.
delete_indexDelete an index.
search_documentsSearch for documents.
index_documentCreates or updates a document in the index.
get_documentGet a document by ID.
delete_documentDelete a document by ID.
delete_by_queryDeletes documents matching the provided query.
get_cluster_healthReturns basic information about the health of the cluster.
get_cluster_statsReturns high-level overview of cluster statistics.
list_aliasesList all aliases.
get_aliasGet alias information for a specific index.
put_aliasCreate or update an alias for a specific index.
delete_aliasDelete an alias for a specific index.

Environment Variables

ELASTICSEARCH_HOSTSrequiredThe URL of the Elasticsearch/OpenSearch cluster.
ELASTICSEARCH_USERNAMErequiredUsername for cluster authentication.
ELASTICSEARCH_PASSWORDrequiredPassword for cluster authentication.
OPENSEARCH_VERIFY_CERTSWhether to verify SSL certificates for OpenSearch.

Configuration

claude_desktop_config.json
{"mcpServers": {"elasticsearch-mcp-server": {"command": "uvx", "args": ["elasticsearch-mcp-server"], "env": {"ELASTICSEARCH_HOSTS": "https://localhost:9200", "ELASTICSEARCH_USERNAME": "elastic", "ELASTICSEARCH_PASSWORD": "test123"}}}}

Try it

Check the current health status of my Elasticsearch cluster.
List all indices currently available in the database.
Search for documents in the 'logs' index that contain the term 'error'.
Get the details and mapping configuration for the 'users' index.
Delete the document with ID '123' from the 'products' index.

Frequently Asked Questions

What are the key features of Elasticsearch/OpenSearch MCP Server?

Full CRUD operations for documents and indices. Cluster health and statistics monitoring. Alias management for indices. General HTTP API request support. Support for both Elasticsearch and OpenSearch.

What can I use Elasticsearch/OpenSearch MCP Server for?

Monitoring cluster health and performance metrics directly from the chat interface.. Quickly querying and debugging document data during development.. Automating index lifecycle management tasks like creation and deletion.. Managing index aliases for zero-downtime reindexing workflows..

How do I install Elasticsearch/OpenSearch MCP Server?

Install Elasticsearch/OpenSearch MCP Server by running: uvx elasticsearch-mcp-server

What MCP clients work with Elasticsearch/OpenSearch MCP Server?

Elasticsearch/OpenSearch MCP Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Elasticsearch/OpenSearch MCP Server docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare