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
cd
2.创建(可选)虚拟环境
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate3.安装Dependencies
pip install -r requirements.txt4.创建.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": {}
}______________________________________________________________________
📚 运作原理
- 搜索
- openai.vector_stores.search() 呼叫 - 返回关联文档列表
- 获取
- vector_stores.files.content() 将全文片段导入到 - vector_stores.files.retrieve() 通过查询元数据 - 合并为一个文档并返回
- 服务器
- 使用FastMCP创建MCP-compliant服务器 - 可在ChatGPT MCP连接模式下使用
______________________________________________________________________
📝 日志记录
默认日志级别设置为INFO,并输出搜索/查询请求和服务器启动信息。
______________________________________________________________________
📄 许可证
此项目是可自由修改和扩展的示例代码。
