@yawlabs/mcph 0.46.1 → 0.46.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  All notable changes to `@yawlabs/mcph` are documented here. This project uses [semantic versioning](https://semver.org) and a CI-gated release flow: pushing a `vX.Y.Z` tag triggers `.github/workflows/release.yml`, which publishes to npm.
4
4
 
5
+ ## 0.46.3 — 2026-04-18
6
+
7
+ - **`mcph --help` rewritten: quickstart, grouped subcommands, env vars, config precedence** — The old help listed ten subcommands in a flat table and spent most of its real estate on install flag details (already available via `mcph install --help`) and a three-line token-resolution note. Subcommands are now grouped by purpose (Setup, Inspection, Maintenance, Other), each with a multi-line description that explains what the command actually does — not just its name. A numbered Quickstart at the top points users at the token URL and shows the two commands needed to finish onboarding. An Environment variables section documents the eight `MCPH_*` overrides (`MCPH_URL`, `MCPH_POLL_INTERVAL`, `MCPH_SERVER_CAP`, `MCPH_MIN_COMPLIANCE`, `MCPH_AUTO_LOAD`, `MCPH_PRUNE_RESPONSES`, `MCPH_DISABLE_PERSISTENCE`) that were previously only discoverable by reading the doctor source. Config resolution is expanded from three lines to a proper four-tier precedence list (env → project.local → project → user-global). Trailing pointer to `mcph <subcommand> --help` for flag-level detail so the top-level stays scannable. `INSTALL_USAGE` import removed from `index.ts` since the install flag block no longer inlines into top-level help.
8
+
9
+ ## 0.46.2 — 2026-04-18
10
+
11
+ - **Doctor's UPGRADE AVAILABLE section points at `mcph upgrade`** — Previously it inlined `npm install -g @yawlabs/mcph@latest` with a long prose aside about npx-vs-global. Now it tells the user to run `mcph upgrade` (prints the exact command for their install method) or `mcph upgrade --run` (executes for global-npm). Shorter, single source of truth for "how do I actually update?" since doctor already detects staleness and the upgrade subcommand already understands how the install was done.
12
+
5
13
  ## 0.46.1 — 2026-04-18
6
14
 
7
15
  - **Fix `mcph upgrade` reporting `Current: dev` in shipped bundles** — The v0.46.0 `readCurrentVersion()` used `(globalThis as ...).__VERSION__`, but tsup's `define` only substitutes bare identifier references, not property accesses — so the compiled bundle fell through to the "dev" fallback regardless of what version was installed. Switched to the same `declare const __VERSION__ / typeof __VERSION__ !== "undefined"` pattern used in `index.ts`, `doctor-cmd.ts`, `server.ts`, and `upstream.ts`. Smoke-tested via `npx @yawlabs/mcph@latest upgrade`: now reports the actual installed version.
package/dist/index.js CHANGED
@@ -1458,7 +1458,7 @@ function selectFlakyNamespaces(entries, limit) {
1458
1458
  }
1459
1459
 
1460
1460
  // src/doctor-cmd.ts
1461
- var VERSION = true ? "0.46.1" : "dev";
1461
+ var VERSION = true ? "0.46.3" : "dev";
1462
1462
  async function runDoctor(opts = {}) {
1463
1463
  if (opts.json) return runDoctorJson(opts);
1464
1464
  const lines = [];
@@ -1528,9 +1528,8 @@ async function runDoctor(opts = {}) {
1528
1528
  if (staleHint) {
1529
1529
  print("UPGRADE AVAILABLE");
1530
1530
  print(` Running ${VERSION}; npm latest is ${staleHint}.`);
1531
- print(" If `mcph` is globally installed it shadows `npx` \u2014 upgrade with:");
1532
- print(" npm install -g @yawlabs/mcph@latest");
1533
- print(" Otherwise restart your MCP client; `npx -y @yawlabs/mcph` will fetch the new version.");
1531
+ print(" Run `mcph upgrade` to see the exact command for your install, or");
1532
+ print(" `mcph upgrade --run` to execute it (global-npm installs only).");
1534
1533
  print("");
1535
1534
  }
1536
1535
  let exitCode = 0;
@@ -2543,7 +2542,6 @@ async function runInstallAll(opts, log2, err) {
2543
2542
  exitCode: 1
2544
2543
  };
2545
2544
  }
2546
- var INSTALL_USAGE = USAGE;
2547
2545
 
2548
2546
  // src/reset-learning-cmd.ts
2549
2547
  import { unlink } from "fs/promises";
@@ -4746,7 +4744,7 @@ function categorizeSpawnError(err) {
4746
4744
  }
4747
4745
  async function connectToUpstream(config, onDisconnect, onListChanged) {
4748
4746
  const client = new Client(
4749
- { name: "mcph", version: true ? "0.46.1" : "dev" },
4747
+ { name: "mcph", version: true ? "0.46.3" : "dev" },
4750
4748
  { capabilities: {} }
4751
4749
  );
4752
4750
  let transport;
@@ -5227,7 +5225,7 @@ var ConnectServer = class _ConnectServer {
5227
5225
  this.apiUrl = apiUrl6;
5228
5226
  this.token = token6;
5229
5227
  this.server = new Server(
5230
- { name: "mcph", version: true ? "0.46.1" : "dev" },
5228
+ { name: "mcph", version: true ? "0.46.3" : "dev" },
5231
5229
  {
5232
5230
  capabilities: {
5233
5231
  tools: { listChanged: true },
@@ -7572,7 +7570,7 @@ async function runUpgrade(opts = {}) {
7572
7570
  return { exitCode: 3, lines };
7573
7571
  }
7574
7572
  function readCurrentVersion() {
7575
- return true ? "0.46.1" : "dev";
7573
+ return true ? "0.46.3" : "dev";
7576
7574
  }
7577
7575
 
7578
7576
  // src/index.ts
@@ -7653,42 +7651,76 @@ if (subcommand === "compliance") {
7653
7651
  }
7654
7652
  runUpgrade(parsed.options).then((r) => process.exit(r.exitCode));
7655
7653
  } else if (subcommand === "--help" || subcommand === "-h" || subcommand === "help") {
7656
- const installBlock = ` ${INSTALL_USAGE.replace(/^Usage: /, "").replace(/\n/g, "\n ")}`;
7657
- process.stdout.write(
7658
- `
7659
- mcph \u2014 MCP server orchestrator for mcp.hosting
7654
+ process.stdout.write(`
7655
+ mcph \u2014 one install, every MCP server, managed from the cloud.
7660
7656
 
7661
- Usage:
7662
- mcph Run as MCP server (requires a token)
7663
- mcph install <client> [flags] Auto-edit an MCP client's config to launch mcph
7664
- mcph doctor [--json] Print loaded config + detected clients (support diagnostic)
7665
- mcph servers [--json] List servers configured in your mcp.hosting dashboard
7666
- mcph bundles [list|match] Browse curated multi-server bundles
7667
- mcph compliance <target> [flags] Run the compliance suite against an MCP server
7668
- mcph reset-learning Clear cross-session learning history (~/.mcph/state.json)
7669
- mcph completion <shell> Print a shell completion script (bash|zsh|fish|powershell)
7670
- mcph upgrade [--run] [--json] Show (or run) the upgrade command for @yawlabs/mcph
7671
- mcph --version Print version
7657
+ Quickstart:
7658
+ 1. Get a token https://mcp.hosting/dashboard/settings/tokens
7659
+ 2. Install mcph mcph install claude-code --token mcp_pat_...
7660
+ 3. Verify setup mcph doctor
7672
7661
 
7673
- Install:
7674
- ${installBlock}
7662
+ Setup:
7663
+ install <client> Auto-edit an MCP client's config to launch mcph.
7664
+ Clients: claude-code | claude-desktop | cursor | vscode.
7665
+ install --list Detect MCP clients on this machine (read-only).
7666
+ install --all Install into every detected client in one shot.
7675
7667
 
7676
- Compliance flags:
7677
- --publish Publish the report to mcp.hosting and print the URL
7668
+ Inspection:
7669
+ doctor Diagnose setup: config, token, clients, learning,
7670
+ upgrade, flaky-namespace reliability rollup.
7671
+ servers [<filter>] List servers in your mcp.hosting dashboard; the
7672
+ positional arg substring-filters by namespace.
7673
+ bundles [list|match] Browse curated multi-server bundles. \`list\` shows
7674
+ all; \`match\` partitions against your enabled
7675
+ servers (ready vs. partially installed).
7678
7676
 
7679
- Token resolution (highest first):
7680
- 1. MCPH_TOKEN env var
7681
- 2. <project>/.mcph/config.local.json (machine-local override; gitignore)
7682
- 3. ~/.mcph/config.json (user-global default)
7677
+ Maintenance:
7678
+ upgrade Show (or --run) the command that bumps
7679
+ @yawlabs/mcph to the latest version.
7680
+ reset-learning Clear cross-session learning history
7681
+ (~/.mcph/state.json).
7682
+ completion <shell> Print a shell completion script for bash, zsh,
7683
+ fish, or powershell. Redirect to your
7684
+ completions directory to install.
7683
7685
 
7684
- Token rotation: mcph reads its config at startup. Restart the MCP
7685
- client (or kill mcph; the client will respawn it) after editing.
7686
+ Other:
7687
+ compliance <target> Run the 88-test compliance suite against an MCP
7688
+ server. --publish posts the report to
7689
+ mcp.hosting and prints the public URL.
7690
+ help, --help, -h Show this help.
7691
+ --version, -V Print mcph version.
7686
7692
 
7687
- `
7688
- );
7693
+ Running \`mcph\` with no subcommand starts the MCP server (requires a
7694
+ resolved token). Most read-only subcommands accept \`--json\` for
7695
+ machine-readable output. Run \`mcph <subcommand> --help\` for per-
7696
+ subcommand flag details.
7697
+
7698
+ Environment variables:
7699
+ MCPH_TOKEN API token (overrides every config file).
7700
+ MCPH_URL API base URL (default https://mcp.hosting).
7701
+ MCPH_POLL_INTERVAL Dashboard polling interval, seconds (default 60).
7702
+ MCPH_SERVER_CAP Max concurrently active servers (default 6).
7703
+ MCPH_MIN_COMPLIANCE Minimum grade to auto-activate (A|B|C|D|F).
7704
+ MCPH_AUTO_LOAD Load all servers at startup, ignoring SERVER_CAP.
7705
+ MCPH_PRUNE_RESPONSES Set to \`0\` to disable response pruning.
7706
+ MCPH_DISABLE_PERSISTENCE Disable cross-session learning state.
7707
+
7708
+ Config resolution (highest precedence first):
7709
+ 1. MCPH_TOKEN / MCPH_URL env vars
7710
+ 2. <project>/.mcph/config.local.json machine-local overrides (gitignore)
7711
+ 3. <project>/.mcph/config.json project-shared (checked in)
7712
+ 4. ~/.mcph/config.json user-global default
7713
+
7714
+ Token rotation: mcph reads config at startup. Restart the MCP client
7715
+ (or kill mcph; the client will respawn it) after editing any config.
7716
+
7717
+ Docs: https://mcp.hosting
7718
+ Source: https://github.com/YawLabs/mcph
7719
+
7720
+ `);
7689
7721
  process.exit(0);
7690
7722
  } else if (subcommand === "--version" || subcommand === "-V") {
7691
- process.stdout.write(`mcph ${true ? "0.46.1" : "dev"}
7723
+ process.stdout.write(`mcph ${true ? "0.46.3" : "dev"}
7692
7724
  `);
7693
7725
  process.exit(0);
7694
7726
  } else if (subcommand && !subcommand.startsWith("-")) {
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@yawlabs/mcph",
3
- "version": "0.46.1",
3
+ "version": "0.46.3",
4
4
  "description": "mcp.hosting — one install, all your MCP servers, managed from the cloud",
5
5
  "license": "UNLICENSED",
6
- "author": "Yaw Labs <contact@yaw.sh> (https://yaw.sh)",
6
+ "author": "Yaw Labs <support@mcp.hosting> (https://mcp.hosting)",
7
7
  "type": "module",
8
8
  "bin": {
9
9
  "mcph": "./dist/index.js"