OpenSearch Solution Architect MCP server — guides you from requirements to a running search setup
Project description
OpenSearch Launchpad
An MCP-powered assistant that guides you from initial requirements to a running OpenSearch search setup. It collects a sample document, gathers preferences, plans a search architecture, and executes the plan — creating indices, ML models, ingest pipelines, and a local search UI — with optional deployment to Amazon OpenSearch Service or Serverless.
Kiro Power (Primary Integration)
OpenSearch Launchpad is packaged as a Kiro Power. Install it in Kiro by adding https://github.com/opensearch-project/opensearch-launchpad/tree/main/kiro/opensearch-launchpad as a power source. Kiro reads POWER.md for workflow instructions and calls MCP tools exposed by the server.
The mcp.json at the repo root runs uvx opensearch-launchpad@latest — no local clone required.
Standalone CLI (Local Development)
Start the interactive orchestrator in a terminal:
python opensearch_orchestrator/orchestrator.py
The orchestrator guides you through sample collection, requirements gathering, solution planning, and execution — all in one interactive session.
MCP Server
The MCP server exposes the orchestrator workflow as a set of phase tools. Any MCP-compatible client (Claude Desktop, MCP Inspector, etc.) can drive the conversation.
Prerequisites
Install uv (one-time, no sudo needed):
curl -LsSf https://astral.sh/uv/install.sh | sh
Running from PyPI
uvx opensearch-launchpad@latest
If installed via pip:
opensearch-launchpad
This starts a stdio MCP server (JSON-RPC), not an interactive CLI. Launch it from an MCP client. For an interactive terminal session, use
python opensearch_orchestrator/orchestrator.pyinstead.
Running locally (dev)
uv run opensearch_orchestrator/mcp_server.py
uv reads inline script metadata and auto-installs dependencies into a cached virtual environment.
Claude Desktop integration
- Add to
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) or%APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"opensearch-launchpad": {
"command": "uvx",
"args": ["opensearch-launchpad@latest"]
}
}
}
- Restart Claude Desktop. The
opensearch_workflowprompt is available in the prompt picker and describes the full tool sequence.
Generic MCP clients
Any MCP-compatible client can connect via stdio and discover tools with tools/list. The opensearch_workflow prompt (available via prompts/list) describes the workflow. Tool docstrings also include prerequisite hints.
Without uv
Install dependencies manually and point to the server script:
pip install mcp opensearch-py
{
"mcpServers": {
"opensearch-launchpad": {
"command": "python3",
"args": ["opensearch_orchestrator/mcp_server.py"],
"cwd": "/path/to/agent"
}
}
}
MCP Workflow Tools
The server exposes high-level phase tools:
| Tool | Phase | Description |
|---|---|---|
load_sample |
1 | Load a sample document (built-in IMDB, local file, URL, index, or paste) |
set_preferences |
2 | Set budget, performance, query pattern, deployment preferences |
start_planning |
3 | Start the planning agent; returns initial architecture proposal |
refine_plan |
3 | Send user feedback to refine the proposal |
finalize_plan |
3 | Finalize the plan when the user confirms |
set_plan_from_planning_complete |
3 | Parse/store a <planning_complete> planner response |
execute_plan |
4 | Return worker bootstrap payload for execution |
set_execution_from_execution_report |
4 | Parse/store <execution_report> and update retry state |
retry_execution |
4 | Return resume bootstrap payload from last failed step |
prepare_aws_deployment |
5 | Return deployment target and steering files for AWS |
cleanup |
Post | Remove test documents on user request |
The following execution/knowledge tools are also exposed:
create_index, create_and_attach_pipeline, create_bedrock_embedding_model,
create_local_pretrained_model, apply_capability_driven_verification,
launch_search_ui, set_search_ui_suggestions, read_knowledge_base,
read_dense_vector_models, read_sparse_vector_models, search_opensearch_org.
Advanced tools are hidden by default; set OPENSEARCH_MCP_ENABLE_ADVANCED_TOOLS=true to expose them.
Localhost index auth (source_type="localhost_index")
| Mode | Behavior |
|---|---|
"default" |
Username admin, password myStrongPassword123! |
"none" |
No authentication |
"custom" |
Requires localhost_auth_username + localhost_auth_password |
Local Docker auto-bootstrap uses admin and reads the password from OPENSEARCH_PASSWORD (falls back to myStrongPassword123!).
Planner backend in MCP mode
- Planning uses client sampling (client LLM only — no server-side Bedrock in MCP mode).
- If the client does not support
sampling/createMessage,start_planningreturnsmanual_planning_required=truewithmanual_planner_system_promptandmanual_planner_initial_input. Run planner turns with your LLM and callset_plan_from_planning_complete(planner_response).
Release Checklist
# 1) Bump version in both files to the same value, e.g. 0.10.1
# - pyproject.toml: [project].version
# - opensearch_orchestrator/__init__.py: __version__
# Optional sanity check:
python -c "import tomllib; p=tomllib.load(open('pyproject.toml','rb')); import opensearch_orchestrator as pkg; print('pyproject=', p['project']['version'], 'package=', pkg.__version__)"
# 2) All tests must pass
uv run pytest -q
# 3) Build and verify artifacts
uv build
for whl in dist/*.whl; do python -m zipfile -l "$whl"; done
python -c "import opensearch_orchestrator.mcp_server as m; print(hasattr(m, 'main'))"
# Smoke-test the wheel
VERSION="$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")"
WHEEL_PATH="$(ls dist/opensearch_launchpad-${VERSION}-*.whl 2>/dev/null || ls dist/opensearch_orchestrator-${VERSION}-*.whl)"
uvx --from "$WHEEL_PATH" opensearch-launchpad
# 4) Publish to PyPI
uv publish --token pypi-YOUR-TOKEN
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file opensearch_launchpad-0.1.1.tar.gz.
File metadata
- Download URL: opensearch_launchpad-0.1.1.tar.gz
- Upload date:
- Size: 2.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77f132e43b7245061a0e26e0536fb37f13ec26e10e5b98012fe11da51e19c96c
|
|
| MD5 |
f9e3c7e0cb8dd09fe660b7d4b2a81584
|
|
| BLAKE2b-256 |
d663f1115bf7ddae0d2c165d85b47fd61a09fe0f9a321d3bbbfc07c7f4ac9207
|
Provenance
The following attestation bundles were made for opensearch_launchpad-0.1.1.tar.gz:
Publisher:
release-drafter.yml on opensearch-project/opensearch-launchpad
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
opensearch_launchpad-0.1.1.tar.gz -
Subject digest:
77f132e43b7245061a0e26e0536fb37f13ec26e10e5b98012fe11da51e19c96c - Sigstore transparency entry: 1053501286
- Sigstore integration time:
-
Permalink:
opensearch-project/opensearch-launchpad@6f7a5a0823e4af93ebc4a0c5c24b936aa29b83ce -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/opensearch-project
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-drafter.yml@6f7a5a0823e4af93ebc4a0c5c24b936aa29b83ce -
Trigger Event:
push
-
Statement type:
File details
Details for the file opensearch_launchpad-0.1.1-py3-none-any.whl.
File metadata
- Download URL: opensearch_launchpad-0.1.1-py3-none-any.whl
- Upload date:
- Size: 2.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b440b68d1c9c83a55e6f7fb2905de19078304d1e477486d7277a251ad704840
|
|
| MD5 |
7f5e25753268cdc2cf6cdef4114d8fba
|
|
| BLAKE2b-256 |
6e450181f0f07def4cb2b60a11fdcb77aaebcc03102e1a68f4333c8d2b4559e6
|
Provenance
The following attestation bundles were made for opensearch_launchpad-0.1.1-py3-none-any.whl:
Publisher:
release-drafter.yml on opensearch-project/opensearch-launchpad
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
opensearch_launchpad-0.1.1-py3-none-any.whl -
Subject digest:
6b440b68d1c9c83a55e6f7fb2905de19078304d1e477486d7277a251ad704840 - Sigstore transparency entry: 1053501288
- Sigstore integration time:
-
Permalink:
opensearch-project/opensearch-launchpad@6f7a5a0823e4af93ebc4a0c5c24b936aa29b83ce -
Branch / Tag:
refs/tags/0.1.1 - Owner: https://github.com/opensearch-project
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-drafter.yml@6f7a5a0823e4af93ebc4a0c5c24b936aa29b83ce -
Trigger Event:
push
-
Statement type: