@awesomate/hosting-mcp
Version:
Awesomate MCP server — lets Claude manage your Awesomate WordPress hosting, plan, limits, n8n automations, and build Node/static apps + databases
78 lines (66 loc) • 4.23 kB
Markdown
# Connection & bootstrap troubleshooting
Load this when a connect (bootstrap) run or an `awesomate_*` call is failing.
Wrong-account / profile / pin problems → `references/multi-account.md`.
No `awesomate_*` tools registered in the session at all →
`references/rest-fallback.md`.
## How the bootstrap runs
`scripts/bootstrap.mjs` is what the hub's Connect-Claude-Code prompt executes,
via `npx -y --package=@awesomate/hosting-mcp awesomate-hosting-bootstrap`.
Always the `--package=` form — a bare `-p` breaks the claude CLI's argv
pre-scan if the command is ever wrapped in `claude mcp add`. It redeems the
hub setup code for a scoped access token, stores it locally (chmod 600),
installs this skill into `~/.claude/skills`, registers the MCP server, and
(Support Plus+, best-effort) generates an SSH keypair and registers the public
key. If the SSH step fails (e.g. hosting not fully provisioned), the token +
skill + MCP are still set up.
## Reading the connect result
The bootstrap prints a final `AWESOMATE CONNECT: SUCCESS account=<slug>` (or
`PARTIAL … issues=…` / `FAILED reason=…`) sentinel — when a connect ran as a
`!` bang command, check for that line instead of assuming success from
silence. `PARTIAL` means the token/pin are stored but a step (listed in
`issues=`) needs the printed manual fix.
## Sandboxed / ephemeral environments (cloud agent containers)
- **Egress proxy**: if `HTTPS_PROXY`/`HTTP_PROXY` is set, the environment
forces traffic through a proxy that Node's built-in fetch ignores — requests
bypass it and the gateway answers 403, which looks like a bad code/token but
is a transport failure. The bootstrap and MCP server handle this themselves
(undici env-proxy agent); if an older version is in play, prefix commands
with `NODE_USE_ENV_PROXY=1`. Diagnostic: `curl` works but `node -e "fetch(…)"`
403s → proxy bypass, not credentials.
- **Interrupted connect?** Setup codes are re-runnable for their whole
10-minute life (each run mints a fresh token), and `--pat amt_pat_…` resumes
with an already-redeemed token — never tell the user their code is spent
unless the API literally said so.
- **Nothing persists**: `~/.awesomate`, the skill copy, and the MCP
registration all vanish with the container. Treat a container connect as a
diagnosis/test, and tell the user a real workstation is needed for a lasting
install.
- **No ssh client**: containers usually lack `ssh-keygen`/`ssh`, so deploy and
shell are unavailable — reads and management calls still work. The bootstrap
skips SSH with a note rather than failing.
- Never probe connectivity with a POST to `/redeem` — it's state-changing. Use
`GET {apiBase}/api/hosting-access/context` (401 without a token still proves
reachability).
## When you're stuck: generate a support report
If a connect or tool failure survives the documented fixes (wrong account,
proxy, resume, restart, legacy registrations), don't keep guessing — hand
Awesomate a diagnostic they can act on:
1. Run `node ~/.claude/skills/awesomate-hosting/scripts/support-report.mjs
--note "<one line: what the user was doing and what happened>"`.
It writes a **fully redacted** report to
`~/.awesomate/support-report-<timestamp>.md` — tokens reduced to
prefix+last4, no key material, proxy credentials stripped. It includes
versions, profiles/pin/registration state, live connectivity probes, and
the last bootstrap log automatically.
2. Show the user the file path and the headline findings (the ACTIVE line,
any ⚠ LEGACY registration flags, and the probe results).
3. **Ask the user before submitting.** With their OK, re-run with `--submit`
— it POSTs the report to Awesomate and returns a reference like
`ASR-XXXXXXXX`. Tell the user to quote that reference to
support@awesomate.ai or their Awesomate contact; the report is already
attached to it server-side. Submission works even when the token is
broken (that's usually why you're here).
4. If `--submit` fails too (fully offline), the user emails the file itself —
it's safe to send as-is.
Never edit the report to add raw tokens, codes, or keys, and never submit
without the user's explicit go-ahead.