Skip to main content
Glama
Akhilvis

Elastic MCP

by Akhilvis

Demo

https://github.com/user-attachments/assets/907c3f6f-807c-4805-879a-649c74804c29

Elastic MCP

Connect to your Elasticsearch cluster from any MCP-compatible client (such as Claude Desktop) using the Model Context Protocol (MCP). This server exposes your Elasticsearch data and operations via the MCP interface, enabling agents and applications to query, manage, and analyze your data through natural language interactions.


1. Setup

Prerequisites

  • Python 3.8+

  • Elasticsearch running and accessible

  • uv or pip for dependency management

Install dependencies

Using uv package manager:

uv pip install -r requirements.txt

Related MCP server: Elasticsearch MCP Server

2. Running the MCP Server

Test using MCP Inspector

ELASTIC_URL="http://localhost:9200" ELASTIC_USERNAME="your_username" ELASTIC_PASSWORD="your_password" fastmcp dev tools/elastic_tool.py

or

Run the mcp server by

ELASTIC_URL="http://localhost:9200" ELASTIC_USERNAME="elastic" ELASTIC_PASSWORD="hKsXqDsd" python3 tools/elastic_tool.py

and run mcp client in another terminal by

python3 mcp_client.py

or

Add to the Claude Desktop by editing the claude_desktop_config.json and add the following code snippet


{
  "mcpServers": {
    "Elastic MCP Server": {
      "command": "uv",
      "args": [
        "run",
        "--with-requirements",
        "<absolute path to requirements.txt>",
        "fastmcp",
        "run",
        "<absolute path to elastic_tool.py>"
      ],
      "env": {
        "ELASTIC_URL": "http://localhost:9200",
        "ELASTIC_USERNAME": "your_username",
        "ELASTIC_PASSWORD": "your_password"
      }
    }
  }
}

3. Tools Provided

  • search_index: Search an index with a query string.

  • list_indices: List all indices (excluding system indices).

  • get_index_mappings: Get mappings for a specific index.


4. License

MIT License


5. Notes

Available Tools

3 tools
get_index_mappingsC

Get the mappings of a specific Elasticsearch index.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Get' implies a read operation, the description doesn't address important behavioral aspects like authentication requirements, rate limits, error conditions, response format, or whether this operation has any side effects. For a tool with zero annotation coverage, this represents a significant gap in behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It's appropriately sized for a simple tool and front-loads the essential information. Every word earns its place in this concise formulation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, no output schema, and minimal parameter documentation, the description is insufficiently complete. While the purpose is clear, the description doesn't address what 'mappings' are, what format they're returned in, authentication requirements, or error handling. Given the complexity of Elasticsearch operations and the lack of structured documentation, more context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions 'a specific Elasticsearch index' which provides context for the single 'index' parameter, but with 0% schema description coverage, the schema provides no parameter documentation. The description adds some semantic meaning (it's an Elasticsearch index name) but doesn't specify format requirements, constraints, or examples. This partially compensates for the schema gap but not fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('mappings of a specific Elasticsearch index'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_indices' or 'search_index' - it's clear this retrieves mappings rather than listing indices or searching content, but no direct comparison is provided.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of when this tool is appropriate versus 'list_indices' or 'search_index', nor any prerequisites or constraints for its use. The agent receives no contextual guidance about appropriate usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_indicesB

List all indices in the Elasticsearch cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool lists indices but doesn't mention any behavioral traits such as pagination, rate limits, permissions required, or what the output format looks like. This leaves significant gaps for a tool that interacts with a cluster.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It's front-loaded and wastes no space, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema), the description is adequate as a minimum viable explanation. However, it lacks details about behavioral aspects like output format or cluster interaction nuances, which could be helpful despite the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so the baseline is 4. The description doesn't need to add parameter details, and it correctly doesn't mention any parameters, which is appropriate for this schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and target resource ('all indices in the Elasticsearch cluster'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_index_mappings' or 'search_index', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives like 'get_index_mappings' or 'search_index'. It lacks context about use cases, prerequisites, or exclusions, leaving the agent to infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_indexC

Search an Elasticsearch index with a simple query string.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
queryYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'search' implies a read operation, it doesn't specify whether this requires authentication, what happens with invalid queries or indices, rate limits, or what format the results will be in. The description mentions 'simple query string' but doesn't explain what that entails behaviorally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized for a basic search tool and gets straight to the point with zero wasted verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 2 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what the tool returns, error conditions, authentication requirements, or how it differs from sibling tools. The agent would need to guess about important operational aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage and 2 parameters, the description provides minimal parameter context. It mentions 'index' and 'query' but doesn't explain what constitutes a valid index name, what query syntax is supported ('simple query string' is vague), or provide examples. The description doesn't compensate for the complete lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('search') and target resource ('an Elasticsearch index') with the method ('with a simple query string'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its siblings (get_index_mappings, list_indices), which would require mentioning that this is for content retrieval rather than metadata operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus its siblings or alternative search methods. There's no mention of prerequisites, limitations, or comparative context that would help an agent choose between search_index, get_index_mappings, and list_indices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 3 tool updates
    • First observedget_index_mappings
    • First observedlist_indices
    • First observedsearch_index

TDQS

B3.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: get_index_mappings retrieves schema information for a specific index, list_indices enumerates all indices, and search_index performs queries on an index. There is no overlap in functionality, making it easy for an agent to select the correct tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (get_index_mappings, list_indices, search_index) with clear, descriptive verbs and nouns. This uniformity enhances readability and predictability.

Tool Count3/5

With only 3 tools, the server feels thin for an Elasticsearch domain, which typically involves more operations like creating/deleting indices, updating mappings, or complex queries. While the tools cover basic inspection and search, the scope is limited.

Completeness2/5

The tool set is severely incomplete for Elasticsearch operations. It lacks essential CRUD actions such as creating or deleting indices, updating mappings, and handling documents (e.g., index, update, delete). This will cause agent failures when trying to perform common tasks beyond listing and searching.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    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
    307
    Apache 2.0
  • A
    license
    B
    quality
    C
    maintenance
    Connects agents to Elasticsearch data using the Model Context Protocol, allowing natural language interaction with Elasticsearch indices through MCP Clients like Claude Desktop and Cursor.
    11
    35 npm
    23
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Connects to Elasticsearch databases using the Model Context Protocol, allowing users to query and interact with their Elasticsearch indices through natural language conversations.
    4
    12 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects agents to Elasticsearch data using the Model Context Protocol, allowing natural language interaction with Elasticsearch indices through tools for listing indices, getting field mappings, performing searches, and viewing shard information.
    1,413 npm
    Apache 2.0