OpenSearch MCP Server
A minimal Model Context Protocol (MCP) server for OpenSearch exposing 4 tools over stdio and sse server.
Available tools
- ListIndexTool: Lists all indices in OpenSearch.
- IndexMappingTool: Retrieves index mapping and setting information for an index in OpenSearch.
- SearchIndexTool: Searches an index using a query written in query domain-specific language (DSL) in OpenSearch.
- GetShardsTool: Gets information about shards in OpenSearch.
More tools coming soon. Click here
User Guide
Installation
Install from PyPI:
pip install test-opensearch-mcp
Configuration
Authentication Methods:
- Basic Authentication
export OPENSEARCH_URL="<your_opensearch_domain_url>"
export OPENSEARCH_USERNAME="<your_opensearch_domain_username>"
export OPENSEARCH_PASSWORD="<your_opensearch_domain_password>"
- IAM Role Authentication
export OPENSEARCH_URL="<your_opensearch_domain_url>"
export AWS_REGION="<your_aws_region>"
export AWS_ACCESS_KEY="<your_aws_access_key>"
export AWS_SECRET_ACCESS_KEY="<your_aws_secret_access_key>"
export AWS_SESSION_TOKEN="<your_aws_session_token>"
Running the Server
# Stdio Server
python -m mcp_server_opensearch
# SSE Server
python -m mcp_server_opensearch --transport sse
Claude Desktop Integration
- Using the Published PyPI Package (Recommended)
{
"mcpServers": {
"opensearch-mcp-server": {
"command": "uvx",
"args": [
"test-opensearch-mcp"
],
"env": {
// Required
"OPENSEARCH_URL": "<your_opensearch_domain_url>",
// For Basic Authentication
"OPENSEARCH_USERNAME": "<your_opensearch_domain_username>",
"OPENSEARCH_PASSWORD": "<your_opensearch_domain_password>",
// For IAM Role Authentication
"AWS_REGION": "<your_aws_region>",
"AWS_ACCESS_KEY": "<your_aws_access_key>",
"AWS_SECRET_ACCESS_KEY": "<your_aws_secret_access_key>",
"AWS_SESSION_TOKEN": "<your_aws_session_token>"
}
}
}
}
- Using the Installed Package (via pip):
{
"mcpServers": {
"opensearch-mcp-server": {
"command": "python", // Or full path to python with PyPI package installed
"args": [
"-m",
"mcp_server_opensearch"
],
"env": {
// Required
"OPENSEARCH_URL": "<your_opensearch_domain_url>",
// For Basic Authentication
"OPENSEARCH_USERNAME": "<your_opensearch_domain_username>",
"OPENSEARCH_PASSWORD": "<your_opensearch_domain_password>",
// For IAM Role Authentication
"AWS_REGION": "<your_aws_region>",
"AWS_ACCESS_KEY": "<your_aws_access_key>",
"AWS_SECRET_ACCESS_KEY": "<your_aws_secret_access_key>",
"AWS_SESSION_TOKEN": "<your_aws_session_token>"
}
}
}
}
LangChain Integration
The OpenSearch MCP server can be easily integrated with LangChain using the SSE server transport
Prerequisites
- Install required packages
pip install langchain langchain-mcp-adapters langchain-openai
- Set up OpenAI API key
export OPENAI_API_KEY="<your-openai-key>"
- Ensure OpenSearch MCP server is running in SSE mode
python -m mcp_server_opensearch --transport sse
Example Integration Script
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_openai import ChatOpenAI
from langchain.agents import AgentType, initialize_agent
# Initialize LLM (can use any LangChain-compatible LLM)
model = ChatOpenAI(model="gpt-4o")
async def main():
# Connect to MCP server and create agent
async with MultiServerMCPClient({
"opensearch-mcp-server": {
"transport": "sse",
"url": "http://localhost:9900/sse", # SSE server endpoint
"headers": {
"Authorization": "Bearer secret-token",
}
}
}) as client:
tools = client.get_tools()
agent = initialize_agent(
tools=tools,
llm=model,
agent=AgentType.OPENAI_FUNCTIONS,
verbose=True, # Enables detailed output of the agent's thought process
)
# Example query
await agent.ainvoke({"input": "List all indices"})
if __name__ == "__main__":
asyncio.run(main())
Notes:
- The script is compatible with any LLM that integrates with LangChain and supports tool calling
- Make sure the OpenSearch MCP server is running before executing the script
- Configure authentication and environment variables as needed
Development
Interested in contributing? Check out our:
- Development Guide - Setup your development environment
- Contributing Guidelines - Learn how to contribute
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
opensearch_mcp_py-0.0.1.tar.gz
(12.1 kB
view details)
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_mcp_py-0.0.1.tar.gz.
File metadata
- Download URL: opensearch_mcp_py-0.0.1.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5045db7f6fb0570532f7dd868c9fd39895146b3d8e2575f1cdfe7a85865af46
|
|
| MD5 |
ab97bb57894c1ffec804807ff6a79bba
|
|
| BLAKE2b-256 |
ec29ac6e73ed5705cc4c7f56af5bd33da43db7bd8fe16120c6b27bb1afc2f004
|
File details
Details for the file opensearch_mcp_py-0.0.1-py3-none-any.whl.
File metadata
- Download URL: opensearch_mcp_py-0.0.1-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f06dd4a6b4f67eb4f994840d53677575f3d2170b9f83d8759ca0bdbbcab25b90
|
|
| MD5 |
73d6715e1cf064a13b7924048f2f8ed5
|
|
| BLAKE2b-256 |
4bf3840feeb89cfac32ffb35cd32878713bc7480191133bcd05a74255c5b3534
|