🔧 本文将手把手教你搭建一个 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 -
配置环境变量(点击左边锁图标🔒):
| Key | Value |
|---|---|
OPENAI_API_KEY | 你的 OpenAI 密钥 |
VECTOR_STORE_ID | 向量存储 ID(上传文件后获取) |
- 获取 MCP 服务器地址,末尾加上
/sse/:
https://link.ywhttp.com/bWBNsz
如何在 ChatGPT 中连接 MCP?
- 进入 ChatGPT 设置;
- 点击“连接器(Connectors)”;
- 添加 MCP 地址(如上所示);
- 勾选允许使用
search和fetch; - 测试搜索或问答任务是否调用成功 ✅。
你还可以使用如下 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 深度理解你的数据吧!
📌 交流讨论或遇到问题?欢迎留言!
搭建 MCP 服务器,让 ChatGPT 连接私有数据
6634

被折叠的 条评论
为什么被折叠?



