---
summary: Fix landing-page connect snippets for hosted HTTP deployments — drop no-op env block from HTTP config, retarget Claude tab at the HTTP endpoint
breaking: false
---

# 0.6.4 — 2026-04-21

The connect card on the landing page leaked STDIO-shaped connection info into the HTTP and Claude tabs. On a hosted instance (where the server already owns its credentials), visitors saw env-var placeholders they were expected to fill in — but MCP clients only forward env vars to spawned stdio child processes, so the block was a silent no-op for `type: 'http'` clients. The Claude tab had the same issue, plus it hard-coded a `claude mcp add --transport stdio ... -- bunx <pkg>@latest` command that installed a *different* (local) copy instead of connecting to the instance the visitor was already looking at.

## Fixed

- **`src/mcp-server/transports/http/landing-page.ts`** — `renderConnectSnippets()`:
  - **HTTP config** no longer emits the `env` block even when `landing.envExample` is set. Env vars are meaningful only for the stdio transport (the client spawns the process); under `type: 'http'` they're ignored by every MCP client and mislead visitors into thinking the hosted server needs credentials it already has. STDIO tab continues to carry `env` as before.
  - **Claude tab** now always renders `claude mcp add --transport http <shortName> <endpoint>`. Previously, when `landing.npmPackage` was set, it rendered a stdio/bunx command with `--env` flags — wrong in context: the landing page is served over HTTP, so the visitor is already connecting to this instance, not installing a local copy. Visitors who want to run locally can still grab the `bunx <pkg>@latest` invocation from the STDIO tab's JSON.

## Changed

- **`src/mcp-server/transports/http/landing-page.ts`** — removed now-dead `buildClaudeStdioCmd()` helper. `envFromEntries()` is retained (still used by the STDIO config path).

## Tests

- **`tests/unit/mcp-server/transports/http/landing-page.test.ts`** — added a `connect snippets` describe block covering:
  - STDIO config keeps the `env` block when `envExample` is set.
  - HTTP config omits the `env` block even when `envExample` is set.
  - Claude tab uses `--transport http` with no `--env` flags and no `bunx` invocation.
  - Claude tab uses HTTP even for published packages (the prior `npmPackage ? stdio : http` branch is gone).
