npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@mcpcloud/cli

v0.18.0

Published

The official CLI for MCPCloud — manage projects, servers, skills, and API keys from the terminal

Readme

@mcpcloud/cli

The official command-line interface for MCPCloud — build, deploy, and operate MCP servers and Skills from your terminal. Everything the dashboard does, scriptable: ingest an OpenAPI/GraphQL spec into a typed MCP server, deploy it to the edge, watch metrics, manage custom domains, and wire skills into your coding agent.

npm install -g @mcpcloud/cli
mcp login          # opens the browser sign-in — works out of the box
mcp whoami         # confirm your identity, org, and active profile

The package installs three equivalent binaries — mcp (primary), mcpsh, and mcpcloud. They all point at the same executable; use whichever you prefer.

Requirements

  • Node.js 18 or newer
  • An MCPCloud account (sign up at https://mcpcloud.sh)

Installation

# global install
npm install -g @mcpcloud/cli
bun  add     -g @mcpcloud/cli

# one-off invocation (no install)
npx  -y      @mcpcloud/cli whoami
bunx --bun   @mcpcloud/cli whoami

Quick start

The CLI ships with the MCPCloud production base URL baked in, so a fresh machine works with zero configuration — just sign in:

mcp login                       # browser sign-in (recommended)
mcp login --key mck_xxx         # non-interactive (writes to shell history — prefer the env var)
export MCPCLOUD_API_KEY=mck_xxx # or use an env var for CI

mcp whoami                      # identity, resolved base URL (marked "(production)"), active profile
mcp servers list                # your deployed MCP servers
mcp servers get srv_123         # detail view
mcp tools list --server srv_123 # tools that server exposes
mcp skills connect skl_123 --agent claude-code --apply
                                #   auto-register a skill with Claude Code

Run mcp <command> --help for the full option list, or mcp help <topic> for guided walkthroughs.

Pointing at staging or a self-host

The production default is only a default — override it per environment. Precedence is --base-url flag → MCPCLOUD_BASE_URL → the saved profile's baseUrl → the built-in production default:

export MCPCLOUD_BASE_URL=https://staging.example.com   # env (CI / scripts)
mcp config set-url https://staging.example.com         # persist to the active profile
mcp --base-url https://staging.example.com whoami      # one-off override

Authentication & config

Credentials and settings live in ~/.mcpcloud/config.json (mode 0600; respects XDG_CONFIG_HOME on Linux):

mcp login                       # save an API key (interactive browser flow)
mcp logout                      # remove the saved key
mcp config show                 # print the resolved config (key redacted)
mcp config current              # alias of `config show`
mcp config set-org <name|id>    # persist a default organization (accepts name, slug, or id)

MCPCLOUD_API_KEY overrides the saved key; MCPCLOUD_ORG_ID overrides the saved default org.

Profiles

Keep separate credentials + base URLs for prod, staging, and self-host, and always know which one you're about to mutate:

mcp config profile add staging --url https://staging.example.com --key mck_stg
mcp config profile list         # ✓ marks the active profile
mcp config use staging          # switch the active profile
mcp --profile prod servers list # one-off override
export MCPCLOUD_PROFILE=staging # or select via env

mcp whoami prints the active profile and its source, and appends (production) to the base URL when it resolves to the production host — so a profile named "local" pointed at prod can't surprise you. mcp doctor runs the same resolution as an 8-point health check.

The dev loop

mcp dev runs a deployed server locally with hot reload: it downloads the server's generated bundle, serves it on localhost (HTTP/SSE/stdio), watches your files (and optionally an OpenAPI spec) to regenerate on change, auto-wires the running instance into your coding agent (--auto-connect claude-code), and exposes an inspector UI at /__inspect. Pair it with the round-trip tool editors (tools pull / tools edit / tools diff / tools reset-handler) to iterate on tool metadata and handler source against the live bundle.

Scripting & CI

Every command honors a machine-readable output contract, registered globally so it's uniform across the tree.

Output formats

| Flag | Effect | | -------------------- | ----------------------------------------------------------------------------------- | | --json | Emit a single JSON document on success; errors become a { "error": {…} } envelope. No human text is mixed in. | | --format <mode> | List output as table (default), tsv, jsonl, or json. | | --no-table | Shorthand for --format tsv — tab-separated rows for awk/cut/grep. | | --field <names> | Comma-separated columns to include in list output (repeatable). | | --filter <k=substr>| Case-insensitive substring filter on list rows (repeatable). | | --quiet | Suppress success/step/info chrome; data and errors still print. Pairs with exit codes for gates. | | --non-interactive | Refuse prompts (fail fast on missing input) without the color/glyph changes of --ci. | | --ci | Force CI mode (auto-detected when CI=true): no color, ASCII glyphs, no prompts, always surface request IDs. | | --warnings-as-errors | Exit non-zero if any warning is emitted. |

mcp --json servers list | jq '.servers[].id'
mcp servers list --field id,name,status --format jsonl
mcp servers list --filter status=active --no-table | cut -f1

Exit codes

| Code | Meaning | | ---- | ---------------------------------------------------------------------------------------- | | 0 | Success. | | 1 | Generic failure (API error, validation error, network error). | | 2 | No API key configured. Run mcp login or set MCPCLOUD_API_KEY. | | 3 | No API base URL configured (only reachable if you clear the built-in default and set nothing). |

Error envelope

Structured API errors are surfaced consistently. In --json mode:

{ "error": { "code": "server_not_found", "message": "Server not found", "requestId": "api_018f…", "docsUrl": "https://mcpcloud.sh/docs/errors#server_not_found" } }

In human mode the same fields print as code, a one-line remediation, the request id (always shown under --ci, even when the upstream response omitted one), and an absolute docs: link.

Idempotency

Mutations accept --idempotency-key <key> (1–255 ASCII chars, no whitespace). When omitted, the CLI auto-generates a UUID per invocation so its own internal retries on transient failures stay safe. Pass a stable key from your pipeline to make a whole step re-runnable.

CI deploy gate

The observability commands compose into a deploy gate that exits non-zero on failure — no output parsing required:

mcp servers deploy srv_123 --wait                        # block until the deploy is terminal
mcp deployments health <deploymentId> --quiet            # exit non-zero unless healthy
mcp metrics deployment <deploymentId> --since 15m --max-error-rate 0.02
                                                         # exit non-zero if the error rate breaches the budget

Resolve the deployment id from mcp servers get srv_123 --json (or mcp deployments list) after the deploy completes.

Command reference

Run mcp <command> --help for full options on any of these.

Generated from the live command tree by bun run docs:readme — do not edit by hand.

Top-level commands

| Command | Description | | --- | --- | | mcp analytics | Show the workspace analytics rollup (readiness, funnel, usage) | | mcp completion <shell> | Print a shell completion script (bash, zsh, or fish) | | mcp connect-agent | Connect your agent to the official MCPCloud MCP server (headless twin of /connect-agent) | | mcp doctor | Diagnose the CLI environment: Node, config, base URL, API key, claude CLI, and updates | | mcp help [topic] | Show extended help for a topic (auth, profiles, agents, errors) | | mcp init | Guided onboarding: pick org → pick/create project → create a server (empty skeleton, or generated from an OpenAPI/GraphQL spec via --from-spec) | | mcp invoke <server> [tool] | Call a tool on a deployed MCP server — or, with --local, boot this directory’s bundle once and call it there. | | mcp login | Sign in via browser (default) or paste an API key | | mcp logout | Remove the saved API key from ~/.mcpcloud/config.json | | mcp pull | Materialize a server’s working tree here: every tool as .md, every handler as .ts, plus the sync baseline push diffs against | | mcp push | Push local tool metadata and handler edits back to the cloud (diffed against your last pull) | | mcp ui | Interactive terminal UI: browse orgs/servers/skills, tail deployment logs, and watch the live mcp dev inspector | | mcp update | Check for a newer @mcpcloud/cli release and re-install it via your package manager | | mcp whoami | Show the caller identity, API key, base URL, and organizations you can access |

mcp alias — Manage per-profile resource shortcuts (aliases)

| Command | Description | | --- | --- | | mcp alias list | List aliases in the active profile | | mcp alias rm <name> | Remove an alias from the active profile | | mcp alias set <name> <target> | Create or update an alias. Target is :<id|name|slug>. |

mcp api-keys — Manage personal API keys

| Command | Description | | --- | --- | | mcp api-keys create | Create a new API key (the secret is shown once) | | mcp api-keys describe <apiKey> | Show one API key (accepts id or name; status, expiry, last used) — never the secret | | mcp api-keys list | List active API keys for the current user | | mcp api-keys revoke <apiKey> | Permanently revoke an API key (accepts id or name) | | mcp api-keys rotate <apiKey> | Mint a replacement key and grace-expire the old one (24h window; accepts id or name). The new secret is shown once. |

mcp audit — Workspace audit log (admin/owner only)

| Command | Description | | --- | --- | | mcp audit list | List recent audit events for an organization |

mcp config — Manage CLI configuration in ~/.mcpcloud/config.json

| Command | Description | | --- | --- | | mcp config clear-app-url | Forget the saved dashboard URL (falls back to MCPCLOUD_APP_URL or auto-derive) | | mcp config clear-editor | Forget the editor open preference, the picked editor command, AND the saved target (mcp dev will re-detect and prompt next session) | | mcp config clear-org | Remove the saved default organization ID | | mcp config clear-url | Remove the saved base URL (falls back to MCPCLOUD_BASE_URL) | | mcp config current | Alias for config show — print the active profile | | mcp config profile | Manage named config profiles (apiKey + baseUrl + defaultOrganizationId) | | mcp config profile add <name> | Create a new profile (use --url / --key / --app / --org to seed values) | | mcp config profile list | List all configured profiles | | mcp config profile remove <name> | Delete a profile (cannot remove the active or only-remaining profile) | | mcp config set-app-url <url> | Save the dashboard origin used by mcp login browser flow | | mcp config set-editor <pref> | Save the dev-runner editor open preference: always | never | | mcp config set-editor-command <command> | Override the editor launch command (default: code; e.g. cursor, code-insiders) | | mcp config set-org <organization> | Save a default organization (by name, slug, or id) | | mcp config set-url <url> | Save the API base URL to ~/.mcpcloud/config.json | | mcp config show | Print the active profile (API key is redacted) | | mcp config use <name> | Switch the active profile (e.g. staging, prod) |

mcp connections — Manage your per-server upstream API keys (BYOK) from the terminal

| Command | Description | | --- | --- | | mcp connections add <server> | Save (or replace) your upstream API key for a server — rotation is just adding again | | mcp connections list | List your stored upstream keys across servers (hints only) | | mcp connections remove <server> | Revoke your stored upstream key for a server |

mcp deployments — Inspect deployments

| Command | Description | | --- | --- | | mcp deployments get <deployment> | Show one deployment by id or selector (latest | active | previous, with --server) | | mcp deployments health <deployment> | Show a deployment's last health-check result (status, HTTP code, when it was checked) | | mcp deployments list | List deployments in an organization | | mcp deployments logs <deployment> | Show recent deployment events; pass --follow to tail new ones as they arrive | | mcp deployments rollback <deployment> | Roll back to a prior deployment — flips a paused/undeployed deployment back to active and demotes the current latest in one shot. | | mcp deployments runtime-auth <deployment> | Inspect a deployment's runtime-auth posture (access mode, exchange path, edge policy) |

mcp dev — Run a deployed MCP server locally with hot reload + agent auto-wire

| Command | Description | | --- | --- | | mcp dev init | Interactively pick an organization + server and write .mcpcloud/state.json (forces the picker even if state already exists) | | mcp dev invoke <tool> | Call a tool against the running mcp dev session in this directory. No auth — local runtime accepts anonymous JSON-RPC. | | mcp dev kill <pid> | Stop a running mcp dev session by PID (or "all" to stop every session) | | mcp dev list | List running mcp dev sessions on this machine | | mcp dev replay | Replay one or more recorded calls against the running mcp dev server | | mcp dev tail | Stream new mcp dev inspector records to stdout as JSON lines (Ctrl+C to stop) |

mcp domains — Serve servers from custom domains you own (Pro+)

| Command | Description | | --- | --- | | mcp domains add <hostname> | Attach a custom domain to a server (admin role required) | | mcp domains list | List the custom domains in an organization | | mcp domains namespaces | Verify a parent domain once, then attach subdomains to any server with no further DNS work | | mcp domains namespaces add <parentDomain> | Register a domain namespace and print its one-time DNS records (admin role required) | | mcp domains namespaces list | List the domain namespaces in an organization | | mcp domains namespaces remove <parentDomain> | Remove a domain namespace — existing attached hostnames keep working (admin role required) | | mcp domains namespaces verify <parentDomain> | Check the namespace verification records now | | mcp domains remove <hostname> | Remove a custom domain — traffic on it stops immediately (admin role required) | | mcp domains status <hostname> | Recheck a custom domain against Cloudflare and show status | | mcp domains transfer <hostname> | Move a custom domain to another server without certificate churn (admin role required) |

mcp installation — Manage your skill / artifact installations

| Command | Description | | --- | --- | | mcp installation disable <installationId> | Disable an installation by id (replay-as-success on already-disabled rows) | | mcp installation list | List your active installations and their ids | | mcp installation remove <installationId> | Mark an installation as removed by id |

mcp marketplace — Browse the public registry of MCP servers and skills

| Command | Description | | --- | --- | | mcp marketplace fork <artifact> | Fork a registry artifact (id or name) into one of your projects as an editable draft | | mcp marketplace get <artifact> | Show full details for one registry artifact (accepts id or name; readme, recent versions) | | mcp marketplace install <artifact> | Install a published registry artifact (server or skill; accepts id or name) into your organization | | mcp marketplace list | List published artifacts in the registry | | mcp marketplace publish <server|skill> | Publish a deployed server or a versioned skill to the registry (requires org admin) | | mcp marketplace version <artifact> <versionId> | Show details for one published version of a registry artifact (artifact accepts id or name) | | mcp marketplace versions <artifact> | List published versions of a registry artifact (accepts id or name) |

mcp metrics — Aggregate deployment metrics (request volume, error rate)

| Command | Description | | --- | --- | | mcp metrics deployment <deployment> | Show aggregate request metrics for a deployment over a window (CI deploy gate) |

mcp oauth — Manage OAuth provider connections

| Command | Description | | --- | --- | | mcp oauth connection | Inspect or revoke individual OAuth connections | | mcp oauth connection delete <connection> | Revoke an OAuth connection by id or provider key (best-effort upstream revoke; replay-as-success on already-revoked rows) | | mcp oauth connections | List OAuth provider connections across the organization |

mcp orgs — List and inspect the organizations you belong to

| Command | Description | | --- | --- | | mcp orgs get [organizationId] | Show one organization (defaults to your active org) | | mcp orgs list | List organizations you can access | | mcp orgs members [organizationId] | List members of an organization | | mcp orgs usage [organizationId] | Show request-volume usage for an organization | | mcp orgs use <organizationId> | Set the default organization for this profile (discoverable alias of mcp config set-org) |

mcp plugin — Manage @mcpcloud/cli plugins (third-party command extensions)

| Command | Description | | --- | --- | | mcp plugin install <package> | Install a plugin from npm (uses npm under the hood) | | mcp plugin list | List installed plugins | | mcp plugin remove <name> | Remove an installed plugin |

mcp projects — Manage projects

| Command | Description | | --- | --- | | mcp projects api-source <apiSourceId> | Show details for a single imported API spec | | mcp projects api-sources <project> | List imported API specs / source material for a project | | mcp projects create | Create a new project in an organization | | mcp projects delete <project> | Permanently delete a project. Requires --confirm "" and that the project is empty of servers/skills. | | mcp projects get <project> | Get details for a single project (accepts id or name) | | mcp projects list | List projects in an organization | | mcp projects update <project> | Update a project (RFC 7396 merge patch — only listed fields change) |

mcp servers — Manage MCP servers

| Command | Description | | --- | --- | | mcp servers create | Create an empty server skeleton in a project | | mcp servers delete <server> | Permanently delete a server and all its data. Requires --confirm "". | | mcp servers deploy <server> | Deploy a server's generated bundle to Cloudflare Workers (closes the spec → deploy loop) | | mcp servers deployments <server> | List a server's deployment history | | mcp servers deps | Compose another server's tools into this one (list / add / rm) | | mcp servers deps add <server> <child> | Compose 's tools into . Both accept an id, name or slug. | | mcp servers deps list [server] | List the servers this one composes. | | mcp servers deps rm <server> <dependencyId> | Remove a composed dependency (id from deps list). | | mcp servers env | Manage server runtime environment bindings (encrypted secrets injected by the proxy). | | mcp servers env get <server> <bindingName> | Show metadata for one env binding. Plaintext is never returned — values are write-only. | | mcp servers env list <server> | List a server's env bindings (metadata only; values are never returned). | | mcp servers env set <server> <bindingName> [value] | Create or replace an env binding's value. Schedules a Cloudflare-runtime push when the server has an active deployment. | | mcp servers env unset <server> <bindingName> | Remove an env binding. Idempotent — succeeds even if the binding is already gone. | | mcp servers export <server> | Export a self-host bundle (Dockerfile + node entry + config) for a server | | mcp servers generate <server> | Generate the server's TypeScript bundle (the exact code deploy ships) and optionally write it to disk — a dry-run for the codegen path. Wraps POST /api/v1/server/generate. | | mcp servers get <server> | Get details for a single server (accepts id, name, or slug) | | mcp servers ingest | Create a server from an OpenAPI spec (file, URL, or @- stdin) or a GraphQL endpoint. Wraps POST /api/v1/server/ingest. | | mcp servers list | List servers | | mcp servers logs <server> | Show recent deployment events for a server's latest deployment | | mcp servers oauth-connections <server> | List OAuth provider connections bound to this server | | mcp servers pause <server> | Pause the server's latest active deployment (traffic stops; worker is preserved) | | mcp servers prompts | Author the prompts a client reads as this server’s workflows (list / set / rm) | | mcp servers prompts list <server> | List the prompts authored on a server. | | mcp servers prompts rm <server> <name> | Remove a prompt by name. | | mcp servers prompts set <server> <name> | Create or replace a prompt by name. Re-running with the same name updates it. | | mcp servers push-spec <server> | Regenerate a server’s bundle from a local OpenAPI spec. Previews the tool changes; --apply writes them. | | mcp servers regenerate <server> | Re-fetch a server's source spec and rebuild its tools with the current codegen (preserves customizations). Wraps POST /api/v1/server/regenerate. | | mcp servers resources | Author the resources this server exposes to clients (list / set / rm) | | mcp servers resources list <server> | List the resources authored on a server. | | mcp servers resources rm <server> <uri> | Remove a resource by URI. | | mcp servers resources set <server> <uri> | Create or replace a resource by URI. Re-running with the same URI updates it. | | mcp servers resume <server> | Resume the server's paused deployment (flips dispatch routing back on; only platformWorker deployments support instant resume) | | mcp servers score <server> | Score whether an agent handed this catalog picks the right tool (starts a run, or reads the last one) | | mcp servers shape <server> | Propose task-shaped tools over this server’s endpoints (starts a run, or reads the last one) | | mcp servers test-runs | Inspect and trigger server sandbox test runs | | mcp servers test-runs get <testRunId> | Show one server test run with assertions, trace, and the tool response | | mcp servers test-runs list <server> | List sandbox test runs for a server | | mcp servers test-runs new <server> | Trigger a sandbox test run against a server's latest deployment (synchronous) | | mcp servers test-scenarios | Inspect server sandbox test scenarios | | mcp servers test-scenarios generate <server> | Seed one baseline smoke-test scenario per tool from the tools’ schemas (safe to re-run) | | mcp servers test-scenarios get <scenarioId> | Show one server test scenario including its request and expected response | | mcp servers test-scenarios list <server> | List test scenarios bound to a server | | mcp servers test-scenarios new <server> | Author a test scenario for one of the server’s tools | | mcp servers test-scenarios rm <server> <scenarioId> | Archive a test scenario | | mcp servers test-scenarios update <server> <scenarioId> | Update a test scenario (only the flags you pass change) | | mcp servers test-suites | Inspect server sandbox test suites (groups of scenarios) | | mcp servers test-suites get <suiteId> | Show one server test suite including its scenario membership | | mcp servers test-suites list <server> | List test suites bound to a server | | mcp servers test-suites run <server> | Run the server’s test scenarios and report the suite result | | mcp servers update <server> | Update a server (name, description, tool surface, upstream key mode, runtime token TTL) | | mcp servers variables | Inspect and set the sandbox variables that scenario arguments reference | | mcp servers variables list <server> | List a server’s sandbox variables and which ones still need a value | | mcp servers variables set <server> | Set or clear sandbox variables (repeat --set; an empty value clears) | | mcp servers version <server> <versionId> | Show details for a single server version | | mcp servers versions <server> | List published versions of a server |

mcp skills — Manage skills

| Command | Description | | --- | --- | | mcp skills archive <skill> | Archive a skill (replay-as-success on already-archived rows) | | mcp skills connect <skill> | Print (or apply) the MCP configuration that connects this skill to your coding agent | | mcp skills create | Create an empty skill draft in a project | | mcp skills delete <skill> | Permanently delete a draft skill. Requires --confirm "". Published skills with versions/installs are rejected (archive instead). | | mcp skills deploy <skill> | Deploy a published skill version as an MCP endpoint (newest version by default) | | mcp skills get <skill> | Get details for a single skill (accepts id or name) | | mcp skills install <skill> | Install a skill into the caller's project | | mcp skills installations <skill> | List the installation footprint of a skill (which orgs / users installed it) | | mcp skills invoke <skill> | Run a deployed skill from the terminal. Resolves the skill’s MCP endpoint, auto-discovers its single tool, and calls it. | | mcp skills list | List skills in an organization | | mcp skills publish <skill> | Cut an immutable version of a skill | | mcp skills pull <registryArtifactId> | Download an installed skill as SKILL.md + mcpcloud.json for your coding agent | | mcp skills set-content <skill> | Write a skill’s authored content: instructions, dependencies, guardrails, schemas, composition graph | | mcp skills test-runs | Inspect and trigger skill sandbox test runs | | mcp skills test-runs get <testRunId> | Show one skill test run with assertions, trace, and output | | mcp skills test-runs list <skill> | List sandbox test runs for a skill | | mcp skills test-runs new <skill> | Trigger a sandbox test run against a skill (synchronous; returns terminal status) | | mcp skills test-scenarios | Inspect skill sandbox test scenarios | | mcp skills test-scenarios generate <skill> | Seed suggested scenarios from the skill’s examples and its dependencies’ tools (safe to re-run) | | mcp skills test-scenarios get <scenarioId> | Show one skill test scenario including its prompt and assertion body | | mcp skills test-scenarios list <skill> | List test scenarios bound to a skill | | mcp skills test-scenarios new <skill> | Author a sandbox test scenario for a skill | | mcp skills test-scenarios rm <skill> <scenarioId> | Archive a skill test scenario | | mcp skills test-scenarios update <skill> <scenarioId> | Update a skill test scenario (only the flags you pass change) | | mcp skills token <skill> | Reveal the skill’s runtime bearer token (--rotate issues a new one and invalidates the old) | | mcp skills uninstall <skill> | Mark the caller's installation of this skill as removed | | mcp skills update <skill> | Update skill metadata (name, description, visibility) | | mcp skills version <skill> <versionId> | Show details for one published skill version (workflow summary, triggers, deps) | | mcp skills versions <skill> | List published versions of a skill |

mcp tools — Inspect and edit tools on a project or server

| Command | Description | | --- | --- | | mcp tools diff <name> | Compare a tool's local files (metadata .md + handler .ts) against the cloud version. | | mcp tools edit <name> | Open a tool's local .md in $EDITOR; pushes your changes to the cloud on save. Requires mcp dev to have materialized tools (run mcp tools pull first if needed). | | mcp tools enrich [name] | Run AI enrichment for one tool (prints the suggested vs applied diff), or for the whole server with --all. | | mcp tools handlers | Inspect tool handler files (the per-tool .ts in src/tools/) | | mcp tools handlers list | List every tool with its handler override status (default / override / stale). | | mcp tools list | List tools for a project, or scope to a single server with --server | | mcp tools pull [name] | Refresh local tool files from the cloud, overwriting any unsaved local edits. Use after 409 conflict to re-sync. | | mcp tools pull-handler <name> | Refresh a tool's handler source from the cloud, overwriting any local edits. Use after 409 conflict to re-sync. | | mcp tools reset-handler <name> | Drop the cloud handler override for a tool and re-materialize the codegen default. Prompts to confirm unless --yes is passed. | | mcp tools show <name> | Show a tool's full applied metadata (and any pending AI suggestion). |

mcp usage — Show organization usage (tool-call volume) and credit balance from the terminal

| Command | Description | | --- | --- | | mcp usage ledger | List organization credit ledger entries (most recent first) |

Plugins

mcp plugin install <spec> extends the CLI with third-party commands. A plugin runs in your CLI process with your credentials and the same filesystem access — install only plugins you trust.

Configuration file

~/.mcpcloud/config.json (mode 0600). Environment variables take precedence over its contents. Recognised fields:

{
  "apiKey": "mck_...",                       // saved by `mcp login`
  "baseUrl": "https://your-deployment...",   // saved by `mcp config set-url` (omit to use the production default)
  "defaultOrganizationId": "org_...",        // saved by `mcp config set-org`
  "profiles": { "staging": { /* apiKey + baseUrl + defaultOrganizationId */ } }
}

Reliability

  • Timeout: every request is bounded by a 30-second AbortController.
  • Retry: transient failures (network errors, HTTP 502/503/504) are retried once with jittered backoff. 4xx responses are never retried.
  • Error envelope: server errors carry their code, message, requestId, and docsUrl so you can correlate with backend logs.

Development

git clone https://github.com/MCPCloud-sh/mcp-hub
cd mcp-hub/packages/cli

bun install
bun run dev -- --help            # run from source
bun run typecheck                # tsc --noEmit
bun run test                     # vitest
bun run build                    # bundle to dist/index.js
bun run docs:readme              # regenerate the command reference above

The command reference between the markers is generated from the live Commander tree by bun run docs:readme; a conformance test fails if it drifts, so a new command can't ship with a stale README.

Releasing

The CLI is released independently of the dashboard via Changesets.

Support

License

MIT © MCPCloud.sh