语义搜索服务器

一个基于OpenAI Vector Store的语义搜索和文档检索服务器,用于扩展ChatGPT的深度研究功能。

  • by cienco
  • HTML
  • 本地部署
  • 更新于
在 GitHub 查看 cienco/assistente-vettoriale-mcp-main

使用说明

用于ChatGPT深度研究的MCP服务器示例

这是一个样本 模型上下文协议(MCP) 设计用于与ChatGPT配合使用的服务器 深入研究 功能。它通过以下方式提供语义搜索 OpenAI矢量存储 以及文档检索功能,演示如何构建自定义MCP服务器,利用公司特定的知识和工具扩展ChatGPT。

特性

  • 搜索工具 -使用OpenAI矢量存储API进行语义搜索
  • 提取工具 --完整的文档检索(全文+元数据)
  • SSE运输 --与ChatGPT进行实时通信的服务器发送事件
  • 样本数据 --五份技术文件捆绑在一起,用于快速测试
  • 符合MCP标准 --遵循深度研究集成的官方MCP规范

需求

版本
Python 3.8+
fastmcp ≥2.9.0
uvicorn ≥0.34.3
openai 最新
皮丹蒂奇 (由fastmcp拉)

安装

pip install fastmcp uvicorn openai

导出您的OpenAI密钥:

export OPENAI_API_KEY="YOUR_API_KEY"

运行服务器:

python main.py

服务器正在监听 http://0.0.0.0:8000 (或 $PORT 渲染过程),启用SSE。


用法

连接到ChatGPT深度研究

  1. ChatGPT→ 设置
  2. 打开 连接器 标签
  3. 添加连接器 带有URL http://<your-domain>:8000/sse/
  4. 点击 测试连接 --它应该显示 可用的

端点

终点 目的
/sse/ 主MCP端点(SSE)
/ 健康检查(工具注册显示在日志中)

工具

搜索

字段 值
目的 矢量存储的语义搜索
输入 自然语言查询
输出 文档列表(id, title, snippet)

获取

字段 值
目的 检索完整文档文本+元数据
输入 file-xxx id(来自搜索)
输出 完成文档内容

矢量存储集成

默认矢量存储为 vs_682552f3ab90819185d4b99adcae7a07,例如包含 Palantir 10‑Q 报告。仅使用OpenAI矢量存储API—— 没有本地回退.


定制

使用您自己的矢量存储

  1. 改变 VECTOR_STORE_ID 在 main.py.
  2. 通过OpenAI API上传文档。
  3. 推荐的JSON结构:
{
  "id": "unique_identifier",
  "title": "Document Title",
  "text": "Short description",
  "content": "Full document content",
  "url": "https://optional-source.com",
  "metadata": {
    "category": "document_category",
    "author": "Author Name",
    "date": "2024-01-01",
    "tags": ["tag1", "tag2"]
  }
}
  1. 重新启动服务器。

调整搜索逻辑

  • 查询多个店铺
  • 自定义排名/过滤器
  • 不同的代码段长度或格式

部署

本地开发人员

python main.py   # runs on http://localhost:8000/sse/

制作(渲染示例)

  1. 使用以下命令推送回购 requirements.txt.
  2. 启动命令: python main.py (读 $PORT).
  3. 集 OPENAI_API_KEY 和 VECTOR_STORE_ID env变量。

Render提供HTTPS并注销。

隧道开挖以进行局部测试

ngrok http 8000         # or
cloudflared tunnel --url http://localhost:8000

建筑

  • FastMCP --MCP实施
  • Uvicorn --ASGI服务器
  • OpenAI矢量存储 --搜索与检索后端

故障排除

问题 检查表
服务器无法启动 端口忙吗? $OPENAI_API_KEY 设置?
ChatGPT无法连接 URL是公开的/HTTPS吗?
没有搜索结果 正确 VECTOR_STORE_ID?文件已上传?
矢量存储错误 存储存在并包含文件吗?
缺少工具 检查工具注册的启动日志

快速调试命令

# Test SSE endpoint
curl http://localhost:8000/sse/

# List OpenAI models
python - <<'PY'
from openai import OpenAI
print(OpenAI().models.list())
PY