云计算百科
云计算领域专业知识百科平台

搭建自己的 MCP 服务器,让 ChatGPT 连接你的私有数据和 API 服务!

🔧 本文将手把手教你搭建一个 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

  • 配置环境变量(点击左边锁图标🔒):

  • KeyValue
    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 深度理解你的数据吧!


    📌 交流讨论或遇到问题?欢迎留言!


    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 搭建自己的 MCP 服务器,让 ChatGPT 连接你的私有数据和 API 服务!
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!