这是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在将 OpenSearch 数据库的能力暴露给大型语言模型 (LLM) 客户端。它通过定义和注册一系列工具 (Tools),使得 LLM 能够通过自然的语言指令与 OpenSearch 进行交互,执行搜索、获取集群状态等操作。

主要功能点

  • 索引操作:
    • 列出所有索引。
    • 获取特定索引的映射配置。
    • 获取特定索引的设置。
  • 文档操作:
    • 使用 OpenSearch Query DSL 搜索索引中的文档。
  • 集群操作:
    • 获取集群的健康状态。
    • 获取集群的统计信息。
  • 管理工具:
    • 获取索引状态管理 (ISM) 策略配置。
    • 获取索引模板配置。
    • 获取索引分片分配情况。
    • 检查集群热线程 (CPU使用情况)。
    • 获取当前集群任务。
    • 获取分片恢复状态及预估完成时间。
  • 仪表盘集成:
    • 列出 OpenSearch Dashboards 的索引模式。
    • 生成跳转到 OpenSearch Dashboards Discover 视图的 URL,方便查看搜索结果。

安装步骤

  1. 克隆仓库: 将项目代码下载到本地。
  2. 安装依赖: 使用 Python 包管理器 'uv' 安装项目所需的依赖。首先确保你已安装 'uv',然后进入项目目录执行安装命令。
  3. 启动 OpenSearch 集群: 该 MCP 服务器需要连接一个运行中的 OpenSearch 实例。仓库提供了 Docker Compose 文件用于快速启动一个本地 OpenSearch 集群(包含 Kibana)。请参考仓库说明启动 OpenSearch 服务。

服务器配置

为了让 MCP 客户端(如 Claude Desktop)能够连接和使用此服务器,需要在客户端的配置文件中添加相应的服务器配置。配置通常是一个 JSON 对象,包含服务器的名称、启动命令、参数以及连接 OpenSearch 所需的环境变量。

以下是一个示例配置结构(非实际代码):

{
  "mcpServers": {
    "opensearch": { // 服务器的唯一标识名称
      "command": "uv", // 启动服务器进程的命令
      "args": [ // 传递给启动命令的参数
        "--directory", // uv run 的参数,指定运行目录
        "path/to/src/opensearch_mcp_server", // 项目源代码的本地路径,请替换为你实际的路径
        "run", // uv run 的参数,运行一个包
        "opensearch-mcp-server" // 要运行的 Python 包名称
      ],
      "env": { // 服务器运行所需的环境变量
        "OPENSEARCH_HOST": "https://localhost:9200", // OpenSearch 主机地址
        "OPENSEARCH_USERNAME": "opensearch", // OpenSearch 用户名
        "OPENSEARCH_PASSWORD": "test123", // OpenSearch 密码
        "DASHBOARDS_HOST": "http://localhost:5601" // OpenSearch Dashboards (Kibana) 主机地址,用于生成URL
      }
    }
  }
}

将上述配置(替换 'path/to/src/opensearch_mcp_server' 为你实际的项目路径)添加到 MCP 客户端的配置文件中。

基本使用方法

  1. 按照安装步骤启动 OpenSearch 集群。
  2. 按照服务器配置步骤修改 MCP 客户端的配置文件并重启客户端。
  3. 现在,你就可以在 MCP 客户端(如 Claude Desktop)中通过自然语言与 OpenSearch 进行交互了。例如:
    • “列出 OpenSearch 集群中的所有索引。”
    • “搜索 'my_index' 索引中所有 'status' 为 'active' 的文档。”
    • “查看 OpenSearch 集群的健康状态。”

信息

分类

数据库与文件