opensearch-dashboard-mcp
Enables LLM clients to interact with OpenSearch Dashboards, including reading saved objects, listing tenants and index patterns, and querying logs through the Dashboards API.
README
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 viasaved_objects/_find, returned as compact{id, title, type}.tenantselects the multi-tenancy tenant (name,"__user__"for the private tenant, orNonefor 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 typeindex-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).queryis a Lucene query_string;time_from/time_tofilter a range (now-15m, ISO, …);fieldstrims_sourceto 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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.