使用说明
项目简介
这是一个基于 Model Context Protocol (MCP) 实现的服务器,专门用于集成 OpenAI 的文件搜索(File Search)功能。它作为 LLM 客户端(如 Cline)和 OpenAI API 之间的桥梁,允许 LLM 通过标准的 MCP 工具调用来执行文件内容检索,并获取结构化的搜索结果。
主要功能点
- 文件搜索代理: 作为 OpenAI '/v1/responses' 文件搜索功能的简单代理。
- 检索工具: 注册一个名为 'retrieveDocs' 的 MCP 工具,供 LLM 调用以执行文件搜索。
- 结构化结果: 从 OpenAI API 响应中提取原始的、排名靠前的文档块(chunks),并以 '{ id, text, score }' 结构的 JSON 字符串形式返回。
- 配置灵活: 通过 'config.json' 文件配置 OpenAI Vector Store ID,通过环境变量 ('.env' 文件或系统环境变量) 配置 OpenAI API Key。
- 健壮性: 内置了 30 秒超时机制和对特定错误(如 429, 5xx, 网络问题)的重试逻辑(最多 3 次尝试)。
安装步骤
- 克隆仓库: 如果还没有克隆,请使用 Git 获取仓库代码。
- 安装依赖: 进入仓库目录,运行 npm 安装项目所需的所有库。
npm install - 配置服务器:
- Vector Store ID: 复制 'config.template.json' 到 'config.json',然后编辑 'config.json' 文件,填入你的 OpenAI Vector Store ID。
编辑 'config.json':cp config.template.json config.json{ "vectorStoreId": "vs_YOUR_VECTOR_STORE_ID" } - OpenAI API Key: 复制 '.env.example' 到 '.env',然后编辑 '.env' 文件,填入你的 OpenAI API Key。
编辑 '.env':cp .env.example .envOPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 还可以选择设置 DEBUG_OPENAI=true 来开启详细日志 - 注意: 'config.json' 和 '.env' 文件通常不应提交到 Git 仓库。
- Vector Store ID: 复制 'config.template.json' 到 'config.json',然后编辑 'config.json' 文件,填入你的 OpenAI Vector Store ID。
- 构建项目: 运行构建命令,将 TypeScript 代码编译成 JavaScript。
npm run build
服务器配置 (用于 MCP 客户端)
该服务器通过标准输入输出 (stdio) 进行通信,是 MCP 客户端(如 Cline)连接的常见方式。在 MCP 客户端的配置中,你需要指定如何启动这个服务器进程。
通常,MCP 客户端的服务器配置会是一个 JSON 对象数组,包含如下信息:
{ "servers": [ { "id": "给这个服务器取一个独一无二的 ID,例如: filesearch-openai", "command": "启动服务器的命令,对于这个项目是 'npm'", "args": [ "命令的参数,对于这个项目是 'start'" ], "working_directory": "服务器代码所在的文件夹路径,例如: /path/to/openai-filesearch-mcp", "environment": { // 可选: 可以在这里直接设置环境变量,代替 .env 文件 // "OPENAI_API_KEY": "sk-...", // "DEBUG_OPENAI": "true" }, "description": "这个 MCP 服务器的功能描述,比如: 通过OpenAI文件搜索检索文档片段" // 其他 MCP 客户端可能支持的配置项,如 auto_start 等 } ] }
请注意:
- 'vectorStoreId' 和 'OPENAI_API_KEY' 是服务器启动时自己读取的配置,必须在服务器的文件 ('config.json', '.env') 或 MCP 客户端配置的 'environment' 字段中设置好。
- MCP 客户端通过 'command' 和 'args' 启动服务器进程,并通过 stdio 与其通信。
基本使用方法
安装并配置完成后,启动你的 MCP 客户端(如 Cline)。如果客户端配置正确,它将能够启动并连接到这个 OpenAI 文件搜索 MCP 服务器。
当客户端(或通过客户端与 LLM 交互时)需要执行文件搜索功能时,它会通过 MCP 协议调用服务器注册的 'retrieveDocs' 工具,并传递一个包含用户问题的参数,例如:
{ "jsonrpc": "2.0", "method": "tool_call", "params": { "tool_name": "retrieveDocs", "tool_args": { "question": "我的项目文档里提到了哪些关于安装的步骤?" }, "call_id": "..." // 客户端生成的调用 ID }, "id": "..." // 客户端生成的请求 ID }
服务器接收到请求后,会调用 OpenAI API 执行文件搜索,处理响应,然后通过 MCP 协议返回搜索到的文档块列表(作为 JSON 字符串)。LLM 客户端会接收这个结果,并可以利用这些文档块来生成更准确的回复。
你无需直接与这个服务器的 stdio 接口交互,所有通信都由支持 MCP 的 LLM 客户端自动处理。
信息
分类
AI与计算