✨ From vibe coding to vibe deployment. UBOS MCP turns ideas into infra with one message.

Learn more

Elasticsearch 7.x MCP Server

smithery badge

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

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

# 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

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

中文文档

Featured Templates

View More
Verified Icon
AI Agents
AI Chatbot Starter Kit
1342 9274
AI Characters
Sarcastic AI Chat Bot
129 2037
Customer service
Service ERP
127 1488
AI Agents
AI Video Generator
258 2301
Data Analysis
Pharmacy Admin Panel
254 2272

Start your free trial

Build your solution today. No credit card required.

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.