https://github.com/cr7258/elasticsearch-mcp-server
A Model Context Protocol (MCP) server implementation that provides Elasticsearch and OpenSearch interaction.
https://github.com/cr7258/elasticsearch-mcp-server
Last synced: 25 days ago
JSON representation
A Model Context Protocol (MCP) server implementation that provides Elasticsearch and OpenSearch interaction.
- Host: GitHub
- URL: https://github.com/cr7258/elasticsearch-mcp-server
- Owner: cr7258
- License: apache-2.0
- Created: 2025-01-09T04:20:03.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-04-07T15:14:41.000Z (29 days ago)
- Last Synced: 2025-04-11T22:08:01.092Z (25 days ago)
- Language: Python
- Homepage:
- Size: 176 KB
- Stars: 93
- Watchers: 1
- Forks: 16
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-mcp-list - cr7258/elasticsearch-mcp-server - mcp-server?style=social)](https://github.com/cr7258/elasticsearch-mcp-server): Enables interaction with Elasticsearch clusters. (Uncategorized / Uncategorized)
- awesome-mcp-zh - cr7258/elasticsearch-mcp-server
- awesome-mcp-servers - cr7258/elasticsearch-mcp-server - MCPサーバーの実装で、Elasticsearchとのインタラクションを提供します (サーバー実装 / 🗄️ <a name="databases"></a>データベース)
- awesome-mcp-servers - cr7258/elasticsearch-mcp-server - MCP Server implementation that provides Elasticsearch interaction (Legend / 🗄️ <a name="databases"></a>Databases)
- awesome-mcp-servers - cr7258/elasticsearch-mcp-server - MCP Server implementation that provides Elasticsearch interaction (Legend / 🗄️ <a name="databases"></a>Databases)
- Awesome-MCP-Servers-directory - Elasticsearch - MCP server implementation that provides Elasticsearch interaction (Search)
- awesome-mcp-servers - Elasticsearch MCP Server - A Model Context Protocol (MCP) server implementation that provides Elasticsearch interaction. (Table of Contents / Search)
README
# Elasticsearch/OpenSearch MCP Server
[](https://smithery.ai/server/elasticsearch-mcp-server)
## 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
### 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.### 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
Copy the `.env.example` file to `.env` and update the values accordingly.
## 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.
## Usage with Claude Desktop
### Option 1: Installing via Smithery
To install Elasticsearch Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/elasticsearch-mcp-server):
```bash
npx -y @smithery/cli install elasticsearch-mcp-server --client claude
```### Option 2: Using uvx
Using `uvx` will automatically install the package from PyPI, no need to clone the repository locally. Add the following configuration to Claude Desktop's config file `claude_desktop_config.json`.
```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 3: 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
{
"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"
}
}
}
}
```- On macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- On Windows: `%APPDATA%/Claude/claude_desktop_config.json`Restart Claude Desktop to load the new MCP server.
Now you can interact with your Elasticsearch/OpenSearch cluster through Claude using natural language commands like:
- "List all indices in the cluster"
- "How old is the student Bob?"
- "Show me the cluster health status"## Usage with Anthropic MCP Client
```python
uv run mcp_client/client.py src/server.py
```## License
This project is licensed under the Apache License Version 2.0 - see the [LICENSE](LICENSE) file for details.