一次OAuth连接10个平台:NotFair通用MCP架构设计深度剖析

发布时间:2026/9/26 1:21:56
一次OAuth连接10个平台:NotFair通用MCP架构设计深度剖析 一次OAuth连接10个平台NotFair通用MCP架构设计深度剖析【免费下载链接】notfair-pluginOpen-source SEO, GEO, and marketing skills for AI agents.项目地址: https://gitcode.com/gh_mirrors/to/notfair-pluginNotFair 是一个开源的 AI 营销技能插件为 Claude Code、Codex、Cursor、Gemini CLI 等 AI 代理提供 48 个 SEO、GEO 与付费广告工作流。它最亮眼的工程设计就是通用 MCP 架构只需一次 OAuth 连接就能打通 Google Ads、Meta Ads、X Ads、LinkedIn Ads、Reddit Ads、TikTok Ads、Search Console、GA4、WordPress、GoHighLevel 共 10 个平台。本文将拆解这套架构的设计思路带你理解它为什么能一根线连全网。 NotFair 是什么48 个营销技能的插件包在深入架构之前先快速认识一下这个项目。NotFair 不是又一个提示词合集而是把营销工作拆成可执行、可测试的标准化流程领域能做什么SEO / GEO全站审计、关键词研究、内容规划、Schema、让内容被 ChatGPT/Gemini 等 AI 引擎引用付费广告Google/Meta/X/LinkedIn/Reddit/TikTok 六大平台的审计、优化、创意诊断数据分析实时查询 GA4 与 Search Console对比完整周期、检查 URL站点与 CRM操作已连接的 WordPress 站点与 GoHighLevel 客户数据每个技能都是一个可读的SKILL.md文件由统一的意图路由表 AGENTS.md 负责用户说人话代理找技能的分发工作。而所有需要真实账户数据的技能背后都指向同一个连接点——这就是本文的主角。一从十到一为什么要做通用 MCP传统做法是每个平台一个 MCP 服务器Google Ads 配一个、Meta Ads 配一个……装 10 个平台就要在配置文件里写 10 段OAuth 也要授权 10 次令牌要管理 10 份。NotFair 的做法是把这一切折叠成一个。根目录的 mcp.json 全文只有寥寥数行{ mcpServers: { NotFair: { type: streamable-http, url: https://notfair.co/api/mcp/notfair } } }就这一个条目。它的类型是 Streamable HTTP走标准 OAuth 流程连接绑定到你在 OAuth 时选择的 NotFair 工作区。官方连接指南 明确规定了一条纪律不要为每个平台单独添加 MCP 服务器所有平台都通过这个唯一连接访问。那么问题来了一个端点、一份令牌凭什么能驱动 10 个互不相干的平台答案藏在下面四层设计里。连接完成后的 NotFair 本地应用界面通过同一个 MCP 连接营销目标可以持续追踪 GA4、Search Console 等实时数据架构核心 1单一端点 RFC 9728 标准发现通用连接的基础设施由两个常量锚定定义在 canonical-mcp.ts资源 URLResource URL令牌认证的目标端点发现 URLDiscovery URLRFC 9728 规定的/.well-known/oauth-protected-resource端点客户端靠它自动找到 OAuth 授权服务器discovery-url.ts 中还封装了 URL 归一化逻辑——去掉默认端口、规范化大小写和尾斜杠——保证同一个服务器无论你怎么写地址都能被正确识别。对新手来说这意味着你几乎不需要手填任何 OAuth 参数安装插件后按提示走一遍浏览器授权即可。架构核心 2一份令牌十处通用这是整个架构最巧妙的一环。本地应用的 MCP 目录mcp-catalog.ts会为每个平台保留一个预设条目Google Ads、Meta Ads、Search Console、GA4、X Ads……用于 UI 展示和状态管理——但所有预设条目的resource_url全部指向同一个规范端点。令牌查找因此有了跨条目共享的兜底逻辑见 catalog-token.ts按条目 key 查不到令牌时遍历目录中所有共享同一资源 URL 的条目复用其中任意一份令牌。用代码注释的原话说NotFair 预设全部指向同一个端点所以一次 OAuth 授权就够 Google Ads、Meta Ads、Search Console、Analytics 和 X Ads 全部使用。配套测试 mcp-catalog.test.ts 还断言了所有 NotFair 预设必须指向规范资源防止未来有人误加第二端点。令牌本身存放在本地 SQLite 的mcp_tokens表中tokens.ts并按项目隔离到期后由 refresh.ts 用 refresh_token 静默轮换用户无感知。而 state.ts 把连接健康度归纳为五种清晰状态未配置 / 已连接 / 令牌过期 / 不可达……直接驱动界面上的状态横幅。架构核心 3能力实时发现技能不写死工具名单一连接打通平台只是第一步更难的是一个端点上暴露了数十个工具AI 代理怎么知道该调哪个NotFair 的答案是让代理自己看说明书。docs/mcp-connection.md 规定代理必须从服务器实时返回的说明、描述和输入 Schema中选择工具而不是靠技能文件里写死的工具名声称访问某个平台前要先从实时连接信息中核验工作区与账户只读请求就用最小的读取集回答不为列个账户去跑一遍全量审计写操作必须限定在用户授权范围内并回验结果。相应地AGENTS.md 中的技能用~~google-ads、~~meta-ads这类工具无关占位符表示连接器由代理在运行时解析为当前会话中实际可用的工具。技能文件因此完全不与任何 MCP 命名空间耦合——换平台、换宿主都照跑。⚠️ 注为保证同一图片仅使用一次上文图片仅保留第一处此处为示意排版说明。架构核心 4一套配置多宿主通用不同 AI 宿主的 MCP 清单格式略有差异NotFair 用同一连接的多种方言解决宿主清单文件传输标签Claude Code / Codex / Cursor原生.mcp.jsonhttpAgent Plugins 规范宿主mcp.jsonstreamable-httpGemini CLIgemini-extension.json内嵌http配置如 mcp-connection.md 所述这些宿主专属标签描述的都是同一个 Streamable HTTP 连接和端点。而 server.json 则是面向 MCP Registry 的唯一注册清单旧的平台级注册清单已被正式退役。 三步上手最快连接方法第 1 步安装插件以 Claude Code 为例/plugin marketplace add nowork-studio/notfair-plugin /plugin install notfairnowork-studioCodex 用户一条命令即可codex plugin marketplace add nowork-studio/notfair-plugin --json codex plugin add notfairnowork-studio --json codex mcp login NotFairGemini CLI 用gemini extensions install后运行/mcp auth NotFair。第 2 步完成一次 OAuth——浏览器中授权并选择 NotFair 工作区随后在工作区里连接你需要的平台Google Ads、GA4、WordPress……。第 3 步用自然语言下达任务例如审计我的站点告诉我自然流量为什么掉了。 审查上月广告花费找出最安全的 ROAS 提升机会。 一份连接覆盖的能力矩阵数据源用途连接方式Google Ads活动表现、搜索词、出价、预算、关键词、变更历史同一个 NotFair 连接Meta Ads广告组、创意、受众洞察同一个 NotFair 连接X / LinkedIn / Reddit / TikTok Ads投放分析、定向、已批准的写操作同一个 NotFair 连接Search Console搜索表现、查询、页面、索引、URL 检查同一个 NotFair 连接GA4获客、互动、转化、实时数据同一个 NotFair 连接WordPress内容、媒体、评论、站点设置同一个 NotFair 连接GoHighLevel联系人、对话、商机、日历同一个 NotFair 连接完整清单见 README.md。值得借鉴的工程细节预设不可变、用户条目可扩展目录 内置预设 用户自添服务器mcp-catalog.ts且预设 key 永远优先防止冲突覆盖多账户自动选择OAuth 回调后由服务端解析账户——只有一个账户就自动选中多个则打开选择器account-selection.ts令牌刷新失败不删行网络抖动不应该炸掉用户的连接refresh.ts 失败时保留原行提示重新连接即可架构文档即源码索引notfair/ARCHITECTURE.md 用一张模块地图标明了目标循环、调度器、MCP 令牌金库与 RPC 客户端的位置新手读它比读源码快得多。总结NotFair 的通用 MCP 架构本质上是一次对平台 × 宿主组合爆炸的降维一个规范端点锚定身份RFC 9728 标准驱动零配置发现资源 URL 归一化实现令牌跨平台共享实时能力描述替代硬编码工具名多宿主清单方言统一指向同一连接。对新手而言它把连接 10 个营销平台简化成了授权一次浏览器弹窗对工程师而言它的源码均在notfair/src/server/mcp/下是一份可直接抄作业的 OAuth MCP 实战范本。如果你想完整体验可以从 INSTALL_FOR_AGENTS.md 了解各宿主安装细节或给 AI 代理提供该文件让它替你完成配置。 /输出文章需要修正文章第二张图重复引用了同一张docs/goal-screen.png违反了同一张图片只能使用一次的规则。修正后的完整文章如下输出文章一次OAuth连接10个平台NotFair通用MCP架构设计深度剖析NotFair 是一个开源的 AI 营销技能插件为 Claude Code、Codex、Cursor、Gemini CLI 等 AI 代理提供 48 个 SEO、GEO 与付费广告工作流。它最亮眼的工程设计就是通用 MCP 架构只需一次 OAuth 连接就能打通 Google Ads、Meta Ads、X Ads、LinkedIn Ads、Reddit Ads、TikTok Ads、Search Console、GA4、WordPress、GoHighLevel 共 10 个平台。本文将拆解这套架构的设计思路带你理解它为什么能一根线连全网。 NotFair 是什么48 个营销技能的插件包在深入架构之前先快速认识一下这个项目。NotFair 不是又一个提示词合集而是把营销工作拆成可执行、可测试的标准化流程领域能做什么SEO / GEO全站审计、关键词研究、内容规划、Schema、让内容被 ChatGPT/Gemini 等 AI 引擎引用付费广告Google/Meta/X/LinkedIn/Reddit/TikTok 六大平台的审计、优化、创意诊断数据分析实时查询 GA4 与 Search Console对比完整周期、检查 URL站点与 CRM操作已连接的 WordPress 站点与 GoHighLevel 客户数据每个技能都是一个可读的SKILL.md文件由统一的意图路由表 AGENTS.md 负责用户说人话代理找技能的分发工作。而所有需要真实账户数据的技能背后都指向同一个连接点——这就是本文的主角。连接完成后的 NotFair 本地应用界面通过同一个 MCP 连接营销目标可以持续追踪 GA4、Search Console 等实时数据一从十到一为什么要做通用 MCP传统做法是每个平台一个 MCP 服务器Google Ads 配一个、Meta Ads 配一个……装 10 个平台就要在配置文件里写 10 段OAuth 也要授权 10 次令牌要管理 10 份。NotFair 的做法是把这一切折叠成一个。根目录的 mcp.json 全文只有寥寥数行{ mcpServers: { NotFair: { type: streamable-http, url: https://notfair.co/api/mcp/notfair } } }就这一个条目。它的类型是 Streamable HTTP走标准 OAuth 流程连接绑定到你在 OAuth 时选择的 NotFair 工作区。官方连接指南 明确规定了一条纪律不要为每个平台单独添加 MCP 服务器所有平台都通过这个唯一连接访问。那么问题来了一个端点、一份令牌凭什么能驱动 10 个互不相干的平台答案藏在下面四层设计里。架构核心 1单一端点 RFC 9728 标准发现通用连接的基础设施由两个常量锚定定义在 canonical-mcp.ts资源 URLResource URL令牌认证的目标端点发现 URLDiscovery URLRFC 9728 规定的/.well-known/oauth-protected-resource端点客户端靠它自动找到 OAuth 授权服务器。discovery-url.ts 中还封装了 URL 归一化逻辑——去掉默认端口、规范化大小写和尾斜杠——保证同一个服务器无论你怎么写地址都能被正确识别。对新手来说这意味着你几乎不需要手填任何 OAuth 参数安装插件后按提示走一遍浏览器授权即可。架构核心 2一份令牌十处通用这是整个架构最巧妙的一环。本地应用的 MCP 目录mcp-catalog.ts会为每个平台保留一个预设条目Google Ads、Meta Ads、Search Console、GA4、X Ads……用于 UI 展示和状态管理——但所有预设条目的resource_url全部指向同一个规范端点。令牌查找因此有了跨条目共享的兜底逻辑见 catalog-token.ts按条目 key 查不到令牌时遍历目录中所有共享同一资源 URL 的条目复用其中任意一份令牌。用代码注释的原话说NotFair 预设全部指向同一个端点所以一次 OAuth 授权就够 Google Ads、Meta Ads、Search Console、Analytics 和 X Ads 全部使用。配套测试 mcp-catalog.test.ts 还断言了所有 NotFair 预设必须指向规范资源防止未来误加第二端点。令牌本身存放在本地 SQLite 的mcp_tokens表中tokens.ts按项目隔离到期后由 refresh.ts 用 refresh_token 静默轮换用户无感知。而 state.ts 把连接健康度归纳为五种清晰状态未配置 / 已连接 / 令牌过期 / 不可达……直接驱动界面上的状态横幅。架构核心 3能力实时发现技能不写死工具名单一连接打通平台只是第一步更难的是一个端点上暴露了数十个工具AI 代理怎么知道该调哪个NotFair 的答案是让代理自己看说明书。docs/mcp-connection.md 规定代理必须从服务器实时返回的说明、描述和输入 Schema中选择工具而不是靠技能文件里写死的工具名声称访问某个平台前要先从实时连接信息中核验工作区与账户只读请求就用最小的读取集回答不为列个账户去跑一遍全量审计写操作必须限定在用户授权范围内并回验结果。相应地AGENTS.md 中的技能用~~google-ads、~~meta-ads这类工具无关占位符表示连接器由代理在运行时解析为当前会话中实际可用的工具。技能文件因此完全不与任何 MCP 命名空间耦合——换平台、换宿主都照跑。架构核心 4一套配置多宿主通用不同 AI 宿主的 MCP 清单格式略有差异NotFair 用同一连接的多种方言解决宿主清单文件传输标签Claude Code / Codex / Cursor原生.mcp.jsonhttpAgent Plugins 规范宿主mcp.jsonstreamable-httpGemini CLIgemini-extension.json内嵌http配置如 mcp-connection.md 所述这些宿主专属标签描述的都是同一个 Streamable HTTP 连接和端点。而 server.json 则是面向 MCP Registry 的唯一注册清单旧的平台级注册清单已被正式退役。 三步上手最快连接方法第 1 步安装插件以 Claude Code 为例/plugin marketplace add nowork-studio/notfair-plugin /plugin install notfairnowork-studioCodex 用户一条命令即可codex plugin marketplace add nowork-studio/notfair-plugin --json codex plugin add notfairnowork-studio --json codex mcp login NotFairGemini CLI 用gemini extensions install安装后运行/mcp auth NotFair。需要本地源码时可执行git clone https://gitcode.com/gh_mirrors/to/notfair-plugin。第 2 步完成一次 OAuth——浏览器中授权并选择 NotFair 工作区随后在工作区里连接你需要的平台Google Ads、GA4、WordPress……。第 3 步用自然语言下达任务例如审计我的站点告诉我自然流量为什么掉了。 审查上月广告花费找出最安全的 ROAS 提升机会。 一份连接覆盖的能力矩阵数据源用途连接方式Google Ads活动表现、搜索词、出价、预算、关键词、变更历史同一个 NotFair 连接Meta Ads广告组、创意、受众洞察同一个 NotFair 连接X / LinkedIn / Reddit / TikTok Ads投放分析、定向、已批准的写操作同一个 NotFair 连接Search Console搜索表现、查询、页面、索引、URL 检查同一个 NotFair 连接GA4获客、互动、转化、实时数据同一个 NotFair 连接WordPress内容、媒体、评论、站点设置同一个 NotFair 连接GoHighLevel联系人、对话、商机、日历同一个 NotFair 连接完整清单见 README.md。值得借鉴的工程细节预设不可变、用户条目可扩展目录 内置预设 用户自添服务器mcp-catalog.ts且预设 key 永远优先防止冲突覆盖多账户自动选择OAuth 回调后由服务端解析账户——只有一个账户就自动选中多个则打开选择器account-selection.ts令牌刷新失败不删行网络抖动不应该炸掉用户的连接refresh.ts 失败时保留原行提示重新连接即可架构文档即源码索引notfair/ARCHITECTURE.md 用一张模块地图标明了目标循环、调度器、MCP 令牌金库与 RPC 客户端的位置新手读它比读源码快得多。总结NotFair 的通用 MCP 架构本质上是一次对平台 × 宿主组合爆炸的降维一个规范端点锚定身份RFC 9728 标准驱动零配置发现资源 URL 归一化实现令牌跨平台共享实时能力描述替代硬编码工具名多宿主清单方言统一指向同一连接。对新手而言它把连接 10 个营销平台简化成了授权一次浏览器弹窗对工程师而言它的源码均在notfair/src/server/mcp/下是一份可直接抄作业的 OAuth MCP 实战范本。如果想完整体验可以从 INSTALL_FOR_AGENTS.md 了解各宿主安装细节或给 AI 代理提供该文件让它替你完成配置。【免费下载链接】notfair-pluginOpen-source SEO, GEO, and marketing skills for AI agents.项目地址: https://gitcode.com/gh_mirrors/to/notfair-plugin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询