使用说明
项目简介
本项目是一个基于 Model Context Protocol (MCP) 实现的服务器,它利用 Meilisearch 搜索引擎,对外提供混合搜索文档的功能。该服务器注册了一个名为 'hybrid_search' 的工具,允许LLM客户端调用该工具,并传入关键词和语义比例参数,从而在 Meilisearch 索引中执行混合搜索,并将搜索结果以 JSON 格式返回。
主要功能点
- 混合搜索: 支持关键词和语义相结合的搜索方式,可以更精准地找到相关文档。
- 可配置语义比例: 允许客户端通过参数调整语义搜索的权重,灵活控制搜索策略。
- JSON 结果输出: 搜索结果以 JSON 格式返回,方便 LLM 客户端解析和使用。
- 基于 MCP 协议: 采用标准 MCP 协议进行通信,易于集成到支持 MCP 协议的 LLM 应用中。
安装步骤
- 安装 Go 环境: 确保您的机器上已安装 Go 语言环境。
- 克隆仓库: 将仓库 'meilisearch-hybrid-search-mcp' 克隆到本地。
git clone https://github.com/miiton/meilisearch-hybrid-search-mcp.git cd meilisearch-hybrid-search-mcp - 构建服务器: 在仓库根目录下,使用 'go build' 命令编译 'main.go' 文件。
编译成功后,会在当前目录下生成可执行文件 'main' (或 'main.exe' 在 Windows 下)。go build main.go
服务器配置
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' 命令设置环境变量。
基本使用方法
-
启动 MCP 服务器: 在配置好环境变量后,运行编译生成的可执行文件 'main' (例如 './main')。服务器将通过标准输入输出与 MCP 客户端进行通信。
-
配置 MCP 客户端: 在您的 LLM 应用或 MCP 客户端中,根据 "服务器配置" 章节的信息,配置连接到此 MCP 服务器。
-
调用 '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' 参数。
-
接收搜索结果: 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与计算