
CMDOP Machine Care
io.github.commandoperator由 GitHub 帳號 commandoperator 發布v0.1.2更新於 Oct 24, 2026
Read-only health and storage diagnostics for an enrolled CMDOP machine fleet.
概覽
一個唯讀 MCP 伺服器,讓助理檢視已加入的 CMDOP 機器機群健康狀態、診斷資訊與儲存用量。
- 可以做什麼
- 列出已加入機群中的機器,回傳主機名稱、線上狀態與作業系統,不回傳機器 ID 或 UUID。讀取某台機器已儲存的 Machine Care 投影,包含彙總事實、發現項目、涵蓋範圍與新鮮度,即使該機器離線也能讀取。對某台機器執行一次有界的即時程序與啟動項目診斷,最多回傳 20 筆程序記錄,含 PID 與程序名稱。讀取某台機器最新驗證過的 cmdop 自有儲存清單,依儲存來源給出彙總位元組數。所有工具都不接受 shell 指令、檔案路徑或 PID,也不會修改任何內容。
- 適用情境
- 當你已在一台主機上執行 cmdop CLI,並希望助理在不授予 shell 或檔案存取權限的情況下,回答機群健康狀態、某台機器為何變慢,或 cmdop 自有儲存佔用多少等問題時使用。
- 執行需求
- 以本機 stdio 程序執行(自行建置的執行檔或已發佈的容器映像)。主機必須已透過主 cmdop CLI 完成加入,該 CLI 會把中繼加入權杖與可能的連線 PIN 存入作業系統鑰匙圈;不使用環境變數或標頭憑證。預設連線本機回送位址上的中繼,可用 CMDOP_CARE_RELAY_ADDR 覆寫。僅限桌面環境。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 CMDOP Machine Care,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
cmdop-care
[Read-only machine-care diagnostics: a central inspection relay connected to three machine nodes]
A small, read-only Model Context Protocol (MCP) stdio server exposing 4 read-only tools over an already-enrolled cmdop machine fleet: roster visibility, machine health, one bounded live diagnostic, and cmdop-owned storage usage.
Published: io.github.commandoperator/cmdop-care
· Current version: v0.1.2 · License: Apache-2.0
If you already use cmdop on a machine, this is the conservative MCP entry point: connect an MCP-aware assistant to read fleet health without exposing a shell, arbitrary file reads, or open-ended machine delegation. The host must already be enrolled; credentials stay in the host operating system keyring. For broader machine operations, use the main cmdop MCP server instead.
This is not the full cmdop MCP surface. It intentionally omits
ask_machine, run_command, read_file, and list_dir — every tool that
executes a command, reads an arbitrary file, or delegates an open-ended task
to another machine. If you need those, use the main cmdop CLI's own MCP
server (cmdop mcp stdio), which is a separate, broader, product-integration
surface with its own review requirements. cmdop-care exists specifically to
offer a narrower, safer, publishable subset for the official MCP Registry.
Requirement: an already-enrolled cmdop CLI on the host
cmdop-care requires the host machine to already be enrolled via the main
cmdop CLI. It does not implement enrollment itself, and it does not accept a
relay token via an environment variable or a mounted secret as a primary
credential path. On startup it reads:
- the relay OAuth/enrollment Bearer token the
cmdopCLI already stored in the OS keyring (macOS Keychain / Linux Secret Service / Windows Credential Manager) when you rancmdop join <join-key>; - any per-machine connection PIN the
cmdopCLI has already cached in the same keyring (e.g. from a priorcmdop connect), forcare_diagnoseonly.
If no token is found, every tool responds with a clear "not enrolled" message instead of failing silently or hanging.
This "host-keyring passthrough" model was a deliberate design decision (see
security-architecture-2026-07-18.md in this artifact's source repository)
to avoid introducing a second, weaker credential-handling path for the
product — this binary is not a fully standalone identity; it rides the same
enrollment as the CLI already installed on the host.
The 4 tools
list_machines
Lists the machines in the enrolled fleet.
- Input: none.
- Output: an array of
{host, online, os}. No machine ID/UUID is ever returned — this is a deliberate redaction decision (the internal relay identifier is dropped before serialization, not merely omitted from rendering).
care_status
Reads the durable Machine Care projection (facts, findings, coverage, freshness) for one enrolled machine.
- Input:
machine(string, required) — exact display name fromlist_machines. - Output: aggregate facts/findings with closed-vocabulary codes, coverage flags, and reason codes. No raw paths, commands, environment variables, or machine identity.
- Read-only; works even while the target machine is offline (it reads a relay-stored projection, not a live round-trip).
care_diagnose
Runs one bounded, typed process/startup diagnostic on a live enrolled machine — useful for "why is this machine slow?"
- Input:
machine(string, required). - Output: a bounded snapshot of process and startup-item facts.
Two disclosures, read before using this tool:
- PIN forwarding. If the target machine requires a connection PIN, it is forwarded automatically from this host's local OS-keyring PIN cache. You cannot and do not need to pass a PIN as a tool argument. If the machine requires a PIN and none is cached on this host, the call fails closed with a permission error — it never proceeds without one.
- Process data reaches your LLM provider. The response includes raw OS process IDs (PIDs) and process names from the target machine. That means whatever MCP client and LLM you are using — Claude Code, Codex, or any other MCP-speaking assistant — will see the names of processes running on that machine. This is a deliberate, reviewed part of the diagnostic contract (it is bounded: at most 20 process entries, no command lines, no arguments, no environment variables, no file paths), but you should know it before enabling this tool on a machine whose process list you don't want an external LLM provider to see.
It never executes a shell command, accepts no PID or command argument, and performs no mutation.
care_storage_inventory
Reads the latest validated cmdop-owned storage inventory for one enrolled machine.
- Input:
machine(string, required). - Output: aggregate byte totals per closed-vocabulary storage source
(e.g.
cmdop_logs,devcache_go_build). Accepts no path argument and deletes nothing.
What every tool call does not do
- No tool accepts a shell command, a file path, or a raw PID as an argument.
- The only free-form input across all 4 tools is the
machinestring, used purely as an opaque lookup key resolved server-side against your own fleet — never interpolated into a path, command, or query. - Every call is wrapped in a 15-second timeout independent of the relay's own transport defaults, and a small per-tool rate limit, so a stuck or abused backend cannot hang the process or become a high-volume exfiltration channel.
Build and run
Or via Docker (after resolving and pinning the base image digest — see the
<PIN-BEFORE-BUILD> comment in Dockerfile):
The server speaks MCP over stdio only — there is no listening port. Point your MCP client (Claude Code, Codex, or any other MCP-speaking assistant) at the built binary or image the way you would any other stdio MCP server.
For AI-client setup notes, including a minimal MCP JSON configuration and first
prompt, see llms-install.md.
For marketplace submissions that require a square logo image, use the canonical
400×400 PNG in assets/cmdop-care-400.png.
Releasing a new version
Maintainers: see RELEASE.md — the short version is make publish, always run manually, never triggered by any CI or by cmdop_go's
own release.
Relay address
By default cmdop-care dials the local embedded cmdop relay on loopback
(127.0.0.1:63142). Set CMDOP_CARE_RELAY_ADDR to override the dial target
for advanced self-hosted setups. This is a transport address only — never a
credential.
Compatibility
Contributing to this repository
This repository enables a tracked pre-commit hook that rejects staged environment files, private keys, and probable API tokens. After cloning, run:
Security
This artifact went through an explicit threat-model and code-audit review
before implementation (see the Cmdop organization's internal
security-architecture-2026-07-18.md and code-audit-2026-07-18.md, referenced
from this repository's delivery track). Report a security issue privately to
[email protected] — see SECURITY.md for what to include and
what to expect.
License
Apache-2.0 — see LICENSE.
來源:README.md,提交 746a365
工具
0版本歷史
1- v0.1.2最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
