互联网注册数据查询工具

为网络运营商提供互联网注册及注册相关数据的查询服务,包括IP/ASN所有权查询、联系人查找、路由对象验证等功能

  • by dadepo
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 dadepo/whois-mcp

使用说明

inet注册表mcp

MCP服务器,用于网络运营商使用的互联网注册表和注册表相邻数据。

今天,它从RIR数据开始:所有权和联系人查找、滥用发现、IRR路由对象、AS-SET扩展、经过身份验证的注册表查找、维护的对象清单和基本的注册表数据质量检查。

此项目当前从本地签出运行。它还没有发布到npm。

范围

该项目围绕互联网注册系统和注册邻近数据源进行组织:

  • 编号:RIR/RDAP数据、IP和ASN分配数据、经过身份验证的库存、滥用和联系人查找
  • 路由:IRR路由/route6/aut-num/as设置,RPKI ROA验证,BGP源可见性,bogon和martian检查
  • 命名:DNS委托、DNSSEC验证、反向DNS、IANA根和TLD数据
  • 互连:对等DB ASN、组织、IX、设施、政策和联系人查找
  • 元数据:地理种子、滥用联系人和真相来源一致性审计

并非所有这些都存在。当前的实现从RIR和IRR部分开始。

当前覆盖范围

工具类别 RIPE NCC ARIN APNIC AfriNIC LACNIC
公共注册表查询 是 是 有 有 是
联系人卡片 是 是 有 有 是
路由对象验证 是 是 否 否 不
AS-SET扩展 是 是 否 否 不
经过身份验证的对象查找 是 是 有 未实现 未实现
经过身份验证的资源清单 是 部分 是 未实施 未实施
注册表数据质量审核 是 是 有 未实施 未实施

Not implemented 意味着此服务器尚未公开该RIR的经过测试的只读身份验证路径。这并不意味着RIR没有经过身份验证的服务。

当前工作流:

  • 查找IP和ASN的所有权和注册数据
  • 查找滥用、管理员和技术联系人
  • 验证RIPE和ARIN路由对象
  • 扩展RIPE和ARIN AS集
  • 列出经过身份验证的RIPE维护对象
  • 获取经过身份验证的RIPE和ARIN注册表对象
  • 对RIPE和ARIN注册表对象进行审计,以解决基本数据质量问题

从源代码安装

git clone https://github.com/dadepo/inet-registry-mcp.git
cd inet-registry-mcp
npm ci

可选本地配置:

cp env.example .env

默认情况下,所有公共RIR工具都已启用。编辑 .env 仅当您想禁用注册表、更改超时、更改HTTP绑定设置或配置经过身份验证的只读查找时。

本地运行

没有默认传输。明确地选择一个。

对于stdio,这是大多数本地MCP客户端使用的:

npm --silent run dev:stdio

对于HTTP:

npm run dev:http

HTTP端点为:

http://127.0.0.1:8000/mcp

要绑定到其他位置:

HTTP_HOST=0.0.0.0 HTTP_PORT=9000 npm run dev:http

npm run dev 在指导下故意退出。使用 dev:stdio 或 dev:http.

Claude 代码

从这个repo目录:

claude mcp add --transport stdio inet-registry-mcp -- npm --silent run dev:stdio

或者将Claude Code指向本地bin脚本:

claude mcp add --transport stdio inet-registry-mcp -- /absolute/path/to/inet-registry-mcp/bin/inet-registry-mcp.js

对于HTTP模式,请先启动HTTP服务器:

claude mcp add --transport http inet-registry-mcp-http http://127.0.0.1:8000/mcp

Claude 桌面版

之后 npm ci,添加一个指向本地签出的stdio服务器:

{
  "mcpServers": {
    "inet-registry-mcp": {
      "command": "/absolute/path/to/inet-registry-mcp/bin/inet-registry-mcp.js"
    }
  }
}

Claude桌面配置位置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

对于HTTP模式:

{
  "mcpServers": {
    "inet-registry-mcp-http": {
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}

示例提示

Who owns 8.8.8.8?
Who should I contact about abuse from 1.1.1.1?
Is there a RIPE route object for 193.0.0.0/21 originated by AS3333?
Expand AS-RIPENCC to direct members only.
Show me all objects maintained by DADEPO-TEST-MNT.
Run a registry data quality audit for RIPE maintainer DADEPO-TEST-MNT.

配置

环境变量:

# Auth profile. production is the default. Use test to point supported
# authenticated calls at RIR test environments.
INET_REGISTRY_MCP_PROFILE=production

# Enable or disable RIR support. All default to true.
SUPPORT_RIPE=true
SUPPORT_ARIN=true
SUPPORT_APNIC=true
SUPPORT_AFRINIC=true
SUPPORT_LACNIC=true

# Timeouts and cache settings.
HTTP_TIMEOUT_SECONDS=10
PORT43_CONNECT_TIMEOUT_SECONDS=5
PORT43_READ_TIMEOUT_SECONDS=5
CACHE_TTL_SECONDS=60
CACHE_MAX_ITEMS=512

# Custom User-Agent string.
USER_AGENT=inet-registry-mcp/1.0

# HTTP transport settings.
HTTP_HOST=127.0.0.1
HTTP_PORT=8000

经过身份验证的只读工具

经过身份验证的支持使用一个全局配置文件:

INET_REGISTRY_MCP_PROFILE=production
# or
INET_REGISTRY_MCP_PROFILE=test

没有 *_AUTH_ENABLED 旗帜。当存在凭据时,功能可用。

经过身份验证的查找工具返回从RIR接收的对象值。如果API密钥等本地MCP凭据出现在响应或URL中,则它们仍会被编辑。

# RIPE Database REST API authenticated object lookup, maintained-object inventory, and audit.
# Accepts either the full Basic header value or the base64 part; "Basic "
# is added automatically when omitted.
RIPE_API_KEY=

# ARIN Reg-RWS authenticated object lookup, audit, and configured inventory.
ARIN_API_KEY=

# ARIN inventory is read from explicit handles because Reg-RWS does not expose
# one generic account inventory endpoint through this tool yet.
ARIN_INVENTORY_ORG_HANDLES=
ARIN_INVENTORY_NET_HANDLES=
ARIN_INVENTORY_POC_HANDLES=
ARIN_INVENTORY_CUSTOMER_HANDLES=
ARIN_INVENTORY_DELEGATION_NAMES=
ARIN_INVENTORY_TICKET_NUMBERS=

# APNIC Registry API authenticated object lookup, account resource inventory,
# and audit. APNIC calls are account-scoped, so prompts must name the APNIC
# member account to query.
APNIC_API_KEY=

当前已验证范围:

  • RIPE:对象查找,通过反向维护对象库存 mnt-by 查找和数据质量审计。
  • ARIN:对象查找和数据质量审计;清单中列出的手柄的库存工作 ARIN_INVENTORY_*.
  • APNIC:通过APNIC注册表API进行对象查找、帐户资源清单和数据质量审核。APNIC注册表API调用需要提示或工具参数中的APNIC成员帐户;服务器不保留默认帐户。清单遵循配置的注册表主机上的注册表API分页链接,每个数据集最多10页,并使用标记最后一条记录 pages_truncated: true 当剩下更多页面时。
  • AfriNIC、LACNIC:身份验证状态报告配置,但经过身份验证的库存/对象/审计调用返回 not_supported 直到实现了特定于提供者的读取路径。

支持本地测试的端点覆盖:

RIPE_DATABASE_REST_BASE=
ARIN_REG_REST_BASE=
APNIC_REGISTRY_BASE=
LACNIC_REGISTRATION_BASE=

随着 INET_REGISTRY_MCP_PROFILE=test,支持的已验证调用使用RIPE TEST DB、ARIN OT&E和APNIC Registry API测试台(https://registry-testbed.apnic.net/registry-api/v1)端点默认值(如果可用)。以(权力)否决 APNIC_REGISTRY_BASE 如果APNIC使用您的证书颁发不同的测试注册表API基础;裸主机覆盖获得标准 /registry-api/v1 路径自动附加。

APNIC提示示例:

Show the authenticated APNIC resource inventory for account MEM-EXAMPLE.
Using APNIC account MEM-EXAMPLE, show the authenticated WHOIS object mntner APNIC-TEST-MNT.

端点

默认公共终结点:

  • 成熟的NCC: whois.ripe.net, https://rest.db.ripe.net, https://rdap.db.ripe.net
  • ARIN: whois.arin.net, https://whois.arin.net/rest, https://rdap.arin.net/registry
  • 窒息: whois.apnic.net, https://registry-api.apnic.net/registry-api/v1, https://rdap.apnic.net
  • 非洲: whois.afrinic.net, https://rdap.afrinic.net/rdap
  • 蕾丝: whois.lacnic.net, https://rdap.lacnic.net/rdap

发展

运行测试:

npm test

运行类型检查:

npm run typecheck

编译TypeScript:

npm run build

许可证

MIT。看 许可证.