BorealHost
What it does
Agent-native web hosting — deploy sites, manage DNS, register domains, scale infrastructure
- Connects 电脑或云端
- Account or key Cloud: No key needed · Local: Needs BOREALHOST_API_KEY
- Category 开发者工具
安装
选择你使用的 AI 应用,然后复制设置。
通过 3/5 项检查 · 你的提问会经过开发者的服务器(borealhost.ai)
第一步:你用哪个 AI?
选择你用的应用,步骤会显示在下方。
可连接 Claude · 约 2 分钟
不需要密钥,不用安装程序 · 在 claude.ai 或桌面应用设置一次,即可在聊天中使用 · 免费账户可添加 1 个 · Team/Enterprise 方案由所有者(Owner)添加
打开 Claude 的 Connectors 页面
CustomizeConnectors
点击“Add” → “Custom” → “Web”,填写这 2 项
把这里的内容复制到 Claude 中同名的输入框,然后点击 Continue
Name · 名称正在检查命令 · 通过后才会显示复制按钮
Remote MCP server URL · 地址正在检查命令 · 通过后才会显示复制按钮
在 Claude 检测到的登录设置页点击 Continue · Authentication 按作者说明选择(Sign in now、Sign in when needed 或 No sign in),然后点击 Add
在聊天中开启
+ConnectorsBorealHost
试一试
用 BorealHost 告诉我你能帮我做什么,然后做一件给我看✓ 如果 Claude 说正在使用 BorealHost,或回答中出现 BorealHost 的工具名称,就表示连接成功
菜单名称已于 2026年11月11日 对照 Anthropic 帮助页面核实 · 你的界面可能因版本略有不同
能否连接 ChatGPT 取决于方案
完整 MCP:网页版 ChatGPT Business、Enterprise 或 Edu · Pro:以读取/获取权限连接,修改数据的工具可能用不了 · Plus:官方文档尚未确认,如果在插件页看到添加自定义 MCP 的选项可以试试 · 仅限网页
在网页版 ChatGPT 打开添加 MCP 的页面
Plugins+Add custom MCP server
填写名称和地址
输入名称,在 Connection 下粘贴地址,勾选风险提示,然后点击 Create as a plugin
Name · 名称正在检查命令 · 通过后才会显示复制按钮
Connection · 地址正在检查命令 · 通过后才会显示复制按钮
在聊天中选择 BorealHost
开启新聊天,输入前先从插件列表中选择 BorealHost
试一试
用 BorealHost 告诉我你能帮我做什么,然后做一件给我看✓ 如果 ChatGPT 说正在使用 BorealHost,或回答中出现 BorealHost 的工具名称,就表示连接成功
菜单名称已于 2026年11月11日 对照 OpenAI 帮助页面核实 · 你的界面可能因版本略有不同
可连接 Claude Code · 约 2 分钟
不需要密钥,不用安装程序
打开终端
Mac:按 Command+空格,输入 Terminal · Windows:打开 PowerShell
粘贴这条命令并按 Enter
正在检查命令 · 通过后才会显示复制按钮
在 Claude Code 中输入 /mcp
应能看到 BorealHost 在列表中并显示已连接
试一试
用 BorealHost 告诉我你能帮我做什么,然后做一件给我看✓ 如果 Claude Code 说正在使用 BorealHost,或回答中出现 BorealHost 的工具名称,就表示连接成功
菜单名称已于 2026年11月11日 对照 Anthropic 帮助页面核实 · 你的界面可能因版本略有不同
可连接 Cursor · 约 2 分钟
不需要密钥,不用安装程序
点击这个按钮打开 Cursor
正在检查命令 · 通过后才会显示复制按钮
在 Cursor 中以 Agent 模式打开 AI 聊天
试一试
用 BorealHost 告诉我你能帮我做什么,然后做一件给我看✓ 如果 Cursor 说正在使用 BorealHost,或回答中出现 BorealHost 的工具名称,就表示连接成功
菜单名称已于 2026年11月11日 对照 Cursor 帮助页面核实 · 你的界面可能因版本略有不同
可连接 VS Code · 约 2 分钟
不需要密钥,不用安装程序
点击这个按钮打开 VS Code
正在检查命令 · 通过后才会显示复制按钮
在 VS Code 中以 Agent 模式打开 AI 聊天
试一试
用 BorealHost 告诉我你能帮我做什么,然后做一件给我看✓ 如果 VS Code 说正在使用 BorealHost,或回答中出现 BorealHost 的工具名称,就表示连接成功
菜单名称已于 2026年11月11日 对照 VS Code 帮助页面核实 · 你的界面可能因版本略有不同
其他支持 MCP 的应用(如 Windsurf、Zed、Gemini CLI)添加方式各不相同,请在应用列表中查看
通过网页连接的应用使用的地址
正在检查命令 · 通过后才会显示复制按钮
JSON 设置在下方“开发者专用”中
开发者专用:终端命令和 JSON 设置
通过网页连接
Claude Code
正在检查命令 · 通过后才会显示复制按钮
Cursor (~/.cursor/mcp.json)
正在检查命令 · 通过后才会显示复制按钮
VS Code (mcp.json)
正在检查命令 · 通过后才会显示复制按钮
安装在电脑上
Claude Code
正在检查命令 · 通过后才会显示复制按钮
Claude Desktop (claude_desktop_config.json)
正在检查命令 · 通过后才会显示复制按钮
Cursor (~/.cursor/mcp.json)
正在检查命令 · 通过后才会显示复制按钮
VS Code (mcp.json)
正在检查命令 · 通过后才会显示复制按钮
需要你填写的值
BOREALHOST_API_KEY机密 envBorealHost API key (format: bh_<48 hex chars>). Optional — you can also call register() or set_api_key() at runtime.
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
一览
哪些应用可以使用它
依据这个服务器的连接方式和各应用自己的文档,检查于 2026年11月10日。
通过互联网连接,适用于
ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast
在你的电脑上运行,适用于
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
它能做什么
工具名称和描述与服务器在 2026年11月9日 报告的完全一致。这些内容由作者撰写,不是我们写的;我们以纯文本形式显示。
set_api_keySet your BorealHost API key for this session. Call this if you already have an API key (from checkout completion, the BorealHost panel, or a container claim). All subsequent tool calls will use this key for authentication. Args: api_key: Your BorealHost API key (format: bh_<48 he
whoamiCheck the current API key's account info, scopes, and site count. Requires: BOREALHOST_API_KEY env var (read scope). Returns: {"user": {"id": "uuid", "email": "...", "date_joined": "iso8601"}, "api_key": {"id": "uuid", "name": "...", "prefix": "bh_...", "scopes": ["read", "write"
request_api_keyRequest an API key for a site YOU ARE RUNNING ON (challenge-response). ⚠ ONLY USE THIS IF YOU ARE EXECUTING INSIDE THAT SITE'S OWN CONTAINER. If you bought or ordered the site from somewhere else, this is the wrong tool: it returns "pending" and the pending never resolves, becaus
claim_api_keyClaim an API key using a claim token from the container. After calling request_api_key(), read the claim token from the path that call returned in `claim_path`, on that site's container, and pass it here. The token is single-use — once claimed, it cannot be used again. The API ke
list_plansList available hosting plans with pricing and resources. No authentication needed. Args: track: Filter by plan track. Valid values: "single_site", "agency". ⚠ The track is not the site count — most plans on BOTH tracks include several sites (site_starter 5, site_plus 8, site_pro
create_checkoutStart a new checkout session to purchase a hosting plan. No authentication needed. After creating, call update_checkout to set buyer info, then complete_checkout to pay. The response carries a `checkout_secret`, returned ONCE, that every later step of this checkout requires. It i
update_checkoutSet buyer email and desired site slug on a checkout session. The checkout must be in "not_ready" status. Setting requested_slug transitions status to "ready" (required before completing). Args: checkout_id: Checkout session ID from create_checkout buyer_email: Optional email — if
complete_checkout看起来像是对 AI 下的指令Complete checkout with payment and start site provisioning. The checkout must be in "ready" status. Two payment methods: - "stripe_checkout" (default): Returns a short, chat-safe payment URL. **Present `payment_url` to the human — NOT `stripe_checkout_url`.** The raw Stripe URL h
get_checkout_statusPoll a checkout session for status updates. Call this after complete_checkout to track payment and provisioning. Polling strategy: - First 60 seconds: every 5 seconds - After 60 seconds: every 15 seconds - Stop after 10 minutes if not completed Checkout statuses (in order): - "no
list_checkoutsList checkouts belonging to the authenticated account. Requires: API key. Only checkouts with a recorded owner appear — every checkout created while authenticated, plus every checkout that reached payment. An anonymous checkout whose one-shot secret was lost cannot be listed; cre
cancel_checkoutAbandon an unpaid checkout and expire its Stripe payment link. Use this to clean up abandoned attempts rather than leaving them to sit. A completed checkout is never cancelled here — that would be a refund, and it is refused. Args: checkout_id: Checkout session ID Returns: The ch
add_siteProvision a site into a slot a plan you ALREADY PAY FOR includes. Two different things can be meant by "create a site". Buying one is the checkout flow (create_checkout → update → complete). This is the other: most plans include several sites, and this uses one of them at no extr
set_site_typeChange what a site's docroot IS, without deleting anything. Types: wordpress WordPress, PHP and a database (the default) php PHP and a database, no WordPress php-nodb PHP, no database static-site HTML/CSS/JS only, no PHP and no database ⚠ NON-DESTRUCTIVE. Existing files stay on d
get_walletThe account's prepaid balance, and what THIS key may spend from it. Two ceilings, and both apply: the balance bounds the ACCOUNT, the allowance bounds this KEY within it. Plan against `spendable_cents`, which is the lower of the two — a $50 balance behind a $5 allowance means $5,
get_site_statusGet detailed status of a hosted site including resources, domains, and modules. Requires: API key with read scope. Args: slug: Site identifier (the slug chosen during checkout) Returns: {"slug": "my-site", "plan": "site_starter", "status": "active", "domains": ["my-site.borealhos
manage_dnsCreate or delete DNS records for a site. Requires: API key with write scope. Args: slug: Site identifier action: "create" or "delete" record_type: "A", "AAAA", "CNAME", "MX", "TXT", or "SRV" subdomain: Subdomain part (e.g. "www", "mail"). Leave empty for the apex/root domain. val
install_appInstall an app template on a VPS/Cloud site. Starts a background installation. Poll get_app_status() for progress. Requires: API key with write scope. VPS or Cloud plan only. Args: slug: Site identifier template: App template slug. Available: django, laravel, nextjs, nodejs, nuxt
get_app_statusGet app installation status and log. Poll this after install_app() to track progress. Requires: API key with read scope. Args: slug: Site identifier app_id: App ID from install_app() response Returns: {"id": "uuid", "app_name": "myapp", "status": "running"|"installing"|"failed",
list_appsList installed apps on a site. Requires: API key with read scope. Args: slug: Site identifier Returns: {"apps": [{"id": "uuid", "app_name": "myapp", "template_slug": "django", "status": "running", "domain": "myapp.mysite.borealhost.ai"}]}
list_snapshotsList all snapshots and scheduled snapshots for a site. Requires: API key with read scope. Args: slug: Site identifier Returns: {"snapshots": [{"id": "uuid", "name": "snap-...", "status": "completed", "storage_type": "local"|"b2", "size_bytes": 1234, "size_display": "1.2 Mo", "cre
create_snapshotCreate a local container snapshot (async). Runs in background — returns immediately with status "creating". Poll list_snapshots() to check when status becomes "completed" or "failed". Available for VPS, dedicated, and cloud plans (any plan with max_snapshots > 0). Local snapshots
create_b2_snapshotCreate a B2 cloud-backed snapshot (zero local disk, async). Streams container data directly to Backblaze B2 via restic. No local disk impact — billed separately at cost+5%. Runs in background — returns immediately with status "creating". Poll list_snapshots() to check when status
delete_snapshotDelete a snapshot (local or B2). Requires: API key with write scope. Args: slug: Site identifier snapshot_id: UUID of the snapshot to delete Returns: {"success": true, "message": "Snapshot deleted"} Errors: NOT_FOUND: Snapshot not found
rollback_snapshotRollback a site to a previous snapshot. WARNING: This is destructive. The current state of the container will be replaced with the snapshot contents. Requires: API key with admin scope. Args: slug: Site identifier snapshot_id: UUID of the snapshot to rollback to Returns: {"succes
get_snapshot_usageGet snapshot disk usage and quota info for a site. Requires: API key with read scope. Args: slug: Site identifier Returns: {"disk_quota_gb": 200, "max_snapshots": 5, "snapshot_count": 2, "local_snapshot_bytes": 1234, "b2_snapshot_bytes": 5678, "can_create": true}
schedule_snapshotSchedule a snapshot for future execution. Requires: API key with write scope. Max 3 pending schedules per site. Args: slug: Site identifier scheduled_at: ISO 8601 datetime (must be in the future) description: Optional description (max 200 chars) Returns: {"id": "uuid", "scheduled
cancel_scheduled_snapshotCancel a scheduled snapshot. Requires: API key with write scope. Args: slug: Site identifier schedule_id: UUID of the scheduled snapshot to cancel Returns: {"success": true, "message": "Scheduled snapshot cancelled"} Errors: NOT_FOUND: Schedule not found or already executed
list_backupsList all backups for a site (automatic and manual). Requires: API key with read scope. Args: slug: Site identifier Returns: [{"id": "uuid", "backup_type": "auto"|"manual", "status": "completed", "size_bytes": 1234, "size_display": "1.2 Mo", "timestamp": "iso8601", "notes": "..."}
create_backupCreate a manual backup (runs asynchronously). The backup starts in the background. Poll list_backups() to check status. Requires: API key with write scope. Args: slug: Site identifier Returns: {"id": "uuid", "status": "pending", "message": "Backup started. Poll list_backups() to
browse_backupList one bounded page of immediate children in a backup directory. This returns names and metadata only, never file contents. Use ``next_cursor`` from the response as ``cursor`` to request the next page. Requires: API key with read scope. Args: slug: Site identifier backup_id: UU
recover_backup_filesStart a selected-file recovery and return its durable ID immediately. Existing destination paths are never replaced. The operation is asynchronous; poll ``get_file_recovery`` with the returned ID. Requires: API key with write scope. Args: slug: Site identifier backup_id: UUID of
get_file_recoveryPoll one selected-file recovery without waiting for it to finish. Requires: API key with read scope. Args: slug: Site identifier backup_id: UUID of the source backup recovery_id: UUID returned by ``recover_backup_files`` Returns: {"id": "uuid", "backup_id": "uuid", "status": "run
recover_backup_databaseRecover exactly one absent database from a completed backup. The operation refuses an existing database and can never select ``all``. It returns immediately; poll ``get_database_recovery`` with its durable ID. Requires: API key with write scope. Args: slug: Site identifier backup
get_database_recoveryPoll one database recovery without waiting for completion. Requires: API key with read scope. Args: slug: Site identifier backup_id: UUID of the source backup recovery_id: UUID returned by ``recover_backup_database``
restore_backupRestore a site from a backup. WARNING: This is destructive. The current state of the site will be replaced. Runs asynchronously — may take several minutes. Requires: API key with admin scope. Args: slug: Site identifier backup_id: UUID of the backup to restore from Returns: {"suc
get_metricsGet traffic and performance metrics for a site. Requires: API key with read scope. Args: slug: Site identifier days: Number of days of history (1–90, default: 7) Returns: {"requests": [...], "bandwidth": [...], "errors": [...], "period": {"start": "iso8601", "end": "iso8601"}} Er
scaleChange a site's hosting plan (upgrade or downgrade). Requires: API key with admin scope. Best practice: create a snapshot before downgrading. Args: slug: Site identifier new_plan: Target plan slug (e.g. "site_pro", "site_managed"). Call list_plans() to see available plans. Return
decommissionDelete a site and schedule resource cleanup (7-day grace period). WARNING: This is destructive. The site will be inaccessible immediately. After the grace period, its active service data is deleted. A final backup remains recoverable for 30 days; immutable copies may remain until
update_accountUpdate account profile fields (email, language, name). Requires: API key with write scope. Only provided (non-empty) fields are updated. Args: email: New email address language: Language preference — "fr" (French) or "en" (English) first_name: First name last_name: Last name Retu
delete_accountPermanently anonymize the account. Cancels subscriptions, deactivates keys. WARNING: This is irreversible. The account will be soft-deleted and all personal data anonymized. All sites will be decommissioned. Requires: API key with admin scope. Returns: {"success": true, "message"
list_subscriptionsList all subscriptions with plan details, pricing, status, and site slug. Requires: API key with read scope. Returns: [{"id": "uuid", "plan_slug": "site_starter", "plan_name": "Starter", "status": "active", "billing_period": "monthly", "price": {"amount": 500, "currency": "cad"},
get_billing_portalGet a Stripe billing portal URL for managing payment methods and invoices. Returns a URL (not a redirect) that the human can open in a browser. Requires: API key with read scope. Args: flow: Optional. Set to "payment_method_update" to go directly to the payment method update page
rotate_keyRotate an API key, optionally keeping the old key valid for up to 1,440 minutes. Creates a new key with the same name, scopes, and rate limits. The new key is returned once — store it immediately. Requires: API key with write scope. Args: key_id: UUID of the API key to rotate (ge
create_api_keyCreate a new API key with specified scopes. Cannot create keys with higher scopes than the current key. Site-scoped keys restrict access to a single site. email_domains restricts the key to email tools on the named domains; use email:read, email:write and optionally email:signon
list_api_keysList all API keys for the account. Shows key metadata (name, prefix, scopes, last used) but never the full key value. Requires: API key with read scope. Returns: [{"id": "uuid", "name": "My Key", "prefix": "bh_a2...", "scopes": ["read", "write"], "is_active": true, "created_at":
revoke_api_keyRevoke (deactivate) an API key. The key stops working immediately. Requires: API key with write scope. Args: key_id: UUID of the key to revoke (from list_api_keys or whoami) Returns: {"success": true, "message": "API key revoked"} Errors: NOT_FOUND: Key not found or already revok
get_ssh_infoGet SSH connection info for a VPS/dedicated site. Only available for VPS/dedicated plans (not shared hosting). Requires: API key with read scope. Args: slug: Site identifier Returns: {"host": "184.107.x.x", "port": 22, "username": "admin", "ssh_command": "ssh admin@184.107.x.x"}
add_ssh_keyInject your SSH public key into a site's container for direct SSH access. The key is appended to /home/admin/.ssh/authorized_keys. Only available for VPS/dedicated plans. Requires: API key with write scope. Args: slug: Site identifier public_key: SSH public key string. Supported
list_filesList files and directories in a site's container. Path scoping depends on the plan: - Shared plans: rooted at wp-content/ (WordPress content directory) - VPS/dedicated plans: full filesystem access Requires: API key with read scope. Args: slug: Site identifier path: Relative path
read_fileRead the contents of a file from a site's container. Max file size: 512KB. Binary files are rejected — use the site's file manager or SSH for binary files. Requires: API key with read scope. Args: slug: Site identifier path: Relative path to the file Returns: {"path": "wp-config.
write_fileWrite or overwrite a text file in a site's container. Creates parent directories if they don't exist. Requires: API key with write scope. Args: slug: Site identifier path: Relative path to the file content: File content as a UTF-8 string Returns: {"success": true, "path": "...",
upload_fileUpload a base64-encoded file to a site's container. Use this for binary files (images, archives, fonts, etc.). For text files, prefer write_file(). Requires: API key with write scope. Args: slug: Site identifier path: Relative path including filename (e.g. "images/logo.png") cont
delete_fileDelete a file or directory from a site's container. Directories are deleted recursively. Protected system paths (e.g. /etc, /usr) cannot be deleted. Requires: API key with write scope. Args: slug: Site identifier path: Relative path to delete Returns: {"success": true, "path": ".
create_directoryCreate a directory in a site's container. Creates parent directories if they don't exist. Requires: API key with write scope. Args: slug: Site identifier path: Relative path of the directory to create Returns: {"success": true, "path": "uploads/2024", "message": "Directory create
list_pluginsList installed WordPress plugins with status. Requires: API key with read scope. WordPress sites only. Args: slug: Site identifier Returns: {"plugins": [{"name": "akismet", "status": "active", "version": "5.3", "update_available": false}, ...]}
list_themesList installed WordPress themes with status. Requires: API key with read scope. WordPress sites only. Args: slug: Site identifier Returns: {"themes": [{"name": "twentytwentyfour", "status": "active", "version": "1.0", "update_available": false}, ...]}
manage_pluginInstall, activate, deactivate, or delete a WordPress plugin. Requires: API key with write scope. Args: slug: Site identifier action: "install", "activate", "deactivate", or "delete" plugin: Plugin slug (e.g. "akismet", "jetpack", "woocommerce") Returns: {"action": "install", "plu
manage_themeInstall, activate, or delete a WordPress theme. Requires: API key with write scope. Args: slug: Site identifier action: "install", "activate", or "delete" theme: Theme slug (e.g. "twentytwentyfour", "astra") Returns: {"action": "install", "theme": "astra", "result": {...}}
wp_check_updatesCheck for available WordPress core, plugin, and theme updates. Requires: API key with read scope. Args: slug: Site identifier Returns: {"core": {"current": "6.5", "update": "6.6"}, "plugins": [{"name": "...", "current": "1.0", "new": "1.1"}], "themes": [...]}
wp_update_allUpdate WordPress core, all plugins, and all themes. Runs all updates in sequence. May take up to 2 minutes. Requires: API key with write scope. Args: slug: Site identifier Returns: {"core": {...}, "plugins": [...], "themes": [...]}
基础检查i
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月13日
讨论
提问、分享技巧或报告无法使用。按“有帮助”数量排序。
用户评价
还没有评价
与“开发者工具”中的其他服务器比较i
- 星标数多于此分类中其他 5836 个服务器的 0%
- 发布到注册中心的时间比此分类中其他 5836 个服务器的 33% 更新
- 基础检查结果等于或优于此分类中其他 5836 个服务器的 10%
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
常见问题
BorealHost 安全吗?
它在 5 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
它需要哪些密钥或代码?
你需要填写:BOREALHOST_API_KEY
它在我的电脑上运行还是在云端?
两种方式都可以:安装在你的电脑上,或者连接云端版本。
它还在维护吗?
GitHub 仓库最后更新于2个月前,最新版本(0.4.2)于2个月前进入注册中心。
哪些应用可以使用它?
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,因此也能用于接受远程 MCP 的应用,例如网页版 ChatGPT(Business 及以上为完整 MCP;Pro 为只读)。
有什么可以替代它?
同一分类中有:REA, GitHub, Serena MCP: the IDE for your agent
同类别的其他选择
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Serena MCP: the IDE for your agent
A powerful toolkit for coding, providing semantic retrieval and editing capabilities.
作者的 README
打开 README
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
BorealHost MCP Server
Agent-native web hosting tools for the Model Context Protocol.
Connect any MCP-compatible AI agent to BorealHost.ai — purchase hosting, deploy sites, manage DNS, register domains, and scale infrastructure, entirely through tool calls.
Quick Start
Remote Server (Recommended)
No installation needed. Connect directly to the hosted server:
{
"mcpServers": { "borealhost": { "type": "streamable-http", "url": "https://borealhost.ai/mcp/" } } }
Local Installation (pip)
pip install borealhost-mcp
Then run:
borealhost-mcp
Or add to your MCP client config:
{
"mcpServers": { "borealhost": { "command": "borealhost-mcp" } } }
Environment Variables
| Variable | Description |
|---|---|
BOREALHOST_BASE_URL | API base URL (default: https://borealhost.ai) |
BOREALHOST_API_KEY | Pre-configured API key (optional — you can also call register() or set_api_key() at runtime) |
What Can It Do?
BorealHost MCP exposes 47 tools across the full hosting lifecycle:
Authentication & Identity
register— Create an agent account and get an API key (no auth needed)set_api_key— Activate an existing key for the sessionwhoami— Verify your key and check account inforequest_api_key/claim_api_key— Challenge-response auth for on-site agents
Plan Discovery & Checkout
list_plans— Browse hosting plans with pricing (CAD)create_checkout/update_checkout/complete_checkout/get_checkout_status— Full purchase flow with Stripe
Site Management
get_site_status— Check site health, resources, and configurationmanage_dns— Create and delete DNS records (A, AAAA, CNAME, MX, TXT, SRV)deploy— Trigger site deploymentscale— Upgrade or downgrade hosting plandecommission— Delete site (7-day grace period)
Applications
install_app— Install from templates: Django, Laravel, Next.js, Node.js, Nuxt.js, Rails, staticget_app_status/list_apps— Monitor installations
File Management
list_files/read_file/write_file/upload_file/delete_file— Full filesystem access
Snapshots & Backups
list_snapshots/create_snapshot/delete_snapshot/rollback_snapshot— Local snapshotscreate_b2_snapshot— Cloud-backed snapshots (Backblaze B2)schedule_snapshot/cancel_scheduled_snapshot— Scheduled snapshotsget_snapshot_usage— Check quotalist_backups/create_backup/restore_backup— Automatic and manual backups
Domains
search_domain— Check availability and pricingregister_domain— Register with WHOIS info (supports .ca, .com, .net, etc.)list_domains/domain_detail— Manage owned domains
SSH & Logs
get_ssh_info/add_ssh_key— SSH access for VPS plansget_logs— Retrieve error, access, and PHP logs
Modules
list_modules/toggle_module— Enable/disable AI modules (SEO, translation, content)
Account & Billing
update_account/delete_account— Profile managementlist_subscriptions/get_billing_portal— Billing info and Stripe portalrotate_key— Rotate API keysget_metrics— Traffic and performance metrics
Resources
The server exposes 5 MCP resources for structured reference data:
| URI | Description |
|---|---|
borealhost://api/errors | Error codes with HTTP status and recovery guidance |
borealhost://api/scopes | API key scope hierarchy and tool requirements |
borealhost://api/enums | Valid enum values (checkout status, DNS types, log types, etc.) |
borealhost://api/response-format | API response envelope documentation |
borealhost://plans | Live plan catalog with current pricing |
Prompts
5 guided workflow prompts for common operations:
- `purchase_hosting` — Step-by-step plan purchase flow
- `setup_site` — Post-purchase site configuration
- `manage_dns` — Common DNS operations
- `register_domain` — Domain registration with WHOIS checklist
- `claim_site_key` — Challenge-response key claiming
Example Workflow
Agent: register()
→ {"api_key": "bh_...", "scopes": ["read", "write"]}
Agent: list_plans() → [{"slug": "starter", "price_monthly": 9.99, ...}, ...]
Agent: create_checkout("bh_site_starter_monthly") → {"checkout_id": "chk_...", "checkout_secret": "..."}
Agent: update_checkout("chk_...", requested_slug="my-new-site") → {"status": "ready"}
Agent: complete_checkout("chk_...") → {"payment_url": "https://borealhost.ai/pay/chk_.../?s=...", "confirmation_url": "https://borealhost.ai/pay/chk_.../confirmation/?s=..."}
show payment_url to the human; paying provisions the site
Agent: get_checkout_status("chk_...") # poll until completed → {"status": "completed", "api_key": "bh_...", # shown ONCE "site": {"slug": "my-new-site", "status": "active"}}
Agent: get_site_status("my-new-site") → {"status": "active", "url": "https://my-new-site.borealhost.ai"}
Authentication
- API key format:
bh_+ 48 hex characters - Scopes:
read(view) →write(modify) →admin(delete/scale) - No auth needed for:
list_plans,create_checkout,update_checkout,complete_checkout,get_checkout_status - Keys are shown once on creation — store immediately
Requirements
- Python 3.10+
- Dependencies:
mcp[cli]>=1.2.0,httpx>=0.27.0
Links
License
Proprietary. Copyright 2025-2026 BorealHost.ai. All rights reserved.