@yawlabs/mcph 0.47.0 → 0.47.1

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,10 @@
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.47.1 — 2026-04-18
6
+
7
+ - **README intro rewritten to frame mcph's value vs. `claude mcp add` / hand-edited `mcp.json`** — Same forum thread (r/cursor, 2026-04-18) had a second comment that v0.47.0 didn't address: "I don't think any developer is 9$ a month afraid of json. Also all of those tools have a nicer way of installing mcp servers than editing json." Fair — the old intro led with "never hand-edit MCP JSON configs again," which is exactly the dismissal that lands. The new intro replaces that line with four concrete situations where mcph earns its keep (multi-client / multi-machine sync, `dispatch` context-pruning for large server accounts, encrypted credential centralization, A–F compliance visibility). It then *concedes* the skeptic's point directly in the last sentence: "If you use one client on one machine with a handful of servers, `claude mcp add` or hand-editing `mcp.json` is fine — mcph's value shows up when that setup stops scaling." Honest framing beats defensive framing; the people who actually have the scaling problem will self-select in.
8
+
5
9
  ## 0.47.0 — 2026-04-18
6
10
 
7
11
  - **Compliance grade surfaces on every `discover` output, not just when `MCPH_MIN_COMPLIANCE` is set** — Previously the `[A]`/`[B]`/… tag only appeared when the user had pre-configured a floor with `MCPH_MIN_COMPLIANCE`, which meant the trust signal was invisible by default. Forum feedback (r/cursor, 2026-04-18) called this out directly: "how do you manage trust … making sure MCPs do not contain malicious code?" The grade is the answer — but only if you can see it without opting in first. Now every scored server renders with its grade inline (`github — GitHub [ready] [A]`), so the model (and the human reading the output) factors trust into activation decisions unconditionally. The `mcp_connect_discover` tool description picks this up ("treat it as a trust signal and prefer higher-graded alternatives when otherwise equivalent"). Ungraded servers still render untagged (don't punish unknown on a catalog where many entries aren't scored yet). When the floor IS set and a server is below it, the tag is replaced by the existing `(grade D — below MCPH_MIN_COMPLIANCE=B, won't auto-activate)` refusal line. Paired test: `server.test.ts` flips the "omits `[grade]` when env unset" contract to "shows `[grade]` when env unset" and keeps the ungraded-leaves-line-clean invariant.
package/README.md CHANGED
@@ -2,7 +2,14 @@
2
2
 
3
3
  One install. All your MCP servers. Managed from the cloud.
4
4
 
5
- mcph is an MCP server that orchestrates all your other MCP servers. Configure your servers once on [mcp.hosting](https://mcp.hosting), install mcph in your client, and never hand-edit MCP JSON configs again.
5
+ mcph is an MCP server that fronts every other MCP server you use. Install it once per AI client (Claude Code, Claude Desktop, Cursor, VS Code) and your servers come from your [mcp.hosting](https://mcp.hosting) account instead of a hand-edited `mcpServers` block. It earns its keep when you hit any of these:
6
+
7
+ - **More than one client or more than one machine.** Add a server once on the dashboard; every client/device picks it up on the next poll. No copy-paste of the same JSON into four config files, no per-machine drift.
8
+ - **Tool-context bloat.** The `dispatch` meta-tool ranks your installed servers against the task at hand and loads only the top match(es). A 30-server account stays at a handful of tools in context at any moment instead of surfacing hundreds by default.
9
+ - **API tokens you'd rather not sit in disk configs.** Credentials live encrypted on mcp.hosting and inject at spawn time. Rotate once — every client picks up the new value. Revoke the mcp.hosting token and every install stops working.
10
+ - **A trust signal before you activate.** Every scored server renders with its A–F compliance grade in `discover`. Set `MCPH_MIN_COMPLIANCE=B` to refuse anything below.
11
+
12
+ If you use one client on one machine with a handful of servers, `claude mcp add` or hand-editing `mcp.json` is fine — mcph's value shows up when that setup stops scaling.
6
13
 
7
14
  ## How it works
8
15
 
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.47.0" : "dev";
1461
+ var VERSION = true ? "0.47.1" : "dev";
1462
1462
  async function runDoctor(opts = {}) {
1463
1463
  if (opts.json) return runDoctorJson(opts);
1464
1464
  const lines = [];
@@ -4746,7 +4746,7 @@ function categorizeSpawnError(err) {
4746
4746
  }
4747
4747
  async function connectToUpstream(config, onDisconnect, onListChanged) {
4748
4748
  const client = new Client(
4749
- { name: "mcph", version: true ? "0.47.0" : "dev" },
4749
+ { name: "mcph", version: true ? "0.47.1" : "dev" },
4750
4750
  { capabilities: {} }
4751
4751
  );
4752
4752
  let transport;
@@ -5227,7 +5227,7 @@ var ConnectServer = class _ConnectServer {
5227
5227
  this.apiUrl = apiUrl6;
5228
5228
  this.token = token6;
5229
5229
  this.server = new Server(
5230
- { name: "mcph", version: true ? "0.47.0" : "dev" },
5230
+ { name: "mcph", version: true ? "0.47.1" : "dev" },
5231
5231
  {
5232
5232
  capabilities: {
5233
5233
  tools: { listChanged: true },
@@ -7572,7 +7572,7 @@ async function runUpgrade(opts = {}) {
7572
7572
  return { exitCode: 3, lines };
7573
7573
  }
7574
7574
  function readCurrentVersion() {
7575
- return true ? "0.47.0" : "dev";
7575
+ return true ? "0.47.1" : "dev";
7576
7576
  }
7577
7577
 
7578
7578
  // src/index.ts
@@ -7728,7 +7728,7 @@ if (subcommand === "compliance") {
7728
7728
  `);
7729
7729
  process.exit(0);
7730
7730
  } else if (subcommand === "--version" || subcommand === "-V") {
7731
- process.stdout.write(`mcph ${true ? "0.47.0" : "dev"}
7731
+ process.stdout.write(`mcph ${true ? "0.47.1" : "dev"}
7732
7732
  `);
7733
7733
  process.exit(0);
7734
7734
  } else if (subcommand && !subcommand.startsWith("-")) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yawlabs/mcph",
3
- "version": "0.47.0",
3
+ "version": "0.47.1",
4
4
  "description": "mcp.hosting — one install, all your MCP servers, managed from the cloud",
5
5
  "license": "UNLICENSED",
6
6
  "author": "Yaw Labs <support@mcp.hosting> (https://mcp.hosting)",