项目简介
本项目是一个演示性质的 MCP 服务器实现,旨在展示如何利用 Model Context Protocol (MCP) 协议,结合大型语言模型 (LLM) 和 Elasticsearch,构建智能搜索应用后端。该服务器提供了一系列工具,允许 LLM 客户端通过标准化的 MCP 协议调用搜索功能,并利用 LLM 的能力进行高级查询规划和结果优化。
主要功能点
- 基于 MCP 协议: 实现了 MCP 服务器的核心功能,可以通过 JSON-RPC 协议与 MCP 客户端进行通信。
- LLM 驱动的查询规划: 使用 OpenAI 的模型进行查询意图理解和查询优化,生成更有效的 Elasticsearch 查询计划。
- Elasticsearch 搜索: 集成 Elasticsearch 作为底层搜索引擎,提供高效的全文检索能力。
- 预置工具: 提供用于电商产品搜索、索引管理和测试数据创建等工具,方便 LLM 客户端调用。
- 示例 Demo: 包含使用 OpenAI 和 Claude 客户端调用 MCP 服务器的示例脚本,展示了实际应用场景。
安装步骤
- 环境准备: 确保已安装 macOS 或 Linux 系统、Python 3.10+、Docker (用于 Elasticsearch)。
- 克隆仓库: 'git clone <repository-url>' 并进入 'search_mcp' 目录。
- 安装 Poetry: 如果未安装 Poetry,请根据仓库 'README.md' 指引安装。
- 安装依赖: 运行 'poetry install --no-root' 安装项目依赖。
- 启动 Elasticsearch: 使用 Docker 启动 Elasticsearch 容器,具体命令参考 'README.md'。
- 配置环境变量: 复制 '.env.example' 为 '.env',并根据需要配置 Elasticsearch 和 OpenAI API 密钥等信息。
服务器配置
MCP 客户端需要以下配置信息才能连接到本 MCP 服务器:
{ "serverName": "search_mcp_server", "command": "poetry", "args": ["run", "python", "run_server.py"], "description": "启动 Search MCP 服务器,用于处理 LLM 客户端的搜索请求。" }
- 'serverName': 服务器名称,客户端可自定义。
- 'command': 启动服务器的命令,这里使用 'poetry run python run_server.py',确保在项目根目录下执行。
- 'args': 命令参数,本例中参数为空。
- 'description': 服务器描述,方便客户端识别。
基本使用方法
- 启动服务器: 在仓库根目录下运行 'poetry run python run_server.py' 启动 MCP 服务器。
- 客户端交互: 可以使用仓库中提供的 'openai_mcp_search_demo.py' 或 'claude_mcp_search_demo.py' 脚本,或者自行开发 MCP 客户端,通过标准 MCP 协议与服务器进行交互,例如发送 'list_tools' 请求获取可用工具列表,发送 'tool_call' 请求调用具体工具。
- 工具调用示例: 客户端可以调用 'search' 工具进行电商产品搜索,例如:
{ "id": "search-query-1", "type": "tool_call", "tool": "search", "args": { "query": "无线降噪耳机", "index": "ecommerce" } }
信息
分类
AI与计算