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 分