For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
主导航

MCP 服务器

将模型连接到远程 MCP 服务器,并通过安全 MCP 隧道连接到本地服务器。

除了通过函数调用向模型提供工具外,您还可以使用 远程 MCP 服务器安全 MCP 隧道为模型扩展能力。这些工具使模型能够在响应用户提示时,根据需要连接和控制外部服务。您可以自动允许这些工具调用,也可以加以限制,要求经过您作为开发者的明确审批。

  • 远程 MCP 服务器 可以是公共互联网上任何实现了远程 Model Context Protocol(MCP)服务器的服务器。

  • 安全 MCP 隧道 可连接本地或私有 MCP 服务器,无需将服务器暴露在公共互联网上。

本指南介绍如何在 Responses API 中使用 MCP 工具。现有模型仍支持内置连接器;有关弃用政策和兼容性示例,请参阅旧版连接器。有关智能体 API 会话,请参阅 MCP 连接,其中介绍了如何从托管服务或您的沙盒建立连接。

安全 MCP 隧道

如果您的 MCP 服务器是私有服务器、部署在本地,或位于防火墙后方,请使用安全 MCP 隧道将其连接到受支持的 OpenAI 产品,而无需将服务器暴露在公共互联网上。请从 openai/tunnel-client 下载最新的公开发布版本。

快速入门

Responses API 中使用 mcp 工具类型。对于远程 MCP 服务器,请设置 server_url;对于通过安全 MCP 隧道连接的本地 MCP 服务器,请使用 tunnel_id。根据服务器的要求,您可能还需要在 authorization 参数中提供 OAuth 访问 Token。

在 Responses API 中使用远程 MCP 服务器
curl https://api.openai.com/v1/responses \ 
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer $OPENAI_API_KEY" \ 
-d '{
  "model": "gpt-6-astra",
    "tools": [
      {
        "type": "mcp",
        "server_label": "dmcp",
        "server_description": "A Dungeons and Dragons MCP server to assist with dice rolling.",
        "server_url": "https://dmcp-server.deno.dev/mcp",
        "require_approval": "never"
      }
    ],
    "input": "Roll 2d4+1"
  }'

开发者务必只将可信的远程 MCP 服务器与 Responses API 配合使用。恶意服务器可能从 进入模型上下文的任何内容中窃取敏感数据。使用此工具前,请仔细阅读下文的 风险与安全部分。

API 会在模型响应的 output 数组中返回新条目。如果模型决定使用 MCP 服务器,它会先发送请求,列出该服务器的可用工具,这会生成一个 mcp_list_tools 输出条目。在上面的远程 MCP 服务器示例中,该条目仅包含一个工具定义:

{
  "id": "mcpl_68a6102a4968819c8177b05584dd627b0679e572a900e618",
  "type": "mcp_list_tools",
  "server_label": "dmcp",
  "tools": [
    {
      "annotations": null,
      "description": "Given a string of text describing a dice roll...",
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "diceRollExpression": {
            "type": "string"
          }
        },
        "required": ["diceRollExpression"],
        "additionalProperties": false
      },
      "name": "roll"
    }
  ]
}

如果模型决定调用 MCP 服务器提供的某个可用工具,您还会看到一个 mcp_call 输出,其中会显示模型发送给 MCP 工具的内容,以及 MCP 工具返回的输出。

{
  "id": "mcp_68a6102d8948819c9b1490d36d5ffa4a0679e572a900e618",
  "type": "mcp_call",
  "approval_request_id": null,
  "arguments": "{\"diceRollExpression\":\"2d4 + 1\"}",
  "error": null,
  "name": "roll",
  "output": "4",
  "server_label": "dmcp"
}

继续阅读下方指南,进一步了解 MCP 工具的工作原理、如何筛选可用工具,以及如何处理工具调用审批请求。

工作原理

大多数近期推出的模型都可在 Responses API 中使用 MCP 工具。您可以在此处查看您的模型是否兼容 MCP 工具。使用 MCP 工具时,您只需为导入工具定义或进行工具调用时使用的 Token 付费。每次工具调用不收取额外费用。

下面,我们将逐步介绍 API 调用 MCP 工具的流程。

第 1 步:列出可用工具

当您在 tools 参数中指定远程 MCP 服务器时,API 会尝试从该服务器获取工具列表。Responses API 可与支持 Streamable HTTP 或 HTTP/SSE 传输协议的远程 MCP 服务器配合使用。

如果成功获取工具列表,模型响应的输出中就会出现一个新的 mcp_list_tools 输出条目。该对象的 tools 属性会显示成功导入的工具。

{
  "id": "mcpl_68a6102a4968819c8177b05584dd627b0679e572a900e618",
  "type": "mcp_list_tools",
  "server_label": "dmcp",
  "tools": [
    {
      "annotations": null,
      "description": "Given a string of text describing a dice roll...",
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "diceRollExpression": {
            "type": "string"
          }
        },
        "required": ["diceRollExpression"],
        "additionalProperties": false
      },
      "name": "roll"
    }
  ]
}

只要 API 请求的上下文中包含 mcp_list_tools 条目, API 就不会在 对话的每一轮都重新从 MCP 服务器获取工具列表。 我们建议您在每次对话或工作流程执行期间, 都将此条目保留在模型上下文中,以降低延迟。

筛选工具

某些 MCP 服务器可能提供数十个工具,向模型开放大量工具可能导致成本和延迟升高。如果您只需要 MCP 服务器提供的部分工具,可以使用 allowed_tools 参数,仅导入这些工具。

限制允许使用的工具
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
    "model": "gpt-6-astra",
    "tools": [
      {
        "type": "mcp",
        "server_label": "dmcp",
        "server_description": "A Dungeons and Dragons MCP server to assist with dice rolling.",
        "server_url": "https://dmcp-server.deno.dev/mcp",
        "require_approval": "never",
        "allowed_tools": ["roll"]
      }
    ],
    "input": "Roll 2d4+1"
  }'

第 2 步:调用工具

模型获得这些工具定义后,可能会根据上下文中的内容选择调用工具。当模型决定调用 MCP 工具时,API 会向远程 MCP 服务器发送请求以调用该工具,并将其输出放入模型上下文中。这会创建一个如下所示的 mcp_call 条目:

{
  "id": "mcp_68a6102d8948819c9b1490d36d5ffa4a0679e572a900e618",
  "type": "mcp_call",
  "approval_request_id": null,
  "arguments": "{\"diceRollExpression\":\"2d4 + 1\"}",
  "error": null,
  "name": "roll",
  "output": "4",
  "server_label": "dmcp"
}

此条目同时包含模型为此次工具调用选择的参数,以及远程 MCP 服务器返回的 output。所有模型都可以选择进行多次 MCP 工具调用,因此您可能会看到单个 API 请求生成多个此类条目。

工具调用失败时,此条目的 error 字段会填入 MCP 协议错误、MCP 工具执行错误或一般连接错误。有关 MCP 错误的说明,请参阅此处的 MCP 规范。

审批

默认情况下,OpenAI 会在向连接器或远程 MCP 服务器共享任何数据之前请求您的审批。审批让您能够了解并控制发送到 MCP 服务器的数据。我们强烈建议您仔细审查与远程 MCP 服务器共享的所有数据,并可选择将其记录到日志中。请求审批 MCP 工具调用时,Response 的输出中会创建一个如下所示的 mcp_approval_request 条目:

{
  "id": "mcpr_68a619e1d82c8190b50c1ccba7ad18ef0d2d23a86136d339",
  "type": "mcp_approval_request",
  "arguments": "{\"diceRollExpression\":\"2d4 + 1\"}",
  "name": "roll",
  "server_label": "dmcp"
}

随后,您可以创建一个新的 Response 对象,并向其中追加一个 mcp_approval_response 条目,以回应此审批请求。

批准在 API 请求中使用工具
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
    "model": "gpt-6-astra",
    "tools": [
      {
        "type": "mcp",
        "server_label": "dmcp",
        "server_description": "A Dungeons and Dragons MCP server to assist with dice rolling.",
        "server_url": "https://dmcp-server.deno.dev/mcp",
        "require_approval": "always",
      }
    ],
    "previous_response_id": "resp_682d498bdefc81918b4a6aa477bfafd904ad1e533afccbfa",
    "input": [{
      "type": "mcp_approval_response",
      "approve": true,
      "approval_request_id": "mcpr_682d498e3bd4819196a0ce1664f8e77b04ad1e533afccbfa"
    }]
  }'

这里,我们使用 previous_response_id 参数,将这个新响应与之前生成审批请求的响应串联起来。您也可以将一个响应的输出作为另一个响应的输入传回,从而最大限度地控制哪些内容进入模型的上下文。

当您确信某个远程 MCP 服务器值得信任时,可以选择跳过审批以降低延迟。为此,您可以像下方示例一样,将 MCP 工具的 require_approval 参数设为一个对象,其中仅列出您希望跳过审批的工具;也可以将其设为 'never',以跳过该远程 MCP 服务器中所有工具的审批。

对某些工具始终免除审批
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
    "model": "gpt-6-astra",
    "tools": [
      {
        "type": "mcp",
        "server_label": "deepwiki",
        "server_url": "https://mcp.deepwiki.com/mcp",
        "require_approval": {
          "never": {
            "tool_names": ["ask_question", "read_wiki_structure"]
          }
        }
      }
    ],
    "input": "What transport protocols does the 2025-03-26 version of the MCP spec (modelcontextprotocol/modelcontextprotocol) support?"
  }'

身份验证

上面使用的示例 MCP 服务器不同,大多数其他 MCP 服务器都需要身份验证。最常见的方式是使用 OAuth 访问 Token。请通过 MCP 工具的 authorization 字段提供此 Token:

使用 Stripe MCP 工具
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
    "model": "gpt-6-astra",
    "input": "Create a payment link for $20",
    "tools": [
      {
        "type": "mcp",
        "server_label": "stripe",
        "server_url": "https://mcp.stripe.com",
        "authorization": "$STRIPE_OAUTH_ACCESS_TOKEN"
      }
    ]
  }'

为防止敏感 Token 泄露,Responses API 不会存储您在 authorization 字段中提供的值。创建的 Response 对象中也不会显示此值。因此,您必须在每次 Responses API 创建请求中发送 authorization 的值。

旧版连接器

connector_id 已在 2026 年 9 月 1 日之后发布的模型中弃用。 使用 server_url 连接远程 MCP 服务器,或使用 tunnel_id 通过 安全 MCP 隧道连接本地 MCP 服务器。 现有模型仍支持连接器。本节示例使用 gpt-5.2,该模型在上述截止日期之前发布。

Responses API 内置支持一组数量有限的第三方服务连接器。这些连接器可让您从 Dropbox、Gmail 等常用应用中获取上下文,使模型能够与常用服务交互。

连接器的使用方式与远程 MCP 服务器相同。两者都能让 OpenAI 模型在 API 请求中访问更多第三方工具。不过,使用连接器时,您传入的是用于唯一标识 API 中某个可用连接器的 connector_id,而不是调用远程 MCP 服务器时使用的 server_url

连接器要求您的应用在 authorization 参数中提供 OAuth 访问 Token。

在 GPT-5.2 中使用旧版连接器
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
    "model": "gpt-5.2",
    "tools": [
      {
        "type": "mcp",
        "server_label": "Dropbox",
        "connector_id": "connector_dropbox",
        "authorization": "<oauth access token>",
        "require_approval": "never"
      }
    ],
    "input": "Summarize the Q2 earnings report."
  }'

可用连接器

  • Dropbox:connector_dropbox
  • Gmail:connector_gmail
  • Google Calendar:connector_googlecalendar
  • Google Drive:connector_googledrive
  • Microsoft Teams:connector_microsoftteams
  • Outlook Calendar:connector_outlookcalendar
  • Outlook Email:connector_outlookemail
  • SharePoint:connector_sharepoint

我们优先支持尚未提供官方远程 MCP 服务器的服务。例如,GitHub 已提供官方 MCP 服务器,您可以在 MCP 工具的 server_url 字段中传入 https://api.githubcopilot.com/mcp/ 来连接该服务器。

为连接器授权

authorization 字段中传入 OAuth 访问令牌。OAuth 客户端注册和授权必须由您的应用单独处理。

测试时,您可以使用 Google 的 OAuth 2.0 Playground 生成临时访问令牌,并在 API 请求中使用这些令牌。

要使用 Playground 测试连接器的 API 功能,请先输入:

https://www.googleapis.com/auth/calendar.events

此授权范围允许 API 读取 Google Calendar 活动。请在界面的“步骤 1:选择 API 并授权”下输入。

使用您的 Google 账户为应用授权后,您将进入 步骤 2:用授权码换取 Token。这一步会生成一个访问 Token,您可以在使用 Google Calendar 连接器的 API 请求中使用它:

使用 Google Calendar 连接器
curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-5.2",
    "tools": [
      {
        "type": "mcp",
        "server_label": "google_calendar",
        "connector_id": "connector_googlecalendar",
        "authorization": "ya29.A0AS3H6...",
        "require_approval": "never"
      }
    ],
    "input": "What is on my Google Calendar for today?"
  }'

连接器的 MCP 工具调用与远程 MCP 服务器的 MCP 工具调用格式相同,都使用 mcp_call 输出项类型。在本例中,传给连接器的参数和连接器返回的响应都是 JSON 字符串:

{
  "id": "mcp_68a62ae1c93c81a2b98c29340aa3ed8800e9b63986850588",
  "type": "mcp_call",
  "approval_request_id": null,
  "arguments": "{\"time_min\":\"2025-08-20T00:00:00\",\"time_max\":\"2025-08-21T00:00:00\",\"timezone_str\":null,\"max_results\":50,\"query\":null,\"calendar_id\":null,\"next_page_token\":null}",
  "error": null,
  "name": "search_events",
  "output": "{\"events\": [{\"id\": \"2n8ni54ani58pc3ii6soelupcs_20250820\", \"summary\": \"Home\", \"location\": null, \"start\": \"2025-08-20T00:00:00\", \"end\": \"2025-08-21T00:00:00\", \"url\": \"https://www.google.com/calendar/event?eid=Mm44bmk1NGFuaTU4cGMzaWk2c29lbHVwY3NfMjAyNTA4MjAga3doaW5uZXJ5QG9wZW5haS5jb20&ctz=America/Los_Angeles\", \"description\": \"\\n\\n\", \"transparency\": \"transparent\", \"display_url\": \"https://www.google.com/calendar/event?eid=Mm44bmk1NGFuaTU4cGMzaWk2c29lbHVwY3NfMjAyNTA4MjAga3doaW5uZXJ5QG9wZW5haS5jb20&ctz=America/Los_Angeles\", \"display_title\": \"Home\"}], \"next_page_token\": null}",
  "server_label": "Google_Calendar"
}

各连接器的可用工具

可用工具取决于您的 OAuth 令牌具有哪些授权范围。展开下方表格,查看连接到各个应用时可以使用的工具。

延迟加载 MCP 服务器中的工具

如果您使用工具搜索,可以推迟加载 MCP 服务器提供的函数,直到模型判断需要使用它们时再加载。为此,请在 MCP 服务器的工具定义中设置 defer_loading: true

延迟加载 MCP 服务器时,模型仍可根据该服务器的标签和说明来决定何时搜索它,但各个函数的定义只会在需要时加载。这有助于减少总体 Token 用量,对于提供大量函数的 MCP 服务器尤其有用。

{
    "type": "mcp",
    "server_label": "dmcp",
    "server_description": "A Dungeons and Dragons MCP server to assist with dice rolling.",
    "server_url": "https://dmcp-server.deno.dev/mcp",
    "defer_loading": true,
    "require_approval": "never"
}

风险与安全

MCP 工具可让您将 OpenAI 模型连接到外部服务。这项功能强大,但也存在一些风险。

使用连接器时,可能会将敏感数据发送给 OpenAI,或允许模型读取这些服务中可能包含敏感信息的数据。

远程 MCP 服务器存在同样的风险,而且未经 OpenAI 验证。这些服务器可以让模型访问、发送和接收数据,以及在这些服务中执行操作。所有 MCP 服务器都是第三方服务,受其各自的条款与条件约束。

如果您发现恶意 MCP 服务器,请向 security@openai.com 举报。

以下是集成连接器和远程 MCP 服务器时可参考的一些最佳实践。

提示注入

提示注入是任何 LLM 应用都需要重视的安全问题。当您允许模型访问能够读取敏感数据或执行操作的 MCP 服务器和连接器时,尤其需要注意这一点。如果提供给模型的提示包含用户提供的内容,请谨慎使用这些工具,并采取适当的防护措施。

始终要求对敏感操作进行审批

使用 require_approvalallowed_tools 参数的可用配置,确保所有敏感操作都必须经过审批流程。

MCP 工具调用及输出中的 URL

无论工具调用的输出来自连接器还是远程 MCP 服务器,请求其中提供的 URL 或嵌入其中的图片 URL 都可能存在危险。在应用代码中嵌入这些 URL 或以其他方式使用它们之前,请确保您信任提供这些 URL 的域名和服务。

连接到可信服务器

请选择由服务提供商自行托管的官方服务器(例如,我们建议连接到 Stripe 在 mcp.stripe.com 托管的 Stripe 服务器,而不是第三方托管的 Stripe MCP 服务器)。目前,官方远程 MCP 服务器还不多,因此您可能会考虑使用其他组织托管的 MCP 服务器。这些组织并不运营该服务器,而是通过您的 API 将请求代理转发到相应服务。如果您必须这样做,请格外谨慎地对这些“聚合服务商”开展尽职调查,并仔细审查它们如何使用您的数据。

记录并审查与第三方 MCP 服务器共享的数据。

MCP 服务器会自行定义工具,因此可能会请求一些您不愿与该 MCP 服务器托管方共享的数据。正因如此,Responses API 中的 MCP 工具默认要求每次 MCP 工具调用都经过审批。开发应用时,请仔细、全面地审查与这些 MCP 服务器共享的数据类型。当您确信该 MCP 服务器值得信任时,可以跳过这些审批,以降低执行延迟。

我们还建议记录发送到 MCP 服务器的所有数据。如果您使用 Responses API 并设置了 store=true,API 已会记录这些数据并保留 30 天,除非您的组织启用了零数据保留。您也可以在自己的系统中记录这些数据,并定期审查,以确保数据共享符合您的预期。

恶意 MCP 服务器可能包含隐藏指令(提示注入),旨在让 OpenAI 模型出现意外行为。虽然 OpenAI 已内置防护措施来帮助检测和阻止这些威胁,但您仍必须仔细审查输入和输出,并确保只连接到可信服务器。

MCP 服务器可能会出乎意料地更新工具行为,从而可能导致非预期或恶意行为。

对零数据保留和数据驻留的影响

MCP 工具兼容零数据保留和数据驻留,但需要注意,MCP 服务器是第三方服务,发送到 MCP 服务器的数据受该服务的数据保留和数据驻留政策约束。

换句话说,如果您的组织选择在欧洲进行数据驻留,在通信或数据发送到 MCP 服务器之前,OpenAI 会将客户内容的推理和存储限制在欧洲进行。您有责任确保 MCP 服务器也遵守您的零数据保留或数据驻留要求。请在此处进一步了解零数据保留和数据驻留。

使用说明

API 可用性 速率限制 备注

层级 1
200 RPM

层级 2 和 3
1000 RPM

层级 4 和 5
2000 RPM

定价
ZDR 和数据驻留