一、ChatGPT 🤝 FastMCP

在聊天模式和深度研究模式下将 FastMCP 服务器连接到 ChatGPT

ChatGPT 通过远程 HTTP 连接在两种模式下支持 MCP 服务器:聊天模式用于交互式对话,深度研究模式用于全面的信息检索。

提示:聊天模式需要开发者模式:要在常规 ChatGPT 对话中使用 MCP 服务器,必须先在 ChatGPT 设置中启用开发者模式。此功能适用于 ChatGPT Pro、Team、Enterprise 和 Edu 用户。

注意:OpenAI 的官方 MCP 文档和示例是使用 FastMCP v2 构建的!从他们的 MCP 文档开发者模式指南 了解更多信息。

二、构建服务器

首先,让我们创建一个简单的 FastMCP 服务器:

from fastmcp import FastMCP
import random

mcp = FastMCP("Demo Server")

@mcp.tool
def roll_dice(sides: int = 6) -> int:
    """掷骰子,指定面数。"""
    return random.randint(1, sides)

if __name__ == "__main__":
    mcp.run(transport="http", port=8000)

部署服务器

您的服务器必须可以从互联网访问。开发环境可使用 ngrok:

python server.py
# 或
ngrok http 8000

记录您的公共 URL(例如 https://abc123.ngrok.io)用于后续步骤。

三、聊天模式

聊天模式允许您在 ChatGPT 对话中直接使用 MCP 工具。请参阅 OpenAI 的开发者模式指南 了解最新要求。

3.1 添加到 ChatGPT

启用开发者模式

  • 打开 ChatGPT 并进入 设置 → 连接器

  • 高级 下,切换 开发者模式 为启用状态

创建连接器

  • 设置 → 连接器 中,点击 创建

  • 输入:

    • 名称: 您的服务器名称

    • 服务器 URL: https://your-server.ngrok.io/mcp/

  • 勾选 我信任此提供商

  • 如果需要,添加认证

  • 点击 创建

注意:没有开发者模式: 如果您没有搜索/获取工具,ChatGPT 将拒绝该服务器。启用开发者模式后,聊天模式不需要搜索/获取工具。

在聊天中使用

  • 开始新的聊天

  • 点击 + 按钮 → 更多 → 开发者模式

  • 启用您的 MCP 服务器连接器(必需 - 连接器必须显式添加到每个聊天中)

  • 现在您可以使用您的工具:

使用示例:

  • “掷一个 20 面的骰子”

  • “掷骰子”(使用默认的 6 面)

提示:连接器必须通过开发者模式在每个聊天会话中显式启用。一旦添加,它将在整个对话期间保持活动状态。

3.2 跳过确认

使用 annotations={“readOnlyHint”: True} 为只读工具跳过确认提示:

@mcp.tool(annotations={"readOnlyHint": True})
def get_status() -> str:
    """检查系统状态。"""
    return "所有系统运行正常"

@mcp.tool()  # 无注解 - ChatGPT 可能会要求确认
def delete_item(id: str) -> str:
    """删除一个项目。"""
    return f"已删除 {id}"

四、深度研究模式

深度研究模式提供带引用的系统性信息检索。请参阅 OpenAI 的 MCP 文档 了解最新的深度研究规范。

警告:需要搜索和获取工具:没有开发者模式,ChatGPT 将拒绝任何没有 search 和 fetch 工具的服务器。即使在开发者模式下,深度研究也只使用这两个工具。

4.1 工具实现

深度研究工具必须遵循以下模式:

@mcp.tool()
def search(query: str) -> dict:
    """
    搜索与查询匹配的记录。
    必须返回 {"ids": [字符串 ID 列表]}
    """
    # 您的搜索逻辑
    matching_ids = ["id1", "id2", "id3"]
    return {"ids": matching_ids}

@mcp.tool()
def fetch(id: str) -> dict:
    """
    按 ID 获取完整记录。
    返回完整记录数据供 ChatGPT 分析。
    """
    # 您的获取逻辑
    return {
        "id": id,
        "title": "记录标题",
        "content": "完整记录内容...",
        "metadata": {"author": "Jane Doe", "date": "2024"}
    }

4.2 使用深度研究

  • 确保您的服务器已添加到 ChatGPT 的连接器中(与聊天模式相同)

  • 开始新的聊天

  • 点击 + → 深度研究

  • 选择您的 MCP 服务器作为来源

  • 提出研究问题

ChatGPT 将使用您的 search 和 fetch 工具来查找和引用相关信息。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐