Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Percher

NPM · @PERCHER/MCP · 2 COMPONENTS · SCANNED SEP 20

MCP-native hosting: publish and operate AI-built web apps live at name.percher.run.

−3 this week 68 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 65 of 234 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency6
Schema Quality & AI Usability59
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 14266 tokens (~264/item across 54 items; 54 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
  • Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage75
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 25% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "percher_publish" implies "publish" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 55 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the Percher MCP server?

Percher runs locally as an npm package, launched with npx -y @percher/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @percher/mcp

# add to Claude Code
claude mcp add app-percher-percher -- npx -y @percher/mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "app-percher-percher": {
      "command": "npx",
      "args": [
        "-y",
        "@percher/mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "app-percher-percher": {
      "command": "npx",
      "args": [
        "-y",
        "@percher/mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add app-percher-percher -- npx -y @percher/mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-percher-percher": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@percher/mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add app-percher-percher --command npx --arg -y --arg @percher/mcp
# ~/.hermes/config.yaml
mcp_servers:
  app-percher-percher:
    command: "npx"
    args: ["-y", "@percher/mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "app-percher-percher": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@percher/mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add app-percher-percher -t stdio -c npx -a -y @percher/mcp
// mcp.json
{
  "mcpServers": {
    "app-percher-percher": {
      "command": "npx",
      "args": [
        "-y",
        "@percher/mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +11
    • Known CVEs: unverified → pass security
    • Dependency health: unverified → 0.87 functional
  • 19 Sept 26 −13
    • Known CVEs: pass → unverified security
    • Stability: 0.80 → unverified security
    • Tool safety: pass → unverified security
    • Schema quality: 236 → 264 functional
    • Schema quality: 236 → 263 functional
    • Dependency health: 0.81 → unverified functional
    • Tool coverage: 100 → unverified functional
    • Capabilities: pass → unverified functional
    • License: pass → fail functional
    • Dependency health: 0.81 → 0.87 functional
    • Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
    • Licence: MIT → FSL-1.1-MIT functional
    • Package version: 0.6.15 → 1.0.3 functional
    • Package version: 0.6.15 → 1.0.2 functional
  • 18 Sept 26 −2
    • Stability: pass → 0.80 functional
  • 17 Sept 26 0
    • Stability: 0.97 → pass security
  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Sept 26 0
    • Dependency health: 0.87 → 0.81 functional
  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 −2
    • Stability: pass → 0.83 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/@percher/mcp@1.0.3

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 234 packages
Packages resolved 234
Stale 65
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 54 exposed · ~13,843 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
percher_wait_for_auth ~479

Only use when `recovery.nextAction = 'wait_auth'` — i.e. percher_publish returned `status: 'auth_pending'` because the MCP session has no token. Pre-fetched device-code is in flight; this tool short-polls the exchange and, once a token lands, runs the original publish for the FIRST time (the auth_pending percher_publish call did NOT pack a tarball — that work is preserved entirely for the resume here, so the whole flow packs exactly one bundle). Inputs: - `deviceCode` — opaque string from `recovery.args.deviceCode` on the auth_pending response. Pass verbatim. - `publishArgs` — original `percher_publish` input flags from `recovery.args.publishArgs`. Pass verbatim. - `pollIntervalSec` — server-requested poll interval from `recovery.args.pollIntervalSec`. Pass verbatim when present; defaults to 5. Returns one of two shapes: - On success: the same `PublishResult` shape as percher_publish (status='live'/'queued'/'failed'/etc., recovery, url, deployId, ...). Follow `recovery.nextAction` exactly, same as a fresh percher_publish response. - On failure: `{ status: 'auth_failed', reason: 'expired'|'error', detail, recovery }`. `recovery.nextAction = 'open_login'` — call percher_publish again to start a fresh auth flow with a new device-code (do NOT call this tool again with the old code; it's dead). Polls at the server-requested interval (default ~5s, clamped to 1-30s) with a 2-minute total budget. Don't shorten the polling interval client-side — Percher's exchange endpoint enforces it server-side.

NameTypeReqDescription
deviceCodestringyesOpaque device-code returned by percher_publish.
pollIntervalSecnumberServer-requested device-code poll interval in seconds. Echoed verbatim from the auth_pending recovery.args.pollIntervalSec. Defaults to 5 when absent; clamped to 1-30.
publishArgsobjectOriginal percher_publish input flags to resume with after login. Echoed verbatim from the auth_pending recovery.args.publishArgs.

No output schema declared.

No examples provided.

percher_wait_for_deploy ~814

Only use when `recovery.nextAction = 'wait_deploy'` (e.g. percher_publish returned status='queued', or percher_doctor pointed here), or when you already have a deployId and need to know whether the deploy is live yet. Never starts a new deploy — for that use percher_publish. Short-polls a single deploy and returns within `timeoutSeconds` (default 30, max 720). The default keeps each call short so the agent can resume; the bumped max equals the platform's full publish poll budget for callers that want to ride a single build to completion. Returns one of five statuses; in every case follow `result.recovery.nextAction` literally: - `live` → deploy is up; surface result.url to the user. recovery.nextAction='none'. - `failed` → terminal failure; result.error + result.recovery describe what to do. After FUTURE12 Phase 4 ambiguous build failures (generic build_failed, missing_dependency, runtime_crash, oom_killed without file-located problems) emit recovery.nextAction='run_doctor' as the primary action — call percher_doctor with recovery.args (carries `mode='deploy'` + `deployId`) and follow doctor's recovery recursively. Direct-action recoveries still emit when publish/wait already knows the answer: `set_env_vars` (missing_env with extracted keys), `fix_problems` (build problems with file/line), `retry` (infra_unavailable), `fix_config` (config_invalid), `ask_user` (quota_exceeded / unknown). `inspect_build_log` only appears when doctor explicitly hands off after classification yielded nothing. - `replaced` → terminal-but-not-failed: this row was superseded. Resolver looked at the latest deploy and the recovery field tells you what to do next: `nextAction: 'none'` with `result.url` set means the app is currently live at that URL via a newer deploy; `nextAction: 'wait_deploy'` means a newer deploy is still in flight (call percher_wait_for_deploy with the args); `nextAction: 'run_doctor'` or `nextAction: 'ask_user'` means resolution was ambiguous (no other deploys,…

NameTypeReqDescription
appstringyesApp name (the value of [app].name in percher.toml)
deployIdstringyesDeploy id returned by percher_publish (e.g. dep_abc123)
pollIntervalSecondsintegerSeconds between polls (default 2).
timeoutSecondsintegerMaximum wall-clock seconds to wait before returning still_running (default 30, max 720). Keeping this short is the point — the agent can resume in another short call without holding a long-lived conn…

No output schema declared.

No examples provided.

percher_webhook ~288

Your account's single outbound event webhook (account-level — one URL receives every event for every app you own: deploy.failed, deploy.succeeded, app.crashed, app.unhealthy, app.recovered, domain.expiring, security.finding). There is no per-app routing and no event filter — surface that honestly before saving. Use when the user says 'set up a webhook', 'notify my CI when a deploy succeeds', 'send deploy events to <url>', or after percher_publish when the user wants async deploy notifications instead of polling percher_wait_for_deploy. action='add' sets or replaces the URL. Each delivery is signed HMAC-SHA256 with a per-account secret; `result.signingSecret` carries that secret and is shown EXACTLY ONCE (null when the URL was unchanged and the existing secret was kept) — relay it verbatim, tell the user to store it on their receiver, and if the transcript could be archived recommend rotating via the dashboard after testing. The URL must be a public HTTPS endpoint — private IPs, localhost, link-local and metadata endpoints are rejected (SSRF guard). action='list' returns the current URL + whether a secret is set (never the secret itself). action='remove' clears the URL and stored secret (idempotent).

NameTypeReqDescription
actionstringyes
urlstring

No output schema declared.

No examples provided.

percher_whoami ~17

Show the signed-in user

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Common questions

What is the Percher MCP server?

Percher is an MCP server listed in the public MCP registry as app.percher/percher. MCP-native hosting: publish and operate AI-built web apps live at name.percher.run. This page covers its npm package (@percher/mcp).

Is the Percher MCP server safe to use?

Percher scores 68 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Percher MCP server expose?

Percher exposes 54 tools: percher_publish, percher_wait_for_deploy, percher_redeploy, percher_reproduce, percher_login, and 49 more. Their descriptions and schemas cost roughly 13,843 tokens of context every time the server is loaded.

Is the Percher MCP server still maintained?

Percher is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Percher MCP server under?

Percher declares the FSL-1.1-MIT licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.