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.

概览

AI 生成的概览

一个只读 MCP 服务器,让助手查看已加入的 CMDOP 机器机群的健康状况、诊断信息和存储用量。

可以做什么
列出已加入机群中的机器,返回主机名、在线状态和操作系统,不返回机器 ID 或 UUID。读取某台机器已存储的 Machine Care 投影,包括汇总事实、发现项、覆盖范围和新鲜度,即使该机器离线也可读取。对某台机器执行一次有界的实时进程与启动项诊断,最多返回 20 条进程记录,含 PID 和进程名。读取某台机器最新校验过的 cmdop 自有存储清单,按存储来源给出汇总字节数。所有工具都不接受 shell 命令、文件路径或 PID,也不会修改任何内容。
适用场景
当你已在一台主机上运行 cmdop CLI,并希望助手在不授予 shell 或文件访问权限的情况下回答机群健康状况、某台机器为何变慢或 cmdop 自有存储占用多少等问题时使用。
运行要求
以本地 stdio 进程运行(自行构建的二进制或已发布的容器镜像)。主机必须已通过主 cmdop CLI 完成加入,该 CLI 会把中继加入令牌和可能的连接 PIN 存入操作系统钥匙串;不使用环境变量或请求头凭据。默认连接本机回环地址上的中继,可用 CMDOP_CARE_RELAY_ADDR 覆盖。仅限桌面环境。
安装前请注意
实时诊断会把目标机器的原始进程 ID 和进程名返回给 MCP 客户端及其 LLM 提供方,因此不要在你不想让外部提供方看到进程列表的机器上启用。该工具会自动转发钥匙串中缓存的连接 PIN,若未缓存则调用直接失败。所有工具均为只读且不删除任何内容,但依赖已存放在操作系统钥匙串中的凭据。

安装

在 SourceWeft 中

  1. 打开 控制台中的 CMDOP Machine Care,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

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 cmdop CLI already stored in the OS keyring (macOS Keychain / Linux Secret Service / Windows Credential Manager) when you ran cmdop join <join-key>;
  • any per-machine connection PIN the cmdop CLI has already cached in the same keyring (e.g. from a prior cmdop connect), for care_diagnose only.

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 from list_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:

  1. 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.
  2. 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 machine string, 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

bash
go build -o cmdop-care ../cmdop-care

Or via Docker (after resolving and pinning the base image digest — see the <PIN-BEFORE-BUILD> comment in Dockerfile):

bash
docker build -t cmdop-care:0.1.2 .docker run --rm -i cmdop-care:0.1.2

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

cmdop-care versionCompatible cmdop relay wire contract
v0.1.2AiAgentService.GetMachineCare / RunMachineCareDiagnostic / roster-list shape as of 2026-07-18

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:

bash
git config core.hooksPath .githooks

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
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.2最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分