内容
# OpenSearch MCP Server
一个最小化的模型上下文协议(Model Context Protocol,MCP)服务器,用于OpenSearch,通过标准输入输出(stdio)和服务器发送事件(sse)提供4个工具。
## 可用工具
- ListIndexTool: 列出OpenSearch中的所有索引。
- IndexMappingTool: 检索OpenSearch中某个索引的映射和设置信息。
- SearchIndexTool: 使用在OpenSearch中编写的查询领域特定语言(DSL)查询索引。
- GetShardsTool: 获取OpenSearch中分片的信息。
> 更多工具即将推出。[点击这里](DEVELOPER_GUIDE.md#contributing)
## 用户指南
### 安装
从PyPI安装:
```
pip install test-opensearch-mcp
```
### 配置
#### 认证方法:
- **基本认证**
```
export OPENSEARCH_URL="<your_opensearch_domain_url>"
export OPENSEARCH_USERNAME="<your_opensearch_domain_username>"
export OPENSEARCH_PASSWORD="<your_opensearch_domain_password>"
```
- **IAM角色认证**
```
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>"
```
### 运行服务器
```
# Stdio 服务器
python -m mcp_server_opensearch
# SSE 服务器
python -m mcp_server_opensearch --transport sse
```
### Claude桌面集成
- **使用发布的 [PyPI 包](https://pypi.org/project/test-opensearch-mcp/)(推荐)**
```
{
"mcpServers": {
"opensearch-mcp-server": {
"command": "uvx",
"args": [
"test-opensearch-mcp"
],
"env": {
// 必需
"OPENSEARCH_URL": "<your_opensearch_domain_url>",
// 对于基本认证
"OPENSEARCH_USERNAME": "<your_opensearch_domain_username>",
"OPENSEARCH_PASSWORD": "<your_opensearch_domain_password>",
// 对于IAM角色认证
"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>"
}
}
}
}
```
- **使用已安装的包(通过pip):**
```
{
"mcpServers": {
"opensearch-mcp-server": {
"command": "python", // 或者安装了PyPI包的python的完整路径
"args": [
"-m",
"mcp_server_opensearch"
],
"env": {
// 必需
"OPENSEARCH_URL": "<your_opensearch_domain_url>",
// 对于基本认证
"OPENSEARCH_USERNAME": "<your_opensearch_domain_username>",
"OPENSEARCH_PASSWORD": "<your_opensearch_domain_password>",
// 对于IAM角色认证
"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集成
OpenSearch MCP服务器可以通过SSE服务器传输轻松集成到LangChain中。
#### 先决条件
1. 安装所需的包
```
pip install langchain langchain-mcp-adapters langchain-openai
```
2. 设置OpenAI API密钥
```
export OPENAI_API_KEY="<your-openai-key>"
```
3. 确保OpenSearch MCP服务器以SSE模式运行
```
python -m mcp_server_opensearch --transport sse
```
#### 示例集成脚本
``` python
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_openai import ChatOpenAI
from langchain.agents import AgentType, initialize_agent
# 初始化LLM(可以使用任何与LangChain兼容的LLM)
model = ChatOpenAI(model="gpt-4o")
async def main():
# 连接到MCP服务器并创建代理
async with MultiServerMCPClient({
"opensearch-mcp-server": {
"transport": "sse",
"url": "http://localhost:9900/sse", # SSE服务器端点
"headers": {
"Authorization": "Bearer secret-token",
}
}
}) as client:
tools = client.get_tools()
agent = initialize_agent(
tools=tools,
llm=model,
agent=AgentType.OPENAI_FUNCTIONS,
verbose=True, # 启用代理思考过程的详细输出
)
# 示例查询
await agent.ainvoke({"input": "List all indices"})
if __name__ == "__main__":
asyncio.run(main())
```
**注意:**
- 该脚本与任何与LangChain集成并支持工具调用的LLM兼容
- 在执行脚本之前,请确保OpenSearch MCP服务器正在运行
- 根据需要配置认证和环境变量
## 开发
有兴趣贡献吗?请查看我们的:
- [开发指南](DEVELOPER_GUIDE.md#developer-guide) - 设置您的开发环境
- [贡献指南](DEVELOPER_GUIDE.md#contributing) - 了解如何贡献