Skip to main content
Glama

autodl-mcp

管理普通 AutoDL 容器实例的 MCP 服务 + Antigravity 插件:开机(含无卡模式)、关机、查询实例与后台开机任务状态。缺货时在后台按指数退避自动重试,不用你盯着。

不适用于 AutoDL Pro(专业版)。

仓库根目录本身就是插件根目录,装进 Antigravity 一次拿到技能(skills/autodl/SKILL.md)和 MCP 服务(mcp.json)。

只支持 Antigravity

插件清单只提供一份 Agent Plugins v1.0.0 标准格式(plugin.json + mcp.json + skills/),安装入口只有 agy。仓库里没有别的 agent 的插件格式或 MCP 配置文件——不打算支持,也不要往这里加。

需要别的形态(比如手写一份 mcpServers 片段)时,照着 mcp-config.example.json 自己写,服务本身是标准的 stdio MCP 服务。

Related MCP server: MCP-AWS

快速开始

git clone https://github.com/Long-Holiday/autodl-mcp
cd autodl-mcp

uv run autodl-mcp-install --list        # 看本机 agy 装在哪、什么版本
uv run autodl-mcp-install               # 装进 Antigravity(不写 token)
uv run autodl-mcp-install --dry-run     # 只看将要执行的命令

--from-git 用远端仓库装,不依赖本地检出;--source <路径或 git URL> 指定别的安装源。

装完在 Antigravity 里应该能看到 autodl 服务的这些工具:

工具

作用

instance_status

查实例状态及 GPU 型号、单卡显存、分配的 CPU 核心数(不返回凭证)

list_instances

批量查询 1–100 个 UUID 的状态和硬件,共享分页;价格未验证时明确返回未知

switch_mode

一个后台任务完成关机、确认关机、按目标模式开机;会中断工作且重新计费

power_on

申请 GPU 开机,立即返回 job_id,缺货后台重试

power_on_no_gpu

无卡模式开机(仅按量计费实例)

power_off

关机,会中断实例上正在运行的任务

job_status

查后台开机任务的 phase / 重试时间 / 错误

wait_for_job

短等待任务完成(默认最多 15 秒),缺货立即返回进度;不取消任务

cancel_job

只取消后续尝试,不会关机

配套的技能文件会告诉 agent:开机前要先确认(会计费)、不要在 confirming 阶段重复发起、cancel_job 不等于关机、不同 error.kind 分别该怎么处理。

硬件规格与等待任务

instance_status(instance_uuid) 新增 gpu_name、gpu_memory_gb、cpu_cores。 规格来自控制台「规格详情」的配置快照,关机时也可查询;缺失或无效的可选值为 null。 gpu_memory_gb 是单卡显存,按 1024³ 字节换算(与控制台 GB 显示一致); cpu_cores 是分配的 vCPU 数,不是宿主机总核数。无卡模式下返回的 GPU 配置不代表当前已挂载 GPU。

开机或切换得到 job_id 后,可调用 wait_for_job(job_id):默认最多等 15 秒, 任务结束或发现缺货(waiting_capacity)时立即返回。即使显式传入 timeout_seconds=120, 默认也不会在已知缺货时继续静默等待。快照包含 attempts、elapsed_seconds、next_retry_in_seconds。 next_retry_in_seconds 是快照生成时距下次后台重试的剩余秒数,基于单调时钟计算、向上取整且不小于 0; 无待定重试时为 null。它避免调用方用本地时钟计算时间差,但仍有传输和处理延迟,不代表资源可用倒计时。 elapsed_seconds 是任务累计耗时(终态固定),不是平台承诺的排队时长或排位。

收到缺货快照后,先向用户报告尝试次数、已等待时间和距下次重试的剩余秒数,不要紧密重复调用。 需要继续短等待时用 wait_for_job(job_id, timeout_seconds=15, return_on_capacity=False); 显式长等待仍可使用 timeout_seconds=120, return_on_capacity=False。 秒数范围为 0–300,0 立即返回;活动 phase 表示尚未完成。等待超时或中断不会取消后台任务, 也不会增加上游查询或开机请求。即时进度仍可用 job_status 查询。 任务只保存在当前 MCP 进程中,不跨服务重启恢复。

批量查询

list_instances(instance_uuids=["uuid-a", "uuid-b"]) 共用一次列表分页,再以最多 5 路并发读取硬件快照。 1–100 个 UUID 全部通过格式/白名单校验后才发请求;重复 UUID 去重,结果按输入顺序排列。 返回 instances 与 errors:单个实例找不到或硬件获取失败不会抹掉其他成功结果; 硬件失败时保留状态,规格为 null,错误在 errors 中。列表整体鉴权/协议错误则整次调用失败。

价格尚未提供准确报价:现有接口资料未验证价格字段、币种及计费单位, 所以每项返回 price: null 和 price_unavailable_reason,不代表免费。 接入真实报价需要经过验证的接口资料或脱敏响应样例,不根据 charge_type 猜金额。

无卡 / GPU 模式切换

确认中断任务与重新计费后,调用 switch_mode(instance_uuid, target_mode="gpu"), 或 target_mode="non_gpu"(无卡,仅按量计费)。工具立即返回 job_id,后台顺序完成: 检查 → 关机 → 确认关机 → 按目标模式开机 → 确认运行;GPU 缺货沿用自动退避。 已按目标模式运行时不关机;已经关机则直接开机;已经关机中则只等待。 同一实例相同切换复用活动任务,其他活动操作冲突需先取消并确认实例状态。

这是编排而非可回滚事务。失败、取消或服务退出可能留下运行中、关机中或已关机的实例, 不会自动回滚;取消不会撤销已经接受的电源请求。 power_off 会先取消切换,防止其后续自动拉起。 stopping 表示正在请求/确认关机,未观察到关机状态绝不开机。 关机确认受 stop_timeout 限制,超时或结果不确定时停止切换,请查询实际状态再决定。

Token 怎么给

仓库和插件清单里不存任何密钥。 服务从环境变量 AUTODL_TOKEN 读取,需要你自己设置:

export AUTODL_TOKEN='控制台登录 Token 原文(不要加 Bearer 前缀)'
  • Token 从浏览器 DevTools → Network → 任意实例请求的 Authorization 头里取原文。

  • 从终端启动的 agy 会继承这个环境变量,写进 ~/.zshrc 或 ~/.bashrc 设一次就够。

  • 从桌面图标启动的 GUI 应用可能不继承 shell 环境,这时在它的 MCP 配置里给 autodl 服务加 "env": {"AUTODL_TOKEN": "…"}(见 mcp-config.example.json)。

设置完自检:

uv run autodl-mcp --check

自检只验证配置能否加载,不访问网络;Token 是否有效要等第一次真实请求才能确认。

配置

非敏感配置随代码提交在 config.yaml,每一项都能被同名环境变量覆盖:

配置项

默认值

说明

instance_allowlist

[]

允许操作的实例 UUID;空表示允许全部自有实例

capacity_codes

[]

额外视为「无空闲 GPU」的上游返回码

retry_interval / retry_max_interval

60 / 300

缺货重试的起止间隔(秒)

transient_retry_interval / transient_retry_max_interval

60 / 900

网络类错误的退避起止间隔(秒)

max_wait_seconds

0

单次开机等待上限,0 表示不限时

poll_interval

5

开机状态轮询间隔(秒)

stop_timeout

600

模式切换的关机确认上限(秒),可用 AUTODL_STOP_TIMEOUT 覆盖

start_timeout

600

单次开机请求的确认上限(秒)

request_timeout

30

单次 HTTP 请求超时(秒)

用 AUTODL_CONFIG=/path/to/config.yaml 可以指向别处的配置文件。

详细的安装、排查与卸载步骤见 INSTALL.md。

开发

uv run pytest -q
uv run ruff check .
agy plugin validate .

仓库约定见 AGENTS.md。

许可证

MIT

Available Tools

9 tools
cancel_jobA
Idempotent

取消开机/切换任务的后续步骤,不撤销已接受的电源请求,不自动关机或恢复。

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, idempotent=true, destructive=false, so the safety profile is covered. The description adds meaningful behavioral context beyond this: cancellation is limited to subsequent steps and will not revoke an accepted power request, auto power off, or restore prior state — exactly the non-obvious semantics an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence that front-loads the primary action and then lists the three things the tool does not do. No filler; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and annotations cover the safety profile, leaving scope as the main descriptive burden — which is handled well. However, for a mutation tool with no annotation on permissions and a completely undocumented required parameter, the definition stops short of being fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter job_id is left entirely undocumented in both the schema and the description; the description says nothing about what a job_id is or where to obtain it (e.g., from job_status). Only the obviousness of the parameter name keeps this above a 1.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (取消 / cancel) and the precise scope of the operation: the remaining steps of a power-on or switch job. This distinguishes it reasonably well from siblings like power_off or job_status, though it never names an alternative tool directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the negative scoping ('does not revoke the accepted power request'), which tells the agent when cancel_job is the wrong tool for undoing a power request, but there is no explicit when-to-use guidance or reference to alternatives such as wait_for_job or job_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instance_statusA
Read-only

查询指定 UUID 的实例状态与配置规格:GPU 型号、单卡显存 GB(1024³ 字节)、分配的 CPU 核心数;无卡模式不代表 GPU 已挂载。不返回密码或 SSH 凭证。

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_uuidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description goes beyond that with genuinely useful behavioral context: the caveat that no-GPU mode does not mean the GPU is mounted, and the explicit scope statement that passwords/SSH credentials are not returned. It does not cover permission or rate-limit behavior, but adds real value over the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and front-loaded: the core action and returned fields come first, followed by two short caveats. Every clause carries information, though the parenthetical byte-unit aside ('1024³ 字节') is more detail than an agent needs for invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and annotations cover the read-only safety profile. The remaining gap is usage context (when this beats list_instances), but for a single-parameter read tool with a documented output schema, what is provided is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single instance_uuid parameter, so the description must compensate. It only implies that the UUID identifies the target instance ('指定 UUID 的实例状态'), with no format, source, or lookup guidance (e.g., where to obtain the UUID), so compensation is partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (查询/query) and resource (instance status and configuration specs) and enumerates exactly which fields are returned: GPU model, per-card VRAM in GB, and allocated CPU cores. This is specific enough that an agent can tell it apart from job_status and list_instances without opening a schema, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance: no statement of when to call instance_status versus list_instances (which also surfaces instance information) or job_status. The description only says what it returns, leaving the selection decision entirely to inference from the UUID parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

job_statusB
Read-only

查询当前进程中的开机/切换任务、尝试次数、累计耗时、重试时间和错误。next_retry_in_seconds 为快照时距下次重试的剩余秒数(向上取整,无重试时为 null)。

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds useful semantic detail about return fields, especially next_retry_in_seconds rounding and null behavior, which goes beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences are front-loaded with the primary purpose and then add targeted semantics for next_retry_in_seconds. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, read-only, and has an output schema, so full return documentation is unnecessary. However, the missing job_id guidance and lack of differentiation from wait_for_job leave gaps for correct agent selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single required parameter (job_id) is not explained in the description. The name job_id implies an identifier, but the definition does not state where it comes from, what format it has, or whether it refers to a power-on/switch job specifically.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (查询) and names the resource (当前进程中的开机/切换任务) along with the fields returned. It distinguishes this status-query operation from write-oriented siblings like power_on and cancel_job, though it does not explicitly contrast with wait_for_job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use job_status versus wait_for_job or cancel_job. The implied context is checking a job's current state, but no when/when-not or alternative routing is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_instancesA
Read-only

批量查询 1–100 个实例 UUID 的状态和硬件规格,共享一次列表分页。返回 instances 与逐项 errors;价格来源未验证时 price 为 null,不代表免费。不会返回密码或 SSH 凭证。

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_uuidsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read (readOnlyHint=true, destructiveHint=false), and the description adds real value on top: batch size limit, shared pagination, per-item error reporting, the price=null caveat, and an explicit statement that credentials are never returned. The price-null and credential notes are non-obvious behaviors not derivable from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, and the four short clauses (scope, return shape, price caveat, security note) are each informative and free of filler. Dense but well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not enumerate return fields, and it still flags the notable ones (instances, errors, price=null) plus a security exclusion. For a one-parameter read tool this is essentially complete; only the sibling-routing hint is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter is named only in the schema (0% description coverage), and the description's '1–100 个实例 UUID' restates the minItems/maxItems constraints already present in the schema. It does confirm these are UUIDs, adding slight meaning, but does not go beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (批量查询/batch query) plus resource (实例 UUID) and the fields returned (状态和硬件规格), which is more than a restatement of the name. It does not, however, explicitly distinguish itself from the sibling instance_status, so the batch-vs-single distinction must be inferred from '1–100 个'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The '批量查询 1–100 个实例 UUID' framing implies the batch use case, but there is no explicit when-to-use/when-not guidance and no mention of the alternative instance_status for single lookups. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

power_offA
DestructiveIdempotent

关机(中断实例上的运行任务);先取消开机重试,返回接受结果而非最终状态。

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_uuidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive=true and idempotent=true, but the description adds real value beyond them: it discloses that running tasks are interrupted (what is destroyed), that pending power-on retries are cancelled first, and critically that the call returns an acceptance result rather than the final state (async semantics). That async note is exactly the kind of behavior the annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence led by the verb, with no filler. The two parenthetical clauses are dense but each carries distinct information (task interruption and the retry-cancellation side effect).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be detailed, yet the description usefully clarifies the async acceptance semantics. For a destructive one-parameter mutation it covers the important behavioral edges, with the only gap being no explicit sibling routing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single instance_uuid parameter is left unexplained by the description. The parameter name is fairly self-evident, so this reaches the minimum-viable bar, but the description does nothing to compensate for the missing schema documentation (e.g. format or where the UUID comes from).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (关机/power off) and adds the crucial scope that it interrupts running tasks on the instance. It also contrasts behavior with the power-on path by noting it cancels boot retries, which helps against power_on/power_on_no_gpu, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description describes what happens on invocation but gives no guidance on when to choose power_off versus siblings like switch_mode or cancel_job, nor any prerequisite or exclusion. Usage must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

power_onA
Idempotent

为指定 UUID 开机(会计费);缺货后台持续重试,立即返回任务 ID。

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_uuidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, idempotent, non-destructive operation. The description adds genuinely new behavioral context beyond that: the call incurs billing, out-of-stock triggers continuous background retry, and the return is immediate with a task ID rather than a completed power-on.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence front-loads the action and UUID, then adds the two most decision-relevant facts (billing, async retry/return). No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists for the returned task ID, so return shape needn't be explained, and annotations cover the safety profile. The description supplies the billing, retry, and async traits an agent needs; only an explicit pointer to the job-tracking siblings is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter with 0% schema description coverage, so the description carries the burden. It indicates the UUID selects the target instance but gives no format, source, or constraint details (e.g. where to obtain the UUID), so it only marginally compensates for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: power on the instance identified by the given UUID. It also conveys scope (billing, async task creation). It does not explicitly name the sibling power_on_no_gpu, so the agent must infer which power-on variant to pick from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied rather than stated: the immediate task ID return signals an async workflow whose result must be polled (job_status/wait_for_job), but those alternatives are never named. No explicit when-not or prerequisite guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

power_on_no_gpuA
Idempotent

无卡模式开机(仍会计费,无 GPU);仅支持按量计费实例,立即返回后台任务 ID。不会自动将已运行的 GPU 实例切换为无卡模式,请先关机并确认状态。

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_uuidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare non-read-only, idempotent, non-destructive, but the description adds genuinely new behavioral facts: billing continues despite no GPU, the call returns a background job ID immediately (async), and the instance must be powered off first. These are exactly the side effects and timing semantics annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense and front-loaded: the mode and billing caveat come first, then eligibility, then the async-return fact, then the precondition. Every clause earns its place, though the negation clause could be tightened slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out; the description nonetheless signals the immediate background-job-ID return. With eligibility, billing, precondition, and async behavior covered, an agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single instance_uuid parameter, so the description technically adds no parameter-level detail. However the parameter is a single, self-evidently named required identifier, so the practical gap is small; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+mode: power on in no-GPU mode. It explicitly distinguishes itself from the plain power_on sibling by scoping to 无卡模式 and clarifying that it will not switch an already-running GPU instance, so an agent can tell the two apart without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit eligibility (仅支持按量计费实例) and an explicit when-not plus precondition (不会自动将已运行的 GPU 实例切换为无卡模式,请先关机并确认状态). This is precisely the routing/precondition information an agent needs before choosing between this and power_on/switch_mode.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

switch_modeA
DestructiveIdempotent

切换 GPU/无卡模式,立即返回后台任务 ID:关机、确认关机、按目标模式重新开机。会中断运行任务,重新开机会计费;执行前必须确认。无卡目标仅支持按量计费。不是可回滚事务;失败或取消可能停在关机状态,不自动恢复。任务不跨服务重启恢复。

ParametersJSON Schema
NameRequiredDescriptionDefault
target_modeNogpu
instance_uuidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give readOnly=false, destructive=true, idempotent=true. The description adds substantial context beyond that: interrupting running tasks, billing on restart, mandatory confirmation, the pay-as-you-go constraint for non_gpu, non-rollbackable semantics, possible stuck-shutdown state with no auto-recovery, and no cross-restart task persistence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and return value, then stacks consequences and caveats. Dense and largely waste-free, though the semicolon-chained warnings make it slightly hard to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, multi-step mode-switch with an output schema present (returns a background task ID, already mentioned), it covers the operational caveats, confirmation requirement, and failure modes an agent needs before invoking. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds the meaningful constraint that the non_gpu target only supports pay-as-you-go billing, but instance_uuid and the gpu/non_gpu syntax/behavior are otherwise left to the schema enum and default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource (switch GPU/non-GPU mode) and spells out the composite steps it performs: shut down, confirm shutdown, reboot into target mode. An agent can distinguish it from power_on/power_off purely from the description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context on when this applies (switching modes rather than a simple power toggle) plus a hard precondition ('执行前必须确认'). It implies it replaces the separate power_off/power_on siblings but never names an alternative or exclusion explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_jobA
Read-only

只读等待当前进程任务结束、缺货或超时后返回快照;默认缺货立即返回。timeout_seconds 为 0–300 秒(默认 15,0 立即返回)。return_on_capacity=False 可等待穿过缺货阶段;活动 phase 表示尚未结束。缺货返回后先汇报 attempts/elapsed_seconds/next_retry_in_seconds,不要紧密重复查询。next_retry_in_seconds 为快照时距下次重试的剩余秒数(向上取整,无重试时为 null)。本次等待超时或断开不会取消后台开机任务;任务不跨服务重启恢复。

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
timeout_secondsNo
return_on_capacityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/destructive annotations: a timeout or disconnect does not cancel the background power-on job, jobs do not survive service restarts, the capacity-shortage phase can be waited through, and 'active phase' means not finished. These are exactly the lifecycle/auth-adjacent caveats an agent needs and that annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the purpose leads, followed by parameter semantics, retry-reporting guidance, and lifecycle caveats, each sentence carrying distinct information. Slightly passive-clause heavy but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a wait/polling tool with an output schema, it covers the important non-return-value facts: capacity-phase behavior, retry snapshot semantics, non-cancellation, and restart non-persistence. Adequate; only the meaning of job_id relative to the instance lifecycle is unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well: timeout_seconds range (0–300), default (15), and the 0-means-immediate case, plus return_on_capacity=False semantics and next_retry_in_seconds rounding/null behavior. Only job_id is left unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening states a specific verb and resource: read-only wait on the current job until it ends, hits a capacity shortage, or times out, returning a snapshot. This distinguishes it from immediate-return siblings like job_status, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives usage behavior (report attempts/elapsed_seconds/next_retry_in_seconds after a shortage return; don't tightly repeat queries) and explains return_on_capacity, but offers no explicit when-to-use-this-vs-job_status/power_on routing for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.1.0
    • First observedcancel_job
    • First observedinstance_status
    • First observedjob_status
    • First observedlist_instances
    • First observedpower_off
    • First observedpower_on
    • First observedpower_on_no_gpu
    • First observedswitch_mode
    • First observedwait_for_job

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation4/5

Tools target mostly distinct actions, but power_on, power_on_no_gpu, and switch_mode all involve powering on or cycling instances and could be misselected without reading details. The descriptions clarify scope (e.g., no-card vs GPU, mode switching).

Naming Consistency4/5

Names are mostly snake_case with recognizable verb/noun components, but conventions vary (power_on, job_status, wait_for_job, instance_status). Still predictable and readable overall.

Tool Count5/5

9 tools is well within the ideal range for a focused power and status management server. Each tool covers a specific operation without obvious redundancy.

Completeness4/5

Covers power on/off, no-GPU mode, mode switching, task control, and single/batch status. Broader lifecycle operations (create/delete instance) are missing, but those may be outside the server's apparent scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents and MCP clients to manage AutoDL GPU instances programmatically, including creating, listing, powering on/off, executing commands, transferring files, and enforcing automatic shutdown.
    29 npm
    2
    MIT