原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

CanYouGrab.it

作者:einiba版本 1.1.1i★ –i电脑或云端
注册名称io.github.einiba/canyougrab

安装

概览

作者提供的说明(英文原文)

Confidence-scored domain availability checking for AI agents via CanYouGrab.it

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

你需要

  • 在云端运行无需安装任何东西,通过互联网连接
  • PyPI已安装 Python 的 uv(用于 uvx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

适用于网页版、桌面版和手机版 Claude:

  1. 打开 Settings → Connectors
  2. 点击 Add custom connector
  3. 粘贴下面的地址,然后点击 Add
  4. 如果要求登录,请登录作者的服务
SettingsConnectors1+ Add2https://…3
https://api.canyougrab.it/mcp

或者在你的电脑上运行

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "canyougrab": {
      "command": "uvx",
      "args": [
        "mcp-server-canyougrab"
      ]
    }
  }
}

在终端中运行这条命令

claude mcp add --transport http canyougrab https://api.canyougrab.it/mcp

或者在你的电脑上运行

claude mcp add canyougrab -- uvx mcp-server-canyougrab

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "canyougrab": {
      "url": "https://api.canyougrab.it/mcp"
    }
  }
}

或者在你的电脑上运行

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "canyougrab": {
      "command": "uvx",
      "args": [
        "mcp-server-canyougrab"
      ]
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "canyougrab": {
      "type": "http",
      "url": "https://api.canyougrab.it/mcp"
    }
  }
}

或者在你的电脑上运行

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "canyougrab": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "mcp-server-canyougrab"
      ]
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

ChatGPT 只能连接互联网上的服务器:

  1. 打开网页版 ChatGPT → Settings → Connectors (Apps)
  2. 点击 Create 或 Add(部分套餐需要先在 Advanced 中开启 Developer mode)
  3. 粘贴下面的地址,起个名字,然后保存
  4. 如果要求登录,请登录作者的服务
SettingsConnectors1+ Create2https://…3
https://api.canyougrab.it/mcp

菜单名称可能因套餐和版本不同而略有差异。

你的选择通过 Cookie 保存在这台设备上,无需账户。

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

我们还没有读取这个服务器的工具列表;我们会轮流检查各个端点。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 einiba 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    端点有响应

    尚未检查;我们会轮流检查各个端点

  • … 尚未检查

    使用 OAuth 登录

    尚未检查;我们会轮流检查各个端点

  • … 尚未检查

    工具描述中没有隐藏指令

    尚未检查;我们会在检查端点时读取工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 18496 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 18496 个服务器的 7% 更新
  • 基础检查结果等于或优于此分类中其他 18496 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

CanYouGrab.it 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

两种方式都可以:安装在你的电脑上,或者连接云端版本。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(1.1.1)于6个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, MIDAS Gen NX / Civil NX

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

作者:formulahendry起步阶段↓ 66/周★ 44014个月前更新

在你的电脑上运行

Remote Desktop Commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

作者:desktop-commander正在增长★ 2113天前更新

在云端运行✓ desktopcommander.app

MIDAS Gen NX / Civil NX

Read and carefully change the model open in MIDAS Gen NX or Civil NX on this PC.

作者:Dennis5882起步阶段↓ 1887/周今天更新

在你的电脑上运行

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

CanYouGrab API

Domain availability lookup API with subscription billing, built on FastAPI + DNS (Unbound resolver).

Live services:

  • API: https://api.canyougrab.it
  • Developer portal: https://portal.canyougrab.it
  • Auth: https://auth.canyougrab.it (Auth0 custom domain)

Architecture Overview

┌──────────────────────────────────────────────────────────────────┐

│ Developer Portal │ │ (Zudoku/React on portal.canyougrab.it) │ │ Usage Dashboard · API Keys · Pricing · API Reference (OAS) │ └──────────────────┬───────────────────────────────────────────────┘ │ Auth0 JWT (portal) / Bearer API key (API) ▼ ┌──────────────────────────────────────────────────────────────────┐ │ FastAPI Backend (v5.0.0) │ │ api.canyougrab.it:8000 │ │ │ │ ┌─────────────┐ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │ │ │ app.py │ │ keys.py │ │billing.py│ │ auth.py │ │ │ │ /check/bulk │ │ /keys │ │/billing │ │ API key + │ │ │ │ /usage │ │ CRUD │ │/stripe │ │ JWT auth │ │ │ │ │ │ rotate │ │ webhook │ │ │ │ │ └──────┬──────┘ └──────────┘ └────┬─────┘ └─────────────┘ │ │ │ │ │ └─────────┼────────────────────────────┼───────────────────────────┘ │ │ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ │ Valkey (Redis) │ │ Stripe API │ │ Job queue + │ │ Subscriptions │ │ Rate limiting │ │ Webhooks │ └────────┬────────┘ └─────────────────┘ │ ▼ ┌─────────────────┐ ┌──────────────────────────────┐ │ RQ Worker │──DNS──▶ │ Unbound Resolver │ │ (worker.py) │ │ (dedicated droplet) │ │ ThreadPool(10) │ │ NS queries via VPC │ │ via RQ queue │ └──────────────────────────────┘ └─────────────────┘ ┌──────────────────────────────┐ ───────────────────▶│ PostgreSQL │ (auth, usage, │ API keys + Usage logs │ billing only) └──────────────────────────────┘

Directory Structure

zuplo/

├── backend/ # Python FastAPI backend │ ├── app.py # Main API: /check/bulk, /usage, /health │ ├── auth.py # API key auth (SHA-256) + Auth0 JWT auth (RS256) │ ├── billing.py # Stripe checkout, portal, webhooks, card-on-file, usage details │ ├── keys.py # API key CRUD: create, list, rotate, revoke (+ Turnstile) │ ├── antifraud.py # Anti-fraud: Turnstile, device fingerprints, risk scoring │ ├── email_utils.py # Email normalization + disposable email detection │ ├── dns_client.py # DNS-based domain availability checking via Unbound │ ├── queries.py # PostgreSQL queries: usage tracking, auth, billing │ ├── valkey_client.py # Redis/Valkey job queue client (RQ-backed) │ ├── rq_tasks.py # RQ task function: process_domain_job() │ ├── worker.py # RQ worker process (ThreadPoolExecutor per job) │ ├── migrations/ # SQL migrations │ │ └── 001_free_tier_antifraud.sql │ └── requirements.txt # Python dependencies ├── portal/ # Developer portal (Zuplo + Zudoku) │ ├── config/ │ │ ├── routes.oas.json # OpenAPI 3.1 spec (public API documentation) │ │ └── policies.json # Zuplo policies (empty — all routing is direct) │ ├── docs/ # Zudoku documentation portal │ │ ├── src/ │ │ │ ├── config.ts # API_BASE, Turnstile site key, Stripe PK │ │ │ ├── UsageDashboard.tsx # Usage + billing dashboard component │ │ │ ├── PricingPage.tsx # Plan selection + Stripe checkout │ │ │ ├── PricingPlans.tsx # Pricing card grid component │ │ │ └── CardSetupPage.tsx # Stripe Elements card-on-file for Free+ │ │ ├── public/ # Static assets (logos, banners, CSS overrides) │ │ ├── zudoku.config.tsx # Portal config: theme, nav, Auth0, API key mgmt │ │ └── package.json # Frontend dependencies (React 19, Zudoku) │ ├── package.json # Workspace root (Zuplo v6, TypeScript v5) │ └── README.md # Zuplo boilerplate (not project-specific) ├── mcp-server/ # MCP package for ChatGPT, Claude, and remote MCP clients │ ├── pyproject.toml # MCP package metadata + version │ ├── server.json # MCP registry/server metadata │ ├── uv.lock # Locked MCP runtime dependencies │ └── src/canyougrab_mcp/ │ ├── init.py │ └── server.py # stdio + streamable-http MCP entrypoint ├── .github/workflows/ │ ├── deploy.yml # Production deploy (on tag push v*) │ └── deploy-dev.yml # Dev deploy (on push to dev branch) ├── .claude/ │ └── launch.json # Local dev server config (port 9200) └── package.json # Root workspace config

API Endpoints

Public API (API key auth: Authorization: Bearer cyg_...)
MethodPathDescription
POST/api/check/bulkCheck up to 100 domains. Long-polls until results ready (30s max).
GET/api/account/usageUsage summary for the authenticated consumer.
GET/api/account/quota-checkLightweight monthly + per-minute quota check.
GET/healthHealth check (no auth).
Portal API (Auth0 JWT auth)
MethodPathDescription
POST/api/keysCreate new API key.
GET/api/keysList user's API keys.
POST/api/keys/{id}/rotateRotate key (revoke old, create new).
DELETE/api/keys/{id}Revoke (soft-delete) a key.
POST/api/billing/checkoutCreate Stripe Checkout session.
POST/api/billing/portalCreate Stripe Customer Portal session.
POST/api/billing/setup-cardCreate SetupIntent for Free+ card-on-file.
POST/api/billing/confirm-free-plusVerify card fingerprint and upgrade to Free+.
GET/api/billing/card-statusCheck if user has a card on file.
GET/api/billing/usage/detailedPer-key usage breakdown for portal dashboard.
POST/api/antifraud/turnstile/verifyVerify Cloudflare Turnstile token.
POST/api/antifraud/device/registerRegister device fingerprint (Fingerprint Pro).
GET/api/antifraud/riskGet risk assessment for authenticated user.
POST/api/antifraud/assess-signupRun multi-signal risk assessment at signup.
Internal / Webhook
MethodPathDescription
POST/api/account/usage/detailedMulti-consumer usage breakdown.
POST/api/stripe/webhookStripe webhook receiver (signature-verified).

Core Request Flow

Domain Availability Check
Client                    FastAPI                     Valkey                      Worker              Unbound

│ │ │ │ │ │ POST /api/check/bulk │ │ │ │ │ { domains: [...] } │ │ │ │ │─────────────────────────▶│ │ │ │ │ │── validate key ──────────│ │ │ │ │── check minute rate ────▶│ INCR ratelimit:id:min │ │ │ │── check monthly quota ──▶│ (PostgreSQL) │ │ │ │── record usage ─────────▶│ (PostgreSQL) │ │ │ │── create_job() ─────────▶│ HSET job:{uuid} │ │ │ │ │ RQ enqueue (with retry) │ │ │ │ │ │ │ │ │ │◀── RQ Worker dequeues ───│ │ │ │ │ │ │ │ │ │──── claim_job() ────────▶│ │ │ │ │ │── ThreadPool(10) │ │ │ │ │── check_domain_dns() │ │ │ │── NS query ───────▶│ │ │ │ │◀── NOERROR/NXDOMAIN│ │ │ │◀── complete_job() ───────│ │ │ │ │ │ │ │ │◀─ poll get_job_status() ─│ │ │ │ │ (0.3s interval, 30s │ │ │ │ │ max timeout) │ │ │ │◀─────────────────────────│ │ │ │ │ { results: [...] } │ │ │ │

Billing / Subscription Flow
User → Pricing Page → Select Plan → Auth0 login

→ POST /api/billing/checkout (JWT auth) → Find/create Stripe customer (linked by auth0_sub metadata) → Stripe Checkout Session created → redirect to Stripe → User pays → Stripe fires webhook → POST /api/stripe/webhook (HMAC-SHA256 verified) → checkout.session.completed → fetch subscription → get price ID → Map price to plan → UPDATE api_keys SET plan, lookups_limit

Subscription Plans

PlanMonthly LookupsPer-Minute Rate LimitDomains/RequestPrice
Free50030/min30$0
Free+10,000100/min100$0 (card on file)
Basic20,000300/min100$10/mo
Pro50,0001,000/min100$20/mo
Business300,0003,000/min100$30/mo

Authentication

API Key Auth (public API consumers)
  • Format: Authorization: Bearer cyg_
  • Keys are SHA-256 hashed in the api_keys table (plaintext never stored)
  • Key prefix (cyg_XXXXXXXX...) is stored for display in the portal
  • Full key returned only once at creation time
  • Soft-delete on revocation (revoked_at timestamp, not physically deleted)
JWT Auth (portal/dashboard)
  • Auth0 tenant: dev-mqe5tavp6dr62e7u
  • Custom domain: auth.canyougrab.it
  • Algorithm: RS256 with JWKS validation (1-hour cache)
  • Audience: https://api.canyougrab.it
  • Social logins: Google, Apple (Sign in with Apple)

Domain Availability via DNS

Domain availability is checked by querying a dedicated Unbound recursive DNS resolver running on a separate DigitalOcean droplet. The worker sends NS record queries over the VPC private network and interprets the response:

| DNS Response | `avail

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx