io.github.cr7258/elasticsearch-mcp-server

io.github.cr7258/elasticsearch-mcp-server

MCP server for seamless interaction with Elasticsearch and OpenSearch.

223
Stars
47
Forks
223
Watchers
6
Issues
Implements a Model Context Protocol (MCP) server enabling robust integration with Elasticsearch and OpenSearch clusters. Offers a standardized set of tools for managing indices, documents, clusters, data streams, and aliases, along with configurable authentication and operation restrictions. Supports secure access and flexible configuration via environment variables, ensuring safe and customizable operations for various deployment scenarios.

Key Features

General API requests to Elasticsearch/OpenSearch
Comprehensive index operations (list, get, create, delete)
Document management (search, index, get, delete, delete by query)
Cluster health and statistics monitoring
Alias operations for flexible index access
Data stream management
Configurable environment-based authentication (user/password, API key)
Disabling of high-risk/write operations for security
Support for SSL certificate verification settings
Selective operation disabling feature

Use Cases

Secure management of Elasticsearch or OpenSearch clusters
Index creation, deletion, and information retrieval
Advanced document querying and modification
Cluster health and performance monitoring for administrators
Automated, context-aware integration into backend systems
Enforcement of usage restrictions in sensitive deployments
Continuous data stream creation and monitoring
Handling index aliases for routing and access control
Custom automation workflows via API requests
Deployment in environments requiring enhanced security and compliance

README

Elasticsearch/OpenSearch MCP Server

MseeP.ai Security Assessment Badge

Trust Score

MCP Official Registry

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

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.
  • create_data_stream: Create a new data stream (requires matching index template).
  • get_data_stream: Get information about one or more data streams.
  • delete_data_stream: Delete one or more data streams and their backing indices.

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

The MCP server supports the following environment variables:

Basic Authentication (Username/Password)

  • ELASTICSEARCH_USERNAME: Username for basic authentication
  • ELASTICSEARCH_PASSWORD: Password for basic authentication
  • OPENSEARCH_USERNAME: Username for OpenSearch basic authentication
  • OPENSEARCH_PASSWORD: Password for OpenSearch basic authentication

API Key Authentication (Elasticsearch only) - Recommended

Connection Settings

  • ELASTICSEARCH_HOSTS / OPENSEARCH_HOSTS: Comma-separated list of hosts (default: https://localhost:9200)
  • ELASTICSEARCH_VERIFY_CERTS / OPENSEARCH_VERIFY_CERTS: Whether to verify SSL certificates (default: false)

Disable High-Risk Operations

  • DISABLE_HIGH_RISK_OPERATIONS: Set to true to disable all write operations (default: false)
  • DISABLE_OPERATIONS: Comma-separated list of specific operations to disable (optional, uses default write operations list if not set)

When DISABLE_HIGH_RISK_OPERATIONS is set to true, all MCP tools that perform write operations are completely hidden from the MCP client. In this mode, the following MCP tools are disabled by default.

  • Index Operations:

    • create_index
    • delete_index
  • Document Operations:

    • index_document
    • delete_document
    • delete_by_query
  • Data Stream Operations:

    • create_data_stream
    • delete_data_stream
  • Alias Operations:

    • put_alias
    • delete_alias
  • General API Operations:

    • general_api_request

Optionally, you can specify a comma-separated list of operations to disable in the DISABLE_OPERATIONS environment variable.

bash
# Disable High-Risk Operations
export DISABLE_HIGH_RISK_OPERATIONS=true
# Disable specific operations only
export DISABLE_OPERATIONS="delete_index,delete_document,delete_by_query"

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.

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.

json
// For Elasticsearch with username/password
{
  "mcpServers": {
    "elasticsearch-mcp-server": {
      "command": "uvx",
      "args": [
        "elasticsearch-mcp-server"
      ],
      "env": {
        "ELASTICSEARCH_HOSTS": "https://localhost:9200",
        "ELASTICSEARCH_USERNAME": "elastic",
        "ELASTICSEARCH_PASSWORD": "test123"
      }
    }
  }
}

// For Elasticsearch with API key
{
  "mcpServers": {
    "elasticsearch-mcp-server": {
      "command": "uvx",
      "args": [
        "elasticsearch-mcp-server"
      ],
      "env": {
        "ELASTICSEARCH_HOSTS": "https://localhost:9200",
        "ELASTICSEARCH_API_KEY": "<YOUR_ELASTICSEARCH_API_KEY>"
      }
    }
  }
}

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

json
// For Elasticsearch with username/password
{
  "mcpServers": {
    "elasticsearch-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/elasticsearch-mcp-server",
        "run",
        "elasticsearch-mcp-server"
      ],
      "env": {
        "ELASTICSEARCH_HOSTS": "https://localhost:9200",
        "ELASTICSEARCH_USERNAME": "elastic",
        "ELASTICSEARCH_PASSWORD": "test123"
      }
    }
  }
}

// For Elasticsearch with API key
{
  "mcpServers": {
    "elasticsearch-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/elasticsearch-mcp-server",
        "run",
        "elasticsearch-mcp-server"
      ],
      "env": {
        "ELASTICSEARCH_HOSTS": "https://localhost:9200",
        "ELASTICSEARCH_API_KEY": "<YOUR_ELASTICSEARCH_API_KEY>"
      }
    }
  }
}

// For OpenSearch
{
  "mcpServers": {
    "opensearch-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/elasticsearch-mcp-server",
        "run",
        "opensearch-mcp-server"
      ],
      "env": {
        "OPENSEARCH_HOSTS": "https://localhost:9200",
        "OPENSEARCH_USERNAME": "admin",
        "OPENSEARCH_PASSWORD": "admin"
      }
    }
  }
}

SSE

Option 1: Using uvx

bash
# export environment variables (with username/password)
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_USERNAME="elastic"
export ELASTICSEARCH_PASSWORD="test123"

# OR export environment variables (with API key)
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_API_KEY="<YOUR_ELASTICSEARCH_API_KEY>"

# 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

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

bash
# export environment variables (with username/password)
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_USERNAME="elastic"
export ELASTICSEARCH_PASSWORD="test123"

# OR export environment variables (with API key)
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_API_KEY="<YOUR_ELASTICSEARCH_API_KEY>"

# 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

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

Compatibility

The MCP server is compatible with Elasticsearch 7.x, 8.x, and 9.x. By default, it uses the Elasticsearch 8.x client (without a suffix).

MCP Server Elasticsearch
elasticsearch-mcp-server-es7 Elasticsearch 7.x
elasticsearch-mcp-server Elasticsearch 8.x
elasticsearch-mcp-server-es9 Elasticsearch 9.x
opensearch-mcp-server OpenSearch 1.x, 2.x, 3.x

To use the Elasticsearch 7.x client, run the elasticsearch-mcp-server-es7 variant. For Elasticsearch 9.x, use elasticsearch-mcp-server-es9. For example:

bash
uvx elasticsearch-mcp-server-es7

If you want to run different Elasticsearch variants (e.g., 7.x or 9.x) locally, simply update the elasticsearch dependency version in pyproject.toml, then start the server with:

bash
uv run src/server.py elasticsearch-mcp-server

License

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

Star History

Star History Chart

Repository Owner

cr7258
cr7258

User

Repository Details

Language Python
Default Branch main
Size 727 KB
Contributors 7
License Apache License 2.0
MCP Verified Nov 12, 2025

Programming Languages

Python
93.98%
Java
3.94%
Makefile
2.08%

Tags

Join Our Newsletter

Stay updated with the latest AI tools, news, and offers by subscribing to our weekly newsletter.

We respect your privacy. Unsubscribe at any time.

Related MCPs

Discover similar Model Context Protocol servers

  • Open-WebSearch MCP Server

    Open-WebSearch MCP Server

    Multi-engine web search MCP server without API keys

    Open-WebSearch MCP Server is a Model Context Protocol (MCP) compliant server offering web search functionalities using multiple search engines without the need for API keys or authentication. It provides structured search results with titles, URLs, and descriptions, and enables fetching of article content from supported sources such as CSDN and GitHub. The server supports extensive configuration through environment variables, including proxy settings and search engine customization. Designed for flexibility, it operates in both HTTP and stdio modes, making it suitable for integration into larger systems.

    • 463
    • MCP
    • Aas-ee/open-webSearch
  • JVM MCP Server

    JVM MCP Server

    Lightweight multi-agent protocol server for JVM monitoring and diagnostics.

    JVM MCP Server provides a lightweight, zero-dependency server that implements the Multi-Agent Communication Protocol for monitoring and diagnosing Java applications. It leverages native JDK tools to enable powerful AI agent interactions for gathering JVM metrics, analyzing memory and threads, and performing advanced diagnostics without relying on third-party software. The server supports both local and remote Java environments through SSH, ensuring cross-platform compatibility and secure operation.

    • 71
    • MCP
    • xzq-xu/jvm-mcp-server
  • SafeDep VET

    SafeDep VET

    Enterprise-grade open source software supply chain security with MCP capabilities.

    SafeDep VET is an open source tool that provides supply chain security for open source software, featuring advanced software composition analysis and policy-as-code driven security enforcement. It supports multiple package ecosystems and integrates with CI/CD pipelines. Notably, it offers an MCP (Model Context Protocol) server mode to vet open source packages arising from AI-suggested code, and includes agent-based querying and scan result analysis powered by AI. The tool enables real-time malicious package detection through cloud integration and prioritizes actionable insights by analyzing actual code usage.

    • 829
    • MCP
    • safedep/vet
  • Postman MCP Server

    Postman MCP Server

    MCP-compliant server providing full access to the Postman API.

    Postman MCP Server is a TypeScript-based implementation of an MCP server that offers extensive integration with the Postman API. It enables management of Postman collections, environments, and APIs while supporting advanced features like authentication, webhooks, and enterprise controls. The project is part of the Model Context Protocol initiative and adheres to MCP standards for model context integration. Designed with developers in mind, it provides CRUD operations, version control, and seamless automation capabilities.

    • 143
    • MCP
    • delano/postman-mcp-server
  • MacOS Resource Monitor MCP Server

    MacOS Resource Monitor MCP Server

    Lightweight MCP server for monitoring CPU, memory, and network usage on macOS.

    MacOS Resource Monitor MCP Server provides real-time monitoring of system resources on macOS devices, exposing an MCP endpoint for integration with LLMs or other clients. It identifies resource-intensive processes across CPU, memory, and network, delivering structured JSON outputs. The server offers advanced filtering, sorting, and system overviews, assisting in performance analysis and bottleneck identification. Designed for seamless integration and lightweight system monitoring.

    • 16
    • MCP
    • Pratyay/mac-monitor-mcp
  • Octomind MCP Server

    Octomind MCP Server

    Let agents create and manage automated end-to-end tests with Octomind.

    Octomind MCP Server enables agents to interact with Octomind's end-to-end testing platform, allowing the creation, execution, and management of automated tests. It provides a server that integrates with various clients and allows for configuration, session management, and access to multiple testing tools and resources. The server supports extensible session storage options and integrates with external platforms like TestRail and Redis for advanced scenarios. It is designed to facilitate local development and enhance test management workflows.

    • 21
    • MCP
    • OctoMind-dev/octomind-mcp
  • Didn't find tool you were looking for?

    Be as detailed as possible for better results