Skip to main content

opensearch-dashboard-mcp

MCP server that exposes OpenSearch Dashboards to an LLM client over stdio. Read saved objects, list tenants and index patterns, and query logs like the Discover app — all through the Dashboards API, so it works even when the raw OpenSearch REST API isn't exposed.

Run

uvx opensearch-dashboard-mcp

(After publishing to PyPI. For local dev use uvx --from . opensearch-dashboard-mcp.)

Configure

Environment variables:

Variable Default Purpose
OPENSEARCH_DASHBOARDS_URL http://localhost:5601 Base URL
OPENSEARCH_DASHBOARDS_USERNAME — Basic auth / session-login user
OPENSEARCH_DASHBOARDS_PASSWORD — Basic auth / session-login password
OPENSEARCH_DASHBOARDS_VERIFY_TLS true Verify TLS certs
SSH_PROXY_TO — If set (e.g. user@host), route all requests through an embedded SSH SOCKS5 tunnel to that host
SSH_PROXY_PORT auto Local port for the tunnel; a free port is picked when unset

SSH tunnel

When SSH_PROXY_TO is set, the server spawns ssh -N -D <port> <host> before serving and routes HTTP through the resulting socks5h:// proxy. DNS is resolved on the remote side, so this reaches targets only visible from a remote network (e.g. a VPN living inside a container). Requires key-based SSH auth (runs with BatchMode=yes). The tunnel lives exactly as long as the server.

Use in an MCP client

{
  "mcpServers": {
    "opensearch-dashboards": {
      "command": "uvx",
      "args": ["opensearch-dashboard-mcp"],
      "env": {
        "OPENSEARCH_DASHBOARDS_URL": "http://localhost:5601",
        "OPENSEARCH_DASHBOARDS_USERNAME": "admin",
        "OPENSEARCH_DASHBOARDS_PASSWORD": "admin"
      }
    }
  }
}

Tools

  • ping() — check connectivity + auth. Hits the security authinfo endpoint; on a 401 with credentials set, performs a session login and re-checks. Returns {connected, authenticated, user, tenants} or the error reason.
  • list_saved_objects(type_="dashboard", per_page=20, tenant=None) — saved objects via saved_objects/_find, returned as compact {id, title, type}. tenant selects the multi-tenancy tenant (name, "__user__" for the private tenant, or None for the user default).
  • get_tenants() — multi-tenancy tenants via the security plugin config API, as {name, description, reserved, hidden}.
  • get_index_patterns(per_page=50) — index patterns (saved objects of type index-pattern), as {id, title, time_field}.
  • discover_search(index, query=None, time_from=None, time_to=None, time_field="@timestamp", size=10, fields=None, tenant=None) — fetch documents like the Discover app through the internal search API (/internal/search/opensearch). query is a Lucene query_string; time_from/ time_to filter a range (now-15m, ISO, …); fields trims _source to avoid flooding context. Returns {index, total, count, hits}.

Multi-tenancy note: saved objects are stored per tenant. Discover available tenant names with get_tenants, then pass one as tenant to the other tools.

Develop

uv sync --group dev
uv run opensearch-dashboard-mcp        # starts on stdio; Ctrl-D to exit
uv run pytest                          # tests (add --cov for the 100% gate)

Layout: config.py (env → Settings), client.py (async httpx wrapper), tools.py (tool registrations), server.py (entry point + tunnel), tunnel.py (SSH SOCKS5 tunnel). See CLAUDE.md for the architecture in depth.

Metadata

Release files for opensearch-dashboard-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for opensearch-dashboard-mcp 0.1.0
File Size Uploaded Provenance Actions
opensearch_dashboard_mcp-0.1.0.tar.gz 96.9 kB With provenance Details for opensearch_dashboard_mcp-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for opensearch-dashboard-mcp 0.1.0
File Interpreter ABI Platform Actions
opensearch_dashboard_mcp-0.1.0-py3-none-any.whl Python 3 none any Details for opensearch_dashboard_mcp-0.1.0-py3-none-any.whl

Total release size: 109.5 kB

Release files / opensearch_dashboard_mcp-0.1.0.tar.gz

Download URL opensearch_dashboard_mcp-0.1.0.tar.gz
Size 96.9 kB
Tags Source
SHA-256 checksum
How to use checksums
fd06dbc4ddd273d9dd319f436d78f8b5c4828d0edec8fdf446e923bb93065ab9
BLAKE2b-256 checksum
How to use checksums
982737276031a1b7ed1eef4c63e40d1bb30e1036b98b56c9afa6fc4ff37cccc6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 17, 2026.

Transparency log

Release files / opensearch_dashboard_mcp-0.1.0-py3-none-any.whl

Download URL opensearch_dashboard_mcp-0.1.0-py3-none-any.whl
Size 12.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
06f2fec4378aa59cf7e2eef9df2399fa6cc5a7ac85a723e9476e46b75f6c776b
BLAKE2b-256 checksum
How to use checksums
ababb2bb74a23d2e1e099c850e948c5236f1a368dcbda8e735118f7c06727eea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 17, 2026.

Transparency log

Security for opensearch-dashboard-mcp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for opensearch_dashboard_mcp-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 17, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page