关于 Rank by Ouroboros Apps
Rank by Ouroboros Apps 将只读的 Google Search Console SEO 数据接入 MCP 客户端,面向网站所有者、博主、小型企业和 SEO 自由职业者。它仅报告 API 返回的指标,不估算流量,也不补齐缺失日期。
主要功能
- 01列出已验证的 Search Console 资源
- 02按日期范围读取热门查询和网页
- 03跟踪点击、展示、CTR 和平均排名
- 04比较时段并查找低 CTR 查询
- 05查找排名下滑网页并检查 URL
适用场景
- 01查看搜索查询和落地页表现
- 02比较两个日期范围的 Search Console 数据
- 03查找展示量高但 CTR 低的查询
- 04检查 URL Inspection 状态或定位表现下滑的网页
MCP 相关
通过 OAuth 登录和连接账户,向支持 Streamable HTTP 的 MCP 客户端提供只读 Google Search Console 工具。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://rank.ouroborosapps.com/mcpclaude mcp add --transport http lahutchins91-rank https://rank.ouroborosapps.com/mcp{"mcpServers":{"lahutchins91-rank":{"type":"http","url":"https://rank.ouroborosapps.com/mcp"}}}在 Cursor 中打开{"servers":{"lahutchins91-rank":{"type":"http","url":"https://rank.ouroborosapps.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"lahutchins91-rank":{"type":"http","url":"https://rank.ouroborosapps.com/mcp"}}}{"mcpServers":{"lahutchins91-rank":{"serverUrl":"https://rank.ouroborosapps.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
9此工具无需参数。
详细介绍
Ouroboros Apps 的 Rank
Rank by Ouroboros Apps 可根据你连接的 Google Search Console 账号回答 SEO 问题。它适用于希望在 ChatGPT、Claude、Gemini、Grok、Cursor 或其他支持 Streamable HTTP 和 OAuth 的 MCP 客户端中查看这些数据的网站所有者、博主、小型企业和 SEO 自由职业者。
助手可以列出已验证的网站资源,读取热门查询和页面,查看点击次数、展示次数、CTR 和平均排名随时间的变化,比较两个时间段,查找展示次数高但 CTR 低的查询,查看排名下降的页面,并检查 URL Inspection 状态。每项指标均来自 Search Console API 响应。Rank 不会估算流量,也不会补全 API 未返回的日期。CTR 保持为 Search Console 返回的比例值(0.02 即 2%)。
连接 Google 后即可开始 14 天试用。之后,Pro 为 Stripe 订阅。具体金额会显示在 Stripe Checkout 中,不会显示在本 README 或产品中。
托管服务
- MCP 服务 URL:
https://rank.ouroborosapps.com/mcp(Streamable HTTP,OAuth 登录) - 文档:https://ouroborosapps.com/docs/rank
- 状态:早期访问。将 URL 粘贴到 Claude、Cursor、Grok 或 ChatGPT 开发者模式中。
- 注册表名称:
io.github.LAHutchins91/rank
连接助手
部署后,MCP 地址为 https://YOUR_HOST/mcp;本地运行时为 http://127.0.0.1:44721/mcp。选择 OAuth,并将客户端 ID 和密钥留空。Rank 支持动态客户端注册和 PKCE。
Cursor,在 ~/.cursor/mcp.json 中:
{
"mcpServers": {
"rank": {
"url": "http://127.0.0.1:44721/mcp"
}
}
}
Claude Code:
claude mcp add --transport http rank http://127.0.0.1:44721/mcp
ChatGPT、Claude、Gemini 和 Grok 使用相同的 URL。应用内的连接页面会针对 APP_BASE_URL 中的主机重复这些步骤。
工具
list_properties— 已验证的 Search Console 网站资源top_queries— 指定日期范围内的查询top_pages— 指定日期范围内的页面performance_trends— 每日点击次数、展示次数、CTR 和排名compare_periods— 两个时间范围的总计,以及标注为根据这些总计推导出的差异quick_wins— 展示次数达到或超过阈值且 CTR 低于或等于阈值的查询dropped_pages— 排名下降、点击次数减少,或未出现在当前响应中的页面inspect_url— URL Inspection API 结果account_status— Google 是否已连接,以及试用或 Pro 订阅是否有效
如果省略日期,Rank 会使用截至 3 天前的 28 天窗口,并在结果中说明这一点。传入 startDate 和 endDate(YYYY-MM-DD)以选择时间窗口。
Google Cloud OAuth 客户端
创建一个类型为 Web application 的 OAuth 客户端。Rank 会读取:
GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET
授权重定向 URI 必须完全如下所示,源地址末尾不能带斜杠:
${APP_BASE_URL}/google/callback
本地使用默认 APP_BASE_URL 时,URI 如下:
http://127.0.0.1:44721/google/callback
在 OAuth 同意屏幕中添加以下范围:
openidhttps://www.googleapis.com/auth/userinfo.emailhttps://www.googleapis.com/auth/webmasters.readonly
webmasters.readonly 是 Search Console 的只读范围。Rank 会请求离线访问权限,以便 Google 返回刷新令牌。刷新令牌会先加密再存储。TOKEN_ENCRYPTION_KEY 是用于加密的密钥(一个较长的随机字符串)。如果密钥发生变化,现有令牌将无法读取,账号需要重新连接 Google。
如果 Google 控制台要求填写已授权的 JavaScript 源,请使用 APP_BASE_URL 的源地址(本地为 http://127.0.0.1:44721)。上述重定向 URI 必须与实际值完全匹配。
存储
试用状态、Stripe 客户 ID、MCP OAuth 客户端和令牌、待处理的 Google 登录,以及加密后的 Google 刷新令牌共用一个存储接口。设置 STORAGE_BACKEND:
| 后端 | 适用场景 | 使用内容 |
|---|---|---|
memory | 本地实验和测试 | 进程停止后数据会消失 |
file | 单个长期运行的服务器或 Docker 卷 | STORAGE_FILE(默认值 ./data/rank-store.json) |
blob | Vercel | STORAGE_BLOB_PATH 中的一个私有 Blob(默认值 rank/store.json) |
postgres | 已运行的 Postgres 数据库 | DATABASE_URL |
Postgres 使用一个表;如果该表不存在,会在首次使用时创建:
CREATE TABLE IF NOT EXISTS rank_kv (
collection text NOT NULL,
id text NOT NULL,
document jsonb NOT NULL,
PRIMARY KEY (collection, id)
);
没有第二套架构。在 Vercel 上,内存和文件存储会重置,因此生产环境使用 Blob 后端。Blob 文档使用与文件存储相同的布局:JSON 记录集合。OAuth 授权码和待处理的 Google 登录状态都是该文档中的记录,因此回调可以由不同的无服务器实例处理。每次写入时,都会删除过期的授权码、待处理的登录会话、访问令牌和刷新令牌。连接 Vercel Blob 存储后,Vercel 会注入 BLOB_READ_WRITE_TOKEN。不要将其提交到代码库。
计费
请使用 Lawrence 已在使用的 Stripe 账户设置这些变量。不要在此代码库中创建产品。价格 ID 并非美元金额。
STRIPE_SECRET_KEYSTRIPE_PRICE_MONTHLYSTRIPE_PRICE_YEARLYSTRIPE_WEBHOOK_SECRET
结账接口为 POST /billing/checkout,请求内容为 { "plan": "monthly" } 或 { "plan": "yearly" }。Webhook 接口为 POST /billing/webhook。只有在设置了密钥和两个价格 ID 时,GET /health 才会包含 billingConfigured: true。
本地试用期为首次连接 Google 起的 14 天。如果试用期仍有剩余天数,结账会将全部剩余天数发送给 Stripe,因此首次扣款会等到试用期结束后进行。
本地运行
npm install
cp .env.example .env
# fill Google, encryption, and Stripe values in .env
npm run dev
服务器在 PORT 端口上监听(默认值为 44721)。
npm test
npm run typecheck
npm start
npm start 会运行编译后的服务器。Docker 会构建并运行同一命令(node dist/src/server.js),并要求镜像根目录中存在 logo.jpg。
部署
Vercel:将 APP_BASE_URL 设为 https://rank.ouroborosapps.com,将 STORAGE_BACKEND=blob,并连接 Blob 存储,以便 Vercel 注入 BLOB_READ_WRITE_TOKEN。vercel.json 会将所有路径发送到 Node 函数,并将 logo.jpg 打包进该函数。/logo.jpg 和应用路由由该函数提供。/package.json 不是静态文件。server.json 中的远程服务地址为 https://rank.ouroborosapps.com/mcp。
注册表名称为 io.github.LAHutchins91/rank。图标地址为 https://rank.ouroborosapps.com/logo.jpg。
环境变量
| 变量 | 用途 |
|---|---|
APP_BASE_URL | 公共源;用于确定 Google 重定向 URI |
PORT | 监听端口,默认值为 44721 |
GOOGLE_CLIENT_ID | Google 登录和 Search Console |
GOOGLE_CLIENT_SECRET | Google 令牌交换 |
TOKEN_ENCRYPTION_KEY | 加密刷新令牌并为浏览器会话签名 |
STORAGE_BACKEND | memory、file、blob 或 postgres |
STORAGE_FILE | 文件后端路径 |
STORAGE_BLOB_PATH | Blob 路径名,默认值为 rank/store.json |
BLOB_READ_WRITE_TOKEN | Vercel Blob 读写令牌,在 Vercel 上注入 |
DATABASE_URL | postgres 后端 |
STRIPE_SECRET_KEY | 结账和计费门户 |
STRIPE_PRICE_MONTHLY | 月度结账价格 ID |
STRIPE_PRICE_YEARLY | 年度结账价格 ID |
STRIPE_WEBHOOK_SECRET | Stripe webhook 签名 |
SUPPORT_EMAIL | 网站上的公开联系邮箱;默认值为 [email protected] |
RANK_TEST_HOOKS=1 允许测试在不使用 Google 的情况下完成 MCP 登录。如果同时设置了该变量和 NODE_ENV=production,进程将拒绝启动。
支持
有关隐私的问题、账号删除以及获取账号记录副本,请发送邮件至 [email protected]。请勿发送密码、OAuth 令牌、API 密钥或支付卡信息。隐私页面和支持页面上也列有同一邮箱地址。要断开 Google 连接,请前往 https://myaccount.google.com/permissions 撤销 Rank 的访问权限。
许可证
MIT。版权所有 (c) 2026 Lawrence Hutchins。
了解更多 Ouroboros 产品:https://ouroborosapps.com
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。