プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

WHOIS

作者:KincaidYangバージョン 1.5.0i★ –iクラウドで動く
レジストリ名io.github.KincaidYang/whois

インストール

概要

作者による説明(英語の原文)

Query WHOIS/RDAP information for domains, IP addresses, CIDR prefixes and ASNs. Self-hostable.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: クラウドで動く
  • トランスポート: Streamable HTTP
  • カテゴリ: その他

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:2項目中1項目に合格 不合格
  • 作者のサーバーで動きます。あなたが頼んだ内容は、作者のサーバーを通ります。
  • レジストリには、入力が必要なキーは載っていません。

必要なもの

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

ウェブ、デスクトップ、モバイルのClaudeで使えます:

  1. Settings → Connectors を開く
  2. Add custom connector を押す
  3. 下のアドレスを貼り付けて Add を押す
  4. サインインを求められたら、作者のサービスにサインインする
SettingsConnectors1+ Add2https://…3
https://whois.ddnsip.cn/mcp

ターミナルでこれを実行します

claude mcp add --transport http whois https://whois.ddnsip.cn/mcp

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "whois": {
      "url": "https://whois.ddnsip.cn/mcp"
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "whois": {
      "type": "http",
      "url": "https://whois.ddnsip.cn/mcp"
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

ChatGPTがつなげるのは、インターネット上のサーバーだけです:

  1. ウェブ版のChatGPTを開き → Settings → Connectors (Apps)
  2. Create または Add を押す(プランによっては、先に Advanced で Developer mode をオンにする必要があります)
  3. 下のアドレスを貼り付け、名前を付けて保存する
  4. サインインを求められたら、作者のサービスにサインインする
SettingsConnectors1+ Create2https://…3
https://whois.ddnsip.cn/mcp

メニューの名前は、プランや時期によって少し違うことがあります。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

前回チェックしたときにサーバーが応答しなかったため、ツールを読み取れませんでした。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント KincaidYang で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • ✕ 不合格

    エンドポイントが応答する

    チェックしたとき、6秒以内に応答がありませんでした

  • – 対象外

    OAuthでサインイン

    チェックしたとき、6秒以内に応答がありませんでした

  • … 未チェック

    ツールの説明に隠れた指示がない

    まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります

その他のほかのサーバーとの比較i

  • このカテゴリのほかの32709件のうち0%よりスターが多い
  • このカテゴリのほかの32709件のうち73%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの32709件のうち28%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

WHOISは安全ですか?

当てはまる基本チェック2項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(1.5.0)がレジストリに届いたのは14 日前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。

代わりに使えるものは?

同じカテゴリには:Spec Driven Development, Remote Desktop Commander, SwarmMemo

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Remote Desktop Commander

作者:desktop-commander

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

クラウドで動く★ 211一昨日更新
インストール

SwarmMemo

作者:Hugo0

Talk with agent swarms: rooms, private messages and paid tasks for AI agents

クラウドで動く今日更新
インストール

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

English

介绍

基于 Golang 实现的域名 Whois 查询工具,支持所有允许公开查询的 TLD 后缀的域名、IPv4/v6、ASN 的 Whois 信息查询。 根据 ICANN 《通用顶级域名注册数据临时政策细则(Temporary Specification for gTLD Registration Data)》和欧盟《通用数据保护条例》合规要求,在查询域名信息时,程序只返回了部分必要的信息(详见下方返回结果示例),不会返回所有者的联系方式、地址、电话、邮箱等字段。

演示站点:

使用方法

Docker部署
# 安装 Redis

docker run -d --name redis -p 6379:6379 redis:latest

运行 whois

docker run -d --name whois -p 8043:8043 --link redis:redis jinzeyang/whois

运行 whois(大陆推荐)

docker run -d --name whois -p 8043:8043 --link redis:redis docker.cnb.cool/kincaidyang/whois

下载
使用二进制文件

您可从 Release 页面下载对应平台的二进制文件。

从源码编译
git clone https://github.com/KincaidYang/whois.git

cd whois go build

### 安装依赖

本程序默认使用内存缓存,可直接运行;生产环境或多实例部署建议搭配 Redis 使用,您可参照 https://redis.io/docs/install/install-redis/install-redis-on-linux/ 进行安装。

编辑配置文件
vim config.yaml

⚠️ 配置项按功能分组,键名为 camelCase(与 API 响应字段风格一致)。未知键或旧版(v0.9 之前)的扁平键会在启动时报错并给出迁移提示,不会再静默回退到默认值。

server:

port: 8043 # 服务监听端口 rateLimit: 60 # 最大并发处理请求数,超出返回 429 upstreamLimit: 60 # 程序向上游 WHOIS/RDAP 服务器发起的最大并发查询数(默认等于 rateLimit,批量与 MCP 查询同样计入)

metricsAddr: "127.0.0.1:9100" # 设置后 /metrics 改在此地址单独提供(不需要密钥),主端口不再提供;留空(默认)则仍在主端口

log: level: "info" # 日志级别:debug、info、warn、error(默认:info)

cache: expiration: 3600 # 缓存过期时间,单位:秒(默认:3600) negativeExpiration: 60 # “未找到/被拒”结果的缓存时间,单位:秒(默认: 60;设为负数则禁用) requireRedis: false # false=允许Redis失败时降级到内存缓存,true=Redis必须可用否则程序退出 memoryMaxSize: 10000 # 内存缓存最大条目数,超过此数量按 LRU 淘汰最久未使用条目(默认: 10000) memoryMaxBytes: 268435456 # 内存缓存最大总字节数(键+值),超过此数量按 LRU 淘汰,即使未超过条目数上限(默认: 268435456,即 256 MiB) memoryCleanInterval: 300 # 内存缓存过期数据清理间隔,单位:秒(默认: 300)

redis: addr: "redis:6379" # Redis服务器地址 password: "" # Redis密码,如无密码则留空 db: 0 # Redis数据库编号 tls: false # 通过不可信网络连接 Redis 时建议开启 TLS tlsSkipVerify: false # 跳过证书校验(不推荐,仅自签名证书场景使用)

proxy: server: "" # 代理服务器地址,留空表示不使用代理 username: "" # 代理服务器用户名(如需认证) password: "" # 代理服务器密码(如需认证) suffixes: [] # 需要使用代理的TLD后缀列表;填 ["all"] 表示全部走代理

bootstrap: interval: 86400 # RDAP 服务器列表从 IANA 刷新间隔,单位:秒;0 则禁用(推荐:86400)

auth: keys: [] # API 密钥列表。留空(默认)则服务完全开放;配置一个或多个密钥后,除 /health 和 /ready 外的所有端点都需要认证,请求时通过 "Authorization: Bearer " 或 "X-API-Key: " 携带密钥

列表项支持纯字符串,也支持对象形式(可命名、可按 key 限流):

keys:

- "plain-secret" # 匿名 key,自动命名 key1/key2/…

- key: "another-secret"

name: "ci" # 显示名:出现在日志 client 字段和 Prometheus 指标中

rateLimit: 120 # 该 key 的速率限制(次/分钟);0 或缺省=不限

batch: enabled: false # POST /batch 批量查询端点(含 MCP 批量 tool),默认关闭;建议与 auth.keys 一起开启 maxItems: 10 # 单批最多查询条数

mcp: localhostProtection: false # /mcp 端点的 DNS rebinding 保护:开启后只接受 Host 为 localhost 的请求。反向代理部署保持 false;本机直连部署建议设为 true

环境变量

所有配置项均可通过环境变量覆盖(优先级高于配置文件),适合 Docker/Kubernetes 等不便挂载配置文件的部署方式:

环境变量对应配置项默认值说明
WHOIS_PORTserver.port8043服务监听端口
WHOIS_RATE_LIMITserver.rateLimit100最大并发请求数
WHOIS_UPSTREAM_LIMITserver.upstreamLimit同 rateLimit最大并发上游查询数
WHOIS_METRICS_ADDRserver.metricsAddr空/metrics 的独立监听地址(如 127.0.0.1:9100)
WHOIS_LOG_LEVELlog.levelinfo日志级别:debug、info、warn、error
WHOIS_CACHE_EXPIRATIONcache.expiration3600缓存过期时间(秒)
WHOIS_NEGATIVE_CACHE_EXPIRATIONcache.negativeExpiration60负向缓存时间(秒),负数禁用
WHOIS_REQUIRE_REDIScache.requireRedisfalsetrue/1 时 Redis 不可用则启动失败
WHOIS_MEMORY_MAX_SIZEcache.memoryMaxSize10000内存缓存最大条目数
WHOIS_MEMORY_MAX_BYTEScache.memoryMaxBytes268435456内存缓存最大总字节数
WHOIS_MEMORY_CLEAN_INTERVALcache.memoryCleanInterval300内存缓存清理间隔(秒)
WHOIS_REDIS_ADDRredis.addr未设置Redis 地址;显式设为空(WHOIS_REDIS_ADDR=)则禁用 Redis 仅用内存缓存,配置后不可用时自动降级到内存缓存(除非开启 requireRedis)
WHOIS_REDIS_PASSWORDredis.password空Redis 密码
WHOIS_REDIS_DBredis.db0Redis 数据库编号
WHOIS_REDIS_TLSredis.tlsfalsetrue/1 启用 Redis TLS
WHOIS_REDIS_TLS_SKIP_VERIFYredis.tlsSkipVerifyfalsetrue/1 跳过证书校验(不推荐)
WHOIS_PROXY_SERVERproxy.server空代理服务器地址,空则不使用代理
WHOIS_PROXY_USERNAMEproxy.username空代理用户名
WHOIS_PROXY_PASSWORDproxy.password空代理密码
WHOIS_PROXY_SUFFIXESproxy.suffixes空走代理的 TLD 列表,逗号分隔(all 表示全部)
WHOIS_BOOTSTRAP_INTERVALbootstrap.interval0(禁用)IANA RDAP 列表刷新间隔(秒);配置文件示例为 86400
WHOIS_AUTH_KEYSauth.keys空API 密钥,逗号分隔(仅纯 key 形式;命名/按 key 限流需配置文件)
WHOIS_BATCH_ENABLEDbatch.enabledfalsetrue/1 开启批量查询端点
WHOIS_BATCH_MAX_ITEMSbatch.maxItems10单批最多查询条数
WHOIS_MCP_LOCALHOST_PROTECTIONmcp.localhostProtectionfalsetrue/1 启用 /mcp 的 DNS rebinding 保护

布尔型变量只认 true 和 1,其余值视为 false。数值型变量解析失败时静默忽略并沿用配置文件/默认值。

纯环境变量部署示例(不挂载配置文件):

docker run -d --name whois -p 8043:8043 \

-e WHOIS_REDIS_ADDR=redis:6379 \ -e WHOIS_BOOTSTRAP_INTERVAL=86400 \ -e WHOIS_AUTH_KEYS=secret1,secret2 \ --link redis:redis jinzeyang/whois

配置说明:

  • Redis配置:建议使用Redis以获得更好的性能和多实例缓存共享能力
  • 缓存过期时间:根据查询频率调整,建议3600秒
  • 内存缓存:Redis 不可用时的兜底,达到上限后按 LRU(最近最少使用)淘汰
  • 负向缓存:将“未找到/被拒”的查询结果短时间缓存,避免对不存在的资源反复请求上游;默认 60 秒
  • 并发限制:控制向上游服务器的请求频率,避免被限流。
  • 代理配置:某些TLD可能需要代理访问,可配置特定后缀使用代理
  • 日志级别:debug 会输出每次缓存命中和上游查询,流量大时噪声较高;生产环境建议保持 info
  • RDAP 刷新间隔:服务启动时会立即从 IANA 拉取最新 RDAP 服务器列表,之后按此间隔定期刷新;编译进二进制的数据作为拉取失败时的兜底
  • API 认证:默认关闭。配置 auth.keys 后即启用,未携带有效密钥的请求返回 401(RFC 9457 problem+json);仅 /health 和 /ready 豁免,便于存活/就绪探针工作。/metrics 里有 whois_client_requests_total{client},任何一个密钥都能看到所有调用方的名称和请求量;把密钥分发给多个下游时,建议设置 server.metricsAddr,让 /metrics 只在内网地址上提供
  • key 命名与按 key 限流:auth.keys 的对象形式可为每个 key 设置显示名和速率限制。显示名出现在请求日志的 client 字段和 Prometheus 指标 whois_client_requests_total{client,status_code} 中,便于区分调用方;速率限制为 token bucket(次/分钟,允许一次性用完整分钟额度),超限返回 429 + Retry-After 头。批量查询按条数计入额度:一批 N 条消耗 N 个请求额度;/mcp 收到的 JSON-RPC 批量请求同样按其中的工具调用数计入
  • 批量查询:默认关闭。建议与 auth.keys 一起开启——开放实例提供批量查询等于放大被滥用打上游注册局的能力

⚠️ Warning: 限频针对的是程序向 whois 服务器发起的请求,而非用户向本程序发起的请求。例如,您将 server.upstreamLimit 设置为 50,那么程序同时向注册局 whois/RDAP 服务器发起的查询将不会超过 50 个,但是用户向本程序发起的请求不受限制。请您通过 Nginx 等工具对本程序进行限流,或为每个 API key 配置 rateLimit,以防止恶意请求。

运行
./whois

注意: 本程序默认监听 8043 端口。

健康检查端点

服务提供以下健康检查端点:

端点描述
GET /health存活检查 - 服务运行即返回 200
GET /ready就绪检查 - 检查缓存和并发容量状态
GET /info运行时信息 - 版本、运行时间、Go 版本等
GET /metricsPrometheus 指标 - 请求计数、延迟、缓存命中率、上游查询耗时(指标清单与告警建议见 docs/metrics.md);设置 server.metricsAddr 后改在该地址提供
GET /openapi.jsonOpenAPI 3.1 规范 - 全部端点与响应 schema 的机器可读描述
POST /mcpMCP Streamable HTTP 端点 - 供 AI 助手集成使用
POST /batch批量查询 - 一次提交多个域名/IP/ASN(默认关闭,见 batch.enabled)

示例:

curl http://localhost:8043/health
{

"status": "ok", "timestamp": "2026-02-05T01:32:05Z", "uptime": "10s", "checks": { "cache": {"status": "ok", "message": "redis"} } }

进程守护(可选)

您可以使用 systemd 等工具将本程序设置为守护进程,以便在系统重启后自动运行。

vim /etc/systemd/system/whois.service
[Unit]

Description=whois After=network.target

[Service] Type=simple User=www-data Group=www-data ExecStart=/path/to/whois/whois WorkingDirectory=/path/to/whois Restart=on-failure

[Install] WantedBy=multi-user.target

### 使用

GET 请求

浏览器访问

部署后直接通过浏览器访问http://ip:端口/你想查的域名或ip或asn,默认端口8043,示例http://1.2.3.4:8043/examlpe.com,详细示例请参考下方

支持直接查询国际化域名(IDN,含中文、带变音符号等 Unicode 域名),程序会自动转换为 Punycode 后查询,例如 http://1.2.3.4:8043/例子.cn。

类型化查询路径

除根路径自动识别外,还提供 RFC 9082 风格的类型化路径,适合程序化调用——资源类型不匹配时直接返回 400,不会被识别成其他类型:

curl http://localhost:8043/domain/example.com

curl http://localhost:8043/ip/192.0.2.1 curl http://localhost:8043/autnum/205794 # 也接受 as205794 / AS205794

IP 查询支持 CIDR 前缀(根路径和 /ip/ 均可):

curl http://localhost:8043/ip/192.0.2.0/24

curl http://localhost:8043/2001:db8::/32

OpenAPI 规范

服务在 /openapi.json 提供 OpenAPI 3.1 描述文档,包含全部端点、响应 schema(RDAP 词汇)和错误格式,可直接导入 Postman/Swagger UI 等工具。

缓存与跨域
  • 成功响应带 X-Cache 头标识缓存状态:HIT(命中服务端缓存)、MISS(回源注册局)、REFRESH(?refresh 强制回源),以及 Cache-Control: public, max-age=<缓存秒数> 供客户端/CDN 缓存。
  • 成功响应(200)带强 ETag 头;请求时携带 If-None-Match: 可做条件重验证,内容未变化时返回 304 Not Modified(无响应体),/openapi.json 同样支持。
  • 所有响应带 Access-Control-Allow-Origin: *,可直接在浏览器前端跨域调用。
查询域名 Whois 信息
curl http://localhost:8043/example.com

返回结果

{

"objectClassName": "domain", "ldhName": "example.com", "registrar": "RESERVED-Internet Assigned Numbers Authority", "registrarIanaId": "376", "status": [ "client delete prohibited", "client transfer prohibited", "client update prohibited" ], "registrationDate": "1995-08-14T04:00:00Z", "expirationDate": "2026-08-13T04:00:00Z", "lastChangedDate": "2025-08-14T07:01:34Z", "nameservers": [ "a.iana-servers.net", "b.iana-servers.net" ], "secureDNS": { "delegationSigned": true, "dsData": [ { "keyTag": 370, "algorithm": 13, "digestType": 2, "digest": "BE74359954660069D5C63D200C39F5603827D7DD02B56F120EE9F3A86764247C" } ] }, "lastUpdateOfRdapDb": "2026-01-16T10:26:40Z" }

字段名与词汇遵循 RDAP(RFC 9083)规范:objectClassName 标识对象类型(domain / ip network / autnum),日期统一为 RFC 3339 UTC 格式。查询 IDN 域名时会额外返回 unicodeName 字段。对于无法解析的 ccTLD,返回 {"objectClassName": "domain", "unparsed": true, "rawText": "..."}。

查询域名原始 WHOIS 文本

添加 ?raw=1 参数可获取未解析的 WHOIS 原文(text/plain),仅支持域名查询(IP/ASN 走 RDAP,无原文形式)。原文查询直接访问 WHOIS 服务器(跳过 RDAP),若该 TLD 没有已知 WHOIS 服务器则返回 404。

curl "http://localhost:8043/example.com?raw=1"
强制刷新缓存

添加 ?refresh=1 参数可跳过服务端缓存、强制向注册局查询并用新结果覆盖缓存(响应带 X-Cache: REFRESH),适合域名转移/续费后立即查看新状态。仅在开启 API 认证的实例上可用:未配置 auth.keys 的实例返回 403(refresh-requires-auth)——否则任何人都能借此击穿缓存刷上游注册局。可与 ?raw 叠加使用。

curl -H "X-API-Key: your-secret-key" "http://localhost:8043/example.com?refresh=1"
批量查询

POST /batch 一次提交多个查询(域名/IP/CIDR/ASN 可混排,自动识别类型),逐项返回结果。默认关闭,需配置 batch.enabled: true;单批条数上限 batch.maxItems(默认 10)。

curl -X POST -H "X-API-Key: your-secret-key" -H "Content-Type: application/json" \

-d '{"queries": ["example.com", "8.8.8.8", "AS15169"]}' \ http://localhost:8043/batch

响应恒为 200,逐项给出状态:成功项的 data 是常规响应对象,失败项的 error 是 problem+json 对象:

{

"results": [ {"query": "example.com", "status": 200, "data": {"objectClassName": "domain", "ldhName": "example.com"}}, {"query": "nx.invalid", "status": 404, "error": {"type": "...#not-foun

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く