Skip to main content
Glama
Elasticsearch 7.x MCP Server

Elasticsearch 7.x MCP Server

by imlewc

Elasticsearch 7.x MCP Server

An MCP server for Elasticsearch 7.x, providing compatibility with Elasticsearch 7.x versions.

Features

  • Provides an MCP protocol interface for interacting with Elasticsearch 7.x

  • Supports basic Elasticsearch operations (ping, info, etc.)

  • Supports complete search functionality, including aggregation queries, highlighting, sorting, and other advanced features

  • Easily access Elasticsearch functionality through any MCP client

Related MCP server: Elasticsearch/OpenSearch MCP Server

Requirements

  • Python 3.10+

  • Elasticsearch 7.x (7.17.x recommended)

Installation

Installing via Smithery

To install Elasticsearch 7.x MCP Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @imlewc/elasticsearch7-mcp-server --client claude

Manual Installation

pip install -e .

Environment Variables

The server requires the following environment variables:

  • ELASTIC_HOST: Elasticsearch host address (e.g., http://localhost:9200)

  • ELASTIC_USERNAME: Elasticsearch username

  • ELASTIC_PASSWORD: Elasticsearch password

  • MCP_PORT: (Optional) MCP server listening port, default 9999

Using Docker Compose

  1. Create a .env file and set ELASTIC_PASSWORD:

ELASTIC_PASSWORD=your_secure_password
  1. Start the services:

docker-compose up -d

This will start a three-node Elasticsearch 7.17.10 cluster, Kibana, and the MCP server.

Using an MCP Client

You can use any MCP client to connect to the MCP server:

from mcp import MCPClient

client = MCPClient("localhost:9999")
response = client.call("es-ping")
print(response)  # {"success": true}

API Documentation

Currently supported MCP methods:

  • es-ping: Check Elasticsearch connection

  • es-info: Get Elasticsearch cluster information

  • es-search: Search documents in Elasticsearch index

Search API Examples

# Basic search
search_response = client.call("es-search", {
    "index": "my_index",
    "query": {
        "match": {
            "title": "search keywords"
        }
    },
    "size": 10,
    "from": 0
})

Aggregation Query

# Aggregation query
agg_response = client.call("es-search", {
    "index": "my_index",
    "size": 0,  # Only need aggregation results, no documents
    "aggs": {
        "categories": {
            "terms": {
                "field": "category.keyword",
                "size": 10
            }
        },
        "avg_price": {
            "avg": {
                "field": "price"
            }
        }
    }
})
# Advanced search with highlighting, sorting, and filtering
advanced_response = client.call("es-search", {
    "index": "my_index",
    "query": {
        "bool": {
            "must": [
                {"match": {"content": "search term"}}
            ],
            "filter": [
                {"range": {"price": {"gte": 100, "lte": 200}}}
            ]
        }
    },
    "sort": [
        {"date": {"order": "desc"}},
        "_score"
    ],
    "highlight": {
        "fields": {
            "content": {}
        }
    },
    "_source": ["title", "date", "price"]
})

Development

  1. Clone the repository

  2. Install development dependencies

  3. Run the server: elasticsearch7-mcp-server

License

[License in LICENSE file]

中文文档

Available Tools

3 tools
es-infoC

Get Elasticsearch info

Inputs: req (required).

es-pingC

Ping Elasticsearch server

Inputs: req (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.6/5.0

    Scored across 3 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: es-info retrieves server information, es-ping checks connectivity, and es-search performs document searches. There is no overlap or ambiguity between these functions, making tool selection straightforward for an agent.

    Naming Consistency5/5

    All tool names follow a consistent 'es-' prefix and underscore-separated verb pattern (es-info, es-ping, es-search). This predictable naming convention enhances readability and usability across the tool set.

    Tool Count2/5

    With only 3 tools, the server feels thin for an Elasticsearch domain, which typically involves operations like indexing, updating, deleting, and aggregating documents. The count is too low to cover the expected scope of a database/search engine server.

    Completeness2/5

    The tool set is severely incomplete for Elasticsearch functionality. It lacks essential CRUD operations (e.g., create, update, delete documents), index management, and query features beyond basic search, which will likely cause agent failures in handling typical database tasks.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      A
      maintenance
      Facilitates interaction with Elasticsearch clusters by allowing users to perform index operations, document searches, and cluster management via a Model Context Protocol server and natural language commands.
      20
      317
      Apache 2.0
    • A
      license
      B
      quality
      D
      maintenance
      An MCP server that enables interaction with Elasticsearch and OpenSearch clusters for searching documents and managing indices. It provides tools for cluster health monitoring, index configuration, and general API requests.
      16
      Apache 2.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables secure and efficient interaction with Elasticsearch clusters through the Model Context Protocol, providing tools for data management, search, and export.
      10,054 npm
      1
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables read-only interaction with Elasticsearch, supporting listing indices, retrieving mappings, and executing search/aggregation queries via MCP.
      -