GitHub - cr7258/elasticsearch-mcp-server: A Model Context Protocol (MCP) server implementation that provides Elasticsearch and OpenSearch interaction. (original) (raw)

Elasticsearch/OpenSearch MCP Server

smithery badge

MseeP.ai Security Assessment Badge

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

elasticsearch-mcp-server-2.mp4

Features

General Operations

Index Operations

Document Operations

Cluster Operations

Alias Operations

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

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

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

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

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

License

This project is licensed under the Apache License Version 2.0 - see the LICENSE file for details.