AiVikings.ai

ai.aivikings由 aivikings.ai 发布官方发布者v1.0.3更新于 Oct 24, 2026

Find, register, and manage domains from any AI chat or agent

已验证Streamable HTTP可网页运行云端与基础设施商业与电商

概览

AI 生成的概览

AiVikings.ai 官方域名注册商 MCP 服务器,让助手查询域名可用性、注册与续费域名,并管理 DNS、联系人和转移。

可以做什么
查询单个域名或最多 200 个域名的可用性与价格,支持快速或注册局确认模式,并标注溢价域名。注册、续费和转入域名,读取域名状态、到期时间、名称服务器和审计历史。新增、更新、列出和删除托管 DNS 记录(A、AAAA、CNAME、MX、TXT、NS、SRV)。创建和管理可复用的注册联系人,并分配注册人、管理、技术和账单角色。锁定或解锁域名,获取或重新生成 EPP 转移授权码,读取账户、客户和预付余额信息。
适用场景
适合让助手调研并购买域名、为已有域名维护 DNS 记录,或在对话中完成续费、转移和联系人信息处理,无需离开聊天界面。
运行要求
通过 Streamable HTTP 连接 mcp.aivikings.ai 远程端点,无需本地安装。需要 AiVikings.ai 账户。浏览器客户端使用 OAuth,目前授权页面要求粘贴控制台中的 API 令牌;无浏览器的代理则以 Authorization 请求头携带 AiVikings.ai API 密钥。可选 X-Agent-Id 和 X-Agent-Name 请求头用于在审计日志中标记操作。
安装前请注意
注册、续费和转移会从预付的美元或欧元余额中扣款;溢价域名只有在用户接受报价后传入 allow_premium 才会注册。工具会写入、更改和删除数据:DNS 记录、名称服务器、注册人联系人、转移锁和授权码。get_transfer_auth_code 和 regenerate_transfer_auth_code 会返回敏感的 EPP 密钥,重新生成会使旧码失效。API 密钥或 OAuth 令牌会转发给 AiVikings.ai 后端。

安装

在 SourceWeft 中

  1. 打开 控制台中的 AiVikings.ai,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/ai.aivikings%2Fregistrar/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "aivikings-ai": {
      "type": "http",
      "url": "https://mcp.aivikings.ai/mcp"
    }
  }
}

README

AiVikings.ai MCP Server (official)

[License: MIT] [CI]

The official Model Context Protocol server for AiVikings.ai, the domain registrar built for AI agents. It lets ChatGPT, Claude, Cursor and any agent that supports MCP check availability, register and renew domains, and manage DNS, contacts and transfers.

No install needed. AiVikings.ai runs this server at:

https://mcp.aivikings.ai/mcp

Setup guides, the full tool reference and pricing: aivikings.ai/docs/mcp

Connect

You need an AiVikings.ai account. Create one at app.aivikings.ai.

The server uses OAuth. On first use your client opens an AiVikings.ai page where you approve the connection. Today that page asks you to paste the API token from your dashboard.

Claude Code

bash
claude mcp add --transport http aivikings https://mcp.aivikings.ai/mcp

Claude (web and desktop)

Add a custom connector with the URL https://mcp.aivikings.ai/mcp. Step by step: Claude setup.

ChatGPT

Add a connector with the URL https://mcp.aivikings.ai/mcp and OAuth authentication. Step by step: ChatGPT setup.

Cursor

Add to ~/.cursor/mcp.json:

json
{  "mcpServers": {    "aivikings": {      "url": "https://mcp.aivikings.ai/mcp"    }  }}

VS Code

Add to .vscode/mcp.json:

json
{  "servers": {    "aivikings": {      "type": "http",      "url": "https://mcp.aivikings.ai/mcp"    }  }}

Cline and other agents

Agents that install MCP servers for you can follow llms-install.md.

Unattended agents (LangChain, CrewAI, scripts)

Agents without a browser can't complete OAuth. Send your AiVikings.ai API key as a bearer token instead:

json
{  "mcpServers": {    "aivikings": {      "type": "streamableHttp",      "url": "https://mcp.aivikings.ai/mcp",      "headers": {        "Authorization": "Bearer YOUR_AIVIKINGS_API_KEY"      }    }  }}

Optional X-Agent-Id and X-Agent-Name headers label your agent's actions in the domain audit log.

Try it

Once connected, ask your assistant:

  • "Is cartandcup.com available, and what would it cost to register and renew?"
  • "Brainstorm 20 names for a weather analytics project and check which .com and .io domains are free."
  • "Register nightowlanalytics.com for one year using my default contact."
  • "Point the root of nightowlanalytics.com to 203.0.113.10 and add a www CNAME."
  • "Show my domains with their status and expiry dates."

Tools

GroupTools
Search and pricingcheck_domain_availability, check_single_domain_availability, get_domain_pricing
Registration (spends prepaid balance)register_domain, renew_domain, domain_transfer
Domain managementget_domain_status, list_domains, update_nameservers, lock_domain, unlock_domain, get_transfer_auth_code, regenerate_transfer_auth_code, get_domain_audit_log
DNSlist_dns_records, add_dns_record, configure_dns_record, update_dns_record, delete_dns_record
Contactscreate_contact, get_contact, list_contacts, list_domain_registration_contacts, assign_domain_registration_contact_roles, remove_domain_registration_contact_roles, update_registrant_contact, list_contact_countries, list_contact_states
Accountget_current_user, get_prepaid_balance, get_customer

Full descriptions and parameters: tool reference.

Built for agents

  • Prepaid balance. Registrations, renewals and transfers are paid from your prepaid USD or EUR balance. No card is charged by a tool call.
  • Premium domains need a yes. A premium-priced domain is only registered when the agent passes allow_premium=true after the user accepted the quoted price.
  • Safety annotations. Every tool is marked read-only or write, and destructive tools (such as delete_dns_record) are flagged, so clients can ask before running them.
  • Audit log. Every change to a domain is recorded and can be read back with get_domain_audit_log.
  • Pure registrar. No hosting or email upsells in the purchase flow.

Privacy and security

This server is a thin adapter. Each request carries your own OAuth token or API key, which is verified by the AiVikings.ai backend and forwarded with each tool call. The adapter stores no credentials and has no privileged fallback token. Internal backend error details are never passed back to the client.

Support


Self-hosting the adapter

Most users should connect to the hosted server above. This section is for running the adapter yourself in front of an AiVikings.ai backend.

The adapter is a public Streamable HTTP MCP layer over the AiVikings.ai registrar REST API. The tools keep their parameter schemas, descriptions and safety annotations, and call the backend over HTTP. The backend owns business logic, authentication, customer isolation, scopes, provider access and audit persistence.

This repository contains no registrar backend, database models, provider adapters, frontend assets, internal runbooks or production environment files. It installs and builds without access to either private repository.

Run locally

Requires Python 3.12+ and a running AiVikings.ai backend exposing /v1/mcp.

bash
python3 -m venv .venv. .venv/bin/activatepython -m pip install -e ".[dev]"cp .env.example .env# Configure AIVIKINGS_API_BASE_URL to reach the backend.aivikings-mcp

The endpoint is http://127.0.0.1:8081/mcp. Clients send their own AiVikings.ai bearer API key or OAuth access token. The adapter verifies it through the backend and forwards it with each tool call. There is no privileged fallback token. Token revocation and customer/scope checks stay authoritative in the backend. Anonymous initialize, tools/list and ping discovery remain available.

GET /healthz is a local process health check, not an upstream readiness check. /.well-known/oauth-protected-resource advertises the public backend as the OAuth authorization server. AIVIKINGS_API_BASE_URL is an internal HTTP address; AIVIKINGS_PUBLIC_API_BASE_URL and AIVIKINGS_MCP_URL must be externally reachable for real OAuth clients. OAuth issuance and signing secrets remain in the backend.

Docker

bash
docker compose up --build

The standalone Compose default reaches the backend's published port 8080 using host.docker.internal. Set the upstream/public URLs for your deployment. If you copy .env.example first, replace its localhost upstream with an address reachable from inside the container. No private source checkout is mounted.

Tests

bash
pytest

Tests use a simulated HTTP backend and exercise discovery, bearer challenges, per-request identity, tool schemas and error sanitization without a database. Backend rejection is returned as an HTTP-status tool error; private upstream response bodies are not exposed to MCP clients. Review backend logs for details.

The optional Claude demonstration client is installed with python -m pip install -e ".[demo]"; configure its client-side ANTHROPIC_API_KEY and AIVIKINGS_MCP_API_KEY before aivikings-demo-agent. Its sample transcript in examples/ is historical and illustrative.

License

MIT

来源:README.md,提交 cda382f

工具

34

get_domain_audit_log

Read append-only domain change history for the authenticated customer. Omit domain for portfolio history. Requires audit:read. Results are newest recorded first; pass next_cursor with the same filters for another page. Times must include a timezone. Requested, state_changed, and outcome events share an operation_id. Accepted is not proof of provider completion. History starts when domain auditing was enabled; agent labels are self-reported.

输入参数limitactioncursordomainto_timestampfrom_timestamp

get_current_user

Return the authenticated AIvikings customer for the current bearer API key, including name and email when the key belongs to a customer.

无需输入参数。

check_domain_availability

Check availability for up to 200 domain names through AIvikings. depth="fast" answers in about a second without contacting the registry, for brainstorming many names; depth="confirm" (default) asks the registry about every name that might be free and returns prices. A good flow: check many names with depth="fast", then confirm the shortlist with depth="confirm". Each result has a status: available (confirmed by the registry, with price and is_premium), likely_available (no registration found by fast checks, NOT confirmed and has no price), taken, reserved, pending_delete, invalid, unsupported_tld, or unknown (see reason). Never tell the user a likely_available name is available or quote a price for it: confirm it first with depth="confirm". domain_type only classifies name length. Use get_domain_pricing for full price schedules.

输入参数depthdomains必填currency

check_single_domain_availability

Check availability for one domain through AIvikings. depth="confirm" (default) asks the registry and returns the price; depth="fast" answers quickly without a price. Each result has a status: available (confirmed by the registry, with price and is_premium), likely_available (no registration found by fast checks, NOT confirmed and has no price), taken, reserved, pending_delete, invalid, unsupported_tld, or unknown (see reason). Never tell the user a likely_available name is available or quote a price for it: confirm it first with depth="confirm". domain_type only classifies name length. Use get_domain_pricing for the full price schedule.

输入参数depthdomain必填currency

get_domain_pricing

Get a fresh price quote for one domain. Returns customer-facing registration, renewal, and transfer prices, plus is_premium so the user can be told when premium pricing applies. Omit currency to use the returned currency; USD and EUR can be requested explicitly. Prices are not converted: if the requested currency is unavailable, price fields are null with a price_unavailable_reason. Never exposes upstream cost prices.

输入参数domain必填currency

get_prepaid_balance

Return the authenticated customer's prepaid balance for domain purchases. Returns both USD and EUR wallet balances. When automatic currency conversion is enabled, a zero balance in the requested currency does not block registration if the other wallet has enough credit; register_domain converts only the missing amount automatically.

输入参数currency

list_contact_countries

List exact ConnectReseller country names and IDs for creating or updating contacts.

无需输入参数。

list_contact_states

List exact ConnectReseller state names for a country name, country ID, or ISO code. Use the returned name in contact requests.

输入参数country必填

create_contact

Create a reusable contact for domain registration. Use list_contact_countries and list_contact_states to choose valid country and state names. The returned handle can be passed to register_domain and reused for multiple domains. When handle is omitted, it is generated from the company initials (or contact-name initials), four digits, and the country code.

输入参数city必填name必填email必填state必填handleaddress必填country必填postal_code必填organizationphone_number必填default_adminaddress_line_2另有 4 个

get_contact

Get one reusable contact by its handle.

输入参数contact_handle必填

list_contacts

List reusable contacts belonging to the authenticated customer.

无需输入参数。

list_domain_registration_contacts

List the authenticated customer's registrant/contact handles for domain registrations. Returns whether each contact is complete enough for registration, its missing required fields, its default domain-contact roles, and the handle to pass to register_domain. Always call this before attempting a domain registration.

无需输入参数。

assign_domain_registration_contact_roles

Assign one existing contact handle as the default for selected domain-registration roles. Set assign_registrant, assign_admin, assign_technical, and/or assign_billing to true; false leaves that role unchanged. Assigning a role replaces any previous default for that role. Use this when registration validation reports a missing registrant, admin, technical, or billing contact.

输入参数assign_adminassign_billingcontact_handle必填assign_technicalassign_registrant

remove_domain_registration_contact_roles

Remove selected default domain-registration roles from one existing contact handle. Set remove_registrant, remove_admin, remove_technical, and/or remove_billing to true; false leaves that role unchanged. This does not delete the contact. Removing a role without assigning it to another contact can make registration validation fail unless register_domain is called with an explicit registration-ready contact_handle.

输入参数remove_admincontact_handle必填remove_billingremove_technicalremove_registrant

register_domain

Register a domain through AIvikings using the authenticated account's configurable default nameservers when nameservers are omitted. Call list_domain_registration_contacts first and pass contact_handle to use one complete reusable contact for registrant, admin, technical, and billing roles. If there is no registration-ready contact, call create_contact before registration. Set currency to the same USD or EUR currency used for the price quote; otherwise the customer's preferred currency is used. If that wallet is short and automatic conversion is enabled, only the missing amount is converted from the other supported wallet. For a premium domain, first show the current get_domain_pricing quote to the user and set allow_premium=true only after the user explicitly accepts that price.

输入参数domain必填currencynameserversperiod_years必填allow_premiumcontact_handle

get_domain_status

Fetch the latest domain status, expiry and nameservers from the registrar and refresh the saved AIvikings record. Use this for an on-demand update, including pending transfers.

输入参数domain必填

list_domains

List domains recorded in the local registrar datastore.

无需输入参数。

renew_domain

Renew a domain through AIvikings.

输入参数domain必填period_years必填

update_registrant_contact

Update the registrant contact for a domain owned by the authenticated customer. Pass contact_handle by itself to apply an existing reusable contact without copying its fields into a new contact record. Name, organization, or email changes require acknowledge_transfer_lock=true because they initiate registrant verification and can impose a 60-day inter-registrar transfer lock. A provider-accepted change is reported as verification pending until the registrant completes that step.

输入参数citynameemailstatedomain必填addresscountrypostal_codeorganizationphone_numbercontact_handlephone_country_code另有 1 个

update_nameservers

Replace a domain's nameservers through AIvikings.

输入参数domain必填nameservers必填

configure_dns_record

Configure an A record for a domain through AIvikings. Use record_name=@ or omit it for the root/apex record. To create a subdomain, pass a relative name such as www for www.example.com or staging.api for staging.api.example.com. For compatibility, a complete hostname such as www.example.com may also be passed as domain; the server will resolve it against the authenticated customer's longest matching parent domain.

输入参数domain必填record_namerecord_value必填

list_dns_records

List the managed DNS records for a domain owned by the authenticated customer. Use the returned DNS zone record ID when updating or deleting a record.

输入参数domain必填

add_dns_record

Add a managed DNS record to a domain owned by the authenticated customer. Supported types are A, AAAA, CNAME, MX, TXT, NS, and SRV. Relative names are expanded below the domain, including nested names such as staging.api; use @ for the zone apex. SRV records require port and weight.

输入参数domain必填record_ttlrecord_name必填record_portrecord_type必填record_value必填record_weightrecord_priority

update_dns_record

Replace an existing managed DNS record. Call list_dns_records first and pass its DNS zone record ID. All record fields must describe the desired replacement.

输入参数domain必填record_ttlrecord_name必填record_portrecord_type必填record_value必填record_weightrecord_prioritydns_zone_record_id必填

delete_dns_record

Permanently delete a managed DNS record. Call list_dns_records first and pass the exact DNS zone record ID returned by the provider.

输入参数domain必填dns_zone_record_id必填

domain_transfer

Transfer a domain in through AIvikings.

输入参数domain必填auth_code必填period_years

get_transfer_auth_code

Return the EPP transfer auth code for a domain owned by the authenticated customer. The secret is fetched only on demand.

输入参数domain必填

regenerate_transfer_auth_code

Regenerate and return a new EPP transfer auth code for a domain owned by the authenticated customer, invalidating the old code.

输入参数domain必填

lock_domain

Enable the registrar transfer lock for a domain owned by the authenticated customer.

输入参数domain必填

unlock_domain

Disable the registrar transfer lock for a domain owned by the authenticated customer before a transfer-out.

输入参数domain必填

reconcile_domains

Compare locally recorded domains with AIvikings records.

无需输入参数。

create_customer

Create a new customer without generating or returning an API key.

输入参数email必填referred_bycompany_namedisplay_namereferral_codepreferred_currency

get_customer

Get the customer record linked to the current bearer token. A supplied customer ID must match that token.

输入参数customer_id

reconcile_provider_client

Link or create the authenticated customer's registrar client account, preventing duplicate creation.

输入参数customer_id

版本历史

2
  1. v1.0.3最新Oct 24, 2026
  2. v1.0.2Oct 9, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分