一次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),仅供参考
企业数字化 ERP 产品动态
相关推荐
完整输入驱动的高质量中文Markdown博文生成规范 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 1:21:58
WorkBuddy国际版与国内版架构差异及海外环境配置实战指南 1. 从一个真实场景说起:为什么我要折腾WorkBuddy国际版去年下半年,团队接了一个海外客户的自动化办公项目,对方明确要求所有协作工具必须部署在海外节点上,数据不能回流。我们原本用得好好的WorkBuddy国内版,一下子卡在… · 2026/9/26 1:21:52
从零手写生产级MCP Server:鉴权、流式与状态管理实战 从事MCP(Model Context Protocol)服务端开发这两年,我最大的感受是:网上能找到满坑满谷的“Hello World”级别示例,但一旦你把服务端真正推到线上,要面对的就完全不是console.log那点事了。鉴权怎么做才不会… · 2026/9/26 1:21:46
智能文档OCR识别系统实战:从扫描件到结构化字段的完整链路 简介:智能文档OCR识别系统是一套面向计算机视觉与深度学习方向的毕业设计、课程设计参考方案,适合具备一定Python基础、希望实践目标检测与文字识别的高校学生及开发者。系统以YOLO算法为核心,结合CNN特征提取与RNN/LSTM序列建模,… · 2026/9/26 3:24:23
本地模型不是断网版云模型:Agent任务路由怎么分才不泄密 Google刚给Antigravity SDK加入本地模型支持,最值得学的不是“离线也能聊天”,而是怎样把一个任务拆给不同模型。通俗地说,任务路由就是先判断哪些信息能离开设备、哪一步需要更强能力、失败会造成什么后果,再决定由本地还是云端执… · 2026/9/26 3:24:04
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46