# GitHub Showcase: MCP And Manifests CW has two primary machine surfaces: - CLI JSON: `cw --json` - MCP tools: `cw_*` JSON-RPC tools Both route through the same runtime entries where parity is declared. Human CLI formatting is policy; the shared payload is the mechanism. ## Generated Vendor Targets The manifest source currently targets: | Target | Purpose | | --- | --- | | `claude` | Claude Code plugin and MCP configuration. | | `codex` | Codex plugin manifest. | | `agents` | Generic `.agents` adapter. | | `gemini` | Gemini plugin manifest and MCP configuration. | | `opencode` | OpenCode plugin manifest and MCP configuration. | The source of truth is: ```text plugins/cool-workflow/manifest/plugin.manifest.json ``` Generated files live under directories such as `.claude-plugin/`, `.codex-plugin/`, `.gemini-plugin/`, `.opencode-plugin/`, and `.agents/`. ## Regenerate And Check From `plugins/cool-workflow`: ```bash npm run gen:manifests npm run gen:manifests -- --check npm run manifest:load-check npm run parity:check ``` `gen:manifests -- --check` catches generated byte drift. `manifest:load-check` boots generated MCP configs and checks JSON-RPC `initialize` plus `tools/list`. `parity:check` validates declared CLI and MCP payload parity. ## CLI To MCP Examples | CLI | MCP | | --- | --- | | `cw app list --json` | `cw_app_list` | | `cw report --json` | `cw_report` | | `cw run import PATH --target DIR` | `cw_run_import` | | `cw run verify-import ` | `cw_run_verify_import` | | `cw telemetry verify ` | `cw_telemetry_verify` | | `cw workbench view --json` | `cw_workbench_view` | Some capabilities are intentionally CLI-only, such as `quickstart`, because they are convenience wrappers over lower-level mechanisms MCP hosts can compose. ## Adding A Vendor The intended path is data-first: 1. Add a `targets.` entry to `plugin.manifest.json`. 2. Add the vendor output template in the manifest source. 3. Run `npm run gen:manifests`. 4. Run `npm run manifest:load-check`. Do not fork runtime logic per vendor. Vendor-specific rendering or prompt formatting belongs in wrappers or manifest data, not in the core runtime. ## Related Pages - [Commands or API](GitHub-Showcase-Commands-or-API.md) - [Architecture](GitHub-Showcase-Architecture.md) - [Operations](GitHub-Showcase-Operations.md)