← Explore all mcp servers

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.

Upstream setup instructions ↗

DOCUMENTED COMMAND

pip install opensearch-mcp-server-py

Copying does not execute this command. It may retrieve a newer version than the reviewed source.

  1. Install from PyPI as above, or let the client launch it with uvx as the README's zero-config block shows.
  2. Set OPENSEARCH_URL and credentials, or leave them unset and let the agent pass connection parameters per call.
  3. 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.

  1. https://github.com/opensearch-project/opensearch-mcp-server-py/blob/65479140d837cc2b4d0966bf5cceb9cd1cbb6d6e/README.md

    Supports: upstreamDescription, summary, install, configExample, tools, transports, limitations

  2. User guide ↗Checked

    https://github.com/opensearch-project/opensearch-mcp-server-py/blob/65479140d837cc2b4d0966bf5cceb9cd1cbb6d6e/USER_GUIDE.md

    Supports: transports, authentication, write settings, access, limitations

  3. Package manifest ↗Checked

    https://github.com/opensearch-project/opensearch-mcp-server-py/blob/65479140d837cc2b4d0966bf5cceb9cd1cbb6d6e/pyproject.toml

    Supports: language, package name, license

  4. Repository licence ↗Checked

    https://github.com/opensearch-project/opensearch-mcp-server-py/blob/65479140d837cc2b4d0966bf5cceb9cd1cbb6d6e/LICENSE.txt

    Supports: license

  5. https://github.com/opensearch-project/opensearch-mcp-server-py/blob/cd287e82b3c761d74dd15d7c25ca4f919e87d12b/pyproject.toml

    Supports: package name and licence unchanged at HEAD

Evidence & Ask