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

搭建 MCP 服务器,让 ChatGPT 连接私有数据

🔧 本文将手把手教你搭建一个 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 快速部署指南

  1. 打开这个 Replit 模板:
    👉 Remix 示例 MCP Server

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

KeyValue
OPENAI_API_KEY你的 OpenAI 密钥
VECTOR_STORE_ID向量存储 ID(上传文件后获取)
  1. 获取 MCP 服务器地址,末尾加上 /sse/
https://link.ywhttp.com/bWBNsz

如何在 ChatGPT 中连接 MCP?

  1. 进入 ChatGPT 设置
  2. 点击“连接器(Connectors)”;
  3. 添加 MCP 地址(如上所示);
  4. 勾选允许使用 searchfetch
  5. 测试搜索或问答任务是否调用成功 ✅。

你还可以使用如下 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 只支持 searchfetch 工具,但仍可能存在:

  • 📎 提示注入攻击:恶意网页或内容隐藏指令,诱导模型泄露内部数据;
  • 🔐 数据回流风险:MCP 查询内容中可能包含用户隐私,请做好日志审计;
  • 💥 第三方服务器风险:请勿连接来历不明的 MCP 地址!

建议部署前开启 HTTPS,添加 OAuth 授权机制,提升安全性。


总结

构建 MCP Server 能够为你私有数据注入强大的智能对话能力,助力企业级应用集成、AI 报告生成、知识库问答等。

现在就搭建一个 MCP 服务,让 ChatGPT 深度理解你的数据吧!


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值