项目简介

'opensearch-mcp-server-py' 是一个用 Python 实现的 Model Context Protocol (MCP) 服务器,专门用于连接 AI 助手(如大型语言模型 LLM)与 OpenSearch 集群。它通过标准化的协议,让 AI 能够执行搜索、获取索引映射、管理分片等 OpenSearch 操作,从而为 LLM 应用提供丰富的实时上下文信息和功能扩展。

主要功能点

  • MCP 协议集成: 无缝对接遵循 MCP 协议的 AI 助手和 LLM 客户端。
  • 多传输协议支持: 支持标准输入输出 (Stdio) 和流式传输 (SSE/Streamable HTTP) 两种通信协议,适应不同的部署和集成场景。
  • 丰富的 OpenSearch 工具: 内置多种工具,允许 AI 助手执行 OpenSearch 的核心操作,例如列出索引、查询文档、获取集群状态、管理分片、获取节点信息和集群洞察等。
  • 灵活的配置: 支持通过配置文件或环境变量配置 OpenSearch 连接参数及工具行为,例如工具的显示名称、描述和参数默认值等。
  • 版本兼容性: 工具会根据连接的 OpenSearch 集群版本自动筛选和启用,确保兼容性。
  • 安全认证: 支持基本认证、AWS IAM 角色认证和 AWS 凭证等多种安全连接方式。

安装步骤

  1. Python 环境: 确保您的系统已安装 Python 3.9 或更高版本。
  2. 通过 pip 安装: 运行以下命令安装服务器及其依赖:
    pip install opensearch-mcp-server-py

服务器配置

MCP 客户端需要配置服务器的启动命令和参数,以便与其建立连接。以下是一个示例 JSON 配置,您需要根据实际部署情况调整 'command' 和 'args'。

{
  "name": "opensearch-mcp-server",
  "command": ["python", "-m", "mcp_server_opensearch"],
  "args": [
    "--transport", "stdio",           // 通信协议:可选 "stdio" (默认) 或 "stream"。如果选择 "stream",还需要配置 --host 和 --port
    "--mode", "single",               // 服务器模式:
                                      // "single" (默认) - 使用环境变量配置 OpenSearch 连接。
                                      // "multi" - 通过 YAML 配置文件管理多个 OpenSearch 集群连接。
    "--config", "/path/to/your/config.yml", // (可选) YAML 配置文件的路径,用于配置多集群模式或工具行为覆盖。
    // 以下参数仅在 --transport stream 时有效:
    // "--host", "0.0.0.0",             // 监听主机地址,默认 0.0.0.0。
    // "--port", "9900"                 // 监听端口,默认 9900。
    // 其他可用的CLI工具覆盖参数(例如,重命名工具或调整参数描述,注意格式为 "tool.<ToolName>.<field>" 或 "tool.<ToolName>.args.<argName>.<field>"):
    // "tool.ListIndexTool.display_name", "MyListIndices", // 将 ListIndexTool 重命名为 MyListIndices。
    // "tool.ListIndexTool.args.index.description", "A custom description for the index argument." // 修改参数描述。
    // "tool.SearchIndexTool.args.query.default", "{\"match_all\": {}}", // 为查询工具设置默认查询体。
    // "tool.ListIndexTool.args.include_detail.default", "false" // 设置参数默认值,例如让 ListIndexTool 默认不返回详细信息。
  ],
  "env": {
    // 如果使用 "single" 模式,请通过环境变量配置 OpenSearch 连接信息:
    // "OPENSEARCH_URL": "https://your-opensearch-domain.com",       // 必填,OpenSearch 集群的 URL。
    // "OPENSEARCH_USERNAME": "your-username",                       // (可选) 用于基本认证的用户名。
    // "OPENSEARCH_PASSWORD": "your-password",                       // (可选) 用于基本认证的密码。
    // "AWS_REGION": "your-aws-region",                              // (可选) AWS 区域,用于 IAM 认证。
    // "AWS_IAM_ARN": "your-iam-role-arn",                           // (可选) 用于 IAM 认证的 AWS IAM 角色 ARN。
    // "AWS_OPENSEARCH_SERVERLESS": "true",                          // (可选) 如果连接的是 OpenSearch Serverless,请设置为 "true"。
    // "OPENSEARCH_NO_AUTH": "true",                                 // (可选) 如果 OpenSearch 集群无需认证,请设置为 "true" (慎用)。
    // "OPENSEARCH_SSL_VERIFY": "false",                             // (可选) 如果要禁用 SSL 证书验证,请设置为 "false" (慎用)。
    // "OPENSEARCH_TIMEOUT": "60",                                   // (可选) 设置 OpenSearch 请求的超时时间(秒)。
    // "OPENSEARCH_DISABLED_TOOLS": "SearchIndexTool,GetShardsTool", // (可选) 禁用一个或多个工具,用逗号分隔。
    // "OPENSEARCH_DISABLED_CATEGORIES": "critical",                 // (可选) 禁用一个或多个工具类别。
    // "OPENSEARCH_DISABLED_TOOLS_REGEX": ".*Tool",                  // (可选) 禁用匹配正则表达式的工具。
    // "OPENSEARCH_SETTINGS_ALLOW_WRITE": "false"                    // (可选) 如果设置为 "false",则禁用所有具有写入操作(PUT/POST)的工具。
  }
}

注意:

  • 在 'single' 模式下,OpenSearch 的连接信息通常通过环境变量提供。
  • 在 'multi' 模式下,连接信息通过 '--config' 指定的 YAML 文件配置多个集群。
  • '--profile' 参数可用于指定 AWS 配置文件名,在 'multi' 模式下也可在 YAML 文件中为每个集群指定。

基本使用方法

  1. 启动服务器: 打开终端,进入您的项目目录,然后运行以下命令启动 MCP 服务器。
    • 使用默认的 'stdio' 传输模式:
      python -m mcp_server_opensearch
    • 使用 'stream' 传输模式(例如,监听在 8000 端口):
      python -m mcp_server_opensearch --transport stream --host 0.0.0.0 --port 8000
  2. MCP 客户端连接: 服务器启动后,您的 MCP 客户端(如兼容 MCP 的 LLM 框架或 AI 助手)可以通过配置中提供的 'command' 和 'args' 来连接并与服务器进行交互。客户端将能够发现服务器提供的 OpenSearch 工具,并调用这些工具来执行 OpenSearch 操作。
  3. 探索工具: 连接后,客户端可以通过 MCP 协议请求服务器列出所有可用工具及其描述和输入 schema,然后根据这些信息构造工具调用请求,从而实现与 OpenSearch 集群的智能交互。

信息

分类

AI与计算