Skip to main content
Glama
cr7258

Elasticsearch MCP Server

Elasticsearch/OpenSearch MCP Server

Trust Score

개요

Elasticsearch 및 OpenSearch와 상호작용을 제공하는 Model Context Protocol (MCP) 서버 구현입니다. 이 서버는 일련의 도구를 통해 문서 검색, 인덱스 분석, 클러스터 관리를 지원합니다.

Related MCP server: Elasticsearch MCP Server

데모

https://github.com/user-attachments/assets/f7409e31-fac4-4321-9c94-b0ff2ea7ff15

기능

일반 작업

  • general_api_request: 일반 HTTP API 요청을 수행합니다. 전용 도구가 없는 Elasticsearch/OpenSearch API에 대해 이 도구를 사용하세요.

인덱스 작업

  • list_indices: 모든 인덱스를 나열합니다.

  • get_index: 하나 이상의 인덱스에 대한 정보(매핑, 설정, 별칭)를 반환합니다.

  • create_index: 새 인덱스를 생성합니다.

  • delete_index: 인덱스를 삭제합니다.

  • create_data_stream: 새 데이터 스트림을 생성합니다(일치하는 인덱스 템플릿 필요).

  • get_data_stream: 하나 이상의 데이터 스트림에 대한 정보를 가져옵니다.

  • delete_data_stream: 하나 이상의 데이터 스트림과 해당 백킹 인덱스를 삭제합니다.

문서 작업

  • search_documents: 문서를 검색합니다.

  • index_document: 인덱스에 문서를 생성하거나 업데이트합니다.

  • get_document: ID로 문서를 가져옵니다.

  • delete_document: ID로 문서를 삭제합니다.

  • delete_by_query: 제공된 쿼리와 일치하는 문서를 삭제합니다.

클러스터 작업

  • get_cluster_health: 클러스터 상태에 대한 기본 정보를 반환합니다.

  • get_cluster_stats: 클러스터 통계에 대한 높은 수준의 개요를 반환합니다.

별칭 작업

  • list_aliases: 모든 별칭을 나열합니다.

  • get_alias: 특정 인덱스에 대한 별칭 정보를 가져옵니다.

  • put_alias: 특정 인덱스에 대한 별칭을 생성하거나 업데이트합니다.

  • delete_alias: 특정 인덱스에 대한 별칭을 삭제합니다.

분석기 작업

  • analyze_text: 지정된 분석기 또는 사용자 정의 분석 체인을 사용하여 텍스트를 분석합니다. 검색 쿼리 디버깅과 텍스트가 토큰화되는 방식을 이해하는 데 유용합니다.

환경 변수 구성

MCP 서버는 다음 환경 변수를 지원합니다:

기본 인증 (사용자 이름/비밀번호)

  • ELASTICSEARCH_USERNAME: 기본 인증을 위한 사용자 이름

  • ELASTICSEARCH_PASSWORD: 기본 인증을 위한 비밀번호

  • OPENSEARCH_USERNAME: OpenSearch 기본 인증을 위한 사용자 이름

  • OPENSEARCH_PASSWORD: OpenSearch 기본 인증을 위한 비밀번호

API 키 인증 (Elasticsearch 전용) - 권장

연결 설정

  • ELASTICSEARCH_HOSTS / OPENSEARCH_HOSTS: 쉼표로 구분된 호스트 목록 (기본값: https://localhost:9200)

  • ELASTICSEARCH_CLUSTERS / OPENSEARCH_CLUSTERS: 명명된 클러스터 구성을 위한 인라인 JSON 객체입니다. 설정 시 도구는 선택적 cluster 매개변수로 특정 클러스터를 대상으로 지정할 수 있습니다.

  • ELASTICSEARCH_CLUSTERS_FILE / OPENSEARCH_CLUSTERS_FILE: 클러스터 객체가 포함된 JSON 파일의 경로입니다. 구성이 다른 JSON 파일(예: MCP 클라이언트 구성)에 포함된 경우 JSON-in-JSON 이스케이프를 피할 수 있으므로 권장됩니다. 두 변수가 모두 설정된 경우 인라인 변수보다 우선합니다.

  • DEFAULT_CLUSTER: 다중 클러스터 구성이 설정되고 도구 호출에서 cluster를 생략할 때 사용할 기본 클러스터 이름입니다(기본값은 첫 번째 구성된 클러스터).

  • VERIFY_CERTS: SSL 인증서를 검증할지 여부 (기본값: false)

  • REQUEST_TIMEOUT: 요청 제한 시간(초) (선택 사항, 설정하지 않으면 클라이언트 기본값 사용)

다중 클러스터 구성

기본적으로 서버는 ELASTICSEARCH_HOSTS, ELASTICSEARCH_USERNAME, ELASTICSEARCH_PASSWORD, ELASTICSEARCH_API_KEY의 단일 Elasticsearch 클러스터 또는 OPENSEARCH_HOSTS, OPENSEARCH_USERNAME, OPENSEARCH_PASSWORD의 단일 OpenSearch 클러스터를 사용합니다. 여러 명명된 클러스터를 구성하려면 MCP 서버 구성 내부의 JSON 객체로 ELASTICSEARCH_CLUSTERS(또는 OPENSEARCH_CLUSTERS)를 설정하세요. 값이 다른 JSON 파일에 포함된 JSON 문자열이므로 내부 따옴표를 이스케이프해야 합니다:

{
  "mcpServers": {
    "elasticsearch-mcp-server": {
      "command": "uvx",
      "args": [
        "elasticsearch-mcp-server"
      ],
      "env": {
        "ELASTICSEARCH_CLUSTERS": "{\"prod\": {\"hosts\": [\"https://prod-es:9200\"], \"api_key\": \"<PROD_API_KEY>\", \"verify_certs\": true}, \"staging\": {\"hosts\": [\"https://staging-es:9200\"], \"username\": \"elastic\", \"password\": \"<STAGING_PASSWORD>\"}}",
        "DEFAULT_CLUSTER": "prod"
      }
    }
  }
}

가독성을 높이려면 대신 ELASTICSEARCH_CLUSTERS_FILE(또는 OPENSEARCH_CLUSTERS_FILE)을 독립형 JSON 파일로 지정하세요. 값은 단순한 경로이므로 JSON-in-JSON 이스케이프를 피할 수 있습니다:

{
  "mcpServers": {
    "elasticsearch-mcp-server": {
      "command": "uvx",
      "args": [
        "elasticsearch-mcp-server"
      ],
      "env": {
        "ELASTICSEARCH_CLUSTERS_FILE": "/etc/mcp/es-clusters.json",
        "DEFAULT_CLUSTER": "prod"
      }
    }
  }
}

/etc/mcp/es-clusters.json:

{
  "prod": {
    "hosts": ["https://prod-es:9200"],
    "api_key": "<PROD_API_KEY>",
    "verify_certs": true
  },
  "staging": {
    "hosts": ["https://staging-es:9200"],
    "username": "elastic",
    "password": "<STAGING_PASSWORD>"
  }
}

모든 도구는 선택적 cluster 매개변수를 허용합니다. 생략하면 서버는 DEFAULT_CLUSTER를 사용합니다. DEFAULT_CLUSTER가 설정되지 않은 경우 JSON 객체의 첫 번째 클러스터가 기본값으로 사용됩니다. 특정 클러스터를 대상으로 하는 도구 호출은 다음과 같습니다:

{
  "cluster": "staging",
  "index": "logs-*",
  "body": {
    "query": {
      "match_all": {}
    }
  }
}

MCP 서버 인증 (HTTP 전송 전용)

HTTP 기반 전송(SSE 또는 Streamable HTTP)으로 MCP 서버를 실행할 때 Bearer 토큰 인증을 활성화하여 무단 액세스로부터 서버를 보호할 수 있습니다.

  • MCP_API_KEY: MCP 서버 인증을 위한 API 키입니다. 클라이언트는 Authorization: Bearer <MCP_API_KEY> 헤더를 포함해야 합니다.

중요한 보안 참고 사항:

  • 인증은 HTTP 전송(sse, streamable-http)에 만 적용됩니다. stdio 전송은 로컬 프로세스 통신을 사용하므로 인증이 필요하지 않습니다.

  • MCP_API_KEY가 설정되지 않은 경우 MCP 서버는 인증 없이 액세스할 수 있습니다. 이는 네트워크를 통해 서버를 노출할 때 보안 위험이 있습니다.

  • HTTP 전송을 사용하는 프로덕션 배포의 경우 항상 MCP_API_KEY를 설정하세요.

# Generate a secure API key (example using openssl)
export MCP_API_KEY=$(openssl rand -base64 32)

# Or set a custom API key
export MCP_API_KEY="your-secure-api-key-here"

고위험 작업 비활성화

  • DISABLE_HIGH_RISK_OPERATIONS: 모든 쓰기 작업을 비활성화하려면 true로 설정합니다 (기본값: false)

  • DISABLE_OPERATIONS: 비활성화할 특정 작업의 쉼표로 구분된 목록 (선택 사항, 설정하지 않으면 기본 쓰기 작업 목록 사용)

DISABLE_HIGH_RISK_OPERATIONS가 true로 설정되면 쓰기 작업을 수행하는 모든 MCP 도구가 MCP 클라이언트에서 완전히 숨겨집니다. 이 모드에서는 다음 MCP 도구가 기본적으로 비활성화됩니다.

  • 인덱스 작업:

    • create_index

    • delete_index

  • 문서 작업:

    • index_document

    • delete_document

    • delete_by_query

  • 데이터 스트림 작업:

    • create_data_stream

    • delete_data_stream

  • 별칭 작업:

    • put_alias

    • delete_alias

  • 일반 API 작업:

    • general_api_request

선택적으로 DISABLE_OPERATIONS 환경 변수에 비활성화할 작업의 쉼표로 구분된 목록을 지정할 수 있습니다.

# Disable High-Risk Operations
export DISABLE_HIGH_RISK_OPERATIONS=true
# Disable specific operations only
export DISABLE_OPERATIONS="delete_index,delete_document,delete_by_query"

GCF 응답 인코딩 (선택 사항)

모델이 읽는 콘텐츠 블록에서 도구 결과 페이로드를 GCF(Graph Compact Format)로 직렬화하도록 선택할 수 있습니다. GCF는 토큰 최적화된 와이어 형식으로, Elasticsearch가 반환하는 크고 균일한 레코드 집합(검색 히트, 집계 버킷, 매핑)을 가장 잘 압축합니다. 대표적인 응답에서 간결한 JSON보다 약 39% 적은 토큰을 사용합니다(검색 히트의 경우 40%), 무손실로 압축됩니다.

export RESPONSE_FORMAT=gcf

structuredContent는 변경 없이 유지되므로 도구의 선언된 출력 스키마가 여전히 검증되고 비모델 클라이언트는 계속 JSON을 수신합니다. 모델이 보는 텍스트 블록만 다시 인코딩됩니다. 인코딩은 실패에 안전합니다. GCF의 표준 int64 숫자 도메인을 벗어나는 값(GCF가 조용히 근사하는 대신 거부함)을 포함한 모든 오류는 원래 JSON 결과를 그대로 두므로 인코딩으로 인해 도구 호출이 누락되지 않습니다. RESPONSE_FORMAT이 설정되지 않은 경우 기본 동작은 변경되지 않습니다.

토큰 비교를 재현하려면: uv run --with tiktoken python benchmarks/gcf_benchmark.py.

Docker Compose를 사용하여 Elasticsearch/OpenSearch 클러스터를 시작합니다:

# For Elasticsearch
docker-compose -f docker-compose-elasticsearch.yml up -d

# For OpenSearch
docker-compose -f docker-compose-opensearch.yml up -d

기본 Elasticsearch 사용자 이름은 elastic이고 비밀번호는 test123입니다. 기본 OpenSearch 사용자 이름은 admin이고 비밀번호는 admin입니다.

http://localhost:5601에서 Kibana/OpenSearch Dashboards에 액세스할 수 있습니다.

Stdio

옵션 1: uvx 사용

uvx를 사용하면 PyPI에서 패키지가 자동으로 설치되므로 로컬에 저장소를 클론할 필요가 없습니다. Claude Desktop의 구성 파일 claude_desktop_config.json에 다음 구성을 추가하세요.

// For Elasticsearch with username/password
{
  "mcpServers": {
    "elasticsearch-mcp-server": {
      "command": "uvx",
      "args": [
        "elasticsearch-mcp-server"
      ],
      "env": {
        "ELASTICSEARCH_HOSTS": "https://localhost:9200",
        "ELASTICSEARCH_USERNAME": "elastic",
        "ELASTICSEARCH_PASSWORD": "test123"
      }
    }
  }
}

// For Elasticsearch with API key
{
  "mcpServers": {
    "elasticsearch-mcp-server": {
      "command": "uvx",
      "args": [
        "elasticsearch-mcp-server"
      ],
      "env": {
        "ELASTICSEARCH_HOSTS": "https://localhost:9200",
        "ELASTICSEARCH_API_KEY": "<YOUR_ELASTICSEARCH_API_KEY>"
      }
    }
  }
}

// For OpenSearch
{
  "mcpServers": {
    "opensearch-mcp-server": {
      "command": "uvx",
      "args": [
        "opensearch-mcp-server"
      ],
      "env": {
        "OPENSEARCH_HOSTS": "https://localhost:9200",
        "OPENSEARCH_USERNAME": "admin",
        "OPENSEARCH_PASSWORD": "admin"
      }
    }
  }
}

옵션 2: 로컬 개발에 uv 사용

uv를 사용하려면 로컬에 저장소를 클론하고 소스 코드 경로를 지정해야 합니다. Claude Desktop의 구성 파일 claude_desktop_config.json에 다음 구성을 추가하세요.

// For Elasticsearch with username/password
{
  "mcpServers": {
    "elasticsearch-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/elasticsearch-mcp-server",
        "run",
        "elasticsearch-mcp-server"
      ],
      "env": {
        "ELASTICSEARCH_HOSTS": "https://localhost:9200",
        "ELASTICSEARCH_USERNAME": "elastic",
        "ELASTICSEARCH_PASSWORD": "test123"
      }
    }
  }
}

// For Elasticsearch with API key
{
  "mcpServers": {
    "elasticsearch-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/elasticsearch-mcp-server",
        "run",
        "elasticsearch-mcp-server"
      ],
      "env": {
        "ELASTICSEARCH_HOSTS": "https://localhost:9200",
        "ELASTICSEARCH_API_KEY": "<YOUR_ELASTICSEARCH_API_KEY>"
      }
    }
  }
}

// For OpenSearch
{
  "mcpServers": {
    "opensearch-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/elasticsearch-mcp-server",
        "run",
        "opensearch-mcp-server"
      ],
      "env": {
        "OPENSEARCH_HOSTS": "https://localhost:9200",
        "OPENSEARCH_USERNAME": "admin",
        "OPENSEARCH_PASSWORD": "admin"
      }
    }
  }
}

SSE

옵션 1: uvx 사용

# export environment variables (with username/password)
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_USERNAME="elastic"
export ELASTICSEARCH_PASSWORD="test123"

# OR export environment variables (with API key)
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_API_KEY="<YOUR_ELASTICSEARCH_API_KEY>"

# By default, the SSE MCP server will serve on http://127.0.0.1:8000/sse
uvx elasticsearch-mcp-server --transport sse

# The host, port, and path can be specified using the --host, --port, and --path options
uvx elasticsearch-mcp-server --transport sse --host 0.0.0.0 --port 8000 --path /sse

옵션 2: uv 사용

# By default, the SSE MCP server will serve on http://127.0.0.1:8000/sse
uv run src/server.py elasticsearch-mcp-server --transport sse

# The host, port, and path can be specified using the --host, --port, and --path options
uv run src/server.py elasticsearch-mcp-server --transport sse --host 0.0.0.0 --port 8000 --path /sse

Streamable HTTP

옵션 1: uvx 사용

# export environment variables (with username/password)
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_USERNAME="elastic"
export ELASTICSEARCH_PASSWORD="test123"

# OR export environment variables (with API key)
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_API_KEY="<YOUR_ELASTICSEARCH_API_KEY>"

# By default, the Streamable HTTP MCP server will serve on http://127.0.0.1:8000/mcp
uvx elasticsearch-mcp-server --transport streamable-http

# The host, port, and path can be specified using the --host, --port, and --path options
uvx elasticsearch-mcp-server --transport streamable-http --host 0.0.0.0 --port 8000 --path /mcp

옵션 2: uv 사용

# By default, the Streamable HTTP MCP server will serve on http://127.0.0.1:8000/mcp
uv run src/server.py elasticsearch-mcp-server --transport streamable-http

# The host, port, and path can be specified using the --host, --port, and --path options
uv run src/server.py elasticsearch-mcp-server --transport streamable-http --host 0.0.0.0 --port 8000 --path /mcp

호환성

MCP 서버는 Elasticsearch 7.x, 8.x 및 9.x와 호환됩니다. 기본적으로 Elasticsearch 8.x 클라이언트(접미사 없음)를 사용합니다.

MCP 서버

Elasticsearch

elasticsearch-mcp-server-es7

Elasticsearch 7.x

elasticsearch-mcp-server

Elasticsearch 8.x

elasticsearch-mcp-server-es9

Elasticsearch 9.x

opensearch-mcp-server

OpenSearch 1.x, 2.x, 3.x

Elasticsearch 7.x 클라이언트를 사용하려면 elasticsearch-mcp-server-es7 변형을 실행하세요. Elasticsearch 9.x의 경우 elasticsearch-mcp-server-es9를 사용하세요. 예:

uvx elasticsearch-mcp-server-es7

다른 Elasticsearch 변형(예: 7.x 또는 9.x)을 로컬에서 실행하려면 pyproject.toml의 elasticsearch 종속성 버전을 업데이트한 다음 서버를 시작하세요:

uv run src/server.py elasticsearch-mcp-server

Kubernetes 배포

Docker 이미지는 ghcr.io/cr7258/elasticsearch-mcp-server에 게시되며 Helm 차트는 oci://ghcr.io/cr7258/charts/elasticsearch-mcp-server 저장소에서 OCI 아티팩트로 사용할 수 있습니다.

전체 설치 지침, 구성 참조 및 사용 예제는 **Helm 차트 README**를 참조하세요.

라이선스

이 프로젝트는 Apache License Version 2.0에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.

Available Tools

20 tools
analyze_textB

Analyze text to see how it would be tokenized.

Use this tool to understand how Elasticsearch/OpenSearch tokenizes and transforms text using analyzers. This is essential for debugging search queries and understanding why certain documents match or don't match.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to analyze
indexNoIndex name to use its configured analyzer. If not specified, uses cluster-level analysis with built-in analyzers only.
filterNoList of token filters to apply (e.g., ['lowercase', 'stop']). Used with 'tokenizer' for custom analysis chain.
clusterNoOptional cluster name. Uses the default cluster if omitted.
explainNoIf True, returns detailed information about each token including all token attributes and filter transformations. Useful for debugging complex analyzer chains.
analyzerNoName of the analyzer to use (e.g., 'standard', 'korean', 'korean_search'). If index is specified, you can use custom analyzers defined in that index.
tokenizerNoTokenizer to use for custom analysis chain. Cannot be used together with 'analyzer'.
attributesNoList of token attributes to return when explain=True (e.g., ['keyword', 'type']). If not specified, all attributes are returned.
char_filterNoList of character filters to apply before tokenization. Used with 'tokenizer' for custom analysis chain.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. 'Analyze' implies a non-destructive read operation, and the debugging framing reinforces that, but the description discloses nothing about permissions, whether it touches cluster state, rate limits, or side effects. Adequate but not rich.

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

Conciseness3/5

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

The first sentence is front-loaded and effective, but the next two sentences restate the same idea ('understand how ... tokenizes', 'understanding why ... match') with noticeable redundancy and without adding new information.

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

Completeness4/5

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

For a read-only analysis tool with a 100%-covered schema and an output schema that handles return values, the description covers purpose and primary use case well. The main gap is the absence of alternative-routing guidance, which matters given the large sibling set.

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?

Schema description coverage is 100%, so every one of the 9 parameters is already documented in the schema. The description adds no parameter-level meaning beyond what the schema provides (the analyzer/tokenizer/index relationships and defaults all live in the schema), so the baseline 3 applies.

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 states a specific verb and resource ('analyze text to see how it would be tokenized') and clarifies the domain (Elasticsearch/OpenSearch analyzers). It is clear enough to distinguish from mutating siblings, but it never names a sibling or explicitly scopes itself against the read/index tools around it.

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

Usage Guidelines3/5

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

It gives a use case – debugging search queries and understanding why documents match or don't match – which implies when to reach for it. However, there are no explicit when-not conditions, no named alternatives (e.g., search_documents for actually running queries), and no prerequisites.

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

create_data_streamB

Create a new data stream.

This creates a new data stream with the specified name. The data stream must have a matching index template before creation.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the data stream to create
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose the key precondition that an index template must pre-exist. Beyond that it says nothing about required permissions, failure behavior, or whether creation is idempotent, so the disclosure is thin.

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

Conciseness3/5

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

The first and second sentences are redundant ('Create a new data stream' vs 'This creates a new data stream with the specified name'), with no additional information in the second. The prerequisite sentence is the only one that earns its place.

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?

An output schema exists, so return values need not be explained, and the parameter schema is fully described. The remaining gap is behavioral/usage context — failure modes and differentiation from sibling creation tools — which leaves it only minimally viable.

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?

Schema coverage is 100% with both parameters documented (name, optional cluster), so the schema does the heavy lifting. The description adds no syntax or format meaning beyond what the schema already states; baseline 3 applies.

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?

States a specific verb and resource ('Create a new data stream'), so the operation is unambiguous. However, it does nothing to distinguish itself from siblings like create_index or index_document, and the second sentence merely restates the first.

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

Usage Guidelines3/5

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

It gives one real precondition ('must have a matching index template before creation'), which is useful context. But it offers no guidance on when to choose this over create_index or how it relates to the data-stream siblings.

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

create_indexC

Create a new index.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoOptional index configuration including mappings and settings
indexYesName of the index
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden for a mutating operation. It does not disclose what happens if the index already exists, whether creation requires specific privileges, or whether the operation is idempotent; 'Create' is all the agent gets.

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

Conciseness3/5

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

At a single short sentence it is certainly concise and front-loaded, with zero wasted words. But it is under-specified rather than tightly scoped, so the brevity reflects a gap rather than efficiency.

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?

An output schema exists and all three parameters are documented, so return values and inputs need not be explained. What is missing is behavioral context for a mutation tool with no annotations: conflict/error behavior and permissions.

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?

Schema description coverage is 100%: index name, optional body (mappings/settings), and optional cluster are all documented in the schema itself. The description adds nothing beyond the schema, so the baseline 3 applies.

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 states a specific verb and resource ('Create a new index'), which is unambiguous on its own. However, it offers no differentiation from siblings such as create_data_stream or index_document, which also create search-related resources.

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?

There is no guidance on when to use this tool versus alternatives like create_data_stream, nor any mention of prerequisites or exclusions. The agent must infer usage entirely from the tool name.

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

delete_aliasC

Delete an alias for a specific index.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the alias
indexYesName of the index
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not state that this is a destructive mutation, that it only removes the alias pointer (leaving index data intact), or what happens if the alias/index pair does not exist.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler. It is efficient, though its terseness is part of why behavioral coverage is thin.

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?

An output schema exists so return values need not be explained, but for a destructive operation with no annotations the description should at least clarify that only the alias mapping is removed, not indexed data. That key disambiguation is missing.

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?

Schema description coverage is 100%, so all three parameters (name, index, cluster) are already documented in the schema. The description adds no format, default, or constraint detail beyond it, so baseline 3 applies.

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?

States a specific verb and resource ('Delete an alias') plus the scope 'for a specific index'. This separates it from put_alias, get_alias and list_aliases, though it does not explicitly name any sibling.

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?

There is no guidance on when to delete an alias versus reassigning one with put_alias, nor any prerequisite or warning condition. The agent must infer usage entirely from the name.

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

delete_by_queryC

Deletes documents matching the provided query.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesQuery to match documents for deletion
indexYesName of the index
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says 'deletes' but omits whether the operation is irreversible, what permissions it requires, whether it is transactional, and how many documents may be affected. For a destructive bulk operation this is a significant gap.

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

Conciseness4/5

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

A single short sentence with no filler or redundancy. However, its brevity comes at the cost of omitting useful behavioral context, so it is concise but not maximally informative.

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?

The output schema exists, so return values need not be described. But for a destructive, potentially bulk-mutating tool with no annotations, the definition should disclose safety-relevant behavior such as irreversibility and permissions; it does not.

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?

Schema description coverage is 100%, so all three parameters are already documented in the schema. The description adds no syntax or format details beyond what the schema provides, making the baseline 3 appropriate.

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?

States a specific verb and resource: deletes documents matching a query. It implies bulk deletion rather than single-document deletion, but does not explicitly contrast itself with the sibling delete_document, so it stops short of full sibling differentiation.

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 only restates the purpose. It gives no guidance on when to use delete_by_query versus delete_document or search_documents, and no prerequisites or warnings.

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

delete_data_streamA

Delete one or more data streams.

Permanently deletes the specified data streams and all their backing indices.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the data stream(s) to delete. Can be a comma-separated list or wildcard pattern.
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden, and it does disclose the two most important traits: the deletion is permanent and it cascades to all backing indices. It stops short of covering permission requirements, what happens to in-use or partially-matched streams, or whether the default cluster target matters.

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?

Two short sentences, front-loaded with the action and followed by the consequence. No filler, no repetition of the title, and every sentence earns its place.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and both parameters are fully documented in the schema. The destructive cascade is covered, leaving only operational details (permissions, behavior on missing/in-use streams) unaddressed for a mutation tool with no annotations.

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?

Schema description coverage is 100%, so the schema already documents both 'name' (comma-separated/wildcard) and 'cluster' (default fallback). The description's 'one or more' only loosely echoes the wildcard capability and adds no syntax or default details beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource ('Delete ... data streams'), which cleanly separates it from sibling delete_index and delete_document by the resource noun alone. It also clarifies scope ('one or more'), but never explicitly names a sibling or contrasts with delete_index, so it falls short of the 5 benchmark.

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 gives no when-to-use guidance, no prerequisites, and no pointer to alternatives such as delete_index or general_api_request. The only implied context is that this is for data streams, which the name already conveys.

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

delete_documentC

Delete a document by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDocument ID
indexYesName of the index
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state that deletion is destructive/irreversible, whether a missing ID errors or is silently ignored, whether the change is immediately visible (refresh), or whether the operation is idempotent.

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

Conciseness4/5

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

A single short sentence with the key selector front-loaded and no wasted words. It is efficient, though it is arguably terse rather than genuinely information-dense.

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?

With an output schema present, return values needn't be explained, but for a destructive operation with zero annotations the description omits the safety and failure-mode context an agent needs. The absence of any alternatives guidance leaves a real gap for a 3-parameter delete tool.

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?

Schema description coverage is 100%, so all three parameters (id, index, cluster) are already documented in the schema, establishing a baseline of 3. The description adds only the 'by ID' selector and gives no extra semantics such as cluster/index routing behavior.

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?

States a specific verb (Delete) and resource (document) plus the selector ('by ID'), which distinguishes it from the index-level delete_index. It does not, however, differentiate from the sibling delete_by_query, which is the closest alternative.

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?

There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as delete_by_query for bulk/conditional deletion. The agent must infer the choice from the name alone.

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

delete_indexC

Delete an index.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYesName of the index
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether deletion is irreversible, what happens to indexed documents, whether it requires a stopped index or specific permissions, or how errors are surfaced. For a destructive operation with zero annotation coverage, this is a significant gap.

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

Conciseness4/5

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

A single, front-loaded sentence with zero waste. It is precise, if sparse, and earns its place without padding. Slight deduction for being too terse to be fully helpful.

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?

The tool is a destructive operation with no annotations and only a bare description. Even with an output schema covering return values and a fully documented parameter schema, the description omits critical context: irreversibility, side effects, permissions, and failure modes. An agent cannot safely invoke this on description alone.

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?

Schema description coverage is 100%, and both parameters are documented in the schema (index name, optional cluster with default). The description adds nothing beyond the schema, so baseline 3 applies — adequate but no extra value.

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

Purpose3/5

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

States a specific verb+resource ('Delete an index'), so the purpose is unambiguous. But it offers no differentiation from siblings like delete_document, delete_alias, or delete_data_stream — it merely relies on the name. Minimum viable.

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?

No when-to-use guidance, no prerequisites, no mention of alternatives. The agent gets no signal about how this differs from delete_by_query or other delete siblings.

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

general_api_requestA

Perform a general HTTP API request. Use this tool for any Elasticsearch/OpenSearch API that does not have a dedicated tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoRequest body
pathYesAPI endpoint path
methodYesHTTP method (GET, POST, PUT, DELETE, etc.)
paramsNoQuery parameters
clusterNoOptional cluster name. Uses the default cluster if omitted.

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says nothing about permissions/auth, whether destructive methods (DELETE/PUT) are permitted, side effects on indices or data, error/response behavior, or rate limits — significant omissions for an unrestricted pass-through tool capable of writes and deletes.

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?

Two tight sentences, zero padding, and the purpose plus its differentiator are front-loaded. Nothing here is redundant or misplaced.

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?

This is a high-blast-radius, high-complexity catch-all with no annotations and no output schema, so the description should warn about write/delete risk, auth, and expected responses. It omits all of that, leaving the agent under-informed about the consequences of an arbitrary request.

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?

Schema description coverage is 100%, so method, path, body, params, and cluster are all documented in the schema. The description adds no syntax, path-format, or cluster-selection detail beyond what the schema already states; baseline 3 applies.

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

Purpose5/5

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

States a concrete action (perform an HTTP API request) and scopes it to Elasticsearch/OpenSearch APIs lacking a dedicated tool. The second sentence positively differentiates it from the many siblings (create_index, search_documents, etc.), so an agent can route without opening any schema.

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

Usage Guidelines5/5

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

Explicitly says when to use it: any API with no dedicated tool. That implicitly and clearly defines when NOT to use it — prefer the named siblings. This is exactly the fallback routing guidance an agent needs.

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

get_aliasC

Get alias information for a specific index.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYesName of the index
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get' implies a read operation, but the description does not state permissions, rate limits, or whether it returns all aliases for the index or a single alias.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple getter, though its brevity leaves gaps in usage and behavioral context.

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?

An output schema exists, so return values need not be explained, and the input schema fully covers parameters. However, with no annotations and no routing to alternatives such as list_aliases, the description remains incomplete regarding when and how to use this tool versus siblings.

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?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description adds no additional meaning beyond what the schema provides, making the baseline score of 3 appropriate.

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 states a specific verb ('Get') and resource ('alias information') scoped to a specific index. It is clear enough to understand the operation, but it does not differentiate this tool from sibling list_aliases or get_index.

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 gives no explicit when-to-use guidance, no prerequisites, and no alternatives. It merely restates the purpose, leaving the agent to infer the appropriate context.

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

get_cluster_healthC

Returns basic information about the health of the cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says "basic information" but doesn't clarify that it's read-only, doesn't list what health indicators are included, and doesn't mention whether it causes side effects. For a health-check tool with no annotations, this is a significant gap.

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

Conciseness4/5

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

A single efficient sentence that is front-loaded with the verb and resource. It is concise but lacks additional structure that could provide context.

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?

With no annotations, an output schema present, and one fully documented parameter, the description covers the basic purpose. However, it doesn't explain what "health" entails or how it differs from sibling stats tools, leaving the agent with insufficient behavioral context.

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?

Schema coverage is 100%, and the schema already documents the optional cluster parameter and its default behavior. The description adds no parameter information, so this is a baseline case.

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?

States a specific verb (Returns) and resource (health of the cluster), so the agent knows this is a read-only health check. It is inferable from the name and doesn't collide with siblings like get_cluster_stats, but it doesn't explicitly differentiate itself from that sibling.

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?

There is no guidance on when to use this tool versus alternatives such as get_cluster_stats or general_api_request. The purpose is implied by the name, but no explicit use context or exclusions are provided.

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

get_cluster_statsB

Returns high-level overview of cluster statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it only says it returns an overview. It omits permission requirements, whether the call is read-only/safe, cost or rate considerations, and what 'statistics' actually encompass.

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?

One short, front-loaded sentence with no filler or repetition. For a zero-required-parameter read tool this is an appropriately sized description.

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?

An output schema exists, so return values need not be explained, and the single parameter is fully documented. But the total absence of annotations plus an unaddressed near-duplicate sibling (get_cluster_health) leaves the definition only minimally sufficient.

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?

Schema description coverage is 100% and the single optional 'cluster' parameter is already documented as defaulting to the default cluster, so the description adds nothing beyond structured data. Baseline 3 applies when the schema does the heavy lifting.

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 names a specific verb and resource ('Returns ... cluster statistics') and scopes it as a 'high-level overview,' so the agent knows it is an aggregate/summary read. However, it does nothing to separate this from the close sibling get_cluster_health, which an agent could easily confuse it with.

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?

There is no statement of when to use this tool, no prerequisites, and no mention of alternatives such as get_cluster_health or general_api_request. The agent must guess the intended context from the name alone.

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

get_data_streamC

Get information about one or more data streams.

Retrieves configuration, mappings, settings, and other information about the specified data streams.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of the data stream(s) to retrieve. Can be a comma-separated list or wildcard pattern. If not provided, retrieves all data streams.
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. 'Retrieves' implies a read-only operation but never states it, and there is nothing about permissions, error behavior for missing streams, or result size. The list of returned fields ('configuration, mappings, settings') is the only added behavioral content.

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

Conciseness3/5

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

The description is brief and front-loaded, but the second sentence largely restates the first with a field list rather than adding new information. No wasted words beyond that redundancy.

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?

An output schema exists, so return values need not be explained, and the input schema is complete. However, with zero annotations the description should carry basic safety/usage context for the read operation and does not, leaving an agent to infer read-only semantics and when to prefer this over sibling lookup tools.

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?

Schema description coverage is 100%, so both 'name' (comma-separated list or wildcard, all if omitted) and 'cluster' are already fully documented in the schema. The description adds nothing about parameter semantics, which is acceptable at the 100% coverage baseline.

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?

States a specific verb ('Get') and resource ('data streams') plus the cardinality ('one or more'), so an agent immediately knows this is a read of data-stream metadata. It does not explicitly differentiate itself from siblings like get_index or create_data_stream, relying on the verb to carry that distinction.

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?

There is no when-to-use guidance, no mention of prerequisites, and no named alternative (e.g., get_index for indices, delete_data_stream for removal). The only usage signal is the implicit 'retrieve info' framing, which the agent must infer.

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

get_documentC

Get a document by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDocument ID
indexYesName of the index
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get' implies a read, but the description says nothing about behavior on a missing document (error vs empty), permissions, or whether the result is a point-in-time snapshot; an output schema exists, which covers return values but not behavior.

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

Conciseness4/5

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

A single front-loaded sentence with zero waste, correctly leading with verb and resource. It is appropriately sized given the rich schema and existing output schema.

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?

With an output schema and full parameter documentation, the definition is minimally sufficient for a simple read tool. The remaining gap is behavioral context (error semantics, cluster fallback implications) that neither annotations nor the description supply.

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?

Schema description coverage is 100%, so the schema already documents id, index, and the optional cluster default. The description adds only 'by ID', which is redundant with the schema; baseline 3 applies when the schema does the heavy lifting.

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?

States a specific verb (Get) and resource (document) and adds the lookup key ('by ID'), which distinguishes it from search_documents. It does not, however, reference any sibling tool or explain how it differs from them.

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?

No when-to-use guidance, no statement of when to prefer search_documents or get_index instead, and no prerequisites such as whether the index must exist. Usage must be inferred from the name alone.

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

get_indexB

Returns information (mappings, settings, aliases) about one or more indices.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYesName of the index
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It says what information is returned but omits behavioral details: whether it requires read permissions, whether it works on missing indices (throws vs returns empty), and it doesn't mention that it's a read-only operation with no side effects.

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?

A single, efficient sentence that front-loads the return types. No filler or redundancy.

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?

With an output schema present, the description needn't detail return values, but for a read-only tool with no annotations it should still disclose permission requirements and behavior on missing indices. The lack of any behavioral context leaves gaps.

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?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description adds 'one or more indices' (implying the index param could accept multiple, though schema shows a single string), which is a minor addition. Baseline 3 is appropriate.

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?

States a specific verb (Returns) and resource (indices) and lists the info types (mappings, settings, aliases). It is distinguishable from siblings like create_index or list_indices, but it doesn't explicitly name alternatives for retrieving index metadata.

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?

No guidance on when to use this tool versus siblings such as list_indices, get_alias, or get_data_stream. The description only says what it returns, not when to call it or for what purpose.

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

index_documentC

Creates or updates a document in the index.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoOptional document ID
indexYesName of the index
clusterNoOptional cluster name. Uses the default cluster if omitted.
documentYesDocument data

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses upsert behavior ('creates or updates'), but omits permissions, overwrite/conflict semantics tied to the optional id, index existence prerequisites, and any side effects.

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

Conciseness4/5

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

It is a single front-loaded sentence with no wasted words. However, its extreme brevity is undersized for a mutation tool with optional id and cluster semantics.

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?

The output schema covers return values and the 100% schema coverage documents parameters, so the description need not repeat those. Still, missing usage guidance and mutation behavior details leave meaningful gaps for an upsert tool with no annotations.

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?

Schema description coverage is 100%, and every parameter is documented in the schema. The description adds no parameter meaning beyond what the schema already provides, so the baseline of 3 applies.

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?

States a specific verb (creates or updates) and resource (a document in the index), making the core operation clear. It does not differentiate the tool from sibling document tools like get_document or search_documents.

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 when-to-use guidance, no alternatives, and no conditions such as requiring an existing index or using the optional id to update instead of create. Sibling tools are not mentioned at all.

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

list_aliasesB

List all aliases.

ParametersJSON Schema
NameRequiredDescriptionDefault
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden, and 'List' at least implies a non-mutating read. However, it says nothing about required permissions, cluster scoping behavior when the cluster arg is omitted, or result size, so the behavioral profile remains thin.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler. It is efficiently structured, though its brevity borders on under-specification rather than optimal conciseness.

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?

The tool is simple, takes no required parameters, and has an output schema so return values need not be explained. Still, the description leaves the cluster-scoping behavior and the distinction from get_alias unaddressed.

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?

Schema description coverage is 100% and the single 'cluster' parameter is fully documented in the schema, including the default-cluster fallback. The description adds nothing about it, so the baseline 3 applies.

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?

States a specific verb (List) and resource (aliases) with an explicit 'all' scope, so the operation is unambiguous. It does not distinguish itself from the sibling get_alias, which fetches a single alias, so an agent gets no routing signal beyond the name.

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?

No when-to-use guidance, no prerequisites, and no mention of the alternative get_alias for single-alias lookups. The agent must infer the choice purely from the tool name.

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

list_indicesC

List all indices.

ParametersJSON Schema
NameRequiredDescriptionDefault
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. "List" implies a safe read, but the description says nothing about permissions, pagination, result size limits, or whether it spans all clusters. For a tool with zero annotation coverage this is a notable gap.

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

Conciseness3/5

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

A single short sentence that is front-loaded and wastes no words, but it is under-specified rather than genuinely concise. There is nothing to trim, yet nothing extra is provided either.

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?

An output schema exists, so return values need not be explained, and the lone parameter is documented. But with no annotations and no usage context, the description is only minimally complete for an agent deciding between this and its many siblings.

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?

Schema description coverage is 100%, and the single optional 'cluster' parameter is fully documented in the schema (default cluster if omitted). The description adds no parameter meaning beyond that, so the baseline of 3 applies.

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?

States a clear verb+resource ("List all indices"), which distinguishes it from get_index (single index) and list_aliases (different resource). However, it offers no explicit sibling differentiation or scope detail beyond the plural noun.

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?

No guidance on when to use this versus get_index or search_documents, and no mention of prerequisites or contexts. The agent must infer usage entirely from the name.

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

put_aliasC

Create or update an alias for a specific index.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesAlias configuration
nameYesName of the alias
indexYesName of the index
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It doesn't mention whether this operation is idempotent, what permissions are required, whether it overwrites existing aliases, or any side effects. For a mutation tool with zero annotation coverage, this is a significant gap.

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?

Single sentence, front-loaded with the action and resource. Zero waste, appropriately sized.

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 mutation tool with no annotations and an output schema that may cover returns, the description is incomplete. It lacks usage context, behavioral details like idempotency or side effects, and any prerequisites (e.g., index must exist). Given the complexity of a 4-parameter tool with a nested object, more context is needed.

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?

Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter meaning beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.

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?

States a specific verb+resource: 'Create or update an alias' for 'a specific index'. This clearly distinguishes from list_aliases, get_alias, and delete_alias. However, it doesn't explicitly differentiate from other alias tools beyond the verb.

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?

No guidance on when to use this tool versus alternatives like list_aliases or get_alias. The description only states what it does, not when it should be invoked or what conditions apply.

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

search_documentsC

Search for documents.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesSearch query
indexYesName of the index
clusterNoOptional cluster name. Uses the default cluster if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about pagination, query DSL expectations, or that this is a non-mutating read. Only the verb 'Search' weakly implies a read operation; permissions, limits, and result behavior are all unstated.

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

Conciseness3/5

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

A single short sentence is efficient and front-loaded, but it is under-specified rather than genuinely concise. There is no wasted text, yet almost no information is conveyed.

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?

An output schema exists so return values need not be explained, but this is a nested-object search tool with two required params and zero annotations, and the description supplies none of the missing behavioral or usage context. It is inadequate for the tool's complexity.

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?

Schema description coverage is 100%, so the parameters (index, body, cluster) are already documented in the schema. The description adds no additional meaning about the query body structure or cluster selection, so the baseline 3 applies.

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

Purpose3/5

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

States a clear verb and resource ('Search for documents'), but adds no scope or qualifier to distinguish it from siblings like get_document or delete_by_query. An agent cannot tell from the description alone which index/query semantics apply or how it differs from other document 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?

There is no when-to-use guidance, no mention of alternatives (e.g., get_document for ID lookup), and no prerequisites such as needing an existing index. The agent must infer everything from the name.

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. 20 tool updatesv2.1.4
    • Changedanalyze_text10 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / analyzer / description
        Added value: +"Name of the analyzer to use (e.g., 'standard', 'korean',\n     'korean_search'). If index is specified, you can use\n     custom analyzers defined in that index."
      • addedInput schema / properties / attributes / description
        Added value: +"List of token attributes to return when explain=True\n       (e.g., ['keyword', 'type']). If not specified, all\n       attributes are returned."
      • addedInput schema / properties / char_filter / description
        Added value: +"List of character filters to apply before tokenization.\n        Used with 'tokenizer' for custom analysis chain."
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / explain / description
        Added value: +"If True, returns detailed information about each token\n    including all token attributes and filter transformations.\n    Useful for debugging complex analyzer chains."
      • addedInput schema / properties / filter / description
        Added value: +"List of token filters to apply (e.g., ['lowercase', 'stop']).\n   Used with 'tokenizer' for custom analysis chain."
      • addedInput schema / properties / index / description
        Added value: +"Index name to use its configured analyzer. If not specified,\n   uses cluster-level analysis with built-in analyzers only."
      • addedInput schema / properties / text / description
        Added value: +"The text to analyze"
      • addedInput schema / properties / tokenizer / description
        Added value: +"Tokenizer to use for custom analysis chain. Cannot be\n      used together with 'analyzer'."
    • Changedcreate_data_stream3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / name / description
        Added value: +"Name of the data stream to create"
    • Changedcreate_index4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body / description
        Added value: +"Optional index configuration including mappings and settings"
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / index / description
        Added value: +"Name of the index"
    • Changeddelete_alias4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / index / description
        Added value: +"Name of the index"
      • addedInput schema / properties / name / description
        Added value: +"Name of the alias"
    • Changeddelete_by_query4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body / description
        Added value: +"Query to match documents for deletion"
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / index / description
        Added value: +"Name of the index"
    • Changeddelete_data_stream3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / name / description
        Added value: +"Name of the data stream(s) to delete.\n  Can be a comma-separated list or wildcard pattern."
    • Changeddelete_document4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / id / description
        Added value: +"Document ID"
      • addedInput schema / properties / index / description
        Added value: +"Name of the index"
    • Changeddelete_index3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / index / description
        Added value: +"Name of the index"
    • Changedgeneral_api_request6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body / description
        Added value: +"Request body"
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / method / description
        Added value: +"HTTP method (GET, POST, PUT, DELETE, etc.)"
      • addedInput schema / properties / params / description
        Added value: +"Query parameters"
      • addedInput schema / properties / path / description
        Added value: +"API endpoint path"
    • Changedget_alias3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / index / description
        Added value: +"Name of the index"
    • Changedget_cluster_health2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
    • Changedget_cluster_stats2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
    • Changedget_data_stream3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / name / description
        Added value: +"Name of the data stream(s) to retrieve.\n  Can be a comma-separated list or wildcard pattern.\n  If not provided, retrieves all data streams."
    • Changedget_document4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / id / description
        Added value: +"Document ID"
      • addedInput schema / properties / index / description
        Added value: +"Name of the index"
    • Changedget_index3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / index / description
        Added value: +"Name of the index"
    • Changedindex_document5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / document / description
        Added value: +"Document data"
      • addedInput schema / properties / id / description
        Added value: +"Optional document ID"
      • addedInput schema / properties / index / description
        Added value: +"Name of the index"
    • Changedlist_aliases2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
    • Changedlist_indices2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
    • Changedput_alias5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body / description
        Added value: +"Alias configuration"
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / index / description
        Added value: +"Name of the index"
      • addedInput schema / properties / name / description
        Added value: +"Name of the alias"
    • Changedsearch_documents4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body / description
        Added value: +"Search query"
      • addedInput schema / properties / cluster / description
        Added value: +"Optional cluster name. Uses the default cluster if omitted."
      • addedInput schema / properties / index / description
        Added value: +"Name of the index"
  2. 20 tool updatesv2.1.2
    • Addedanalyze_text
    • Addedcreate_data_stream
    • Addedcreate_index
    • Addeddelete_alias
    • Addeddelete_by_query
    • Addeddelete_data_stream
    • Addeddelete_document
    • Addeddelete_index
    • Addedgeneral_api_request
    • Addedget_alias
    • Addedget_cluster_health
    • Addedget_cluster_stats
    • Addedget_data_stream
    • Addedget_document
    • Addedget_index
    • Addedindex_document
    • Addedlist_aliases
    • Addedlist_indices
    • Addedput_alias
    • Addedsearch_documents
  3. 19 tool updatesv2.1.1
    • Removedcreate_data_stream
    • Removedcreate_index
    • Removeddelete_alias
    • Removeddelete_by_query
    • Removeddelete_data_stream
    • Removeddelete_document
    • Removeddelete_index
    • Removedgeneral_api_request
    • Removedget_alias
    • Removedget_cluster_health
    • Removedget_cluster_stats
    • Removedget_data_stream
    • Removedget_document
    • Removedget_index
    • Removedindex_document
    • Removedlist_aliases
    • Removedlist_indices
    • Removedput_alias
    • Removedsearch_documents
  4. 3 tool updatesv1.0.0
    • Addedcreate_data_stream
    • Addeddelete_data_stream
    • Addedget_data_stream
  5. 16 tool updates
    • First observedcreate_index
    • First observeddelete_alias
    • First observeddelete_by_query
    • First observeddelete_document
    • First observeddelete_index
    • First observedgeneral_api_request
    • First observedget_alias
    • First observedget_cluster_health
    • First observedget_cluster_stats
    • First observedget_document
    • First observedget_index
    • First observedindex_document
    • First observedlist_aliases
    • First observedlist_indices
    • First observedput_alias
    • First observedsearch_documents

TDQS

B3.3/5.0

Scored across 20 tools

Disambiguation5/5

Each tool targets a clearly distinct resource and action (index, document, alias, data stream, cluster, analysis, or generic API). Overlaps like get_index vs list_indices and get_alias vs list_aliases are cleanly separated by specificity. The general_api_request fallback is explicitly scoped to APIs without dedicated tools, so it does not create real misselection risk.

Naming Consistency5/5

Tools follow a consistent snake_case verb_noun convention (create_index, delete_document, get_cluster_health, put_alias, etc.). The only minor exception is general_api_request, but it still fits the overall readable naming style. There is no mixing of camelCase or conflicting verb patterns.

Tool Count4/5

At 20 tools, the surface is slightly heavy by the usual 3–15 guideline, but Elasticsearch is a broad domain and each tool covers a meaningful resource area. The set avoids extreme bloat and does not include redundant operations.

Completeness4/5

Core CRUD and lifecycle coverage exists for indices, documents, aliases, data streams, and cluster inspection, with search and text analysis included. Notable gaps remain—such as dedicated index template management (required for data streams), bulk operations, and update-by-query—but the general_api_request tool provides a workaround for any missing API.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables LLMs to interact with Elasticsearch clusters, allowing them to manage indices and execute search queries using natural language.
    2
    -
  • 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
    19 npm
    Apache 2.0
  • F
    license
    B
    quality
    D
    maintenance
    Connects to Elasticsearch clusters through the Model Context Protocol, enabling natural language querying and management of Elasticsearch data. Provides tools to search indices, list available indices, and retrieve index mappings.
    3
    -
  • A
    license
    B
    quality
    D
    maintenance
    Enables interaction with Elasticsearch clusters for health checks, index management, document CRUD operations, and search via natural language.
    10
    11 npm
    MIT