Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Evernode/HotPocket dApp helper: templates, non-determinism lint, lease math, live host lookup.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"evernode": {
"command": "npx",
"args": [
"-y",
"evernode-mcp"
]
}
}
}ターミナルでこれを実行します
claude mcp add evernode -- npx -y evernode-mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"evernode": {
"command": "npx",
"args": [
"-y",
"evernode-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"evernode": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"evernode-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント Hugegreencandle で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.6.0)がレジストリに届いたのは37 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, FlyDocs
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Spec-driven development workflow: your agent works issues, sessions and the status lifecycle.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
A Model Context Protocol server that lets an AI agent build, check, cost, and deploy HotPocket dApps on Evernode / Xahau. Point any MCP-capable agent (Claude, etc.) at it and ask for a dApp — it scaffolds a contract from templates written to avoid the known consensus-breakers, lints contract code for non-deterministic patterns, estimates the EVR lease, ranks live Evernode hosts, generates the deploy commands, and — when the dApp moves value on Xahau — emits the commands to install a spend-limit Hook and prove its invariant with the Hooks toolchain.
HotPocket is Evernode's contract runtime: it runs your Node.js/WASM contract on every node
of a cluster and puts the output + state through consensus. The single biggest beginner
mistake is non-deterministic code (
Date.now(),Math.random(),fetch(), …) — two nodes
compute different results and the ledger stalls. This server is built around catching the
common causes of that before deploy (heuristically — see what it does / doesn't catch).
It is advisory and read-only: it generates files + guidance, never holds keys, never spends EVR, never acquires a lease, never signs or submits, and it connects to the Offledger Cluster Manager rather than replacing its orchestration. No API keys or accounts are needed; the only network calls are read-only HTTPS GETs to the public OnLedger API from two tools (see Network access).
The Hooks pipeline secures *layer-1* Hooks — write → simulate one tx → prove all inputs → watch live:
| stage | tool | what it does |
|---|---|---|
| write | xahc | author + compile a safe Hook to clean, lint-passed WASM |
| simulate one | xahau-mcp | run the real bytecode against one live transaction |
| prove all | xahc-prover | prove an invariant holds for every input in scope — or return the counterexample |
| watch live | xahc-watch | bind a proof to the deployed hook and continuously attest it (alerts on a SetHook swap or a live verdict break) |
evernode-mcp is the *layer-2* companion: it builds the HotPocket dApps that run on Evernode hosts. Whenever a dApp settles value on Xahau through a Hook-guarded account, it hands off to the trifecta — it never re-asserts settlement safety itself (check_hook_compat / generate_settlement emit the trifecta's prove/install commands, not a safety verdict).
All twelve tools are read-only / advisory. Every tool sets readOnlyHint: true; only the two live OnLedger tools (recommend_hosts, host_diagnostics) set openWorldHint: true (they may reach a live external endpoint, OnLedger). Each tool publishes an output schema, so an agent gets a validated structuredContent shape (not just text) — no guessing field names.
| tool | open world? | returns |
|---|---|---|
list_templates | no | { templates } — the 10 available dApp template names. |
generate_contract | no | { template, files, notes } — a complete, lint-clean (no HIGH check_determinism findings) HotPocket file set (contract + state helper + hp.cfg.override + package.json + client) for a template. |
check_determinism | no | { findings, summary } — a heuristic linter for contract source: flags known non-deterministic patterns (wall-clock, randomness, network I/O, env/host reads, timers/races, filesystem outside the state file, unordered iteration/serialization, locale/timezone formatting, floating-point literals) that can break cluster consensus. Each finding has line/column/rule/severity/why/fix. HIGH findings are likely consensus breakers. A clean result means none of these patterns were found — not that the contract is proven deterministic. |
check_contract_api | no | { findings, summary } — sibling to `check_determinism` (same honest framing — guidance, not a proof). A heuristic static check that a HotPocket Node.js contract uses the contract API correctly: an hpc.init(...) entry point, reading ctx (users/lclSeqNo), persisting ONLY through the consensused state mechanism (no arbitrary fs writes to non-state paths), handling ctx.users I/O, using ctx.lclSeqNo for time (not Date.now), and awaiting async consensus ops. Each finding has line/column/rule/severity/why/fix. |
recommend_pattern | no | { pattern, nodes, notes } — given a plain-English use-case, the HotPocket pattern: node count, state model, oracle/NPL usage, Xahau settlement, and the determinism caveats that matter. |
check_hook_compat | no | { involvesHook, workflow, repos } — returns the recommended write → simulate → prove → install workflow for a dApp that settles via a Xahau Hook (xahc · xahau-mcp · xahc-prover). It does not analyze a Hook itself. |
generate_settlement | no | { template, limitDrops, files, install, prove, notes } — starter cluster-side Xahau payout code + an unsigned xahc install-tx command for the agent_guardrail Hook (per-tx LIM + optional DST lock) + the xahc prove command to check it. Emits commands only, no safety verdict. Accepts escrow / subscription / payment_splitter / streaming_payment / multisig_treasury. |
estimate_lease_cost | no | { inputs, perNodeEVR, totalEVR, approxDurationHours, notes } — tenant EVR lease = evrPerMoment × moments × nodes. Honest: rates are host-set (no network standard); host-side registration fees are excluded. |
recommend_hosts | yes | { mode, ranked, prefer, note, source?, query? } — fetch + rank live Evernode hosts from the public OnLedger API (an index of the Evernode registry on Xahau) by cheap / capacity / reputation, with filters (min reputation/slots/RAM, country) passed to the live query — or rank a hosts list you supply (filters not applied; top 10). Real data only — never invents hosts; honest empty + note on fetch failure. |
host_diagnostics | yes | { found, address, source, note?, registration?, reputation?, slots?, lease?, specs?, redFlags } — health view of a single Evernode host by r-address: registration status, reputation, active/total/available slots, lease terms (rate/drops if available), specs, and red-flags (flagged, marked inactive, low or zero reputation, full capacity). Fetches live from OnLedger — or diagnose a host object you supply. Real data only: numeric fields are soundly coerced (a string-typed numeric like "252" becomes a real number; garbage / non-finite values are omitted, never a fabricated 0); unknown fields are omitted (never invented); honest found:false + note on not-found / fetch failure. |
generate_deploy_commands | no | { steps, notes } — command sequences for local (hpdevkit dev cluster) · single (evdevkit acquire one host) · cluster (evdevkit N-node) · cluster-manager (connect to the Offledger Cluster Manager). |
explain_error | no | { matched, explanations? / message? } — map a HotPocket/Evernode error to cause + fix (connection, consensus stall, no hosts, insufficient EVR, lease expiry, docker/Sashimono, Hook rejection). |
generate_contract ships 10 templates. Each is written to avoid the known non-determinism sources (no wall-clock, no randomness, no network in the contract path; time is the consensus ledger seq ctx.lclSeqNo; state persists only through the contract's own consensused state file) and is lint-clean: the smoke test and the suite run every template through check_determinism (no HIGH findings) and check_contract_api. That is a heuristic check, not a proof of determinism — test on a multi-node cluster before mainnet.
| template | what it is | determinism note |
|---|---|---|
blank | minimal echo contract — a starting point. | echoes input + ctx.lclSeqNo. |
escrow | depositor locks an amount-claim for a beneficiary, released after a deadline. | deadlines are ledger sequences, not timestamps. |
subscription | users subscribe for N ledger-rounds; access granted while lclSeqNo < expiry. | pure ledger-seq accounting. |
game_backend | turn-based per-user scores + leaderboard. | leaderboard sorts with a code-point pubkey tiebreaker (not localeCompare — host ICU collation diverges) so ordering is deterministic. |
voting | one-vote-per-pubkey poll with tally. | tally iterates a sorted key view; votes keyed by pubkey dedupe. |
token_gated | gated access via an admin-maintained allowlist. | does not read an on-chain balance from contract logic (non-deterministic) — uses a consensused allowlist/oracle attestation. |
payment_splitter | records deposits, computes weighted splits in integer drops. | remainder to the last recipient so payouts sum exactly (no rounding leak); actual payout is a separate Xahau multisig step (see generate_settlement). |
oracle_consumer | the canonical hard pattern: brings external data in via NPL agreement (nodes agree on the value before acting), never a direct fetch. | nodes PROPOSE their observation over the Node Party Line and only ACT on a strict-majority agreed value (a primitive, so its canonical form is byte-identical); disagreement is a deterministic no-op; the agreed datum is stamped with ctx.lclSeqNo. |
streaming_payment | per-ledger-seq vesting: releasable amount is release = f(ctx.lclSeqNo). | pure function of the consensus clock, integer drops only (no float divergence); the contract RECORDS the release — the actual transfer is deferred to generate_settlement. |
multisig_treasury | records spend proposals + M-of-N approvals (threshold). | approvals keyed by signer pubkey, counted over a sorted view; on reaching the threshold it emits the settlement step to generate_settlement (ties the trifecta in) — the contract never signs/spends. |
Each generated file set carries notes including "before deploy: run check_determinism on src/index.js — HIGH findings break consensus."
HotPocket consensuses contract output across every node. If two nodes diverge — because you called Date.now(), Math.random(), fetch(), or read process.env, or iterated an unordered collection built in a non-consensused order — consensus breaks and the ledger stalls. check_determinism flags these before you deploy.
It is a heuristic linter, not a prover — a source scan (mostly per-line regex, plus a small cross-line alias pass), so it is *guidance*, never a guarantee. Design bias (deliberate): for this tool a false-negative (silently missing a real consensus breaker) is the worst outcome, so when a construct *could* iterate/serialize an unordered collection but can't be proven sorted, it is flagged. A false-positive (flagging safe code) only costs you a justification.
Now covered (each with a why + a concrete fix):
Date.now, performance.now, process.hrtime[.bigint], new Date() *(HIGH)*.Math.random, crypto.randomBytes/randomUUID/randomInt/randomFill[Sync]/getRandomValues *(HIGH)*.fetch/axios/got/node-fetch, require('https'|'net'|'dns') *(HIGH)*.process.env/process.pid, os.hostname/networkInterfaces/cpus/freemem/loadavg/uptime/userInfo/platform/arch/tmpdir/endianness *(HIGH)*.setTimeout/setInterval/setImmediate, Promise.race/any *(MEDIUM)*.冒頭だけを表示しています。続きはリポジトリで読めます