MCP 權杖就是接上了 API 的帳戶密碼。把它交給代理,您就多了一個永不疲倦的使用者:您讓它讀哪個頁面它就讀,它的上下文裡最後一條指令說什麼,它就做什麼。大多數時候這正是您想要的。這一頁講的是剩下的那些時候。
下面的內容都在頁面頂部的日期對線上伺服器核實過:工具列表來自 https://mcp.eqvps.com/mcp 的 tools/list,限制來自 API 本身。如果您剛開始接觸,先看連線 MCP 用戶端和 API 權杖,再回來讀。
威脅模型:實際會出什麼問題
按我們遇到的頻率排序,有三種情況:
- 代理理解錯了。 "把測試機清理一下"變成了重灌另一台伺服器。沒有惡意,只是模型把指令裡沒說清的地方自己補上了。
- 提示注入。 代理讀到一段不是您寫的文字(README、客服回覆、抓取來的網頁),這段文字讓它去做某件事。如果代理拿著全權限權杖,被注入的指令也就擁有全部權限。
- 權杖洩露。 它出現在 shell 歷史、公開儲存庫、共享的 MCP 設定或某一行記錄裡。
MCP 伺服器會檢查權杖是否有效、伺服器是否屬於該帳戶(或已委派給它)。它不知道您本來想做什麼。下面每一道護欄都只回答一個問題:如果指令是錯的,最多能造成多大損失?
全部 MCP 工具,按風險分級
客戶權杖可見 45 個工具(MCP 伺服器 1.6.0)。經銷商權杖(rk_…)看到的是另一套 30 個經銷商工具,看不到這裡的任何一個,所以這個端點總共有 75 個。您的用戶端透過 tools/list 只會拿到屬於自己的那一套。
本頁按風險等級給工具分類。每個工具的參數和呼叫範例見參數參考;所有工具的一行說明(含 30 個經銷商工具)見完整列表。
我們還沒有提供 MCP 工具註解(readOnlyHint、destructiveHint),所以用戶端無法自行分類。請按下面的分級手動設定核准。
第 0 級 — 公開,無需權杖(5)
| 工具 | 作用 |
|---|---|
get_started | 一次返回完整流程:該呼叫哪些工具、按什麼順序 |
list_plans | 方案、價格、系統映像 |
sandbox_pricing | 沙箱價格 |
register_account | 建立新帳戶並返回其權杖 |
login | 電子郵件 + 密碼 → 權杖 |
第 1 級 — 讀取帳戶,無副作用(15)
| 工具 | 作用 | 注意 |
|---|---|---|
whoami | 帳戶 id、姓名、電子郵件 | |
get_balance | 預付餘額 | |
list_vps | 執行中、開通中和已暫停的伺服器 | |
get_vps_status | 狀態、設定、存取資訊 | 帶 reveal: true 時會返回 root 密碼 |
get_vps_metrics | 一段時間內的 CPU、記憶體、網路、磁碟 | |
get_upgrade_options | 伺服器無需重灌即可切換的方案 | |
list_delegations | 您把存取權給了誰 | |
list_delegated_to_me | 別人委派給您的伺服器 | |
list_tickets | 您的工單 | |
get_ticket | 一張工單及其全部對話 | 工單內容對代理來說是不可信輸入 |
list_sandboxes | 您的沙箱 | |
get_sandbox | 一個沙箱及其用量 | |
get_task | 背景任務的輸出 | |
download_file | 從沙箱讀取一個小檔案 | |
get_download_url | 指向沙箱中某個檔案的短期連結 | 連結過期前,任何拿到連結的人都能下載 |
第 2 級 — 改變狀態,不花錢(17)
| 工具 | 作用 | 注意 |
|---|---|---|
power_vps | start / stop / reboot | stop 就是 stop:服務會停掉 |
set_hostname | 修改伺服器名稱 | 改的正是 confirm 比對的那個值 |
undo_cancel | 撤銷已安排在週期末的取消 | |
refresh_token | 發新權杖,舊權杖立即作廢 | 之後記得更新靜態設定 |
set_password | 帳戶還沒有密碼時設定密碼 | 持有權杖的人可能搶在您前面設定 |
topup_balance | 儲值帳單 + 加密貨幣付款連結 | 付款需要錢包 |
pay_invoice | 未付帳單的付款連結 | 同上 |
accept_delegation | 接受委派邀請 | |
revoke_delegation | 結束委派 | |
create_ticket / reply_ticket / close_ticket | 工單 | 代理會以您的名義給客服寫信 |
run_code / exec_command | 在沙箱裡執行程式碼 | 只在沙箱裡,不在您的 VPS 上 |
kill_task | 停止沙箱中的背景任務 | |
upload_file / get_upload_url | 把檔案放進沙箱 |
第 3 級 — 花錢、銷毀資料或授予存取權限(8)
| 工具 | 作用 | 伺服器端檢查 |
|---|---|---|
order_vps | 下單購買伺服器,從餘額付款 | 餘額不足 → 產生未付帳單,不扣款 |
change_plan | 不重灌更換方案,差價從餘額扣除 | confirm: true;餘額不足 → 402 |
create_sandbox | 啟動計費沙箱 | 餘額為零 → 402 |
reinstall_vps | 清空磁碟並安裝新系統 | confirm = 準確主機名稱或 DELETE;每分鐘 4 次 |
reset_password | 新 root 密碼,舊密碼失效 | confirm = 主機名稱或 DELETE;每分鐘 6 次 |
cancel_service | end_of_period(預設,可撤銷)或 immediate(立即銷毀伺服器) | immediate 需要 confirm = 主機名稱 |
kill_sandbox | 刪除沙箱及其檔案 | 無 |
delegate_service | 授予他人某台伺服器的操作員權限 | 僅限所有者;對方需接受 |
工具集變更記錄
| 日期 | 伺服器版本 | 變更 | 對風險的影響 |
|---|---|---|---|
| 2026-10-03 | 1.6.0 | 新增 refresh_token;權杖預設有效期 1 年 | 第 2 級 |
| 2026-10-03 | 1.5.0 | undo_cancel、get_upgrade_options、change_plan | change_plan 會花餘額 → 第 3 級 |
| 2026-10-03 | 1.1.0 | 13 個沙箱工具 | create_sandbox 花錢、kill_sandbox 銷毀資料 → 第 3 級 |
目前執行的版本是公開的:curl -s https://mcp.eqvps.com/healthz。版本一變,這張表也會跟著更新。
餘額就是花費上限
EQVPS 採用預付費。沒有綁定的信用卡、沒有信用額度、不能透支:代理最多隻能花掉餘額裡現有的錢。會花錢的工具有三個:order_vps、change_plan 和 create_sandbox。您現有伺服器的續費也從同一筆餘額里扣。
代理可以發起付款請求,但付不了款。topup_balance 和 pay_invoice 傳回的是加密貨幣付款連結,背後沒有錢包,連結什麼也做不了。也沒有提領介面:餘額裡的錢只能在您的帳戶裡購買服務,轉不出去。立即取消時,未使用的金額同樣計入餘額。
有一個提醒,而且很重要。如果為了限制代理把餘額壓得很低,您自己伺服器的續費就會開始失敗,伺服器會進入寬限期。我們的經驗法則是:保留一個續費週期所需的金額,再加上代理目前任務的預算。代理預算指南詳細講了怎麼算。另外,如果您給代理配了一個有錢的獨立錢包,那個錢包就成了第二個上限,同樣需要盯著。
最小權限:(目前)沒有隻讀權杖
直說:每個客戶權杖的權限都和控制台裡的帳戶一樣。權杖的名稱和有效期可以設定,權限範圍(scope)不能。
目前能做到的最窄權限是委派。給代理開一個餘額為零的獨立帳戶,再把一台伺服器委派給它:
delegate_service { "service_id": "EQ-XXXX", "email": "agent@yourdomain.com", "expires_days": 30 }
用 REST 也一樣:
curl -s -X POST "https://api.eqvps.com/api/v1/eqvps/services/EQ-XXXX/delegations" \
-H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
-d '{"email":"agent@yourdomain.com","expires_days":30}'
邀請必須在用該電子郵件登入的狀態下接受(accept_delegation),expires_days 可設為 1 到 365。帶截圖的分步說明:委派存取權限和文件中的存取權限。
| 被委派帳戶可以 | 被委派帳戶不能 |
|---|---|
| 檢視這一台伺服器的狀態、指標和歷史 | 檢視您的其他伺服器、餘額或帳單 |
| 開機、關機、重新啟動 | 取消、續費或更換方案 |
| 設定主機名稱和反向 DNS | 購買附加服務或 IP |
| 重設 root 密碼 | 開啟網頁控制台 |
| 重灌系統 | 把伺服器再委派給別人 |
注意左列最後兩行。被委派者花不了您的錢,但能把這台伺服器清空。凡是代理能重灌的伺服器,都請開啟備份。
權杖衛生
一個代理一個權杖,並且起好名字。 在 控制台 → 設定 → 給代理用的 API 權杖 中建立,或者:
curl -s -X POST "https://api.eqvps.com/api/v1/eqvps/auth/tokens" \
-H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
-d '{"name":"backup-agent","expires_in_days":90}'
權杖只顯示一次。有效期 1 到 1825 天,不填則為 365 天。給代理用的話,我們會選 90 天。
把它存在只有您能讀的檔案裡,不要放進儲存庫、不要寫進提示詞,也不要放在到處複製的 shell 變數裡:
mkdir -p ~/.config/eqvps && chmod 700 ~/.config/eqvps
( umask 077; read -rsp 'EQVPS token: ' T; echo; printf 'EQVPS_TOKEN=%s\n' "$T" > ~/.config/eqvps/agent.env )
ls -l ~/.config/eqvps/agent.env # 應為 -rw-------
然後在代理的服務裡用 EnvironmentFile=(systemd)或 set -a; . ~/.config/eqvps/agent.env; set +a 載入。
到期前輪換。 refresh_token 工具或 POST /auth/tokens/{id}/refresh 會簽發一個同名的新權杖,並立即作廢舊權杖。如果權杖是寫死在 MCP 用戶端設定裡的,輪換後馬上更新設定,否則下一次工作階段會收到 401。
檢查誰在用什麼: GET /auth/tokens 會列出每個權杖的名稱、到期時間和 last_used_at。出現您不認識的權杖,或者在您關掉代理之後仍被使用的權杖,就是警報。
權杖洩露時
按這個順序處理:
- 撤銷它。 控制台 → 設定 → 給代理用的 API 權杖 → 撤銷,或
curl -s -X DELETE -H "Authorization: Bearer $EQVPS_TOKEN" https://api.eqvps.com/api/v1/eqvps/auth/tokens/<id>。從下一個請求起即失效。 - 查詢新權杖,凡不是您建立的,一併撤銷。
- 評估波及範圍: 每台伺服器的服務記錄、帳單和餘額,以及
list_delegations裡有沒有您沒授予過的存取權。 - 更換 root 密碼,凡是這個權杖能看到的伺服器都要換。帶
reveal: true的get_vps_status會交出 root 密碼,所以權杖洩露就等於 root 密碼洩露。順便檢查一下~/.ssh/authorized_keys。 - 關上密碼這扇門。 如果您的帳戶從來沒設過密碼,持有權杖的人可能已經用
set_password設了一個。用郵件驗證碼登入,然後修改密碼。
第 5 步的預防不花一分錢:現在就自己設定帳戶密碼,之後任何人再呼叫 set_password 都只會得到 409。
人工確認
伺服器端強制執行的內容:
reinstall_vps、reset_password和type: immediate的cancel_service要求confirm等於準確的主機名稱(重灌和重設密碼也可以用DELETE)。change_plan要求confirm: true。- 預設取消方式是
end_of_period:伺服器執行到已付週期結束,undo_cancel可以撤銷。 - 每個帳戶的頻率限制:重灌每分鐘 4 次,重設密碼每分鐘 6 次,電源操作每分鐘 20 次,下單每分鐘 20 次。足以防止陷入迴圈的代理把同一件事做五十遍,但擋不住一次錯誤呼叫。
要清楚 confirm 是什麼。它能防止代理憑一句"清理一下"就動手。它擋不住攻擊者,因為主機名稱只需一次 get_vps_status 呼叫就能拿到。真正的核准在您的 MCP 用戶端裡。多數用戶端都能在每次呼叫工具前詢問:第 0、1 級放行,第 3 級一律詢問。在支援按工具設定權限的用戶端裡,例如 Claude Code 的 settings.json(伺服器以 eqvps 名稱註冊):
{
"permissions": {
"ask": ["mcp__eqvps__order_vps", "mcp__eqvps__change_plan", "mcp__eqvps__create_sandbox", "mcp__eqvps__reset_password", "mcp__eqvps__delegate_service"],
"deny": ["mcp__eqvps__reinstall_vps", "mcp__eqvps__cancel_service", "mcp__eqvps__kill_sandbox"]
}
}
再在代理的指令里加一行。它本身算不上安全措施,但能減少"理解錯了"的情況(保留英文即可,模型理解起來一樣):
Never call reinstall_vps, reset_password, cancel_service (type=immediate), change_plan,
order_vps, create_sandbox, kill_sandbox or delegate_service unless the human has typed
the target server's hostname in this conversation for that specific action.
如果代理是用郵件驗證碼登入,而不是持有長期權杖,請看代理透過 MCP 登入。
審計:事後能看到什麼
- 權杖列表(
GET /auth/tokens,或 設定 → 給代理用的 API 權杖):名稱、建立時間、到期時間、last_used_at。這就是為什麼要按代理給權杖命名。 - 服務記錄(控制台,伺服器頁面):電源操作、重灌、密碼重設、方案變更、付款,每條都有時間和操作方:您、支援或自動。它不會告訴您是哪個權杖或哪個被委派者操作的,只說明操作來自您這一方。
- 帳單和餘額:每一筆扣款與入帳。
list_delegations:誰有權存取什麼,到什麼時候為止。
服務記錄裡的這個空白,就是目前伺服器端審計的真實邊界。如果您需要知道哪個代理做了什麼,就在代理一側記錄每次工具呼叫及其參數(去掉金鑰)。
我們會用的設定
對於管理一台生產伺服器的代理:
- 為代理單獨開帳戶,餘額為零,伺服器以
expires_days: 90委派。 - 您的所有者權杖留在自己手裡,不出現在任何代理設定中。
- 為這台伺服器開啟備份,因為被委派者可以重灌。
- 在用戶端裡把第 3 級工具設為 "ask" 或 "deny"。
- 代理的權杖放在權限為
600的檔案裡,到期前重新整理。
如果代理需要下單買伺服器或執行沙箱,委派就不夠了,因為它需要餘額。這時餘額就是您的上限:按任務儲值,給權杖起名,每週看一次 last_used_at。如果唯讀權杖會改變您部署代理的方式,請透過支援告訴我們:正是這類回饋決定了我們接下來做什麼。
評論
目前還沒有評論。歡迎成為第一位。