mcp-opensearch
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENSEARCH_URL | No | OpenSearch cluster URL | http://localhost:9200 |
| OPENSEARCH_PASSWORD | No | Basic auth password | |
| OPENSEARCH_USERNAME | No | Basic auth username |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Check connectivity to the OpenSearch cluster. Returns cluster name and version. |
| cluster_healthA | Get the cluster health status including node count, shard info, and overall status (green/yellow/red). |
| list_indicesA | List indices in the cluster with their health, doc count, and size. Args: pattern: Optional index name pattern to filter (e.g. 'filebeat-', 'logs-'). |
| get_index_mappingA | Get the field mapping (schema) for an index, showing all fields and their types. Args: index: Name of the index (e.g. 'filebeat-2024.01.15' or 'logs-*'). |
| searchA | Execute a read-only search query against an index using OpenSearch Query DSL. The query_body must be a valid JSON string representing the query portion. Example: {"query": {"match": {"message": "error"}}, "sort": [{"@timestamp": "desc"}]} Args: index: Index name or pattern to search (e.g. 'filebeat-*'). query_body: JSON string with the OpenSearch Query DSL body. size: Maximum number of results to return (default 20, max 100). |
| countA | Count documents in an index, optionally filtered by a query. Args: index: Index name or pattern (e.g. 'logs-*'). query_body: Optional JSON string with a query filter (e.g. '{"query": {"match": {"level": "ERROR"}}}'). |
| list_aliasesA | List all index aliases in the cluster, showing which indices they point to. |
| get_documentB | Retrieve a specific document by its ID. Args: index: Name of the index containing the document. doc_id: The document ID. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Tools target distinct resources/actions: cluster health, index listing, mappings, search, count, aliases, and document retrieval. Ping and cluster_health both relate to health but are clearly differentiated, as are search and count; no tools appear to duplicate each other.
Names are consistently lowercase snake_case, but conventions vary: bare verbs (ping, search, count), list_* (list_indices, list_aliases), get_* (get_document, get_index_mapping), and one noun-phrase tool (cluster_health). This is readable but not a uniform verb_noun pattern.
Eight tools fit a focused OpenSearch query and observability server well. There is no bloat or redundancy, and each tool covers a meaningful operation.
The set covers health, index listing/mapping, search, count, aliases, and document retrieval, but lacks write operations and common admin reads like index settings or cluster/node stats. For a read-only observability tool it is workable, but as a general OpenSearch surface it has notable gaps.