🔧 本文将手把手教你搭建一个 MCP(Model Context Protocol) 服务器,实现 ChatGPT 与你私有数据源的连接,助力深度研究、问答、API 调用等高级能力。 ✅ 支持远程调用,支持向量数据库检索,支持完整内容提取!
MCP 是什么?
MCP(模型上下文协议)是一种开放协议,用于将 AI 模型与外部数据源或工具集成,已经成为业内新标准。通过搭建 MCP 服务器,ChatGPT 不仅可以与你的数据进行语义检索,还能完整提取内容,形成研究报告、洞察分析等。
你可以通过 ChatGPT 的 Connector 连接器 或 Deep Research 深度研究 功能连接 MCP 服务器。
快速搭建一个 MCP 服务器(Python/FastMCP)
我们将使用 Python 与 FastMCP 框架 来搭建 MCP 服务器,主要包括两个功能:
- search:根据关键词进行向量检索,返回摘要片段;
- fetch:根据文件 ID 获取完整内容。
此外,你的数据源来自于 OpenAI 的 向量数据库 Vector Store。可以通过上传 PDF 文件快速构建,例如使用 这本关于猫的书 PDF。
🚀 向量库上传地址:OpenAI 向量存储管理平台
MCP Server 核心代码示例
以下为完整代码(适用于 Replit 等在线部署平台):
✅ 注意事项:
- OPENAI_API_KEY 需替换为你的 OpenAI 密钥;
- VECTOR_STORE_ID 为你上传文件后生成的向量存储 ID;
- 所有请求统一走 API 中转站 https://api.aaaaapi.com(已替换原 baseurl,保障请求稳定性)。
📌主要依赖:
pip install fastmcp openai
📦server.py 文件核心逻辑:
import logging
import os
from typing import Dict, List, Any
from fastmcp import FastMCP
from openai import OpenAI
# OpenAI 配置(通过中转 API 进行请求)
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
VECTOR_STORE_ID = os.environ.get("VECTOR_STORE_ID")
# 替换 OpenAI 接口 baseurl(稳定推荐:https://api.aaaaapi.com)
openai_client = OpenAI(
api_key=OPENAI_API_KEY,
base_url="https://api.aaaaapi.com/v1"
)
def create_server():
mcp = FastMCP(name="我的MCP服务器", instructions="支持搜索和文档提取的服务")
@mcp.tool()
async def search(query: str) –> Dict[str, List[Dict[str, Any]]]:
if not query.strip():
return {"results": []}
response = openai_client.vector_stores.search(
vector_store_id=VECTOR_STORE_ID,
query=query
)
results = []
for i, item in enumerate(response.data):
item_id = getattr(item, 'file_id', f"vs_{i}")
title = getattr(item, 'filename', f"文档 {i+1}")
snippet = item.content[0].text[:200] if item.content else "无内容"
results.append({
"id": item_id,
"title": title,
"text": snippet + "…",
"url": f"https://platform.openai.com/storage/files/{item_id}"
})
return {"results": results}
@mcp.tool()
async def fetch(id: str) –> Dict[str, Any]:
content = openai_client.vector_stores.files.content(
vector_store_id=VECTOR_STORE_ID, file_id=id)
info = openai_client.vector_stores.files.retrieve(
vector_store_id=VECTOR_STORE_ID, file_id=id)
text = "\\n".join(c.text for c in content.data)
return {
"id": id,
"title": info.filename,
"text": text,
"url": f"https://platform.openai.com/storage/files/{id}",
"metadata": info.attributes if hasattr(info, 'attributes') else {}
}
return mcp
def main():
server = create_server()
server.run(transport="sse", host="0.0.0.0", port=8000)
if __name__ == "__main__":
main()
Replit 快速部署指南
打开这个 Replit 模板: 👉 Remix 示例 MCP Server
配置环境变量(点击左边锁图标🔒):
OPENAI_API_KEY | 你的 OpenAI 密钥 |
VECTOR_STORE_ID | 向量存储 ID(上传文件后获取) |
https://link.ywhttp.com/bWBNsz
如何在 ChatGPT 中连接 MCP?
你还可以使用如下 CURL 请求测试接口是否工作正常:
curl https://link.ywhttp.com/bWBNsz \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer $OPENAI_API_KEY" \\
-d '{
"model": "o4-mini-deep-research",
"input": […],
"tools": [
{
"type": "mcp",
"server_label": "mypdf",
"server_url": "https://xxx.repl.co/sse/",
"allowed_tools": ["search", "fetch"],
"require_approval": "never"
}
]
}'
安全提示:请防范数据泄露!
虽然 MCP 只支持 search 与 fetch 工具,但仍可能存在:
- 📎 提示注入攻击:恶意网页或内容隐藏指令,诱导模型泄露内部数据;
- 🔐 数据回流风险:MCP 查询内容中可能包含用户隐私,请做好日志审计;
- 💥 第三方服务器风险:请勿连接来历不明的 MCP 地址!
建议部署前开启 HTTPS,添加 OAuth 授权机制,提升安全性。
总结
构建 MCP Server 能够为你私有数据注入强大的智能对话能力,助力企业级应用集成、AI 报告生成、知识库问答等。
现在就搭建一个 MCP 服务,让 ChatGPT 深度理解你的数据吧!
📌 交流讨论或遇到问题?欢迎留言!
评论前必须登录!
注册