跳到文章正文
Grok 实用教程

Grok API怎么连接远程MCP?工具白名单、认证与调用结果核对

在Responses请求中配置远程MCP服务器,限制allowed_tools并区分API与服务…

昨天的本地隧道教程解决公网能否到达服务;本篇解决开发者API如何声明MCP工具并控制范围。Grok服务器负责连接远程服务,但工具授权和业务结果仍需应用核对。先使用自己有权访问的只读练习服务,不把生产写工具直接接入演示。

Grok API怎么连接远程MCP?工具白名单、认证与调用结果核对
Grok API怎么连接远程MCP?工具白名单、认证与调用结果核对

第一步:确认服务与传输

官方支持Streaming HTTP和SSE,配置需要server_url与server_label。先确认公网地址、具体路径、认证方式和实际工具名,不能只凭网页首页能打开就认为MCP可调用。自有服务还要检查日志与工具定义。

API需要xAI开发者访问,服务本身可能需要另一份OAuth或token。二者用途不同,不能把XAI_API_KEY当作MCP服务凭据,也不能把服务token暴露给浏览器或公开教程。

第二步:设置明确白名单

allowed_tools是允许工具名列表,官方说明空列表允许全部,因此不能用空列表表达禁止所有工具。原生xAI SDK对应名称为allowed_tool_names,不能把两种SDK参数混用。

server_label用于区分工具前缀,描述说明用途但不等于安全控制。首次接入只允许一个已确认的只读工具,工具不在服务端时先修正名称,不把列表清空作为排错捷径。

请求配置草案:type=mcp;server_url=真实受控服务地址;server_label=明确服务标签;allowed_tools=[已核实的只读工具名];authorization=仅由服务端安全注入的服务token。

第三步:构造Responses请求

官方基本示例可使用公开文档服务。下面不含私人数据与写入操作,仅展示连接形状;正式项目应按上一节加入真实服务白名单。代码未执行付费调用,不提供虚构成功结果。

import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["XAI_API_KEY"], base_url="https://api.x.ai/v1")
response = client.responses.create(
    model="grok-4.7",
    input="请根据公开项目文档概括xai-org/xai-sdk-python的用途,并说明来源。",
    tools=[{"type": "mcp", "server_url": "https://mcp.deepwiki.com/mcp", "server_label": "deepwiki"}],
)
print(response)

第四步:不要依赖不存在的审批机制

当前官方说明Responses中的require_approval和connector_id不受支持,不能从其他厂商代码复制后假定它会在每次写操作前拦截。需要人工批准的业务必须由自己的应用与服务实现,先隔离写工具。

工具输出是外部数据,不能允许其中指令改变应用权限或读取凭据。授权失败时检查HTTP与服务端记录,不让模型换到另一个未经批准的服务完成相同请求。

第五步:回查工具与结果

检查实际工具调用、名称、参数和服务结果,再核对最终回答是否与数据一致。只收到一段看似合理说明,不代表调用确实发生;服务错误与没有找到数据也不能合并成同一结论。

保存请求标识、服务标签、允许工具、错误阶段和脱敏结果,避免记录认证头。验收应确认没有调用白名单外工具、没有意外写入、原文可回查。停止使用时撤销不再需要的服务授权,删除代码配置不等于服务凭据已经失效。

官方资料

资料核对日期:2026年11月14日。

本文地址:https://www.163264.com/21086