SEARCH AND ANALYTICS / OpenSearch
OpenSearch MCP Server
Lets an assistant list indices, read mappings, run searches and call any OpenSearch API through one generic tool, against one or several clusters. The Python implementation supports stdio and a streaming transport (SSE and Streamable HTTP) at the pinned revision.
“opensearch-mcp-server-py is a Model Context Protocol (MCP) server for OpenSearch that enables AI assistants to interact with OpenSearch clusters.”
01 / THE REASONING
Why this made the selection.
- The README lists the nine core tools enabled by default; its additional tools stay off until enabled through the User Guide's tool filter, and the agentic_memory, observability, search_relevance and skills categories stay off until enabled with OPENSEARCH_ENABLED_CATEGORIES.
- USER_GUIDE.md documents OPENSEARCH_SETTINGS_ALLOW_WRITE to turn write operations off, per-category write exceptions, and six authentication methods in a stated priority order.
02 / THE REVIEW RECORD
What we actually inspected.
Source review has boundaries.
A clear record is more useful than a “safe” badge.
Material inspected
- README.md at 65479140d837cc2b4d0966bf5cceb9cd1cbb6d6e: description, pip install, zero-config uvx block, tool categories, per-call connection parameters.
- USER_GUIDE.md at the same commit: transports, modes, authentication priority, write settings, tool categories.
- pyproject.toml at the same commit: opensearch-mcp-server-py, Python 3.10 or later, Apache-2.0.
- LICENSE.txt at the same commit: Apache-2.0 terms.
- pyproject.toml at cd287e82 (default-branch HEAD on 2026-10-13): name, version 0.12.0, licence.
Our findings
- Core tools enabled by default: ListIndexTool, IndexMappingTool, SearchIndexTool, GetShardsTool, ClusterHealthTool, CountTool, ExplainTool, MsearchTool and GenericOpenSearchApiTool.
- All three transports are described in the publisher sources for the pinned revision: stdio, and a streaming server that serves SSE and Streamable HTTP.
- Authentication priority per USER_GUIDE.md: no authentication (only if OPENSEARCH_NO_AUTH is set), a bearer token or AWS credentials from request headers (header auth enabled), IAM role, basic authentication, then AWS profile or ambient credentials. The README also names OpenSearch mTLS.
- allow_write_categories only takes effect when allow_write is false, and then enables writes for the listed categories alone.
- The previous upstreamDescription ("Run OpenSearch queries and inspect indices through documented MCP tools.") does not appear in the README; it is replaced by the README's first sentence. The previous install command (uvx opensearch-mcp-server-py) is not a README line; install.command is now the README's pip line. configExample is the README's zero-config block.
- Health on 2026-10-13: repository not archived, GitHub reports Apache-2.0, and at HEAD cd287e82 pyproject.toml still names opensearch-mcp-server-py under Apache-2.0.
Not established by this review
- Server startup, cluster connection and query execution were not tested.
- The write setting, the SSRF guard and multi mode were not exercised.
The review applies to the material and revision named here. A newer upstream release can change its behavior.
03 / PUT IT TO WORK
Connect a server deliberately.
DOCUMENTED COMMAND
pip install opensearch-mcp-server-py Copying does not execute this command. It may retrieve a newer version than the reviewed source.
- Install from PyPI as above, or let the client launch it with uvx as the README's zero-config block shows.
- Set OPENSEARCH_URL and credentials, or leave them unset and let the agent pass connection parameters per call.
- Set OPENSEARCH_SETTINGS_ALLOW_WRITE=false unless the assistant should change the cluster.
Before you start
- Python 3.10 or later with pip, or uv for uvx.
- A reachable OpenSearch cluster with valid credentials.
Documented configuration example
Use the client and authentication context described in the setup guidance. Configuration formats vary between hosts.
{
"mcpServers": {
"opensearch": {
"command": "uvx",
"args": [
"opensearch-mcp-server-py"
]
}
}
} 04 / FOLLOW THE EVIDENCE
The source trail.
Our notes are separate from the original resource.
Check upstream before adopting a new version.
https://github.com/opensearch-project/opensearch-mcp-server-py/blob/65479140d837cc2b4d0966bf5cceb9cd1cbb6d6e/README.md
Supports: upstreamDescription, summary, install, configExample, tools, transports, limitations
- User guide ↗Checked
https://github.com/opensearch-project/opensearch-mcp-server-py/blob/65479140d837cc2b4d0966bf5cceb9cd1cbb6d6e/USER_GUIDE.md
Supports: transports, authentication, write settings, access, limitations
- Package manifest ↗Checked
https://github.com/opensearch-project/opensearch-mcp-server-py/blob/65479140d837cc2b4d0966bf5cceb9cd1cbb6d6e/pyproject.toml
Supports: language, package name, license
- Repository licence ↗Checked
https://github.com/opensearch-project/opensearch-mcp-server-py/blob/65479140d837cc2b4d0966bf5cceb9cd1cbb6d6e/LICENSE.txt
Supports: license
- Package manifest at HEAD ↗Checked
https://github.com/opensearch-project/opensearch-mcp-server-py/blob/cd287e82b3c761d74dd15d7c25ca4f919e87d12b/pyproject.toml
Supports: package name and licence unchanged at HEAD