mcpField
V
VPSnet

VPSnet

远程服务
vpsnet.com云与基础设施02 天前更新

关于 VPSnet

VPSnet MCP 服务让客户通过 AI 助手管理 VPSnet 基础设施和账户服务。其任务型工具涵盖服务器生命周期、网络、域名、账单及托管应用,并由后端执行客户权限控制。

主要功能

  1. 01管理 VPS 生命周期和套餐
  2. 02配置 DNS、域名与证书
  3. 03安装并检查托管应用
  4. 04管理 SSH 密钥和备份
  5. 05查看账单与账户操作

适用场景

  1. 01重启或重装 VPS
  2. 02配置 DNS 记录或域名服务
  3. 03部署并排查托管应用
  4. 04查看发票或备份选项

MCP 相关

该服务通过本地 stdio/API 密钥和远程 OAuth 连接选项,向 MCP 客户端提供 VPSnet API 操作。任务型工具包含读取和变更操作,适用操作需遵循权限控制和确认要求。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.vpsnet.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

vpsnet-mcp

用于管理 VPSnet.com 服务的 Model Context Protocol(MCP)服务。通过 VPSNet API,向 AI 助手提供 VPS 生命周期操作、托管应用、DNS 区域、域名注册和联系人、账单、API 密钥元数据、SSH 密钥配置及相关账户工具。

功能

  • 280+ 个工具,涵盖 VPSNet 服务管理、托管应用、免费和付费 TLS 证书、Automatic SSL 订阅、DNS、域名、账单、API 密钥和账户操作
  • 账户和个人资料管理
  • VPS 生命周期管理(启动、停止、重启、重装操作系统)
  • 套餐变更(可免费升级或降级;KVM/Firecracker 磁盘无法缩小)
  • 服务反向 DNS(rDNS/PTR 记录)
  • 正向 DNS 区域、记录、DNSSEC、模板、导入/导出和 DDNS 令牌
  • 域名可用性、联系人、注册/转移/续费/恢复报价及付费确认
  • 受发布限制的托管应用,支持安装、运行状况检查、事件和类型化生命周期操作
  • SSH 密钥管理——部署密钥并直接访问服务器
  • API 密钥元数据检查(密钥创建、变更和撤销仍仅限会话内操作)
  • 备份、账单、发票
  • 订购新的 VPS 实例
  • 系统状态和定价

远程 OAuth 连接器

远程配置文件还包含受权限范围限制的 DNS、域名和证书管理、公共 SSH 密钥、服务器恢复及备份浏览功能。它使用与控制面板相同的客户 API;后端会对每个请求执行权限检查。

远程连接器使用 https://mcp.vpsnet.com/mcp,并通过 VPSnet 获取客户授权。请参阅远程 AI 连接,了解连接设置、 权限和支持的操作。 如需了解授权过期或被撤销,以及授权选项不可用时的处理方法,请参阅 重新连接和请求的权限。

可分发的插件 README、清单和技能均为英文。 请参阅目录发布准备情况,了解软件包验证和 发布者要求;请参阅支持的用例, 了解服务器、应用和网络场景。目录发布和提供商账户可用性与安装此源代码相互独立。

请参阅 AI 客户端设置,了解 Gemini CLI、Cursor、Kimi Code、Kiro、 Cline 及其他远程 OAuth 客户端。这些软件包共用相同的 VPSnet 端点和任务技能。npm 软件包提供本地 MCP 服务; 可安装的插件包也包含 AI 应用的清单和技能。

运行 python3 scripts/package-distribution.py,构建所有客户端包。 同一构建还会生成四个独立技能导入包, 供每次导入一个技能文件夹或 ZIP 的客户端使用。 输出包含校验和,并会标明每种格式。公开目录提交材料位于目录套件。

订购使用现有的 VPSnet 连接,并支持由客户控制的购买权限和支出限额。AI 会显示最终价格,并在从账户余额扣款前请求批准。可用性遵循应用的分发规则。

以下说明介绍现有的本地 stdio/API 密钥客户端。

前置条件

安装前,请确保满足以下条件:

  1. Node.js 20 或更高版本

    • 检查:node --version
    • Linux/macOS:访问 nodejs.org 或使用包管理器
    • Windows:运行 winget install OpenJS.NodeJS.LTS,或从 nodejs.org 下载
    • 安装 Node.js 后,重启终端/编辑器
  2. Claude Code(CLI 或 VS Code 扩展)用户:

    • 全局安装 Claude Code CLI:npm install -g @anthropic-ai/claude-code
    • 检查:claude --version
  3. 有效的 VPSnet.com 账户和 API 密钥(请参阅获取 API 密钥)

凭据配置路径

VPSNET_API_KEY 是首选的、按次启动使用的凭据,优先级高于文件。 如需使用基于文件的配置,请将 VPSNET_CONFIG_DIR 设为包含 .vpsnet-mcp-key 或 .mcp.json 的绝对目录路径。密钥文件的优先级高于该 JSON 文件中的 mcpServers.vpsnet.env.VPSNET_API_KEY。或者,可通过 VPSNET_API_KEY_FILE 指定一个绝对密钥文件路径;如果显式指定的文件无法读取或无效,启动将失败,而不会改用其他账户。

如果未设置 VPSNET_CONFIG_DIR,则只会从进程的启动目录(cwd)读取文件。 对于 node /path/to/vpsnet-mcp/build/index.js 和 npx vpsnet-mcp,行为相同:不会搜索包的安装/缓存目录及其父目录。如果编辑器或 MCP 客户端从其他工作目录启动,请显式设置该目录。请勿将凭据文件纳入版本控制。 VPSNET_API_URL 的优先级高于同一 .mcp.json 文件中的 URL;两种来源均适用现有的受信主机和 HTTPS 检查。

托管应用程序

托管应用程序、手动 SSH、DNS、API 以及其他部署方式都是并列的能力。本文档和工具列表中的排列顺序不代表推荐顺序。请选择最符合用户所需结果、目标支持情况、现有状态及明确约束的方式。目录中的应用条目只是可用的托管方式之一,不应成为覆盖有效手动或自定义部署请求的理由。目录中的应用以 Docker 容器形式运行在客户的服务器上,并使用类型化的安装和生命周期工具。

读取应用程序需要 applications:read。安装和生命周期变更需要 applications:manage 及幂等键;普通的应用程序生命周期变更不属于付费 API 密钥操作。CPU、RAM 和磁盘数值是配置建议,并非安装门槛:受支持的应用程序在下单时仍可选择,即使资源低于这些数值也可安装。产品、操作系统、架构和运行时兼容性仍是硬性要求。变更为异步操作,因此请使用 get_application_installation 和 get_application_events 验证。使用 get_application_health 检查最新的容器健康状况,使用 get_application_logs 查看近期、大小受限的排障日志;还可选择只限定到一个精确的 Compose 服务。日志检查最多接受 500 行和 131,072 字节。这两种只读范围的检查会创建短期检查任务,因此 API 密钥必须允许 POST 请求。

安装详情包含应用程序及各容器的 CPU、内存、网络、重启和存储历史记录(在 worker 提供相关数据时),且记录范围有限。容器仅通过 Compose 服务和序号标识。经明确确认后,使用 configure_application_resource_thresholds 替换可选的显示阈值。未提供的值会清除相应阈值;这些阈值仅用于突出显示测量值,不会限制资源、触发服务器操作或影响计费。经明确确认后设置 email_enabled,即可在达到阈值时向账户发送一封邮件,并在指标恢复时再发送一封;同一阈值持续超标期间,不会因重复测量而重复发送。 使用 configure_application_access 更改已安装应用的访问方式。先读取安装信息,并传入当前修订版本和新的幂等键。platform_https 会分配一个不透明的 VPSnet 主机名,并自动配置 DNS 和 HTTPS;private 不设公网监听器;public_http 通过服务器的公网 IP 使用 HTTP;managed_https 使用符合条件的 VPSnet 管理的 DNS 区域。external_https 记录现有的、由客户管理的 HTTPS 地址;VPSnet 不会配置或验证其 DNS、TLS 证书或反向代理。

managed_https 访问方式还可以列出 additional_addresses(每个端点最多 4 个,每个应用最多 8 个):这些是客户自有 VPSnet DNS 区域中的其他名称,每个名称都需包含 zone_id、name、action 和 approve_dns: true。name 为空或为 "@" 时表示该区域的裸域名,因此 example.com 可以与 www.example.com 并列。action 可以是 redirect(默认值;将请求以 301 重定向到主地址,并保留路径和查询参数)或 serve(打开同一应用)。添加或移除其他地址不会更改主地址。此列表代表完整的目标集合:若更改访问方式时省略 additional_addresses,已保存的地址就会被移除;如需保留,请再次传入这些地址。其他地址不支持用于任何其他访问方式,且 VPSnet 不会为此收费。

list_application_registry_credentials 只会公开私有注册表凭据的元数据。注册表令牌的创建和轮换特意不设为 MCP 工具:请使用 VPSnet 控制面板或直接调用 REST API,以避免令牌进入模型提示词或工具参数。元数据可以标识 Docker Hub、GHCR 或精确的自定义 HTTPS 注册表主机名。

客户配方是由客户拥有的 Compose 定义,与 VPSnet 目录蓝图分开管理。它们可以在目标工作节点上验证、保存为不可变修订版本、通过托管生命周期安装,并在不包含机密值的情况下导出。VPSnet 目录配方不可导出。容器发现范围受限且只读:它会报告客户和托管容器,但不会返回环境变量值或挂载信息,也不会接管或修改检测到的容器。受控接管是一个独立流程,包含准备、检查和明确确认,适用于符合条件的 Compose 项目。初始接管仅执行一次,但其确切的外部卷绑定会持续签入后续生命周期操作。只有在确认托管替代容器已完全接管后,恢复操作才会重启源容器;结果不确定时会默认拒绝操作。

仅当 get_application_installation 返回一个 type: "update" 的 available_actions 条目时,才可以执行不可变更新。获得用户明确确认后,使用准确的、已公布的 expected_blueprint_version 和 expected_upstream_version 调用 update_application,并提供新的幂等键。幂等键在客户端范围内全局唯一:只有重放完全相同的请求时才复用同一键,绝不可将其用于其他服务或操作。后端会选择并冻结符合条件的已发布版本;调用方无需提交镜像、标签或目标版本。 不会创建单独的应用备份。在受支持的 Firecracker 服务上, list_application_restore_points 会返回不透明的、应用一致的整台虚拟机夜间还原点,且对应当前安装的确切修订版本。 查看还原点免费,但 API 密钥需要 applications:manage 权限、启用付费操作、applications:restore 付费权限范围,以及完整访问权限,因为响应中包含账户余额。 quote_application_data_restore 会锁定确切费用,但不会扣款。restore_application_data 需要使用返回的报价令牌、相同的幂等键,并明确确认付款和数据替换。付费 API 密钥还需要 applications:restore、启用付费操作,并设置每日/每月支出上限。 该操作仅替换由工作进程派生的已声明应用数据,不包括机密信息和无关的 Docker/服务端数据,并且需要预留回滚空间。轮询 get_application_data_restore;needs_attention 状态仍处于锁定状态,不得视为成功。这些工具不会接受或公开 PBS 凭据、归档名称、设备或文件系统路径。

安装列表和详情响应会包含按平台划分的 capabilities 区块——data_restore、console、compose_adoption、custom_projects 和 log_service_filter——以及单独的 access.capabilities.can_configure 标志。应以这些标志为准,判断安装支持哪些功能,而不是尝试执行操作后再查看失败结果。

卸载会永久删除受管理的容器、配置、已保存的凭据和应用数据;现有的服务端备份会予以保留。调用 uninstall_application 需要设置 acknowledge_data_loss=true,且只能在获得用户明确确认后设置。

MCP 接口面向任务设计,并非对每个 REST 路由逐一镜像。旧版 SMS 微支付和宏支付回调集成仍可通过文档所述的 REST API 和控制面板使用,但有意未作为 MCP 工具公开。公开的登录前订单和域名搜索路由同样提供了经过身份验证的 MCP 对应接口,供需要执行账户操作时使用。

TLS 证书与 Automatic SSL

证书产品并不限于托管应用。可移植的 DV、OV 和 EV 订单可安装在由客户控制的 Web 服务器、代理服务器、邮件服务器、负载均衡器、API 或其他支持 TLS 的系统上。Automatic SSL 订阅则会连接 VPSnet 或其他服务提供商上的兼容 ACME 客户端,并在付费期限内持续更新短期证书。

符合条件的账户还可以通过 get_free_certificate_eligibility → preflight_free_certificate → create_free_certificate 申请免费的可移植 DV 证书。对于 API 或助手部署,请在目标位置创建 CSR,并将其私钥保存在该位置;MCP 只接收公钥 CSR,之后也只返回公钥证书链。由 VPSnet 管理的密钥支持无人值守提前续期,但只能通过门户在双重验证后导出。免费证书、付费证书文件、付费 Automatic SSL 和应用 Managed HTTPS 是独立的产品及生命周期管理界面。

使用 list_certificate_catalog 区分 portable_certificate 与 acme_subscription 方案。Automatic SSL 的订阅流程为 quote_automatic_ssl_subscription → order_automatic_ssl_subscription,必须使用完全不变的请求、报价令牌、幂等键,并明确批准付款。使用 list_automatic_ssl_subscriptions 和 get_automatic_ssl_subscription 查看状态。添加其他名称时,使用 quote_automatic_ssl_domain → order_automatic_ssl_domain;对于基础名称/www 或通配符/基础名称规则已覆盖的名称,API 会阻止重复付款。在最后 30 天内,符合条件的下一期订阅可通过 quote_automatic_ssl_renewal → order_automatic_ssl_renewal 办理,只有在批准确切的欧元总额后,才会从账户余额中预付。取消订阅、移除域名以及修正同类型域名,分别使用 cancel_automatic_ssl_subscription、remove_automatic_ssl_domain 和 replace_automatic_ssl_domain;如状态不明确,应使用 refresh_automatic_ssl_subscription 进行核对,绝不能凭空发起第二次变更。私有 ACME 服务器和 EAB 凭据保存在受双重验证保护的客户门户中,API 密钥和 MCP 无法访问这些凭据,因此它们不会进入模型上下文。

恢复整个服务

request_restore 是一项付费且具有破坏性的操作:它会从账户余额中扣除恢复费用,并用备份时间点的数据覆盖整个服务磁盘,导致此后写入的所有内容丢失。这是确认操作,而非价格查询——如果请求正文中没有明确确认,API 会拒绝请求;如果价格在披露后发生变化,API 会直接拒绝扣款。

此操作界面没有用于收集确认的对话框,因此工具不会自行生成确认信息。acknowledge_data_replacement 和 acknowledge_restore_charge 都必须设为 true,且只有在用户确实批准替换磁盘并支付费用后才能设置——这与 uninstall_application 中的 acknowledge_data_loss 规则相同。省略任一字段都会导致架构错误,因此无人值守的调用方无法在未确认的情况下触发扣款:系统甚至不会生成报价。

expected_total_charged 是你从 get_restore_status 读取并向用户展示的含 VAT total_charged,必须原样传回。调用前不要重新读取该值:它应当是客户同意支付的金额,而刚获取的数字会与当前价格一致,从而彻底失去校验作用。如果价格发生变化,恢复操作会以 restoreQuoteChanged 为由被拒绝,并返回当前总额,且不会扣款;应告知用户新金额,重新获得批准后再试。

浏览备份中的内容

查看备份内容免费,而且与付费还原备份完全无关。list_restore_file_points、browse_restore_files 和 get_restore_file_browse 只读取备份的目录列表:不会向账户收费,不会覆盖磁盘,也不会将文件放回服务器。目前仅支持 Firecracker VPS。

浏览操作是异步的。browse_restore_files 会创建一个持久化任务并将工作排入队列,因此即使备份和正在运行的服务器都未改变,它的 MCP 注解仍为 readOnlyHint: false。它会返回一个处于待处理状态的浏览 ID;请轮询 get_restore_file_browse,直到 state 为 succeeded。只有在该状态下才会有条目;状态为 failed 的浏览结果会包含 errorCode,且不含列表,不得将其当作空目录呈现。

目录可能包含海量文件,因此服务器会根据工作节点的能力选择每页返回 200 或 1,000 个条目。当 result.nextOffset 不为 null 时,请使用相同的 sourceBrowseId 和 directoryEntryId 再次调用,并将该游标设为 offset。向前翻页时,请使用 result.pageSize,不要假定每页有 200 个条目。进入子目录时,请使用 type: "directory" 条目的不透明 id;不接受文件系统路径。条目类型为 file、directory、symlink 和 unsupported。

文件夹搜索(filter 参数)会匹配所列目录中的条目名称——不区分大小写的子字符串匹配;绝不匹配路径,也不递归搜索。该功能依赖旧节点未报告的一项工作节点能力,因此 list_restore_file_points 会返回 searchAvailable。发送筛选条件前,browse_restore_files 会检查该标志;如果不支持搜索,就会失败并返回 serviceFileBrowseSearchUnavailable,而不会悄悄返回未筛选的列表,让人误以为是搜索结果。这些节点仍可正常浏览。

将选定文件还原到服务器是付费操作,因此本处有意不提供此功能;请使用 VPSnet 控制面板。

SSH 访问工作流

此 MCP 服务通过 VPSnet.com API 管理您的 VPS 基础设施,包括 SSH 密钥配置。将 SSH 密钥部署到 VPS 后,AI 助手可以直接通过其环境中的终端连接(例如 Claude Code 的 Bash 工具或 Cline 的终端)。

典型流程:

  1. AI 读取本地计算机的公钥(~/.ssh/id_rsa.pub)
  2. 通过 create_ssh_key 将其上传到 VPSnet.com
  3. 使用明确授予远程 OAuth 所需 vm:exec 权限的 deploy_ssh_key 将其部署到 VPS(或者在使用 order_service 下单时传入密钥)
  4. 直接连接:ssh root@<vps_ip>

大多数 AI 编码环境(Claude Code、Cline、Cursor、Codex)都内置了终端访问功能,因此部署密钥后,AI 可以立即通过 SSH 连接到您的 VPS,无需额外工具。

对于没有原生 SSH 访问功能的环境,可搭配 mcp-server-ssh,通过 MCP 工具直接连接服务器。

组合配置:

{
  "mcpServers": {
    "vpsnet": {
      "command": "npx",
      "args": ["-y", "vpsnet-mcp"],
      "env": {
        "VPSNET_API_KEY": "your_api_key_here"
      }
    },
    "ssh": {
      "command": "npx",
      "args": ["-y", "mcp-server-ssh"]
    }
  }
}

开始使用

选择您的环境:

以下本地 stdio 示例采用多种 MCP 客户端支持的 mcpServers 配置格式。请使用客户端原生的配置架构;VS Code 的 .vscode/mcp.json 使用 servers。如需配置客户 OAuth 和托管连接器,请参阅 AI 客户端配置。

{
  "mcpServers": {
    "vpsnet": {
      "command": "npx",
      "args": ["-y", "vpsnet-mcp"],
      "env": {
        "VPSNET_API_KEY": "your_api_key_here",
        "VPSNET_API_TIMEOUT_MS": "45000"
      }
    }
  }
}
Claude Code
claude mcp add vpsnet -- npx -y vpsnet-mcp

运行前设置环境变量:

export VPSNET_API_KEY="your_api_key_here"
export VPSNET_API_TIMEOUT_MS="45000"
适用于 VS Code 的 Claude Code 扩展 > 本节适用于 **Claude Code VS Code 扩展**,不适用于 GitHub Copilot。如果你在 VS Code 中使用 GitHub Copilot,请改为查看 [VS Code 中的 GitHub Copilot](#vs-code-with-github-copilot) 一节。

步骤 1: 全局安装 Claude Code CLI(扩展必需):

npm install -g @anthropic-ai/claude-code

步骤 2: 通过 CLI 添加 MCP 服务:

claude mcp add vpsnet -- npx -y vpsnet-mcp

步骤 3: 添加 API 密钥。编辑 ~/.claude.json(Windows 上为 C:\Users\<username>\.claude.json),找到 vpsnet 服务部分并添加 env 块:

"vpsnet": {
    "type": "stdio",
    "command": "npx",
    "args": ["-y", "vpsnet-mcp"],
    "env": {
        "VPSNET_API_KEY": "your_api_key_here",
        "VPSNET_API_URL": "https://api.vpsnet.com"
    }
}

步骤 4: 完全重启 VS Code(Ctrl+Shift+P > “Reload Window”,或关闭后重新打开)。

步骤 5: 通过向 Claude 提问来验证:“获取我的 VPSnet 账户信息”

Windows 用户: 运行 claude mcp add 命令时,请使用 PowerShell 或 CMD(而非 Git Bash)。

code --add-mcp 命令不能用于 Claude Code 扩展——它仅适用于 VS Code Copilot。

Claude Desktop

请按照 MCP 安装指南操作,并使用上面的标准配置。

Cline

打开 Cline MCP 设置,并将以下内容添加到 cline_mcp_settings.json:

{
  "mcpServers": {
    "vpsnet": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "vpsnet-mcp"],
      "env": {
        "VPSNET_API_KEY": "your_api_key_here"
      },
      "disabled": false
    }
  }
}
Codex

使用 Codex CLI:

codex mcp add vpsnet --env VPSNET_API_KEY=your_api_key_here -- npx -y vpsnet-mcp

或者编辑 ~/.codex/config.toml:

[mcp_servers.vpsnet]
command = "npx"
args = ["-y", "vpsnet-mcp"]

[mcp_servers.vpsnet.env]
VPSNET_API_KEY = "your_api_key_here"

如果系统默认的 Node.js 版本低于 20(使用 nvm 时很常见——可通过 node --version 检查),请封装该命令,以便 nvm 加载正确的版本:

codex mcp add vpsnet --env VPSNET_API_KEY=your_api_key_here -- bash -lc 'source ~/.nvm/nvm.sh >/dev/null 2>&1 && nvm use --silent 20 && npx -y vpsnet-mcp'

注意: Codex 需要联网才能通过 npx 安装软件包。如果你在无法联网的受限沙盒中运行 Codex,npx 安装将会失败。

Cursor

前往 Cursor Settings > MCP > Add new MCP Server。选择命令类型,并输入命令 npx -y vpsnet-mcp。或者手动将以下内容添加到 .cursor/mcp.json:

{
  "mcpServers": {
    "vpsnet": {
      "command": "npx",
      "args": ["-y", "vpsnet-mcp"],
      "env": {
        "VPSNET_API_KEY": "your_api_key_here"
      }
    }
  }
}
Roo Code

打开 Roo Code MCP 设置,并选择 Edit Global MCP(当前为 mcp_settings.json),或者选择 Edit Project MCP 来配置 .roo/mcp.json:

{
  "mcpServers": {
    "vpsnet": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "vpsnet-mcp"],
      "env": {
        "VPSNET_API_KEY": "your_api_key_here"
      },
      "disabled": false
    }
  }
}
VS Code 中的 GitHub Copilot

如需通过托管的客户 OAuth 连接,请运行 MCP: Add Server 并输入 https://mcp.vpsnet.com/mcp,或者将此 VS Code 原生配置合并到 .vscode/mcp.json 中,同时保留其他服务:

{
  "servers": {
    "vpsnet": {
      "type": "http",
      "url": "https://mcp.vpsnet.com/mcp"
    }
  }
}

按提示完成浏览器登录和授权流程。Copilot 的便携式工作区 .mcp.json 和用户级 ~/.copilot/mcp-config.json 使用顶层 mcpServers 对象。这些格式与 Claude Code 扩展的配置不同。

如需使用单独的本地 stdio 软件包和你自己的 VPSnet API 密钥,请使用 VS Code CLI 安装:

code --add-mcp '{"name":"vpsnet","command":"npx","args":["-y","vpsnet-mcp"],"env":{"VPSNET_API_KEY":"your_api_key_here"}}'

如需手动进行 VS Code 原生配置,请将该本地服务的 command、 args 和私有 env 放在 servers.vpsnet 下,而不要照搬通用的 mcpServers 包装对象。VS Code 的 MCP: Reset Cached Tools 可刷新过期的 工具目录。请参阅官方 MCP 配置。

本节适用于 VS Code 中 GitHub Copilot 的 Agent 模式。如需了解 Claude Code 扩展,请参阅 Claude Code for VS Code Extension 一节。

Windsurf / Devin Desktop

当前的 Windsurf 官方文档会重定向到 Devin Desktop。请选择你正在使用的 Agent:旧版 Cascade 和当前的 Devin Local Agent 使用不同的 MCP 设置路径。

对于 Devin Local,请使用 Devin CLI 添加并验证托管连接器:

devin mcp add vpsnet https://mcp.vpsnet.com/mcp
devin mcp login vpsnet --scopes services:read
这是读取基础权限的请求。若要执行其他任务,请先通过新的授权流程申请相应文档中要求的权限,再批准这些权限。如果授权失效,请使用桌面端的 **Authenticate** 操作,或依次运行 `devin mcp logout vpsnet` 和登录命令。当前 CLI 版本使用专用文件:`.devin/mcp_config.json`、`.devin/mcp_config.local.json` 或用户级 `~/.config/devin/mcp_config.json`。

对于旧版 Cascade,请打开面板中的 Actions → Open MCP config file,并在 mcpServers 下添加一个服务器,设置 serverUrl: "https://mcp.vpsnet.com/mcp"。完成 OAuth 流程。Cascade 的工具总数上限为 100 个,因此请检查已启用的工具。上面的本地 stdio 示例使用的是单独的 API 密钥连接。

请根据所用界面,参阅官方 Devin 本地 MCP 指南或旧版 Cascade 指南。客户端身份验证和 VPSnet 兼容性仍需在实际客户端版本上验证。

Windows 用户

  • 使用 PowerShell 或 CMD(而非 Git Bash)运行 claude mcp add 命令
  • 配置文件位置:C:\Users\<YourUsername>\.claude.json
  • 安装 Node.js:运行 winget install OpenJS.NodeJS.LTS,或从 nodejs.org 下载
  • 安装 Node.js 后,重启终端和 VS Code
  • Claude Code 扩展中的环境变量必须位于 .claude.json 的 env 对象中,不能设置为系统环境变量

环境变量

变量必需描述
VPSNET_API_KEY是你的 VPSnet.com API 密钥
VPSNET_API_URL否API 基础 URL(默认为 https://api.vpsnet.com);部署配置的任意 https://*.vpsnet.com 主机
VPSNET_AI_URL否委派的 SSH 运行时;生产环境使用 https://ai.vpsnet.com。非生产环境必须使用经过批准的 API 源,后接 /ai-control。
VPSNET_AI_API_ORIGIN仅限非生产环境 SSH由运营方批准的 HTTPS VPSnet API 源;必须与 VPSNET_API_URL 完全一致。对于非生产环境部署,请私下设置这两个运行时变量。
VPSNET_API_TIMEOUT_MS否每次请求的超时时间(默认值为 45000)

请求由运行此服务的机器发出,而非浏览器。如果部署限制了来源地址访问,Web 服务器可能会针对被拦截的请求返回 HTML 403 页面;此时工具结果会明确指出这一点(non_api_response: true、http_status: 403),而不会转发该页面。每个错误结果都包含 http_status;429 还会包含 retry_after。

身份验证、范围和付费操作

每个请求都会携带 X-API-KEY 标头(VPSNET_API_KEY)。

  • **使用管理密钥。**其访问级别为 full(读取和更改)或 read(仅限 GET)。AI 范围密钥仅用于 VPSnet AI 助手推理, 在所有账户路由上都会被拒绝,因此这里的工具都无法使用此类密钥; 错误结果会携带 auth_problem,说明原因和解决方法。
  • **细粒度范围只会缩小密钥的权限。**范围列表为空的密钥保留其访问级别 所允许的全部权限;列出范围(例如 dns:read、 services:manage)则会限制权限。X:manage 包含 X:read。网络管理是 例外:networking:read / networking:manage / networking:order 绝不会 由 full 或 read 隐含授予,必须明确授权。
  • **付费操作需要通过单独的门槛检查。**下表中标记为 Paid 或 Quote 的 工具需要 full 访问级别的密钥、paid_operations_enabled、指定的付费范围 (vps:order、vds:order、ds:order、fc:order、domains:order、 domains:renew、domains:transfer、certificates:order、 applications:restore、services:restore、fn:invoke、 networking:order)、已配置的每日和每月支出上限,以及稳定的 idempotencyKey(使用相同的密钥重试结果不确定的请求,绝不要使用新的密钥)。 下单时先获取报价,再使用返回的 quoteToken 确认;确认前须向用户说明准确的 欧元总额。使用 list_api_keys 查看密钥的范围、付费范围、支出上限和速率限制。
  • **速率限制。**请求按密钥进行速率限制(list_api_keys 中的 rate_limit, 即每分钟请求数)。遇到 HTTP 429 时,应等待 retry_after 秒后再重试, 不要立即重试。
  • API 密钥永远不能创建、更改或撤销 API 密钥,也不会获得管理员访问权限。

工具

下表为自动生成:编辑 scripts/tool-scopes.json(或工具注册信息)并运行 npm run docs:tools;如果内容不一致,npm test 会失败。

Scope 是工具所需的细粒度 API 密钥范围(none = 任意管理密钥; a + b = 两者都需要;a or b = 根据对象而定,二选一)。Paid: Paid: x 会扣除账户余额,并需要付费范围 x 以及上述门槛条件; Quote: x 会生成报价但不扣费,不过仍受相同条件限制; 单独的 Paid 会使用 full 访问级别的密钥扣除余额,且不需要单独的付费范围; Needs paid scope: x 表示读取余额或价格数据的操作; Billed while kept 表示初始时段内免费,此后按量计费;其余情况均为 free。

账户
工具描述范围付费
get_account获取账户信息(用户 ID、电子邮件、余额、增值税税率)nonefree
get_profile获取用户个人资料详情(姓名、地址、公司)account:readfree
服务
工具描述范围付费
list_services列出所有活跃的 VPS 服务services:readfree
get_service读取服务详情和下一次就绪状态检查;将资源配置、来宾访问和应用健康状态分别处理services:readfree
get_service_graphs获取一条图表序列:指标(cpu、ram、ssd、net、io、…)和时间范围(5m … 1y)services:readfree
get_event根据异步操作的 event ID 或 noty UUID 读取其状态services:read 或 account:readfree
wait_for_event轮询异步操作,直至完成或出错(或超时)services:read 或 account:readfree
get_service_history获取服务的操作历史记录services:readfree
托管应用
工具描述范围付费
list_application_catalog列出与服务兼容的已发布应用applications:read免费
list_service_applications列出已安装的应用和待处理的结账选择applications:read免费
get_application_installation获取观测到的状态、运行状况、偏差、端点、组件、资源历史记录和阈值applications:read免费
get_application_events获取范围受限且对客户安全的安装事件applications:read免费
get_application_health运行并轮询新的容器运行状况检查applications:read免费
get_application_logs运行并轮询大小受限的近期日志检查applications:read免费
get_application_inspection当 get_application_health 或 get_application_logs 返回的精确持久化运行状况或日志检查仍处于待处理状态时,轮询该检查。applications:read免费
list_application_restore_points列出适用于确切应用修订版的夜间还原点applications:manage需要付费范围:applications:restore
quote_application_data_restore冻结确切的选择性还原余额扣款,但不付款applications:manage报价:applications:restore
restore_application_data付款并排队处理已确认的声明应用数据选择性替换applications:manage付费:applications:restore
get_application_data_restore轮询一个与租户绑定的选择性数据还原applications:read免费
list_application_registry_credentials列出非机密的私有注册表凭据元数据applications:read免费
validate_application_recipe根据目标工作节点策略验证客户 Compose 配置applications:manage免费
get_application_recipe_validation当 validate_application_recipe 或待处理的配方创建/修订返回的精确持久化客户配方验证仍处于待处理状态时,轮询该验证。applications:read免费
list_application_recipes列出客户拥有的不可变配方项目applications:read免费
list_application_recipe_revisions列出客户配方的不可变修订版applications:read免费
create_application_recipe验证并保存新的客户配方,但不安装applications:manage免费
create_application_recipe_revision验证并保存后续的不可变客户配方修订版applications:manage免费
export_application_recipe仅导出客户拥有的配方,不含机密值applications:read免费
install_application_recipe安装确切的已验证客户配方修订版applications:manage免费
discover_service_containers发现范围受限的只读容器元数据applications:read免费
get_service_container_discovery当 discover_service_containers 返回的确切持久化服务容器发现仍处于待处理状态时,轮询该发现。applications:read免费
prepare_application_compose_adoption为一个已发现的 Compose 项目准备并轮询经过清理的候选项applications:manage免费
get_application_compose_adoption轮询一个与租户绑定的 Compose 接管候选项applications:read免费
confirm_application_compose_adoption在获得明确批准后,确认对确切来源的接管applications:manage免费
install_application将已确认且固定版本的托管安装加入队列applications:manage免费
configure_application_access将已确认的平台主机名、私有、公共 IP、托管 HTTPS 或客户管理的外部 HTTPS 访问更改加入队列applications:manage免费
configure_application_resource_thresholds替换已确认的非强制应用资源阈值,以及达到/恢复时的电子邮件偏好设置applications:manage免费
manage_application兼容旧客户端的工具;请使用下方的单项操作applications:manage免费
reconcile_application根据声明的配置协调应用applications:manage免费
repair_application修复应用运行时applications:manage免费
restart_application确认中断后重启应用applications:manage免费
start_application启动已停止的应用applications:manage免费
stop_application确认中断后停止应用applications:manage免费
uninstall_application在明确批准数据丢失后删除应用applications:manage免费
update_application在满足确切版本前置条件时应用符合条件的不可变更新applications:manage免费
rollback_application将 get_application_installation 以 type=rollback 公布的确切反向转换加入队列。applications:manage免费
cancel_application_action仅当后端将确切的最新排队操作标记为可取消时,取消该操作applications:manage免费
服务操作
工具描述权限范围付费
start_service启动已停止的 VPSservices:manage免费
stop_service停止正在运行的 VPSservices:manage免费
restart_service重启 VPSservices:manage免费
console_service为正在运行的 VPS 请求带外控制台会话services:manage免费
suspend_service暂停正在运行的 Cloud VPSservices:manage免费
resume_service恢复已暂停的 Cloud VPSservices:manage免费
服务设置
工具描述权限范围付费
get_hostname获取当前主机名以及自动主机名状态services:read免费
get_guest_nameservers获取服务器已保存的客户机 DNS 解析器配置:nsData.type 为 own(VPSnet 默认值)或 custom,包含 ns1-ns4 解析器 IP 地址。services:read免费
change_hostname更改 VPS 主机名services:manage免费
reset_hostname恢复 VPSnet 管理的自动主机名services:manage免费
set_guest_nameservers更改受支持 Linux 服务器内部的 DNS 解析器。services:manage免费
change_root_password更改 VPS root 密码services:manage免费
get_rdns获取当前 rDNS 记录services:read免费
change_rdns更改反向 DNS(PTR)记录services:manage免费
clear_rdns清除 PTR 覆盖并恢复自动值services:manage免费
flush_iptables清空 iptables 规则(在无法访问时很有用)services:manage免费
get_title获取当前服务显示名称services:read免费
change_title更改服务显示名称services:manage免费
toggle_ipv6启用或禁用 IPv6services:manage免费
toggle_extra_settings切换 ppp、fuse、tuntap 或 nfsservices:manage免费
deploy_ssh_key将 SSH 密钥部署到 VPS;远程 OAuth 还需要 vm:execservices:manage免费
操作系统重装
工具描述权限范围付费
get_os_options获取可用的操作系统模板services:read免费
reinstall_os重装 VPS 操作系统(会销毁现有数据)。Cloud/Firecracker VPS 还会删除现有快照;存在快照时必须明确设置 confirmSnapshotDelete,重装后这些快照无法用于回滚。返回 noty 接受事件;请通过服务历史跟踪完成状态。services:manage免费
套餐变更(免费)
工具描述权限范围付费
get_plan_options获取可升级或降级的套餐;会缩小磁盘的 KVM/Firecracker 目标套餐不可用services:read免费
get_plan_resources获取套餐的可配置资源services:read免费
calculate_plan_change预览套餐变更:不收取费用,剩余价值会转换,因此升级会提前到期services:read免费
change_plan更改 VPS 套餐services:manage免费
续费与账单
工具描述权限范围付费
get_period_options获取计费周期和自动续费选项services:read免费
set_auto_renew启用或禁用自动续费services:manage付费(未来续费)
renew_service手动续费服务services:manage付费
list_invoices列出发票payments:read免费
get_invoice获取指定发票payments:read免费
list_payments列出付款历史记录payments:read免费
get_usage_statements在发票之外,单独列出按项目细分的计量用量账单payments:read免费
订购
工具描述范围付费
get_order_plans获取明确选定的服务产品的可用套餐无免费
get_order_options获取套餐的可配置选项无免费
order_service为新 VPS 报价;客户批准后,确认确切总价和周期;也可通过 privateNetworkId 关联专用网络无付费:vps:order、vds:order、ds:order 或 fc:order(取决于产品)
备份
工具描述范围付费
get_backup_status获取备份状态和配置services:read免费
get_firecracker_backup_status获取 Firecracker VPS 的夜间异机备份状态,包括运行中的备份数量,以及最近保留的备份的一致性来源信息。services:read免费
get_backup_history获取备份历史记录services:read免费
get_firecracker_backup_history获取保留的 Firecracker VPS 夜间备份历史记录,包括失败或正在运行的尝试,以及一致性来源信息。services:read免费
create_backup在明确同意付费并提供稳定请求密钥后,检索历史 Container VPS 备份内容services:manage付费
恢复
工具描述范围付费
get_restore_status获取保留期限、恢复价格以及正在进行的恢复任务services:read需要付费范围:services:restore
list_restore_points列出整个服务的恢复点services:read免费
request_restore**付费且具有破坏性:**从某个恢复点恢复整个服务磁盘services:read付费:services:restore
list_restore_file_points列出可浏览的备份点,以及是否支持文件夹搜索(免费)services:read免费
browse_restore_files排队创建备份目录列表任务,不恢复文件services:read免费
get_restore_file_browse轮询已排队的备份目录列表任务(免费,只读)services:read免费
服务文件

Firecracker 服务需要更新后的 Guest Agent,Cloud VPS(KVM)则需要切换到 VDS 文件管理器;files:read / files:manage 是显式授权项(空权限列表不包含这些权限)。

工具描述范围付费
get_service_file_capabilities检查文件管理器当前是否可以为某台服务提供文件操作,并返回原样的不可用原因、限制和传输模式files:read免费
list_service_files列出运行中服务内某个目录的一页内容files:read免费
stat_service_file描述一个条目,可选返回其 SHA-256files:read免费
read_service_file查看文本文件(最多 1 MiB)或图像(最多 4 MiB),也可读取任意文件的 1 MiB 窗口files:read免费
search_service_files在某个目录下按名称(子字符串或 glob)查找条目files:read免费
get_service_file_download_url生成绑定到调用方地址的单文件下载 URLfiles:read免费
download_service_file将服务文件下载到 MCP 机器上的本地路径,检查文件大小并返回其 SHA-256files:read免费
get_service_file_operation轮询返回 202 的文件操作(Guest 响应慢、递归删除、解压)files:read免费
create_service_directory创建目录,可选创建缺失的父目录files:manage免费
move_service_file重命名或移动一个条目(需要确认)files:manage免费
delete_service_files**有破坏性:**永久删除文件或目录(需要确认)files:manage免费
write_service_file写入小型文件(最多 1 MiB),并使用比较并交换files:manage免费
upload_service_file通过一次调用上传本地文件或 Base64 内容:分块、可恢复传输、原子提交并检查 SHA-256files:manage免费
list_service_file_uploads列出服务尚未完成的上传files:manage免费
abort_service_file_upload中止一个尚未完成的上传并移除其暂存文件files:manage免费
extract_service_file_archiveFirecracker:将 zip/tar/tar.gz/.gz 压缩包解压到新目录files:manage免费
SSH 密钥
工具描述范围付费
list_ssh_keys列出所有 SSH 密钥account:read免费
get_ssh_key获取指定的 SSH 密钥account:read免费
create_ssh_key添加新的 SSH 密钥account:manage免费
delete_ssh_key删除 SSH 密钥account:manage免费
API 密钥
工具描述范围付费
list_api_keys显示用于验证此 MCP 连接的 API 密钥none免费
get_api_key获取一个有效密钥的非机密元数据none免费
get_api_key_activity获取调用方密钥在保留期限内的请求活动记录及记录的总数none免费
get_api_key_inference_usage获取调用方推理密钥的精确付费 VPSnet AI 用量及额度状态none免费

创建、更改和撤销 API 密钥需要通过浏览器/会话登录。使用 API 密钥进行身份验证的 MCP 连接无法执行这些操作。

免费 TLS 证书
工具描述权限范围付费
get_free_certificate_eligibility检查账户资格、配额、密钥模式以及当前可用的公共 CAcertificates:read免费
preflight_free_certificate规划确切的名称、验证、交付、密钥保管方式和 CA,但不签发证书certificates:read免费
list_free_certificates列出自有的免费证书申请及其生命周期状态certificates:read免费
get_free_certificate获取一个自有申请、续订计划和安全时间线certificates:read免费
get_free_certificate_instruction查看自动 DNS 状态或所有必需的外部 DNS CNAME 记录certificates:read免费
create_free_certificate创建一个经明确批准且具幂等性的免费 DV 申请certificates:manage免费
download_free_certificate仅获取已签发的公开叶证书和证书链,绝不获取私钥certificates:read免费
manage_free_certificate兼容旧版客户端的工具;请使用下方的单项操作certificates:manage免费
renew_free_certificate为获授权的证书名称申请提前续订certificates:manage免费
revoke_free_certificate经明确批准后吊销自有证书certificates:manage免费
recheck_free_certificate重新检查待处理证书的验证状态certificates:manage免费
cancel_free_certificate取消符合条件的待处理证书申请certificates:manage免费

为便于通过 API 或助手安装到不同环境,请使用 customer_csr,并将私钥保留在生成 CSR 的位置。托管式申请可以无人值守地续订,但 MCP 无法导出其私钥。证书签发是异步的,且受配额限制:轮询 get_free_certificate,按照 get_free_certificate_instruction 中的说明操作,不要将已排队的申请视为已签发。

自动 SSL 订阅
工具描述范围付费
list_automatic_ssl_subscriptions列出客户拥有的自动 SSL 订阅,不显示 ACME 凭据certificates:read免费
get_automatic_ssl_subscription获取一项自有订阅、其域名集合、续订状态和就绪情况certificates:read免费
quote_automatic_ssl_subscription以欧元为一组确切的域名报价,不收取费用certificates:read报价:certificates:order
order_automatic_ssl_subscription确认并支付明确批准的订阅报价certificates:read付费:certificates:order
list_automatic_ssl_actions列出客户可见的订阅和 DNS 名称变更certificates:read免费
refresh_automatic_ssl_subscription安排一次权威的只读状态刷新certificates:manage免费
quote_automatic_ssl_domain以欧元为一个额外的 DNS 名称报价,不收取费用certificates:read报价:certificates:order
order_automatic_ssl_domain确认并支付明确批准的 DNS 名称报价certificates:read付费:certificates:order
quote_automatic_ssl_renewal以欧元为下一个符合条件的订阅期限报价certificates:read报价:certificates:order
order_automatic_ssl_renewal使用账户余额预付明确批准的下一个期限certificates:read付费:certificates:order
manage_automatic_ssl_subscription兼容旧版客户端的工具;请使用下面的单项操作certificates:manage免费
cancel_automatic_ssl_subscription取消一项自有的自动 SSL 订阅certificates:manage免费
remove_automatic_ssl_domain从订阅中移除一个符合条件的 DNS 名称certificates:manage免费
replace_automatic_ssl_domain在更正期限内修正一个符合条件的 DNS 名称certificates:manage免费

自动 SSL 是一种可移植的付费 ACME 订阅。它可与 VPSnet 或其他提供商的兼容客户端配合使用,并非仅限于托管应用。私有 ACME 服务 URL 和 EAB 凭据仅会在受双重身份验证保护的客户门户中显示。它们有意不作为 MCP 工具或 API 密钥响应提供,因此助手无法将其复制到模型上下文中。

付费 TLS 证书
工具描述范围付费
list_certificate_catalog列出已发布的 DV/OV/EV 产品及面向最终客户的 EUR 报价certificates:read免费
get_certificate_catalog_product获取一个已发布产品、其功能和当前报价certificates:read免费
list_certificates列出客户持有的付费证书订单及签发状态certificates:read免费
get_certificate获取一笔客户持有的付费证书订单certificates:read免费
quote_certificate为确切的证书或续订询价,不会扣费certificates:read询价:certificates:order
order_certificate确认并支付已明确批准的证书报价certificates:read付费:certificates:order
get_certificate_validation读取每个名称的验证状态及所有者可见的待处理挑战certificates:read免费
download_certificate下载已签发的公有叶证书和证书链;绝不返回私钥certificates:read免费
list_certificate_actions列出持久保存且客户可见的管理操作certificates:read免费
refresh_certificate安排只读的证书颁发机构状态协调certificates:manage免费
manage_certificate兼容旧客户端的工具;请使用下方的独立操作certificates:manage免费
cancel_certificate取消符合条件的待处理证书订单certificates:manage免费
recheck_certificate_validation重新检查证书验证certificates:manage免费
resend_certificate_validation获得批准后重新发送证书验证消息certificates:manage免费
change_certificate_validation更改一个证书名称的验证方法certificates:manage免费
reissue_certificate使用新的公有 CSR 请求为同一名称重新签发certificates:manage免费

付费证书是可移植的账户产品:客户可以将其安装在 Nginx、Apache、lighttpd、OpenLiteSpeed、HAProxy、Caddy、邮件、API、负载均衡器或其他 TLS 终端上。此类证书与附加到 VPSnet 托管应用的自动 HTTPS 相互独立。MCP 仅接受公有 PKCS#10 CSR;私钥必须由客户自行保管,且绝不能出现在工具参数或模型上下文中。报价响应包含以 EUR 计价的最终客户价格;下单需要明确批准,并使用相同的幂等键和短时有效的报价令牌。

域名
工具描述范围付费
list_domains列出账户拥有的域名domains:read免费
get_domain获取一个自有域名及其待处理操作domains:read免费
list_domain_tlds列出当前已启用、可供订购的顶级域名domains:read免费
check_domain_availability检查域名是否可用,不下单domains:read免费
get_domain_ordering_status获取非机密的域名订购准备状态domains:read免费
set_domain_nameservers为自有域名排队提交名称服务器变更domains:manage免费
list_domain_glue_records列出同域名称服务器地址记录domains:read免费
create_domain_glue_record排队创建或更新名称服务器地址记录domains:manage免费
delete_domain_glue_record排队删除名称服务器地址记录domains:manage免费
get_domain_parent_ds列出父区域的 DNSSEC DS 记录domains:read免费
add_domain_parent_ds排队添加父区域 DS 记录domains:manage免费
delete_domain_parent_ds排队删除父区域 DS 记录domains:manage免费
list_domain_contacts列出账户拥有的域名联系人domains:read免费
create_domain_contact创建域名联系人domains:manage免费
update_domain_contact更新现有域名联系人domains:manage免费
delete_domain_contact删除未使用的域名联系人domains:manage免费
quote_domain_register获取域名注册报价,不收费domains:read报价:domains:order
confirm_domain_register确认并支付确切的注册报价domains:manage付费:domains:order
quote_domain_transfer获取域名转移报价,不收费domains:read报价:domains:transfer
confirm_domain_transfer确认并支付确切的转移报价domains:manage付费:domains:transfer
quote_domain_renew获取自有域名续费报价,不收费domains:read报价:domains:renew
confirm_domain_renew确认并支付确切的续费报价domains:manage付费:domains:renew
quote_domain_restore获取处于赎回期的域名恢复报价,不收费domains:read报价:domains:renew
confirm_domain_restore确认并支付确切的恢复报价domains:manage付费:domains:renew
set_domain_auto_renew为自有域名启用或停用自动续费domains:manage付费(未来续费)
get_registrar_lock获取注册商转移锁定状态;更改只能在控制面板中进行domains:read免费
DNS
工具描述范围付费
list_service_dns_options列出可用于 DNS 附加的自有区域和服务地址dns:read免费
attach_service_dns_record将自有区域中的名称指向一个服务地址dns:write免费
list_dns_zones列出账户拥有的正向 DNS 区域dns:read免费
create_dns_zone创建等待通过所有权 TXT 验证的原生或辅助区域dns:write免费
get_dns_zone获取所需记录及其 ID 和可恢复的所有权 TXT 值dns:read免费
reapply_dns_zone重试发布 apply_state 为 failed 的已发布 DNS 区域。dns:write免费
get_dns_zone_diagnostics检查委派、SOA、DNSSEC 和记录规范性dns:read免费
export_dns_zone将原生区域导出为 BIND 样式区域文件dns:read免费
import_dns_zone将受限的 BIND 样式记录导入原生区域dns:write免费
list_dns_templates列出后端定义的 DNS 记录模板dns:read免费
apply_dns_template预览或应用一个 DNS 记录模板dns:write免费
delete_dns_zone删除正向 DNS 区域dns:write免费
verify_dns_zone验证所有权并发布待处理或验证已过期的区域dns:write免费
reissue_dns_zone_verification检查可恢复值后,为待处理或验证已过期的区域轮换所有权 TXTdns:write免费
get_dnssec获取 DNSSEC 状态及公开的 DNSKEY/DS 材料dns:read免费
set_dnssec启用或安全地禁用 DNSSEC 签名dnssec:manage免费
upsert_dns_record添加名称/类型/内容元组;若元组相同,则更新 TTL/注释并重新启用记录dns:write免费
update_dns_record按确切记录 ID 替换一条现有非系统 DNS 记录的内容dns:write免费
delete_dns_record删除一条正向 DNS 所需状态记录dns:write免费
get_dns_service_status获取托管 DNS 集群状态和已发布端点dns:read免费
get_dns_zone_history获取近期区域和记录变更历史dns:read免费
list_ddns_tokens列出非机密的 DDNS 和 ACME 令牌元数据dns:read免费
create_ddns_token创建权限范围受限的 DDNS 或 ACME 更新令牌dns:write免费
revoke_ddns_token撤销 DDNS 或 ACME 更新令牌dns:write免费
快照
工具描述范围付费
list_snapshots列出 Cloud VPS 磁盘快照和计费政策services:read免费
create_snapshot创建 Cloud VPS 磁盘快照services:manage保留期间计费
rollback_snapshot将 Cloud VPS 破坏性回滚至某个快照services:manage免费
delete_snapshot删除 Cloud VPS 磁盘快照并停止其保留计费services:manage免费
list_firecracker_snapshots列出临时 Firecracker VPS 快照和过期时间services:read免费
create_firecracker_snapshot创建临时 Firecracker VPS 快照services:manage保留期间计费
rollback_firecracker_snapshot将 Firecracker VPS 破坏性回滚至某个快照services:manage免费
delete_firecracker_snapshot删除 Firecracker VPS 快照并停止其保留计费services:manage免费
服务救援
工具描述范围付费
get_service_rescue获取救援功能和当前持久化救援会话services:read免费
enter_service_rescue将符合条件的服务重启至已公布的救援镜像services:rescue免费
exit_service_rescue恢复救援前完全相同的启动配置和状态services:rescue免费
Firecracker Functions
工具描述范围付费
list_functions列出按用量计费的 Firecracker Functionsservices:read免费
list_function_history读取账户范围内分页显示的 Firecracker Function 调用历史记录。services:read免费
get_function获取一个函数,包括完整性状态,以及可读取的受保护值services:read免费
create_function创建 Firecracker Functionservices:manage免费
update_function更新函数;无法读取的受保护值需要明确批准后才能替换services:manage免费
delete_function删除 Firecracker Functionservices:manage免费
invoke_function调用函数,并按 CPU 和内存用量计量;使用一个稳定的 Idempotency-Key 可防止完全相同的重试重复运行或重复计费services:manage付费:fn:invoke
list_function_invocations列出函数调用及其状态、持续时间和费用services:read免费
get_function_invocation获取一次调用的输出、日志和用量费用services:read免费
按需服务器
工具描述范围付费
get_temp_vm_options获取启动状态、配置方案、兼容性定价参数,以及确切的存储/网络政策services:read免费
quote_temp_vm查看已禁用的报价操作及其即将推出的响应services:manage已禁用(即将推出)
list_temp_vms列出账户的按需服务器会话和当前选项services:read免费
create_temp_vm查看已禁用的创建操作;产品即将推出期间不会发生付款或资源分配services:manage已禁用(即将推出)
get_temp_vm获取一个归租户所有的按需服务器会话services:read免费
delete_temp_vm在明确确认数据丢失后永久删除按需服务器;不会发起客户退款services:manage免费

在验证按需服务器生命周期期间,客户下单功能已禁用。当前选项说明不包含自动备份和快照,并且会限制通过 TCP 端口 25、2525、465 和 587 建立出站连接。现有会话仍可通过 list/get/delete 访问,以便进行清理。已禁用的兼容性架构中的固定 TTL 和预付费字段并不代表产品上线承诺;启用下单前,必须统一发布灵活时长和按用量计费的约定。

Guest Agent
工具描述范围付费
get_guest_agent_status读取 Cloud VPS 或 Firecracker 上的 Guest Agent 可用性;这不代表应用已就绪services:read免费
历史记录
工具描述范围付费
get_login_history获取账户登录历史记录account:read免费
get_management_history获取管理/活动历史记录account:read免费
公共
工具描述范围付费
get_pricing获取公开定价无免费
get_system_status获取 VPSnet.com 系统状态无免费
get_faq获取常见问题无免费
SDN 网络

必须明确授予网络权限:networking:read 或 networking:manage;普通的 full/read 默认权限不包含这些权限。 先查看 capabilities,再读取确切的自有资源及其代次。 后端会强制执行租户所有权、可用性和服务器 2FA 锁定规则。 已接受、已付款和就绪是不同的状态;请轮询对应的操作或资源。 DNS 更改通过网络的 settings.dns_change 进行轮询。 新的私有/公有负载均衡器、VPN 和公有地址使用明确的 报价 → 通用结账 → 订单状态流程。报价工具始终会发送 prepare_after_payment=true:付款前不会进行任何资源配置。 展示报价中的准确 EUR gross_amount,获取批准后,将相同的 idempotencyKey、quote_id 和 quoteToken 传递给 order_network_product。 API 密钥还需要完整访问权限、已启用付费操作、 networking:order 权限以及支出限额。读取 get_network_payment_methods, 并选择 system=balance;API 密钥不允许使用非余额结账。 如果无法确定是否已确认,请使用原报价 ID 和密钥进行恢复。 对于 status=paid_pending、billing_state=captured 且 reason_code=network_product_ip_inventory_wait 的 SDN 订单,公有 IP 库存不足期间,款项会保留。使用相同的订单 ID 轮询 get_network_product_order;库存恢复后,后端会自动继续处理。 不要创建其他订单、再次扣款或手动重试。 如果状态为 manual_review 或 network_product_stock_reconciliation_required,则需要运营人员审核;这并不授权自动重试。

普通 VPS 订单会通过 get_service.stateProcess.waitingReason=public_ip_inventory 呈现此等待状态(也会同步显示在旧版 stateProccess 字段中)。轮询同一服务,不要重新下单。 stateProcess.attention=true 表示需要运营人员处理。付款成功或创建请求已接受,并不代表服务器已就绪。

公有负载均衡器层级 alb_proxy_3/alb_proxy_5 使用请求类型 proxy_lb;私有层级 nlb 使用 private_lb。可用性和价格以实时产品目录为准。 旧版未付款的设备创建端点不能替代结账流程。

获取设备配置是一次性的管理操作,尽管其 HTTP 方法是 GET。在 MCP 外部生成密钥对,只提交 X25519 公钥,保存返回的密文封装数据,并在对话外解密。此类工具不会请求或解密私钥及明文 WireGuard 配置。响应不确定时,绝不要自动重复获取操作。

当前版本的后端不支持客户网络重命名、现有端口的固定 IP 编辑、设备重试或原生站点到站点 API。固定 DHCP 地址在附加时选择;移除并重新创建附加项需要单独批准,且不属于原位编辑。旧版未付款的负载均衡器/VPN 创建路由、旧版付款前库存购买,以及通过 API 密钥启用自动续费,均不会开放。现有公有地址绑定管理仍然可用;新公有地址使用账户所有权和通用结账流程。工具出现在列表中,并不意味着后端功能开关已启用。

工具描述范围付费
get_network_payment_methods读取支付方式元数据,不启动支付无免费
get_networking_capabilities读取账户的网络功能可用性、配额、创建选项和符合条件的下单时附件networking:read免费
get_networking_features读取当前网络功能门控、DNS 选项和支持的合约扩展。networking:read免费
get_networking_overview读取自有网络、配额和操作快照networking:read免费
get_networking_topology读取包含网络范围身份信息的账户拓扑networking:read免费
list_networking_operations读取近期网络操作和 operations_has_morenetworking:read免费
get_networking_operation读取已接受的网络或端口操作networking:read免费
list_private_networks列出自有私有网络,包括正在等待验证清理后删除的网络。networking:read免费
get_private_network读取一个自有网络,包括 DHCP 保留项、DNS 变更进度、代次和 project_id。networking:read免费
create_private_network创建私有网络意图networking:manage免费
delete_private_network请求删除空网络networking:manage免费
retry_private_network仅重试当前失败的网络操作;保留其当前代次networking:manage免费
set_private_network_dns原地更改 DHCP DNS 服务器networking:manage免费
set_private_network_names替换完整的内部 DNS 区域标签和别名列表networking:manage免费
list_private_network_ports读取自有网络端口、其固定 DHCP 地址、代次和附件状态networking:read免费
list_service_private_ports读取一个自有服务订单号对应的私有端口和订单附件恢复状态。networking:read免费
list_network_attachment_candidates读取可附加的服务及各自的 attachment_modenetworking:read免费
attach_private_network_port附加自有服务;省略 ipv4 可自动分配,或传入固定的可用地址networking:manage免费
detach_private_network_port分离自有服务器端口networking:manage免费
retry_private_network_port使用 PORT 代次和任何必要的重启批准,重试当前失败的端口操作。networking:manage免费
get_network_vpn_summary读取网络的 VPN 摘要,包括如实报告不存在的情况;已连接位置由网关管理networking:read免费
get_network_routed_egress读取此网络的 NAT/互联网访问、公网地址和资格状态。networking:read免费
set_network_routed_egress请求对自有网络进行当前支持的 NAT 转换;后端可能拒绝模式变更networking:manage免费
get_security_group_capabilities读取安全组可用性,以及是否可以更改网络默认策略。networking:read免费
list_network_security_groups列出自有项目中的安全组networking:read免费
create_network_security_group创建命名的允许规则集networking:manage免费
update_network_security_group按预期修订版本替换完整的安全组名称和规则列表networking:manage免费
delete_network_security_group按预期修订版本删除未被引用的客户安全组;被引用的安全组将被拒绝删除。networking:manage免费
clone_network_security_group将自有安全组克隆为新名称;使用源安全组的当前修订版本。networking:manage免费
get_network_security_policy读取默认策略、已分配的安全组和策略应用状态networking:read免费
set_network_default_security_policy更改未使用自定义安全组的服务器的允许/拒绝策略networking:manage免费
set_private_port_security_groups替换端口的完整客户安全组列表networking:manage免费
retry_network_security_policy使用当前期望状态重试失败的网络安全策略。networking:manage免费
retire_network_security_policy仅在其服务器端口全部移除后停用策略networking:manage免费
get_network_appliance_capabilities读取可用的负载均衡器提供商/层级、公网资格、VPN 功能和配额networking:read免费
list_network_appliances使用一个流游标读取自有负载均衡器和 VPN 网关。networking:read免费
get_network_appliance_billing读取当前客户可见的周期性设备账单项和货币。networking:read免费
get_network_appliance_operation轮询已接受的设备操作networking:read免费
list_network_load_balancers列出私有和公网负载均衡器,以及客户可见的健康/资格状态。networking:read免费
get_network_load_balancer读取一个自有负载均衡器、侦听器、成员、代次和健康状态networking:read免费
estimate_network_load_balancer读取此确切配置对应的负载均衡器技术估价networking:read免费
delete_network_load_balancer请求按当前代次拆除设备;这不是退款,也不会取消已付费周期networking:manage免费
add_network_load_balancer_member将已附加的私有服务器地址添加到所选侦听器;后端会验证其是否属于此网络。networking:manage免费
remove_network_load_balancer_member使用负载均衡器代次将成员移出轮询。networking:manage免费
add_network_load_balancer_listener使用当前提供的协议功能添加侦听器和可选的初始成员networking:manage免费
remove_network_load_balancer_listener移除侦听器及其成员;不允许删除最后一个侦听器。networking:manage免费
list_network_vpn_gateways列出自有 VPN 网关、其设备对端和安全状态networking:read免费
get_network_vpn_gateway读取一个自有 VPN 网关、其实时 rx/tx、最后握手时间和当前端点、授权候选项及站点选项networking:read免费
delete_network_vpn_gateway请求拆除自有 VPN 网关;所有设备都将失去连接networking:manage免费
attach_network_vpn_gateway仅当公布了独立附加功能时,将账户 VPN 附加到自有网络或迁移至该网络networking:manage免费
detach_network_vpn_gateway在支持时将账户 VPN 从其网络分离;其付费周期和设备保持不变,但网关会重新创建networking:manage免费
set_vpn_server_access在此功能可用时,为 VPN 选择 accept 或 groups_only,以控制其对已附加服务器的访问networking:manage免费
create_network_vpn_peer添加设备或已连接位置(站点到站点办公室路由器),并使用外部生成的一次性 PUBLIC reveal keynetworking:manage免费
take_network_vpn_peer_config仅一次性读取设备的密封配置networking:manage免费
revoke_network_vpn_peer使用 VPN GATEWAY 代次撤销一个设备networking:manage免费
set_network_vpn_peer_grants在独立 VPN 可用时替换设备可访问的完整服务器列表networking:manage免费
get_network_vpn_egress_options读取支持的 VPN 互联网出口和资格状态networking:read免费
set_network_vpn_peer_egress为设备设置仅限私有网络、继承 NAT 或指定已公布出口的策略networking:manage免费
get_network_vpn_peer_history读取设备或已连接位置的流量和握手历史记录(24 h 原始数据、7 d、30 d、13 个月)networking:read免费
set_network_vpn_site_options在连接到 VPN 的位置之间切换 hub-and-spoke 模式networking:manage免费
set_network_vpn_site_alert切换一个已连接位置的办公室离线电子邮件提醒networking:manage免费
set_network_site_route_mode为网络到已连接位置的路由选择 DHCP 路由或内部路由器networking:manage免费
list_network_products读取当前付费产品、实时层级名称、价格和购买功能;公网代理负载均衡器的 3/5 节点产品必须来自此目录。networking:read免费
list_network_product_periods读取自有产品周期、续订可用性和生命周期信息。networking:read免费
quote_network_product为网络产品创建用于 COMMON CHECKOUT 的准确付费报价networking:manage报价:networking:order
quote_account_vpn在公布 vpn_account_order 时,为通用结账创建账户 VPN 报价networking:manage报价:networking:order
order_network_product使用已批准的准确报价确认通用结账购买networking:manage付费:networking:order
get_network_product_order读取自有通用结账订单的支付和履行状态networking:read免费
find_network_product_order使用原始 quote_id 找回状态不确定的结账;order=null 表示未找到订单,不代表可以使用新的支付密钥。networking:read免费
quote_network_product_renewal为网络产品的下一个付费月报价;不收费networking:manage报价:networking:order
renew_network_product从账户余额支付先前明确披露的确切续订费用networking:manage付费:networking:order
disable_network_product_auto_renew禁用自动续订networking:manage免费
quote_vpn_period_renewal按 VPN 实际付费范围为其下一个月报价;不收费networking:manage报价:networking:order
renew_vpn_period使用确切报价和原始密钥,从账户余额支付 VPN 已批准的下个月续订费用。networking:manage付费:networking:order
disable_vpn_auto_renew禁用 VPN 自动续订;当前付费周期仍然有效networking:manage免费
list_network_public_addresses读取自有付费公网地址、账户限制、目标支持情况和购买可用性。networking:read免费
get_network_public_address读取一个自有公网地址、附件和付费周期状态。networking:read免费
quote_network_public_address为通用结账报价一个新的付费公网地址;不收费networking:manage报价:networking:order
attach_public_address_to_network将已付费地址附加或迁移到自有网络的 NATnetworking:manage免费
attach_public_address_to_server将自有的已付费公网地址附加或迁移到符合条件、没有公网 IP 的服务器私有端口networking:manage免费
detach_network_public_address将自有公网地址从当前目标分离;在付费周期内仍归你所有networking:manage免费
quote_public_address_renewal报价续订地址的下个月费用,不收费;确认时使用返回的报价和此密钥。networking:manage报价:networking:order
renew_network_public_address使用准确的报价 ID/令牌和原始密钥,从余额中支付已批准的地址续订费用。networking:manage付费:networking:order
disable_public_address_auto_renew禁用地址自动续订;所有权持续至 paid_untilnetworking:manage免费
get_network_public_binding读取一个现有自有公网绑定的代次、状态和分配地址networking:read免费
bind_network_public_ip在支持时,将已预留的浮动公网绑定到自有私有端口networking:manage免费
move_network_public_ip将已准备好的浮动公网绑定迁移到另一个自有私有端口;请确认旧目标会中断。networking:manage免费
configure_network_public_forwarding配置现有预留转发绑定的 TCP/UDP 侦听器networking:manage免费
delete_network_public_binding请求按其代次删除现有绑定networking:manage免费

操作示例

每个示例都包含对助手的请求,以及它调用的工具。

订购 VPS(先报价,再确认)

订购最便宜的 Cloud VPS,安装 Debian 并使用我的 SSH 密钥,从余额支付。

  1. 调用 get_order_plans 查询产品,然后调用 get_order_options 查询所选方案的选项 (OS、周期、资源 ID),并调用 list_ssh_keys 获取密钥 ID。
  2. 调用 order_service,并传入 plan、os、period、resources、sshKey(或 rootPassword,不能同时传入两者)、payment: { payment: 1, successUrl: '', cancelUrl: '' } 和稳定的 idempotencyKey。首次调用会返回报价,但不会扣款。 API 密钥需要具备 vps:order(或 vds:order、ds:order、fc:order)权限和消费上限。
  3. 显示准确的欧元总价(含税)和计费周期。客户批准后,使用返回的 quoteToken、expected_total_eur 和 acknowledge_charge: true,重试参数和密钥均未更改的订单。 如果结果未知,请在控制面板中检查原始尝试;不要创建新的密钥来重试。
  4. 轮询 get_service,查询返回的订单号;付款已接受不代表服务器已就绪。
网络服务(先报价,再订购)

在我的网络中添加一个私有负载均衡器,并从余额支付。

  1. 调用 get_networking_capabilities、list_network_products 和 get_network_payment_methods(选择 system=balance 的支付方式)。
  2. 调用 quote_network_product,传入 kind(private_lb、proxy_lb 或 vpn_gateway)、 tier 和 idempotencyKey;显示报价中的欧元 gross_amount。
  3. 获得批准后,调用 order_network_product,传入相同的 idempotencyKey、 quote_id、quoteToken、余额 payment 和 acknowledge_charge: true。 如果结果不确定,请使用原始 quote_id 调用 find_network_product_order, 然后轮询 get_network_product_order。绝不要重复购买。
DNS 记录插入或更新

将 www.example.com 指向 203.0.113.10,TTL 设为 5 分钟。

  1. 调用 list_dns_zones 查找 zone_id,然后调用 get_dns_zone 检查 现有记录及其 ID(需要 dns:read)。
  2. 要添加 A 记录值,请调用 upsert_dns_record,并传入 zone_id、name: "www"、 type: "A"、content: "203.0.113.10"、ttl: 300(需要 dns:write)。 不同的内容会新增一条记录,并保留现有值。若名称、类型和内容三元组相同,则会更新 TTL 和注释, 并在记录已禁用时重新启用它。要替换现有值,请使用其准确的 record_id 调用 update_dns_record,并传入所需的名称、类型、内容和 TTL。
  3. 调用 get_dns_zone 读取并确认所需记录,或调用 get_dns_zone_history 查看变更。

对于正在等待验证、但其所有权 TXT 值已丢失的区域,请先读取 get_dns_zone.zone.verification.record.value。仅当该值为 null、无法恢复,或客户要求轮换时,才使用 reissue_dns_zone_verification。该工具同时支持 pending_verification 和 verification_expired;旧值将不再被接受。请在 zone.verification.next_step 指定的位置更新 TXT 记录,然后调用 verify_dns_zone。仅重新签发不会验证该区域,也不会重置其状态。

订购付费证书

为 example.com 购买一张一年期 DV 证书;CSR 由我自行生成。

  1. 调用 list_certificate_catalog 和 get_certificate_catalog_product,选择 产品并查看其当前欧元报价。
  2. 调用 quote_certificate,传入 product_id、offer_id、offer_generation、 common_name(以及任何 alternative_names)、公开的 PKCS#10 csr、 自有联系人 ID 和 idempotencyKey(需要 certificates:order 权限、付费操作权限和消费上限)。 绝不要发送私钥。
  3. 用户批准准确总价后,调用 order_certificate,传入相同的请求和 idempotencyKey、quote_token、payment,以及 acknowledge_exact_quote_and_payment: true。
  4. 调用 get_certificate_validation(例如通过 upsert_dns_record 发布验证质询), 证书签发后调用 download_certificate。

获取 API 密钥

  1. 登录 vpsnet.com
  2. 前往 Account > API Keys
  3. 点击 Create API Key
  4. 为密钥命名并复制密钥

密钥只会显示一次,请妥善保管。

故障排除

Claude Code VS Code 扩展中未显示 MCP 工具
  1. 安装 Claude Code CLI:npm install -g @anthropic-ai/claude-code
  2. 验证:claude --version 应显示版本号
  3. 通过 CLI 添加服务:claude mcp add vpsnet -- npx -y vpsnet-mcp
  4. 完全重启 VS Code(不要只重新加载窗口)
  5. 检查 ~/.claude.json 中的配置是否正确
claude: command not found

全局安装 Claude Code CLI:

npm install -g @anthropic-ai/claude-code

确认 PATH 包含 npm 全局软件包。在 Windows 上,安装后请重启终端。

环境变量不起作用

对于 Claude Code 扩展,环境变量必须放在 .claude.json 中的 env 对象内,而不能是系统环境变量:

"vpsnet": {
    "type": "stdio",
    "command": "npx",
    "args": ["-y", "vpsnet-mcp"],
    "env": {
        "VPSNET_API_KEY": "your_actual_key_here"
    }
}
API 密钥错误

此服务需要管理 API 密钥。下方列出的每种故障都会由工具通过 auth_problem 对象报告原因和解决方法,因此请查看该对象,而不要根据 HTTP 状态码猜测。

工具故障会携带 isError: true,同时保留 API 错误详情和恢复指引。对于结果未知的变更操作,必须先检查结果,再进行下一次尝试。服务订单号必须从 list_services 复制;支持 ASCII 字母、数字和连字符,包括带有多个订单后缀的订单号。格式错误或过长的 URL 标识符会在发送 API 请求前被拒绝。

你看到的内容含义解决方法
aiScopedApiKeyCannotManageAccount (403)此密钥是 AI 范围密钥。此类密钥仅用于 VPSnet AI 助手推理,因此会被整个账户 API 明确拒绝。授予权限范围也无法改变这一点,因为限制针对的是密钥类型。创建另一个范围为 full 的密钥(仅执行 GET 操作时可用 read),并在此处使用。AI 范围密钥请继续用于推理。
apiKeyRejected (401)密钥认证完全失败。API 对所有原因都会返回相同的 401,因此原因可能是:密钥不存在、已撤销、已过期、格式错误,或来源 IP 不在密钥的 IP 允许列表中。检查密钥是否有效且完整复制,并确认任何 IP 允许列表都包含此服务发起请求时使用的地址。
readOnlyApiKeyCannotWrite (401)使用只读范围密钥执行了写入操作;只读密钥仅限 GET 操作。使用完整范围密钥,或仅使用只读工具。
apiKeyScopeMissing (403)密钥通过了认证,但缺少 requiredScope 中列出的细粒度权限范围。在 Account > API Keys 中添加该权限范围。
apiKeyForbidden (403)此端点完全不接受 API 密钥。API 密钥不会授予管理员权限。使用已登录会话访问控制面板。
  • 确认密钥正确(以 vpsnet_ 开头,后接 43 个字符)
  • 密钥创建时只会显示一次;如果丢失,请创建新密钥
  • 检查密钥是否已过期(Account > API Keys)
deploy_ssh_key 成功,但 SSH 仍然失败
  • 所有 VPSnet.com 服务器都使用 root 作为 SSH 用户名
  • 密钥部署是异步的;部署后请等待 15-30 秒再尝试 SSH 连接
fetch is not defined 或意外错误

此服务需要 Node.js 20+。如果默认的 node 版本较旧(使用 nvm 的环境中很常见),可以:

  • 将 Node 20+ 设为默认版本:nvm alias default 20
  • 或使用 Codex 部分中展示的 nvm 封装脚本

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。