Skip to main content

MCP server for Elasticsearch clusters

Project description

elasticsearch-mcp

An MCP (Model Context Protocol) server for Elasticsearch clusters. Enables AI assistants like Claude to search, analyze, and interact with Elasticsearch through natural language.

PyPI version Python 3.10+ License: Apache-2.0

Features

  • Natural Language Search: Ask Claude about your data in plain English
  • Index Discovery: Explore indices, mappings, and field types
  • Search & Aggregations: Full Query DSL and aggregation support
  • Document Operations: Read, index, update, and delete documents
  • Data Export: Export search results to JSON or CSV
  • Knowledge Persistence: Claude remembers what it learns about your cluster
  • Safety Controls: Read-only mode, index blocking, result limits
  • Connection Watchdog: Automatic recovery from hung connections
  • OAuth Integration: Deploy as a Claude.ai Custom Connector with SSO

Quick Start

1. Install

pip install elasticsearch-mcp

2. Configure Claude Desktop

Edit your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "elasticsearch": {
      "command": "elasticsearch-mcp",
      "env": {
        "ES_HOST": "https://your-cluster.es.example.com:9200",
        "ES_API_KEY": "your-api-key",
        "ES_READ_ONLY": "true"
      }
    }
  }
}

3. Restart Claude Desktop

Quit and reopen Claude Desktop. You'll see a hammer icon indicating tools are available.

4. Start Chatting

Ask Claude about your Elasticsearch data:

"What indices are available?"

"Search for errors in the logs index from the last hour"

"Show me the top 10 users by request count"

"Describe the mappings for the customers index"

Documentation

Guide Description
Installation Complete installation guide
Configuration All configuration options
Tools Reference Detailed tool documentation
Usage Examples Common usage patterns
OAuth Setup Claude.ai integration with SSO

Available Tools

Connection & Cluster

Tool Description
connect Connect to the cluster
disconnect Close connections
cluster_health Get cluster health status
cluster_info Get cluster version and info

Index Operations

Tool Description
list_indices List all indices
describe_index Get index mappings and settings
get_index_stats Get index statistics

Search & Query

Tool Description
search Execute Query DSL search
search_simple Simple query string search
count Count matching documents
get_document Get document by ID

Aggregations

Tool Description
aggregate Run aggregation queries
terms_aggregation Quick terms aggregation
date_histogram Time-based aggregations

Document Operations

Tool Description
index_document Create/update document
update_document Partial document update
delete_document Delete document

Export & Knowledge

Tool Description
export_to_json Export results to JSON
export_to_csv Export results to CSV
save_knowledge Save learned information
get_all_knowledge Retrieve saved knowledge

Configuration

Required Variables

Variable Description
ES_HOST Elasticsearch host URL

Authentication (choose one)

Variable Description
ES_API_KEY API key authentication
ES_USERNAME + ES_PASSWORD Basic authentication
ES_CLOUD_ID Elastic Cloud ID

Safety Settings

Variable Default Description
ES_READ_ONLY false Block all write operations
ES_MAX_RESULTS 1000 Maximum results per query
ES_BLOCKED_INDICES .security*,... Indices to hide

Deployment Modes

Local (Default)

elasticsearch-mcp

HTTP/SSE Server

elasticsearch-mcp --http --host 0.0.0.0 --port 8080

Streamable HTTP (Claude.ai)

elasticsearch-mcp --streamable-http --host 0.0.0.0 --port 8080

Development

# Clone repository
git clone https://github.com/bpamiri/elasticsearch-mcp.git
cd elasticsearch-mcp

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Lint and format
ruff check .
ruff format .

# Type check
mypy src/

Security

  • API keys and passwords are never logged
  • Configurable index blocklist
  • Optional read-only mode
  • Result size limits
  • Query validation

License

Apache-2.0. See LICENSE for details.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elasticsearch_mcp-0.1.1.tar.gz (22.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

elasticsearch_mcp-0.1.1-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

Details for the file elasticsearch_mcp-0.1.1.tar.gz.

File metadata

  • Download URL: elasticsearch_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for elasticsearch_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 deac3fe6598afa3edbacb3d2dd037e36635094e91e2c2d123a41c777aa497d40
MD5 a46ab2682e5cc12332b35ff825dc31c7
BLAKE2b-256 bb3c4ee0f02b34de706cb9d74153c9307cd4ebf1870b3d4d7e611d8ecaa85339

See more details on using hashes here.

File details

Details for the file elasticsearch_mcp-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for elasticsearch_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 20e1c7b56c2e08cf1f8b402e23872392b81dfb3acc732b2cbe989cccd45c95e7
MD5 1251e711b810032b30ad74adeb1e6e3b
BLAKE2b-256 b25b0280f878b5e1b00056da1a8e525821e06a9ee96cd27415fc5e2d0f56f7d8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page