Gemini Connected Apps:数据工具怎么接

Gemini Connected Apps 预览已开放。拿真实数据 MCP 对照 Google 的 12 条要求实测:鉴权卡在哪、工具怎么写、调用多少钱。

示意插图:画面中间是一个巨大的圆形接口插座,周围几块平台上放着购物袋、音乐唱片、日历卡片和一块显示折线的屏幕,每块平台都有一根线插进插座;最右边一根线连着一摞代表社交帖子和视频的小卡片,这根线和插座里的一个插孔是青绿色,其余都是浅灰色。

这篇文章写给做数据工具的开发者:你手上已经有一个远程 MCP 服务器,能把社交平台和电商的数据交给 AI,现在想知道 Google 在 2026 年 10 月 28 日开放预览的 Connected Apps Platform 能不能、该不该接。先说清楚测了什么、没测什么。Google 一侧的 Connected Console 注册、开发者模式里建自定义应用、审核和发布,我们都没有执行:Connected Console 目前只对美国开发者开放预览,申请要填表排队,本文里凡是 Google 一侧的步骤和配置,都标成「配置示例」,内容照 developers.google.com 和 support.google.com 的原文写。EveryInfra 一侧的每个数都来自 2026 年 11 月 11 日 00:17 到 00:35(新加坡时间)对 https://api.everyinfra.com/mcp 的真实调用:握手、列工具、8 次数据调用、几次故意出错的请求,以及按 Google 文档的发现顺序去探 OAuth 元数据。EveryInfra 没有在 Gemini 或 Google 搜索里上架,也没有提交审核,本文不代表 Google 对任何一方的认可。

结论先放前面。把 Google 文档里能逐条核对的 12 条要求拿来对照,EveryInfra 的通用入口 /mcp 符合 6 条,带 OAuth 的 /mcp/all 符合 5 条,另有 3 条部分符合。挡路的不是传输协议,也不是版本号,而是两件更根本的事:Gemini 的连接方式里没有地方填 API key 请求头,只能走 OAuth;Google 的上架政策不允许「一个工具分发到很多能力」的通用写法,而这恰恰是大多数数据 MCP 的写法。第三件事是返回体积:11 月 11 日一次 youtube/search 原样返回 20 条视频,正文 39,732 字节;只留回答问题要用的 6 个字段,是 5,062 字节,只剩 12.7%。返回越大,模型读它花的钱越多,正文按 token 估算了这笔账。

示意插图:画面分成左右两条路。左边一段宽台阶通向一个有门卫亭和栏杆的广场,广场入口挂着一块空白的审核牌;右边一条青绿色的小路直接通向一张工作台,台上放着一台笔记本电脑和一摞数据卡片。两条路从同一块起点平台出发,平台上放着一个代表 MCP 服务器的方盒子。只有右边的小路是青绿色。
同一个 MCP 服务器,去 Gemini 应用和搜索要过审核这道门;只给自己的 agent 用,走 Gemini API 或 Gemini CLI 就能直接接。

Gemini Connected Apps Platform 是什么:10 月 28 日的预览

2026 年 10 月 28 日,Google 在开发者博客上宣布 Connected Apps Platform,定位是让开发者「做一次,接到 Gemini 应用和搜索两个地方」(Google 博客,2026-10-28)。在这之前,Gemini 里的第三方连接应用要和 Google 一对一合作才能做出来;按 9to5Google 当天的报道,Gemini 应用里这类应用当时已经超过 50 个,包括 Adobe、Dropbox、Instacart、OpenTable、Ticketmaster,Calm 会在几周内加入(9to5Google,2026-10-28)。新平台把这个过程改成自助:开发者准备一个云端托管的 MCP 服务器,或者在 Android 应用里用 AppFunctions 做本机 MCP,然后在新的 Google Connected Console 里注册、测试、提交审核,并且可以自己选上线到搜索、Gemini 应用还是两边都上。

产品主页把两条接入路径写得很清楚:远程 MCP 服务器用于把工具和经过授权的数据接到 Google 的产品里,还可以用 MCP Apps 做交互界面;Android MCP 是客户端路径,用 Jetpack AppFunctions 库让应用把功能交给 Gemini 这样的助手,在手机本地执行(Connected Apps Platform 主页)。Android 文档补了一个限制:AppFunctions 需要 Android 16 以上,和 Gemini 的集成截至 2026 年 5 月还是给受信测试者的私有预览(AppFunctions 概览)。做数据工具的团队通常没有自己的 Android 应用,本文只讨论远程 MCP 这条路。

「谁能用」是第一个要核对的点。在 10 月 29 日发布的开发者讲解视频里,Google 的工程师在第 6 分钟说明预览只对美国开发者开放,接着又说开发者模式现在对美国所有用户可用(Android Developers 频道视频,2026-10-29)。用户这边也一样窄:Gemini 帮助中心写明,自己连自定义 MCP 应用要年满 18 岁、在美国、用个人 Google 账号(不能是工作或学校账号)、打开「保留活动记录」,界面只有英文,而且只能在网页版里建立连接(Gemini 帮助:自定义应用)。搜索一侧的帮助页也说,搜索 AI 模式里的连接应用目前只在美国、只用英文(Google 搜索帮助:连接应用)。如果你的用户主要不在美国,这一段已经决定了短期内的收益上限。

流程动画,分上下两条泳道,演示 Gemini 连接一个远程 MCP 服务器的步骤:第 1 步 POST initialize,第 2 步收到 401 和 WWW-Authenticate,第 3 步读受保护资源元数据,第 4 步注册客户端,第 5 步用户登录授权,第 6 步带令牌调用工具。上面一条是 EveryInfra 的 /mcp/all,前三步是青绿色的通过标记,第 4 步因为元数据里没有 registration_endpoint 停下;下面一条是 /mcp,第 1 步就停住,因为它只认请求头里的 API key,而 Gemini 没有填请求头的地方。

最近 60 天的变化:从连接应用到开发者平台

Connected Apps Platform 不是一夜冒出来的。把最近两个月 Google 自己公布的变化排一下,可以看出它是一步步从「Google 挑合作方」走到「开发者自己申请」的。

日期变化对数据工具开发者意味着什么出处
2026-09-23新一批连接应用进入 Gemini:Airtable、Linear、monday.com、Adobe、Webflow、Experian、Peloton 等第三方应用在 Gemini 里用 @ 提及的用法已经成形,但名单还是 Google 选的Google 博客
2026-10-13Gemini 改版,加入「Customize」页面集中管理连接应用,可连的应用超过 40 个,大多只在美国英文环境用户开始有一个固定位置找应用,入口变清楚了Gemini 发布说明
2026-10-27 至 10-30developers.google.com 上线 MCP 开发者指南、服务器优化、OAuth、开发者模式、Connected Console 的整套文档要求第一次写成文字,可以逐条对照自己的服务器MCP 开发者指南、前置条件,2026-10-30 更新
2026-10-28Connected Apps Platform 开放预览,一个 MCP 服务器同时接 Gemini 和搜索自助注册,但要过审核,只对美国开发者Google 博客
2026-10-29Google 开发者讲解视频:从 FastMCP 写服务器、部署到 Cloud Run、开发者模式测试到 Console 提交整个流程第一次被完整演示,也说清了只对美国开放视频
2026-11-02Connected Apps 政策更新,「集成完整性」一节禁止动态发现工具和通用分发工具大多数数据 MCP 的「一个工具调所有能力」写法不合规Connected Apps 政策
2026-11-10Gemini API 发布 Gemini 4 Carbon 正式版,11 月 30 日前输入每百万 token $2、输出 $10在 Gemini API 里自己接 MCP 的路线,模型选择和价格又多了一档Gemini API 发布说明

Gemini Connected Apps Platform API:三条接法各管什么

「把数据工具接进 Gemini」其实有三条完全不同的路,适用的人、鉴权方式和审核要求都不一样。很多讨论把它们混在一起,结果在开发者模式里折腾半天,才发现自己要的其实是 Gemini API。

第一条是 Connected Apps Platform 本身:你的应用出现在 Gemini 应用和搜索 AI 模式的应用列表里,所有符合条件的用户都能用 @ 提到它。要走 Connected Console 注册、通过审核才能发布,鉴权只能是不鉴权、机器对机器的 OAuth 客户端凭据,或者用户授权的 OAuth 授权码流程(Console 操作步骤,2026-10-28 更新)。第二条是开发者模式里的自定义应用:在 gemini.google.com/devmode 里填一个 MCP 服务器网址就能连,只有你自己的账号能用,不需要审核,但同样只能选 OAuth 或者不鉴权(开发者模式使用说明,2026-10-28 更新)。第三条是 Gemini API 的 Interactions 接口:在请求的 tools 里写一个 mcp_server,可以带任意 HTTP 请求头,用 allowed_tools 限定能调哪些工具,只支持 Streamable HTTP(Gemini API 函数调用文档)。Gemini CLI 的 settings.json 也属于这一类,httpUrl 加 headers 就能带 API key(Gemini CLI MCP 配置)。

接法谁能用能带 API key 请求头吗要审核吗地区和账号限制适合谁
Connected Apps Platform 上架所有符合条件的 Gemini 和搜索用户不能,只有不鉴权或 OAuth要,Console 第 9 步提交预览只对美国开发者;用户侧美国、英文有自己用户账号体系、想被普通用户发现的服务
开发者模式自定义应用只有建应用的那个账号不能,只有不鉴权或 OAuth不要18 岁以上、美国、个人账号、网页版建立连接上架前自测;个人自用
Gemini API 的 mcp_server你自己的程序和 agent能,headers 任意填不要按 Gemini API 的可用地区做数据分析、监测、报表的团队
Gemini CLI你自己的终端能,headers 任意填不要按 Gemini CLI 的可用范围开发者日常查数、写脚本
Gemini Enterprise企业里的员工不能直接填,要经 ADK 和 Agent Gateway 转企业管理员批准按企业版合同公司统一管理工具

如果你看的是企业版,我们之前写过一篇 Gemini Enterprise 接 MCP 做品牌口碑监测,那里的结论是企业版的 MCP 连接同样只认 OAuth 或不鉴权,要带 API key 得在中间放一层 ADK agent。如果你想要的是「让 Gemini 定期整理一份热帖摘要」,那是 Gemini skills 的用法,见 Gemini skills 取代 Gems:每周热帖摘要实测。如果你要的是一份带引用的长报告,Deep Research API 也能挂 MCP,见 Gemini Deep Research API 接 MCP 拿社交数据。本文只回答一个问题:Connected Apps Platform 和开发者模式这两条面向 Gemini 应用的路,数据工具要准备什么、会卡在哪。

申请条件和审核:Connected Console 的九步

Connected Console 的操作文档把上架拆成 9 步,每一步要准备的东西不一样。我们没有 Console 账号,下面的表是照文档原文整理的「配置示例」,没有实际走过。

步骤做什么要准备的东西对数据工具的难点
1建应用、选类别类别选定后不能改「数据查询」不是现成类别,要从现有类别里挑最接近的
2填应用信息名称、30 词以内的一句话描述、512×512 图标(不超过 1 MB)、至少 3 项能力、至少 3 条示例提问示例提问至少 2 条要以 @应用名开头,至少 1 条自然提到应用名
3填 MCP 服务器地址、验证域名公网 HTTPS 地址;在 /.well-known/google-connected-apps 放验证文件,必须直接回 200、不能跳转验证文件要放在 MCP 服务器所在的域名上
4选鉴权方式不鉴权;或机器对机器(Client ID 加可选 Secret);或用户授权(预先登记、CIMD 或 DCR)没有 API key 请求头这个选项
5准备测试账号审核员用的种子账号,关掉两步验证数据服务通常要给审核员预充值
6同步工具快照发布的版本会冻结;文档建议每个版本用一个新地址工具描述改一个字也要重新同步
7设可用范围国家、语言、产品;每个工具单独开关;位置等上下文信号;用户确认写操作和扣费工具要设确认
8加测试者测试者必须是 @gmail.com 账号,生效要等最多 10 分钟团队成员要有个人 Gmail
9提交审核审核通过后状态变成可发布审核时间文档没写
Google 开发者文档截图:标题 Perform the steps in Google Connected Console 下的第 4 步鉴权一节,列出三种选项 No authentication、Machine-to-machine (OAuth Client Credentials) 需要 Client ID 和可选 Client Secret、User-delegated (Authorization Code) 经 Google Account Linking,下面写着推荐用 CIMD 或 DCR、Google 会先查 CIMD 再查 DCR。用户授权这一段用青绿色框标出,页面底部 Last updated 2026-10-28 UTC。
Console 第 4 步只有三种鉴权选项,没有填 API key 请求头的地方(截图取自 2026-11-11 读取的页面,只保留了这一节)。 Google Connected Apps 文档:Perform the steps in Google Connected Console

前置条件页还有几条容易漏掉的硬要求(前置条件,2026-10-30 更新)。一是每个连接应用只能有一个全球统一的 MCP 地址,不支持按数据中心分开的网址,按国家分的域名只能在只面向那个国家上线时用。二是如果你的服务器按来源 IP 做了限制,要放行 Google 列出的 7 个网段,并建议定期从 Google 公布的 用户触发型 agent IP 列表 刷新。三是 Console 的服务条款要由组织的所有者或管理员先接受,其他成员才能继续。四是要有公开的服务条款和隐私政策网址。MCP 请求流程页还写了一条:Google 发出的每个 JSON-RPC 请求都带 User-Agent: Google(MCP 请求流程,2026-10-27 更新),如果你的网关按 UA 拦爬虫,要先确认不会把它挡掉。

我们在 00:17(新加坡时间)用 User-Agent: Google 探了一遍 EveryInfra 的几个地址:/mcp 的握手和列工具都正常回 200,GET /mcp 回 405 并在 Allow 头里写明只收 POST,这正是 Google 服务器优化文档说「可以接受」的行为(服务器优化,2026-10-27 更新);/.well-known/google-connected-apps 回 404,因为我们没有申请,也就没有验证文件。下面是一条可以照抄的自查命令,属于配置示例,把域名换成你自己的:

bash
# 配置示例:上架前自查(把 api.example.com 换成你的 MCP 域名)
curl -s -o /dev/null -w "%{http_code} %{redirect_url}\n" \
  https://api.example.com/.well-known/google-connected-apps      # 要求:200,且没有跳转
curl -s -o /dev/null -w "%{http_code}\n" -X GET https://api.example.com/mcp   # 405 可以接受
curl -s https://api.example.com/mcp -A "Google" \
  -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"self-check","version":"0"}}}'

鉴权:Gemini 能用哪几种方式进你的服务器

鉴权是数据工具接 Gemini 最先撞上的墙。EveryInfra 的 /mcp 和大多数数据服务一样,只认请求头里的 API key:客户在控制台建一把 key,填进 Claude Desktop、Cursor 或自己程序的配置里,每次请求带上。可是 Google 给的三种鉴权方式里没有这一种。开发者模式的使用说明也是一样,认证一栏只有「动态客户端注册」和「手动客户端注册」两种 OAuth 选项(开发者模式使用说明)。所以对一个只认 API key 的数据 MCP,Gemini 应用这条路在第一步就走不通,这和服务器写得好不好无关。

那换成 OAuth 呢?EveryInfra 另有一组入口:/mcp/all 和按平台分的 /mcp/youtube 等,可以用 OAuth 登录。我们在同一分钟里按 MCP 授权规范的发现顺序走了一遍,看 Gemini 理论上会看到什么(MCP 授权规范 2025-11-25)。不带凭据请求 /mcp/all,00:17:48(新加坡时间)回 401,WWW-Authenticate 头里带着受保护资源元数据的地址和需要的权限范围,这符合 RFC 9728 第 5.1 节(RFC 9728):

http
HTTP/1.1 401 Unauthorized
www-authenticate: Bearer resource_metadata="https://api.everyinfra.com/.well-known/oauth-protected-resource/mcp/all",
  scope="data:call search:call captcha:call ai:call account:read offline_access"

GET https://api.everyinfra.com/.well-known/oauth-protected-resource/mcp/all   -> 200,authorization_servers: https://auth.everyinfra.com/oidc
GET https://auth.everyinfra.com/oidc/.well-known/oauth-authorization-server     -> 200
  code_challenge_methods_supported: ["S256"]          # PKCE,符合
  client_id_metadata_document_supported: true        # CIMD,符合
  registration_endpoint: (没有这个字段)

前三步都过了:401 带资源元数据地址、资源元数据回 200、授权服务器元数据(RFC 8414)回 200,PKCE 用 S256(RFC 7636)。卡在第四步「注册客户端」。Google 的 OAuth 实现指南把必需字段列成 authorization_endpoint、token_endpoint、response_types_supported(含 code)和 registration_endpoint,并且专门说了一句:即使服务器支持 Client ID 元数据文档(CIMD),Gemini 应用目前仍然要求一个独立的注册端点(OAuth 实现指南,2026-09-14 更新)。注册端点就是 RFC 7591 的动态客户端注册(RFC 7591)。EveryInfra 的授权服务器支持 CIMD(CIMD 草案),但没有开放动态注册,按这份指南,Gemini 应用会在这里停下。

这里有一个 Google 两份文档说法不一致的地方,值得写出来。更新日期更晚的 Console 操作步骤(2026-10-28)说,用户授权模式下推荐 CIMD 或 DCR,Google 会先查 CIMD、再查 DCR(Console 操作步骤)。而 9 月 14 日更新的 OAuth 指南说 Gemini 应用必须有注册端点。社区的实际经验偏向后者:10 月 19 日 r/mcp 一个讨论 Gemini 自定义连接器的帖子里,有人说 Gemini 还不支持 CIMD,只能手动填 Client ID(r/mcp 讨论)。我们的判断是:正式上架走 Console 时 CIMD 可能可用,开发者模式自测时按 OAuth 指南准备注册端点更稳。两条都没法在美国以外实测,要等美国的开发者验证。

就算元数据全齐了,还有一道门:登录本身对谁开放。EveryInfra 的 OAuth 登录目前只对几家已登记的 AI 客户端开放(按 CIMD 地址认),Google 的回调地址不在名单里。Google 的 OAuth 指南列出了 Gemini 用的回调地址形式,是 oauth-redirect.googleusercontent.com 下的几个路径,另有沙盒和测试用的变体,并要求账号关联保持长期有效、不要轮换刷新令牌(OAuth 实现指南、Google 账号关联)。所以对一个数据服务来说,「支持 OAuth」要做的事是一串:开动态注册或者确认 CIMD 被接受、把 Google 的回调地址加进允许名单、给机器调用和用户调用分开发令牌、刷新令牌不轮换。这不是一个周末能做完的活。

社区里卡在这一步的人不少。Google AI 开发者论坛 10 月 2 日一个帖子说,自定义应用的 OAuth 走到回调就停了,Gemini 从来没有去调令牌端点,同一个服务器在 Claude 和 ChatGPT 里都正常(Google AI 开发者论坛)。10 月 22 日 r/GeminiAI 有人问自定义连接器的回调地址到底填什么(r/GeminiAI)。另一个 r/GeminiAI 的帖子里,有人反映服务器用 2026-07-28 协议版本握手时,Gemini 报「这个网址看起来不是有效的 MCP 服务器」(r/GeminiAI)。最后这条和 Google 的文档对得上:服务器优化页写明支持的 MCP 版本到 2025-11-25 为止(服务器优化)。我们在 00:27(新加坡时间)主动要 2026-07-28 版本,EveryInfra 回的是 2025-11-25,这种「客户端要新版本、服务器回自己支持的版本」的协商是 MCP 规范允许的(MCP 规范 2026-07-28),所以版本这一条不挡路。

我们按标题把 11 月 11 日 reddit/search 拿到的 14 条帖子人工归了一下类,8 条在讲把 MCP 接进 Gemini,话题集中在自定义连接器的 OAuth 走不通、Gemini 网页版和 Antigravity 怎么接、同一个服务器怎么同时给 Claude、ChatGPT 和 Gemini 用。10 月 17 日 r/modelcontextprotocol 一位做股票数据 MCP 的开发者写了经验:给 Claude 和 ChatGPT 用 OAuth 加动态客户端注册,给其他客户端用 Bearer 请求头,接 Gemini 时走的是 Gemini CLI 的扩展安装,而不是 Gemini 应用(r/modelcontextprotocol)。

工具描述:对照 Google 的 12 条要求

过了鉴权,审核员和 Gemini 模型看到的就是你的工具清单。Google 在质量页、服务器优化页和政策页里对工具写了很多具体要求,我们挑出能直接拿服务器返回核对的 12 条,对照 EveryInfra 三个入口的真实 tools/list 和 initialize 返回,逐条判定。判定是作者一个人做的,判据和证据文件都写在数据文件里:2 表示符合,1 表示部分符合,0 表示不符合。

热力表,12 行是 Google 文档里的要求,3 列是 EveryInfra 的 /mcp、/mcp/youtube、/mcp/all。符合的格子是青绿色,部分符合是浅色,不符合是灰色。传输协议、握手版本、server instructions、工具都有 annotations、结果是 TextContent 里的 JSON 这五行三列都符合;只读工具不标 destructive、不用通用分发工具、固定取值写 enum、限速用 JSON-RPC 错误码这四行三列都不符合;时间字段格式三列都是部分符合;工具数 /mcp/all 部分符合;鉴权方式 /mcp/all 部分符合、另两列不符合。标题写着 /mcp 符合 6 条,/mcp/all 符合 5 条。
Google 的要求出处`/mcp``/mcp/youtube``/mcp/all`证据
Streamable HTTP,一个网址收 POST服务器优化符合符合符合三个入口 POST 都回 200,GET 回 405
握手版本不高于 2025-11-25服务器优化符合符合符合都回 2025-11-25
initialize 带 server instructions排错页符合符合符合3,993 / 2,092 / 3,973 个字符
每个工具都写 annotations服务器优化符合符合符合12/12、3/3
只读查数工具不标 destructive服务器优化、讲解视频不符合不符合不符合everyinfra_call_api 标 destructiveHint=true
不用通用分发和动态发现工具政策「集成完整性」不符合不符合不符合一个工具按 platform 和 action 分发
固定取值的参数写 enum服务器优化不符合不符合不符合platform、action 是自由字符串
工具数不到「几十个」服务器优化符合符合部分符合12 / 3 / 24 个
结果是 TextContent 里的 JSON服务器优化符合符合符合成功结果都在 content[0].text
限速等终止错误用 JSON-RPC 错误码服务器优化不符合不符合不符合限速回 200 加 isError
时间字段写明格式服务器优化部分符合部分符合部分符合搜索是 ISO 时间,评论是「11 days ago」
鉴权方式在 Google 的选项里Console 第 4 步不符合不符合部分符合见上一节

做得对的几条先说。Google 的排错页把「initialize 里没有 instructions」列为会出警告的问题(排错页,2026-10-27 更新),服务器优化页建议用 instructions 告诉模型什么时候用哪个工具、怎么组合。EveryInfra 的 /mcp 在握手时给了 3,993 个字符的说明,包括「需求不清时先问平台、关键词、数量、时效和预算,先小量跑一次再放大」这类引导,按 4 个字符约 1 个 token 估算约 998 个 token(Gemini API token 说明)。结果放在 TextContent 的 JSON 里,也正是 Google 现在要的格式:服务器优化页明说 structuredContent 暂不支持,要把 JSON 序列化进文本内容。

不符合的几条里,有两条是写法问题,改起来不难。一是 enum:everyinfra_call_api 的 platform 和 action 是自由字符串,Google 建议固定取值都写成 enum,让模型少猜。EveryInfra 的做法是猜错了再纠正:00:24(新加坡时间)我们故意把 search 拼成 serch,返回是 isError,错误码 unknown_capability,带「你是不是想要 search」和可用动作列表,并写明没有扣费。这对模型自我修正很友好,但多了一轮往返。按平台分的入口 /mcp/youtube 只有一个平台,action 只有 8 个取值,完全可以写成 enum。二是时间格式:youtube/search 返回 ISO 时间,youtube/comments 返回「11 days ago」这种相对时间,模型要换算才能比较,Google 建议在字段说明里写清格式。

另外两条是设计问题,改动要大得多,下一节单独讲。

政策:通用分发工具和确认弹窗

Connected Apps 政策 11 月 2 日的版本里有一节「集成完整性」,大意是:上架的应用不能暴露动态发现函数(比如 list_tools、get_schema),也不能暴露通用的运行时分发器(比如 execute_command、invoke_dynamic_tool);工具定义要在注册时就固定下来,审核看到什么,上线就是什么(Connected Apps 政策,2026-11-02 更新)。同一份政策还要求数据最少化,不能索要对话历史。

Google 开发者文档截图:Connected Apps 政策页的 Integration integrity 一节,列出几条要求,其中 Dynamic tool schemas 一条用青绿色框标出,内容是不能暴露 list_tools、get_schema 这类动态发现函数,也不能暴露 execute_command、invoke_dynamic_tool 这类通用运行时分发器。页面底部 Last updated 2026-11-02 UTC。
政策页「集成完整性」一节:通用分发和动态发现工具都不允许(截图取自 2026-11-11 读取的页面,只保留了这一节)。 Google Connected Apps 文档:Connected apps policy

这条对数据 MCP 的影响很直接。EveryInfra 有 106 个平台、573 项能力(00:17 新加坡时间读取的目录,其中 538 项可用),如果每项能力做一个工具,工具清单会有几百个,Google 服务器优化页明说「几十个工具」就会被标出来;所以 EveryInfra 和大多数多平台数据服务一样,用一个 everyinfra_call_api 按 platform 加 action 分发,再用一个免费的 everyinfra_list_capabilities 让模型先查能力。下面是 00:17 拿到的 tools/list 里这个工具的定义(节选):

json
{
  "name": "everyinfra_call_api",
  "title": "Call a data capability",
  "annotations": { "readOnlyHint": false, "openWorldHint": true, "destructiveHint": true },
  "description": "Call any EveryInfra data capability and get structured JSON. ... Check platform/action, required params and max_limit or page_size with everyinfra_list_capabilities first. ...",
  "inputSchema": {
    "type": "object",
    "required": ["platform", "action"],
    "properties": {
      "platform": { "type": "string", "description": "e.g. xiaohongshu / twitter / tiktok / web" },
      "action":   { "type": "string", "description": "e.g. search / profile / user_posts / post" },
      "params":   { "type": "object" },
      "mode":     { "type": "string", "enum": ["sync", "async"], "default": "sync" }
    }
  }
}

在 Claude、ChatGPT 和 Cursor 里,这种写法工作得很好:模型先查目录,再按目录里的参数调用。但按 Google 的政策,它同时踩了「通用分发」和「动态发现」两条。要上架,就得把工具拆成固定的、按任务命名的几个,比如 search_youtube_videos、search_reddit_posts、get_reddit_comments,每个工具的参数写死、取值写 enum。Google 服务器优化页给的命名建议也是「动词_名词」、一个工具做一件事、参数扁平。按平台分的入口 /mcp/youtube 是往这个方向走的一步:它只有 3 个工具,清单只有 4,020 字节,但里面仍然是 call_api 加 list_capabilities 的组合,没有拆成按任务命名。

第二个设计问题是确认弹窗。Google 的服务器优化页写明,同时标了 destructiveHint 和 openWorldHint 的工具会触发用户确认;没写 readOnlyHint 的工具一律当成有破坏性。讲解视频第 7 分 52 秒说得更直白:确认的强度跟风险走,不会每次调工具都弹窗,查东西这种操作应该没有阻力(讲解视频)。Gemini 帮助中心也说,写操作 Gemini 会要求用户手动确认(Gemini 帮助:自定义应用)。EveryInfra 的 12 个工具里有 7 个只读(列能力、查任务、查账户、查工单、取充值链接、列验证码类型、列请求记录),但真正查数据的 everyinfra_call_api 标的是 destructiveHint=true。原因是它会从钱包里扣钱,按 MCP 规范,改变外部状态就该这样标(MCP 规范:工具)。结果是:在 Gemini 里,每查一次数据都可能弹一次确认。

这是一个真实的两难。标成只读,用户体验顺,但对一个按次扣费的工具不诚实;标成会改变状态,诚实,但每次弹窗。Google 视频里的原话是要「诚实地标」。我们的建议是把扣钱这件事从工具语义里拿出来:用户在 OAuth 授权时就同意一个每月预算,查数工具在预算内按只读标,超预算时返回错误而不是继续扣,这样标只读就是诚实的。这需要服务端有按授权会话的预算控制,EveryInfra 目前没有。

一次真实往返:tools/list 和 tools/call 返回了什么

下面是 Gemini 理论上会发给 MCP 服务器的那类请求,我们用 EveryInfra 的 API key 在本机发出,请求头里同样带 User-Agent: Google。第一次数据调用在 00:18:30(新加坡时间),查 YouTube 上关于 Gemini Connected Apps 的视频:

bash
curl -s https://api.everyinfra.com/mcp -A "Google" \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc":"2.0","id":10,"method":"tools/call","params":{"name":"everyinfra_call_api",
       "arguments":{"platform":"youtube","action":"search","params":{"keyword":"Gemini Connected Apps Platform","sort":"relevance","limit":20}}}}'
# 返回(节选):HTTP 200,8.36 秒,41,840 字节
# {"jsonrpc":"2.0","id":10,"result":{"content":[{"type":"text","text":"{\"platform\":\"youtube\",\"action\":\"search\",
#   \"results\":[{...}, {...}, {\"title\":\"Extend your app to Gemini and Search with the Connected Apps Platform\",
#   \"posted_at\":\"2026-10-29T19:55:04+00:00\",\"view_count\":1265, ...}, ... 共 20 条],
#   \"billing\":{\"charged\":true,\"charged_usd\":0.000556, ...}}"}]}}
代码卡片截图:上半部分是发往 https://api.everyinfra.com/mcp 的 tools/call 请求,工具名 everyinfra_call_api,参数 platform youtube、action search、keyword Gemini Connected Apps Platform、limit 20,标注 2026-11-11 00:18:30 新加坡时间、HTTP 200、8.36 秒、41,840 字节;中间是 JSON-RPC 外壳,结果在 content[0].text 里;下半部分是解析后的几条视频标题、发布时间和播放量(个人创作者名已隐去),以及 billing 里 charged_usd 0.000556,用青绿框标出。
一次真实的 MCP 工具调用:结果是 TextContent 里的 JSON,扣费信息也在同一段文本里(个人创作者名和账户余额已隐去)。 EveryInfra MCP 接口 2026-11-11 原始返回

返回的结构正好是 Google 要的:结果是 content[0].text 里的一段 JSON,没有 structuredContent。每条视频带 22 个字段,包括标题、链接、频道、发布时间、播放量、时长、缩略图和描述片段,和 YouTube 视频搜索接口页 列的返回字段一一对应。全部 8 次数据调用列在下面,都发往同一个地址,除了一次字幕走 REST 接口做对照:

时间(新加坡时间)经能力结果耗时扣费
00:18:30MCPyoutube/search20 条视频8.36 秒$0.000556
00:18:52MCPreddit/search14 条帖子5.14 秒$0.000556
00:19:08MCPreddit/comments(r/mcp 帖)5 条评论11.60 秒$0.000556
00:19:20MCPreddit/comments(r/GoogleGemini 帖)4 条评论9.68 秒$0.000556
00:19:30MCPreddit/comments(没有评论的帖子)0 条55.66 秒$0
00:22:38RESTyoutube/transcript(讲解视频)454 段字幕6.09 秒$0.000556
00:24:28MCPyoutube/comments(讲解视频)2 条评论13.66 秒$0.000556
00:35:03MCPreddit/search 按最新排序1 条帖子4.30 秒$0.000556
横向条形图,2026 年 11 月 11 日 8 次数据调用的耗时(秒):youtube/search 8.4;reddit/search 5.1;reddit/comments 第一次 11.6、第二次 9.7、第三次 55.7;youtube/transcript 6.1;youtube/comments 13.7;reddit/search 第二次 4.3。第三次 reddit/comments 那根是青绿色,副标题说明它是一条没有评论的帖子,等了 55.7 秒、0 条、没有扣费,其余 7 次各扣 $0.000556。

耗时中位数 9.0 秒。最慢的一次值得注意:一条没有评论的 Reddit 帖子,等了 55.7 秒才返回 0 条,没有扣费。对 Gemini 来说这意味着两件事。一是 MCP 客户端的超时要够长,Gemini CLI 默认 10 分钟没问题(Gemini CLI MCP 配置),但 Gemini 应用的超时文档没有写,我们没法测。二是空结果不扣费这条规则,让模型「多试一个帖子」的代价只是时间。按次计费的数据工具,关键词和排序方式要先小量试。

出错时的返回也要看,因为 Google 对错误有自己的要求。00:21:27(新加坡时间)我们撞上了这把 key 每分钟 10 次的限速:同一秒里,REST 接口回 HTTP 429,MCP 接口回 HTTP 200 加 isError: true,错误码 rate_limited,retry_after 33 秒,写明没有扣费。00:24:42 不带 key 调工具,同样是 HTTP 200 加 isError,错误码 unauthorized。MCP 规范允许把工具执行错误放进结果里让模型看到并自我修正;但 Google 的服务器优化页对「终止性」错误另有要求:限速、要重新授权这类模型自己修不好的错误,应该用 JSON-RPC 错误码返回,限速用 -32300(USER_RATE_LIMITED)。EveryInfra 现在的做法对 Claude 和 Cursor 很友好,模型会照 retry_after 等一会儿再试;在 Gemini 里,按文档它会被当成一次普通的工具失败。

返回体积:模型读的比数据贵

这一节是本文最出乎意料的发现。按次计费的数据工具,开发者通常只盯着数据费;但在 Gemini 这类场景里,返回的 JSON 会整个塞进模型的上下文,模型读它也要钱。

分组条形图,2026 年 11 月 11 日两次真实搜索返回的字节数:youtube/search 20 条视频原样返回 39,732 字节,只留 6 个字段 5,062 字节;reddit/search 14 条帖子原样 25,212 字节,只留 6 个字段 4,274 字节。只留 6 个字段的条是青绿色,标题说明 youtube/search 降到原来的 12.7%。

youtube/search 那次返回的文本有 39,732 字节,其中 20 条结果占 38,825 字节,每条 22 个字段。真正回答「最近有哪些讲 Connected Apps 的视频」需要的只有 6 个:标题、链接、频道、发布时间、播放量、评论数。只留这 6 个字段,体积降到 5,062 字节,是原来的 12.7%。reddit/search 那次 14 条帖子 25,212 字节,留标题、链接、社区、时间、点赞和评论数,降到 4,274 字节,是 17.0%。Google 服务器优化页对这个问题也有明确建议:先在服务器端汇总,不要把原始数据整个倒给模型。

横向条形图,按 2026 年 11 月 11 日单价估算的每次调用费用(美元):youtube/search 数据费 0.000556;模型读完整返回约 0.00745;模型只读 6 个字段约 0.00095;reddit/search 数据费 0.000556;模型读完整返回约 0.004727;模型只读 6 个字段约 0.000801。数据费的条是青绿色,副标题说明按 4 个字符约 1 个 token、Gemini 3.8 Flash 输入每百万 token $0.75 估算。

换成钱更直观。按 Gemini API 文档「一个 token 约 4 个字符」的估算(token 说明),youtube/search 原样返回约 9,933 个 token;按 Gemini 3.8 Flash 付费档 2026 年 12 月 31 日前每百万输入 token $0.75 的价格(Gemini API 定价),模型读一遍约 $0.00745,是这次数据费 $0.000556 的 13.4 倍。只留 6 个字段后约 1,266 个 token、$0.00095,是数据费的 1.7 倍。reddit/search 从 8.5 倍降到 1.4 倍。这几个倍数都是对 11 月 11 日那次实际扣费算的;11 月 12 日重读目录,youtube/search 已调成每次 $0.000778、reddit/search 调成 $0.000792,按新价算,youtube/search 是 9.6 倍降到 1.2 倍,reddit/search 是 6.0 倍降到 1.0 倍。注意这只是模型读一遍工具结果的输入费,没算提示词、对话历史和输出;2027 年 1 月 1 日起 Gemini 3.8 Flash 输入价涨到每百万 $1.50,倍数还要翻一番。

能力结果条数原样字节原样估算 token模型输入费(估算)只留 6 字段 token只留 6 字段输入费数据费
youtube/search2039,7329,933$0.00745(13.4 倍)1,266$0.00095(1.7 倍)$0.000556
reddit/search1425,2126,303$0.004727(8.5 倍)1,068$0.000801(1.4 倍)$0.000556

在 Gemini 应用里,模型费用是 Google 付的,用户不直接看到;但 Google 服务器优化页把「返回太大」列为影响质量的问题,返回越大,模型越容易在长上下文里丢细节、答得越慢,审核和排序都可能吃亏。在 Gemini API 里自己接 MCP,这笔钱就是你自己付。所以无论走哪条路,数据工具都该给一个「只要这几个字段」的参数,或者干脆提供按任务裁好的工具。

工具清单本身也占上下文

模型在调用任何工具之前,先要读完整个工具清单。这部分每轮对话都要付。

横向条形图,2026 年 11 月 11 日三个入口 tools/list 返回的字节数:/mcp/youtube 3 个工具 4,020 字节;/mcp 12 个工具 16,250 字节;/mcp/all 用 key 连时 24 个工具 32,921 字节。/mcp/youtube 那根是青绿色,副标题说明按 4 个字符约 1 个 token 估算分别约 1,005、4,063、8,230 个 token。

00:17 和 00:27(新加坡时间)三次 tools/list 的结果:通用入口 /mcp 12 个工具、16,250 字节,约 4,063 个 token;按平台分的 /mcp/youtube 3 个工具、4,020 字节,约 1,005 个 token;/mcp/all 用 key 连时 24 个工具、32,921 字节,约 8,230 个 token。最长的单个工具定义是建工单的 2,958 字节,其次是搜索的 2,640 字节。对一个只想让 Gemini 查 YouTube 的用户来说,连 /mcp/youtube 比连 /mcp 每轮少读约 3,000 个 token。Gemini API 的 allowed_tools 和 Gemini CLI 的 includeTools 能在客户端过滤工具,但工具清单通常还是会先完整读一次;在服务器端按场景拆入口,效果更确定。这和上一节的结论是同一个方向:给 Gemini 的工具,越窄越好。

数据工具现在能做的:用 Gemini API 和 Gemini CLI 接

如果你的目标是让自己的团队或客户的 agent 在 Gemini 模型上用你的数据,而不是让普通用户在 Gemini 应用里发现你,那今天就能接,不需要审核,也不受美国限制。下面两段都是配置示例,按 Google 文档的字段写,我们没有用 Gemini API key 实际跑过。

Gemini API 的 Interactions 接口支持远程 MCP。文档写明只支持 Streamable HTTP,服务器名不能带短横线,headers 会随每个请求发给 MCP 服务器,allowed_tools 限定能调哪些工具(Gemini API 函数调用文档)。把只读的列能力工具和查数工具放进白名单,其他工具(建工单、取充值链接等)不让模型碰:

python
# 配置示例:Gemini API Interactions 接 EveryInfra 远程 MCP(未实际运行)
import os
from google import genai

client = genai.Client()
interaction = client.interactions.create(
    model="gemini-3.8-flash",
    input="Find this week's Reddit posts about Gemini custom MCP apps and list the main problems people report.",
    tools=[{
        "type": "mcp_server",
        "name": "everyinfra_youtube_reddit",          # 文档要求不用短横线
        "url": "https://api.everyinfra.com/mcp",
        "headers": {"Authorization": "Bearer " + os.environ["EVERYINFRA_API_KEY"]},
        "allowed_tools": ["everyinfra_list_capabilities", "everyinfra_call_api", "everyinfra_get_job"],
    }],
)

Gemini CLI 在 settings.json 的 mcpServers 里配置,httpUrl 走 Streamable HTTP,headers 可以带请求头,includeTools 是工具白名单,timeout 默认 600,000 毫秒,trust 设成 true 会跳过所有确认,所以对会扣费的工具建议保持 false(Gemini CLI MCP 配置)。同一份文档提醒不要把密钥硬写进配置文件;下面用占位符表示,实际使用时按文档的环境变量写法替换:

json
{
  "mcpServers": {
    "everyinfraYoutube": {
      "httpUrl": "https://api.everyinfra.com/mcp/youtube",
      "headers": { "Authorization": "Bearer <你的 EveryInfra API key>" },
      "includeTools": ["everyinfra_list_capabilities", "everyinfra_call_api"],
      "timeout": 120000,
      "trust": false
    }
  }
}

这两条路有两个共同的好处。一是 API key 能直接用,不需要为 Google 单独做 OAuth。二是工具白名单在你手里,可以只放查数工具,确认弹窗也由你的程序决定。代价是:没有 Gemini 应用里的分发,普通用户不会在 @ 列表里看到你。数据工具的使用者大多是开发者、分析师和自己搭 agent 的团队,对他们来说这条路已经够用。这里各平台的参数和返回字段可以在 YouTube 数据接口 和 Reddit 数据接口 两页查到,评论和字幕见 Reddit 评论接口页、YouTube 评论接口页 和 YouTube 字幕接口页。

想上架 Connected Apps 要先改什么

如果你的服务本来就有用户账号,用户在你这里有自己的数据(订单、项目、收藏、监测任务),上架 Connected Apps 是值得的。Google 的质量页把「用户登录后体验更好」列为好应用的第一个特征,同时说明连接应用不是数据源的替代品,也不是给「通用的、无需登录就能拿到的信息」用的(质量页,2026-10-28 更新)。这一句对公开数据工具影响很大:如果你的工具只是「搜 YouTube 上的公开视频」,审核员很可能会问用户为什么要登录你的应用来做这件事。反过来,如果工具做的是「看我自己设的品牌监测任务这周抓到了什么」「把我收藏的竞品帖子按情绪分组」,就是用户自己的数据,正好对口。

政策和平台条款也要提前对照。Connected Apps 政策不允许转包或重新包装不属于你的第三方 API;各平台自己的条款,比如 YouTube API 服务的开发者政策(YouTube 开发者政策)和 Reddit 的数据 API 条款(Reddit 数据 API 条款),对数据怎么展示、怎么存储都有自己的要求。上架前要能讲清楚你的工具在原始数据之上做了什么:汇总、去重、打分、长期存储、按用户的任务组织。只有这部分是你自己的。

按本文前面的对照,一个数据 MCP 要上架,最少要改这几件事:开 OAuth 的动态客户端注册,并把 Google 的回调地址加进允许名单;把通用分发工具拆成按任务命名、参数写死的几个工具,取值写 enum;查数工具按只读标,扣费由授权时的预算控制;限速和要重新授权改用 JSON-RPC 错误码;返回只给模型需要的字段;时间统一成 ISO 格式;在 /.well-known/google-connected-apps 放验证文件。Google 的界面指南还要求 MCP Apps 的界面符合 WCAG AA 对比度、最小字号 13pt(界面指南,2026-10-28 更新),如果你打算做交互卡片,也要提前按这个做。开发阶段可以先用 MCP Inspector 本地调试(MCP Inspector),再按讲解视频的做法部署到 Cloud Run 这类公网 HTTPS 服务上测(Cloud Run 部署文档)。

这几件事里,工具拆分最容易低估,拿 /mcp/youtube 举个例子。它现在有 3 个工具:免费的 everyinfra_list_capabilities、只读的 everyinfra_get_job,以及真正查数的 everyinfra_call_api,后者的 platform 永远是 youtube,action 和 params 都是自由填写。按 Google 的写法,应该把常用的几项能力各自做成一个工具:search_youtube_videos 只收关键词、排序和条数,排序写成 enum;get_youtube_comments 只收视频链接和条数;get_youtube_transcript 只收视频链接。每个工具的说明里写清楚返回哪些字段、时间是什么格式、什么情况会回空结果。这样做之后,list_capabilities 这个「先查目录」的工具就可以不放进上架版本,模型也不用先读一遍目录再决定怎么调。代价是能力一多,工具数很快会逼近 Google 说的「几十个」,所以上架版本只能挑最常用的几项,其余能力留在 Claude、Cursor 这些客户端用的通用入口里。

错误码的改法相对简单。现在限速时,MCP 接口回 HTTP 200,结果里 isError: true,正文写着错误码、要等多少秒、没有扣费;Google 要的是把这类模型自己修不好的错误放到 JSON-RPC 的 error 对象里,code 写 -32300,等待时间和是否扣费可以放进 error.data。参数写错、能力名拼错这类模型能自己改的错误,继续放在结果里返回更好,因为模型能读到「你是不是想要 search」这类提示,下一次就调对了。两类错误分开处理,对 Claude、Cursor 和 Gemini 都不会变差。

预算控制是改动最大的一项,也最值得先想清楚。用户在 OAuth 授权页上就看到「这个应用每月最多花多少」,同意后授权会话带着这个上限;查数工具每次调用前先核剩余额度,够就照常查、照常扣,不够就直接返回终止性错误,并在错误说明里告诉用户去哪里调高上限。这样查数工具在额度内的行为就是「读数据、不改别的东西」,按只读标才说得过去,Gemini 也就不会每次都弹确认。

Google 的垂直场景页列了一批它想要的应用类型,比如音乐、内容创作、生鲜(配合通用电商协议)、房产等,每一类都写了期望的用户旅程(垂直场景,2026-10-28 更新)。数据分析和社媒监测不在现有列表里。这不等于不能上,但意味着类别要从现有的里面选,审核员对「这类应用该做什么」没有现成的参照。

每月花多少钱:一个小例子

假设一个团队用 Gemini API 加 EveryInfra 远程 MCP,每天让 agent 做一份「Gemini 开发者动态」:搜一次 YouTube、搜一次 Reddit、读 3 个热帖的评论、读 1 个视频的评论,每天 6 次数据调用。按 2026 年 11 月 12 日重读的目录价格,youtube/search 每次 $0.000778,reddit/search 和 reddit/comments 每次 $0.000792,youtube/comments 每次 $0.000556,一个月 30 天 180 次,数据费约 $0.1351(11 月 11 日实测时这 4 种能力都是每次 $0.000556,同样用量是 $0.1001)。价格以 定价页 为准。

项目每天每月(30 天)说明
EveryInfra 数据费$0.000778 + 4 × $0.000792 + $0.000556约 $0.1351youtube/search、reddit/search、reddit/comments 3 次、youtube/comments
模型读两次搜索的原样返回(估算)$0.00745 + $0.004727约 $0.3653Gemini 3.8 Flash 输入价,只算工具结果
模型读两次搜索的 6 字段返回(估算)$0.00095 + $0.000801约 $0.0525同上
工具清单(/mcp,估算)约 4,063 token × 每轮按轮数算换成 /mcp/youtube 每轮约 1,005 token

这张表说明的是比例,不是总账:只看两次搜索,模型读原样返回一个月约 $0.3653,是全月数据费的 2.7 倍;裁成 6 个字段后约 $0.0525,比数据费还低。空结果不扣费这一条在实际运行中也有用:本文 8 次调用里有 1 次是空结果,没有扣费。11 月 11 日实测这 8 次数据调用合计扣费 $0.003892。

做不了或要注意的地方

第一,Gemini 应用里的超时、确认弹窗的具体样子、审核要多久,文档都没写。讲解视频说确认会按风险调整,但没有给出判断规则。第二,Google 的回调地址、IP 网段、支持的 MCP 版本都可能在预览期变化,上架前要按页面底部的更新日期重新核对。第三,token 数是按 4 个字符约 1 个 token 估的,实际分词会有出入,模型费用只看比例。第四,本文 EveryInfra 一侧的耗时和返回体积都是 11 月 11 日那一轮真调的结果,价格按 11 月 12 日重读的目录写;接入前按接口页和目录重新核对一遍。

常见问题

Gemini Connected Apps Platform 要钱吗?

Google 的博客、产品主页和 Console 文档都没有提到注册或上架费用,也没有说按调用收费(产品主页)。你自己的服务器、托管和数据成本照常由你承担。如果改走 Gemini API 自己接 MCP,模型调用按 Gemini API 定价 付费。

不在美国能用 Connected Apps Platform 吗?

目前不能。讲解视频说预览只对美国开发者开放;用户侧的自定义应用要求在美国,搜索 AI 模式里的连接应用也只在美国英文环境(Gemini 帮助、搜索帮助)。不在美国的团队可以先走 Gemini API 或 Gemini CLI。

有没有 Gemini Connected Apps Platform API?

没有单独的一套 API。Connected Apps Platform 的接口就是 MCP:你提供一个远程 MCP 服务器,Gemini 和搜索作为 MCP 客户端来调你(MCP 开发者指南)。注册、测试、提交在 Connected Console 网页里做,文档没有提到管理用的 API。想在程序里用 Gemini 调 MCP,是 Gemini API 的 mcp_server 工具,属于另一条路。

我的 MCP 服务器在 Claude 里能用,为什么 Gemini 连不上?

最常见的三个原因:协议版本高于 2025-11-25;OAuth 元数据缺 registration_endpoint,或者没有把 Google 的回调地址加进允许名单;服务器只认 API key 请求头。可以先对照 Google 的排错页,它列了 405、缺少受保护资源元数据、缺授权服务器元数据、注册失败等常见报错(排错页)。

只认 API key 的服务器,能先放进开发者模式里试吗?

不能直接试。开发者模式的认证一栏只有不鉴权和两种 OAuth 注册方式,没有地方填请求头(开发者模式使用说明)。如果只是想看 Gemini 怎么读你的工具清单、会不会弹确认,可以单独起一个不鉴权的测试地址,里面只放不扣费、不碰用户数据的工具,比如列能力和查文档;测完就关掉,不要让这个地址长期在公网上。真正要扣费的查数工具,还是要等 OAuth 和预算控制做好以后,再放进开发者模式里测。开发者模式只有建应用的那个账号能用,而且账号要满足美国、18 岁以上、个人账号这些条件,不在美国的团队目前只能在 Gemini API 和 Gemini CLI 里先把工具本身调顺。

上手:先在自己的程序里跑通

  1. 在 EveryInfra 控制台建一把 API key,按 快速开始 用 curl 发一次 tools/list 和一次 tools/call,确认返回里有 billing。各客户端的远程 MCP 配置见 MCP 服务器页。
  2. 选一个窄的入口,比如只用 YouTube 就连 /mcp/youtube,工具清单从约 4,063 个 token 降到约 1,005 个。
  3. 在 Gemini API 的 mcp_server 或 Gemini CLI 的 mcpServers 里配置,用 allowed_tools 或 includeTools 只放查数工具。
  4. 先用一个关键词、小的 limit 跑一次,看返回大小,在提示词里要求模型只读需要的字段。
  5. 如果你有自己的用户账号体系、打算上架 Connected Apps,按上文「要先改什么」一节逐条改,再在开发者模式里自测。

YouTube 和 Reddit 的搜索参数见 YouTube 视频搜索接口页 和 Reddit 帖子搜索接口页。在其他云平台上做同样的事,可以对照 Bedrock AgentCore Gateway 接 MCP 的返回格式与账单 和 用 Airbyte MCP 搭社交数据 agent。

参考资料

Google 一侧的页面都在 2026 年 11 月 11 日(新加坡时间)读取;括号里是页面自己写的发布或更新日期,没有写的不标。EveryInfra 一侧的数字来自同一天的真调原始返回。

  1. Google 博客:Connected Apps Platform: bring your apps to Gemini and Search(2026-10-28) <https://blog.google/innovation-and-ai/technology/developers-tools/connected-apps-one-place>
  2. Google for Developers:Connected Apps Platform 产品主页 <https://developers.google.com/connected-apps>
  3. Google for Developers:Connected Apps Platform MCP server developer guide(2026-10-27 更新) <https://developers.google.com/connected-apps/mcp>
  4. Google for Developers:MCP request flow(2026-10-27 更新) <https://developers.google.com/connected-apps/mcp/mcp-flow>
  5. Google for Developers:Quality guidelines for connected apps(2026-10-28 更新) <https://developers.google.com/connected-apps/mcp/quality>
  6. Google for Developers:MCP server optimization(2026-10-27 更新) <https://developers.google.com/connected-apps/mcp/server-optimization>
  7. Google for Developers:MCP Apps UI guidelines(2026-10-28 更新) <https://developers.google.com/connected-apps/mcp/guidelines>
  8. Google for Developers:Vertical user journeys(2026-10-28 更新) <https://developers.google.com/connected-apps/mcp/vertical-journeys>
  9. Google for Developers:OAuth 2.1 implementation guide(2026-09-14 更新) <https://developers.google.com/connected-apps/mcp/oauth>
  10. Google for Developers:Developer Mode(2026-10-28 更新) <https://developers.google.com/connected-apps/mcp/dev-mode>
  11. Google for Developers:Use Developer Mode(2026-10-28 更新) <https://developers.google.com/connected-apps/mcp/dev-mode/usage>
  12. Google for Developers:Google Connected Console 概览 <https://developers.google.com/connected-apps/gpc>
  13. Google for Developers:Prerequisites for using connected apps(2026-10-30 更新) <https://developers.google.com/connected-apps/gpc/prerequisites>
  14. Google for Developers:Perform the steps in Google Connected Console(2026-10-28 更新) <https://developers.google.com/connected-apps/gpc/perform-the-steps>
  15. Google for Developers:Troubleshooting(2026-10-27 更新) <https://developers.google.com/connected-apps/gpc/troubleshooting>
  16. Google for Developers:Connected apps policy(2026-11-02 更新) <https://developers.google.com/connected-apps/connected-apps-policy>
  17. Gemini 帮助中心:Connect custom apps to Gemini <https://support.google.com/gemini/answer/17209137?hl=en>
  18. Gemini 帮助中心:Use & manage Connected Apps in Gemini <https://support.google.com/gemini/answer/13695044?hl=en>
  19. Gemini 帮助中心:Check the availability & requirements of Connected Apps <https://support.google.com/gemini/table/17434654>
  20. Google 搜索帮助:Use & manage Connected Apps in Search <https://support.google.com/websearch/answer/17265703>
  21. Gemini 应用发布说明(2026.10.13 条目) <https://gemini.google/release-notes/>
  22. Google 博客:New connected apps roll out to Gemini(2026-09-23) <https://blog.google/innovation-and-ai/products/gemini-app/new-connected-apps-gemini>
  23. Android Developers 频道:Extend your app to Gemini and Search with the Connected Apps Platform(2026-10-29) <https://www.youtube.com/watch?v=-4G-4w9FKDw>
  24. 9to5Google:Google adding more Connected Apps to Gemini and Search(2026-10-28) <https://9to5google.com/2026/10/28/gemini-google-connected-apps-platform>
  25. Model Context Protocol:Specification 2025-11-25 <https://modelcontextprotocol.io/specification/2025-11-25>
  26. Model Context Protocol:Authorization(2025-11-25) <https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization>
  27. Model Context Protocol:Tools(2025-11-25) <https://modelcontextprotocol.io/specification/2025-11-25/server/tools>
  28. Model Context Protocol:Specification 2026-07-28 <https://modelcontextprotocol.io/specification/2026-07-28>
  29. IETF RFC 9728:OAuth 2.0 Protected Resource Metadata <https://www.rfc-editor.org/rfc/rfc9728>
  30. IETF RFC 8414:OAuth 2.0 Authorization Server Metadata <https://www.rfc-editor.org/rfc/rfc8414>
  31. IETF RFC 7591:OAuth 2.0 Dynamic Client Registration Protocol <https://www.rfc-editor.org/rfc/rfc7591>
  32. IETF RFC 7636:Proof Key for Code Exchange <https://www.rfc-editor.org/rfc/rfc7636>
  33. IETF 草案:OAuth Client ID Metadata Document <https://datatracker.ietf.org/doc/draft-ietf-oauth-client-id-metadata-document/>
  34. GitHub:modelcontextprotocol/inspector <https://github.com/modelcontextprotocol/inspector>
  35. Gemini API 文档:Function calling(Remote MCP 一节) <https://ai.google.dev/gemini-api/docs/function-calling>
  36. Gemini API 发布说明(2026-11-10 条目) <https://ai.google.dev/gemini-api/docs/changelog>
  37. Gemini API 定价 <https://ai.google.dev/gemini-api/docs/pricing>
  38. Gemini API 文档:Understand and count tokens <https://ai.google.dev/gemini-api/docs/tokens>
  39. Gemini CLI 文档:MCP servers with the Gemini CLI <https://geminicli.com/docs/tools/mcp-server/>
  40. Android Developers:Overview of AppFunctions <https://developer.android.com/ai/appfunctions>
  41. Google Identity:OAuth-based Account Linking <https://developers.google.com/identity/account-linking/oauth-linking>
  42. Google Cloud 文档:Deploying to Cloud Run <https://cloud.google.com/run/docs/deploying>
  43. Google:User-triggered agents IP ranges(JSON) <https://developers.google.com/static/crawling/ipranges/user-triggered-agents.json>
  44. YouTube API Services:Developer Policies <https://developers.google.com/youtube/terms/developer-policies>
  45. Reddit:Data API Terms <https://redditinc.com/policies/data-api-terms>
  46. Google AI 开发者论坛:Gemini app custom apps MCP OAuth never exchanges the code(2026-10-02) <https://discuss.ai.google.dev/t/gemini-app-spark-custom-apps-mcp-oauth-never-exchanges-the-code-cannot-complete-request-on-oauth-redirect-googleusercontent-com/186405>
  47. Reddit r/mcp:custom connectors - gemini(2026-10-19) <https://www.reddit.com/r/mcp/comments/1xaba94/custom_connectors_gemini/>
  48. Reddit r/GeminiAI:Gemini now supports general MCP servers <https://www.reddit.com/r/GeminiAI/comments/1wwe3u1/gemini_now_supports_general_mcp_servers/>
  49. Reddit r/GeminiAI:Gemini App adding custom Connectors(2026-10-22) <https://www.reddit.com/r/GeminiAI/comments/1xcbzub/gemini_app_adding_custom_connectors/>
  50. Reddit r/modelcontextprotocol:How I got one stock market data MCP server into Claude, ChatGPT, Cursor, Codex and Gemini CLI(2026-10-17) <https://www.reddit.com/r/modelcontextprotocol/comments/1x8lxcq/how_i_got_one_stock_market_data_mcp_server_into/>
  51. Reddit r/GoogleGemini:MCP with Gemini(2026-10-28) <https://www.reddit.com/r/GoogleGemini/comments/1xhword/mcp_with_gemini/>
  52. EveryInfra:远程 MCP 接口(2026-11-11 真调) <https://api.everyinfra.com/mcp>
  53. EveryInfra:/mcp/all 受保护资源元数据(2026-11-11 读取) <https://api.everyinfra.com/.well-known/oauth-protected-resource/mcp/all>
  54. EveryInfra:授权服务器元数据(2026-11-11 读取) <https://auth.everyinfra.com/oidc/.well-known/oauth-authorization-server>
  55. EveryInfra:数据能力目录(2026-11-11、2026-11-12 读取) <https://api.everyinfra.com/api/v1/social/catalog>

引用编号 BL-129

自有访问统计常开;Google Analytics 仅在你点「同意分析」后启用。 隐私政策