语义搜索与文档检索服务

基于Model Context Protocol (MCP)的样本服务器,提供语义搜索和文档检索功能,支持与ChatGPT集成。

  • by kkyy3402
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 kkyy3402/openai-mcp-test

使用说明

MCP服务器示例

这个项目 模型上下文协议(MCP) 利用与ChatGPT联动 搜索(Search) 及 查询文档(Fetch) 提供功能的示例服务器。
您可以使用OpenAI Vector Store搜索文档和查看完整内容,以及ChatGPT的Deep Research和Chat Connectors功能。


✨ 特性

  • 语义搜索
    使用OpenAI Vector Store搜索基于矢量的文档
    支持自然语言查询,并以片段形式返回相关文档。

  • 文档提取
    使用搜索到的文档的ID查看全部内容
    包括文件名、正文、URL和元数据

  • 基于FastMCP的MCP服务器
    根据ChatGPT MCP标准创建的轻量级服务器
    使用Server-Sent Events(SSE)与ChatGPT通信

  • 基于环境变量的设置
    .env 通过文件管理API Key、Vector Store ID


📁 项目结构

.
├── server.py
├── requirements.txt
└── .env  (사용자가 직접 생성)

🔧 需求

Python 3.9+

安装程序包包括: requirements.txt 在中定义。

示例:

fastmcp
openai
python-dotenv

⚙️ 设置

1.安装Repository

git clone <your-repo-url>
cd <project-folder>

2.创建(可选)虚拟环境

python3 -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

3.安装Dependencies

pip install -r requirements.txt

4.创建.env文件

在项目根目录中 .env 创建文件并添加以下内容:

OPENAI_API_KEY=your_openai_api_key
VECTOR_STORE_ID=your_vector_store_id

🚀 运行服务器

使用以下命令运行MCP服务器。

python server.py

服务器默认在以下地址作为基于SSE的MCP服务器:

http://0.0.0.0:8000

在ChatGPT(或Deep Research mode)上注册MCP服务器后,可以使用Search和Fetch工具。


🛠️ 工具

🔍 搜索(查询:str)

在矢量商店中搜索与查询相关的文档。

Response示例:

{
  "results": [
    {
      "id": "file-xxxxx",
      "title": "example.pdf",
      "text": "문서의 앞부분 200자...",
      "url": "https://platform.openai.com/storage/files/file-xxxxx"
    }
  ]
}

📄 fetch(id:str)

获取文档的ID并返回完整内容。

Response示例:

{
  "id": "file-xxxxx",
  "title": "example.pdf",
  "text": "문서 전체 내용...",
  "url": "https://platform.openai.com/storage/files/file-xxxxx",
  "metadata": {}
}

📚 运作原理

  1. 搜索

    • openai.vector_stores.search() 呼叫
    • 返回关联文档列表
  2. 获取

    • vector_stores.files.content() 将全文片段导入到
    • vector_stores.files.retrieve() 通过查询元数据
    • 合并为一个文档并返回
  3. 服务器

    • 使用FastMCP创建MCP-compliant服务器
    • 可在ChatGPT MCP连接模式下使用

📝 日志记录

默认日志级别设置为INFO,并输出搜索/查询请求和服务器启动信息。


📄 许可证

此项目是可自由修改和扩展的示例代码。