使用说明

项目简介

本项目是一个基于 Model Context Protocol (MCP) 实现的服务器,它利用 Meilisearch 搜索引擎,对外提供混合搜索文档的功能。该服务器注册了一个名为 'hybrid_search' 的工具,允许LLM客户端调用该工具,并传入关键词和语义比例参数,从而在 Meilisearch 索引中执行混合搜索,并将搜索结果以 JSON 格式返回。

主要功能点

  • 混合搜索: 支持关键词和语义相结合的搜索方式,可以更精准地找到相关文档。
  • 可配置语义比例: 允许客户端通过参数调整语义搜索的权重,灵活控制搜索策略。
  • JSON 结果输出: 搜索结果以 JSON 格式返回,方便 LLM 客户端解析和使用。
  • 基于 MCP 协议: 采用标准 MCP 协议进行通信,易于集成到支持 MCP 协议的 LLM 应用中。

安装步骤

  1. 安装 Go 环境: 确保您的机器上已安装 Go 语言环境。
  2. 克隆仓库: 将仓库 'meilisearch-hybrid-search-mcp' 克隆到本地。
    git clone https://github.com/miiton/meilisearch-hybrid-search-mcp.git
    cd meilisearch-hybrid-search-mcp
  3. 构建服务器: 在仓库根目录下,使用 'go build' 命令编译 'main.go' 文件。
    go build main.go
    编译成功后,会在当前目录下生成可执行文件 'main' (或 'main.exe' 在 Windows 下)。

服务器配置

MCP 客户端需要配置以下 JSON 信息才能连接到此 MCP 服务器。请注意,以下配置信息描述了如何启动和连接到该服务器,无需修改代码

{
  "serverName": "meilisearch-hybrid-search-mcp",
  "command": "./main",  // 启动服务器的命令,根据实际情况修改,如果在其他路径下运行,请使用绝对路径
  "args": [],         // 启动参数,本项目无需额外参数
  "transport": "stdio" // 使用标准输入输出 (stdio) 作为传输协议
}

配置参数说明:

  • 'serverName': 服务器名称,用于在客户端识别和管理连接。可以自定义,例如 "meilisearch-search-server"。
  • 'command': 启动 MCP 服务器的命令。 假设您在编译后直接在仓库根目录运行,则为 './main'。如果执行文件在其他位置,请填写正确的路径。
  • 'args': 启动命令的参数。本项目服务器运行不需要额外的命令行参数,所以为空数组 '[]'。
  • 'transport': 传输协议,本项目使用 'stdio' (标准输入输出)。

环境变量配置 (服务器端):

在运行 MCP 服务器之前,您需要设置以下环境变量,以便服务器连接到您的 Meilisearch 实例:

  • 'MEILI_HOST': Meilisearch 服务器的地址,例如 'http://localhost:7700'。
  • 'MEILI_API_KEY': Meilisearch API 密钥,用于鉴权。
  • 'MEILI_INDEX': 要搜索的 Meilisearch 索引名称,例如 'docs'。
  • 'MEILI_EMBEDDER': Meilisearch 中配置的 Embedder 名称,用于语义搜索。

您可以通过以下方式设置环境变量 (以 Linux/macOS 为例):

export MEILI_HOST=http://your_meilisearch_host:7700
export MEILI_API_KEY=your_meilisearch_api_key
export MEILI_INDEX=your_index_name
export MEILI_EMBEDDER=your_embedder_name
./main  # 运行编译后的服务器

在 Windows 下,可以使用 'set' 命令设置环境变量。

基本使用方法

  1. 启动 MCP 服务器: 在配置好环境变量后,运行编译生成的可执行文件 'main' (例如 './main')。服务器将通过标准输入输出与 MCP 客户端进行通信。

  2. 配置 MCP 客户端: 在您的 LLM 应用或 MCP 客户端中,根据 "服务器配置" 章节的信息,配置连接到此 MCP 服务器。

  3. 调用 'hybrid_search' 工具: 在 LLM 应用中,可以使用以下 JSON-RPC 请求格式调用 'hybrid_search' 工具:

    {
      "jsonrpc": "2.0",
      "method": "call_tool",
      "params": {
        "tool_call": {
          "tool_name": "hybrid_search",
          "arguments": {
            "keywords": "your search keywords",  // 替换为要搜索的关键词
            "semantic_ratio": 0.6               // 可选参数,语义比例,范围 0.0 - 1.0,默认为 0.5
          }
        }
      },
      "id": "your_request_id"  // 请求 ID,客户端自定义
    }

    将 'your search keywords' 替换为您要搜索的关键词,并根据需要调整 'semantic_ratio' 参数。

  4. 接收搜索结果: MCP 服务器会将 Meilisearch 的搜索结果以 JSON-RPC 响应的形式返回给客户端。客户端需要解析 JSON 响应,获取搜索结果。

示例 JSON-RPC 响应 (成功):

{
  "jsonrpc": "2.0",
  "result": {
    "tool_result": {
      "type": "text",
      "content": "{\"hits\":[{\"id\":\"doc1\",\"title\":\"Document 1\",\"content\":\"This is the content of document 1.\",\"_formatted\":{\"title\":\"Document 1\",\"content\":\"This is the content of document 1.\"}},{\"id\":\"doc2\",\"title\":\"Document 2\",\"content\":\"This is document 2 about keywords.\",\"_formatted\":{\"title\":\"Document 2\",\"content\":\"This is document 2 about keywords.\"}}],\"offset\":0,\"limit\":20,\"nbHits\":2,\"exhaustiveNbHits\":false,\"query\":\"your search keywords\",\"processingTimeMs\":2,\"indexUid\":\"docs\"}"
    }
  },
  "id": "your_request_id"
}

'result.tool_result.content' 字段中的 JSON 字符串即为 Meilisearch 返回的搜索结果。

信息

分类

AI与计算