プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。Google でログインするとレビューを書けます。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Agent Wormhole

作者:runningoffcodeバージョン 0.8.0i★ 6 (リポジトリ全体のスター)iパソコンで動く
レジストリ名io.github.runningoffcode/wormhole-x402

インストール方法

What it does

Check tokens, pages and x402 payments before your agent trusts them. Offline verdicts.

  • Connects パソコンで動く
  • Account or key Needs WORMHOLE_API_KEY
  • Category その他

インストール

使っているAIアプリを選んで、設定をコピーしてください。

チェック 3/3 合格 · あなたのパソコンで動きます

まず:どの AI を使っていますか?

使っているアプリを選ぶと、下に手順が表示されます。

Claude につなげますが、先に準備が必要です

Agent Wormhole のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません

  1. Node.js を入れる

    1 回だけ。Node.js が必要なすべてのサーバーで使えます

    Node.js のダウンロードページを開く ↗

  2. Agent Wormhole に登録してキーを作る

    提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。

    Agent Wormhole のサイトを開く ↗

  3. パソコン版 Claude アプリの設定ファイルを開く

    SettingsDeveloperEdit Config

  4. この設定を貼り付けて保存

    {
      "mcpServers": {
        "wormhole-x402": {
          "command": "npx",
          "args": [
            "-y",
            "wormhole-x402"
          ],
          "env": {
            "WORMHOLE_API_KEY": "your-value",
            "WORMHOLE_VERIFY_URL": "your-value",
            "WORMHOLE_ADDRESS_LEDGER": "your-value"
          }
        }
      }
    }

    キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください

  5. Claude を終了してもう一度開く

  6. 試してみる

    Agent Wormhole を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Claude が Agent Wormhole を使っていると言うか、回答に Agent Wormhole のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

ChatGPT はまだ Agent Wormhole につなげません

Agent Wormhole はパソコンに入れて使うものですが、ChatGPT は Web 上で動くサーバーにしかつなげません

代わりにできること

A · Agent Wormhole につなげるアプリを使う

  • Agent Wormhole のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
  • Agent Wormhole のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ)
  • Agent Wormhole のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ)
  • Agent Wormhole のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ)

B · その他 の中で ChatGPT につなげる別のサーバー

同じカテゴリでよく使われているものから、キーなしでアドレスだけでつなげるものを選びました

Claude Code につなげますが、先に準備が必要です

Agent Wormhole のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ)

  1. Node.js を入れる

    1 回だけ。Node.js が必要なすべてのサーバーで使えます

    Node.js のダウンロードページを開く ↗

  2. Agent Wormhole に登録してキーを作る

    提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。

    Agent Wormhole のサイトを開く ↗

  3. ターミナルを開く

    Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く

  4. このコマンドを貼り付けて Enter

    claude mcp add --scope user wormhole-x402 --env WORMHOLE_API_KEY=your-value --env WORMHOLE_VERIFY_URL=your-value --env WORMHOLE_ADDRESS_LEDGER=your-value -- npx -y wormhole-x402

    Enter の前に「your-value」を自分のキーに書き換えてください

    キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください

  5. Claude Code で /mcp と入力

    Agent Wormhole が一覧にあり、接続済みと表示されれば OK です

  6. 試してみる

    Agent Wormhole を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Claude Code が Agent Wormhole を使っていると言うか、回答に Agent Wormhole のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

Cursor につなげますが、先に準備が必要です

Agent Wormhole のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ)

  1. Node.js を入れる

    1 回だけ。Node.js が必要なすべてのサーバーで使えます

    Node.js のダウンロードページを開く ↗

  2. Agent Wormhole に登録してキーを作る

    提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。

    Agent Wormhole のサイトを開く ↗

  3. このボタンで Cursor を開く

    Cursor で開く

    Cursor がインストールの確認をするので Install を押します

  4. キーを入力

    Agent Wormhole の設定で WORMHOLE_API_KEY, WORMHOLE_VERIFY_URL, WORMHOLE_ADDRESS_LEDGER が空です。自分のキーを入れて保存します

    キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください

  5. Cursor の AI チャットを Agent モードで開く

  6. 試してみる

    Agent Wormhole を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Cursor が Agent Wormhole を使っていると言うか、回答に Agent Wormhole のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

VS Code につなげますが、先に準備が必要です

Agent Wormhole のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Node.js を入れてください(1 回だけ)

  1. Node.js を入れる

    1 回だけ。Node.js が必要なすべてのサーバーで使えます

    Node.js のダウンロードページを開く ↗

  2. Agent Wormhole に登録してキーを作る

    提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。

    Agent Wormhole のサイトを開く ↗

  3. このボタンで VS Code を開く

    VS Code で開く

    VS Code がインストールの確認をするので Install を押します

  4. キーを入力

    Agent Wormhole の設定で WORMHOLE_API_KEY, WORMHOLE_VERIFY_URL, WORMHOLE_ADDRESS_LEDGER が空です。自分のキーを入れて保存します

    キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください

  5. VS Code の AI チャットを Agent モードで開く

  6. 試してみる

    Agent Wormhole を使って、私に何ができるか教えて、1 つやってみせて

    ✓ VS Code が Agent Wormhole を使っていると言うか、回答に Agent Wormhole のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

Windsurf、Zed、Gemini CLI など MCP を使える他のアプリは追加方法がそれぞれ違います。アプリ一覧で確認してください

MCP を使えるアプリをすべて見る →

JSON 設定は下の「開発者向け」にあります

つまずいたら?Agent Wormhole を使っている人に聞いてみましょう💬 ディスカッション →
開発者向け:ターミナルのコマンドと JSON 設定

パソコンにインストール

Claude Code

claude mcp add --scope user wormhole-x402 --env WORMHOLE_API_KEY=your-value --env WORMHOLE_VERIFY_URL=your-value --env WORMHOLE_ADDRESS_LEDGER=your-value -- npx -y wormhole-x402

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "wormhole-x402": {
      "command": "npx",
      "args": [
        "-y",
        "wormhole-x402"
      ],
      "env": {
        "WORMHOLE_API_KEY": "your-value",
        "WORMHOLE_VERIFY_URL": "your-value",
        "WORMHOLE_ADDRESS_LEDGER": "your-value"
      }
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "wormhole-x402": {
      "command": "npx",
      "args": [
        "-y",
        "wormhole-x402"
      ],
      "env": {
        "WORMHOLE_API_KEY": "your-value",
        "WORMHOLE_VERIFY_URL": "your-value",
        "WORMHOLE_ADDRESS_LEDGER": "your-value"
      }
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "wormhole-x402": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "wormhole-x402"
      ],
      "env": {
        "WORMHOLE_API_KEY": "your-value",
        "WORMHOLE_VERIFY_URL": "your-value",
        "WORMHOLE_ADDRESS_LEDGER": "your-value"
      }
    }
  }
}

自分で入力する値

  • WORMHOLE_API_KEY 秘密 env
    Optional. Hosted-mode key from dashboard.agentwormhole.com: adds URL checks with change history, and the operator's spend policy (budgets, approvals, kill switch) on payments.
  • WORMHOLE_VERIFY_URL env
    Optional. Override the hosted verifier endpoint (default https://dashboard.agentwormhole.com/api/v1/verify).
  • WORMHOLE_ADDRESS_LEDGER env
    Optional. Path to the address-provenance ledger written by wormhole-guard's readguard hook (default ~/.wormhole/addresses.jsonl).

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

ひと目でわかる

GitHubスターi
6 (リポジトリ全体のスター)
このリポジトリには複数の MCP があり、スターは順位で1件だけ数えます
週あたりのダウンロードi
345/週
接続方法
パソコンで動く
最新バージョンi
0.8.0
カテゴリi
その他
レジストリ公開日i
2026年9月6日
コードの最終更新i
2026年11月11日
作者
runningoffcode
パッケージ
npm: wormhole-x402
ウェブサイト
agentwormhole.com
レジストリでの状態
有効

使えるアプリ

このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。

パソコン上で動かせるアプリ

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

すべてのアプリと長所・短所 →

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月12日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント runningoffcode で確認済みです

  • ✓ 合格

    今もメンテナンスされている

    コードの最終更新:昨日

  • ✓ 合格

    ライセンスがある

    Apache-2.0を使用

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

話し合い

質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。

まだ投稿はありません。最初の質問や共有をどうぞ。

ここの投稿は利用者によるもので、PopNx チームのものではありません。

Google でログインして投稿

ユーザーレビュー

まだレビューはありません

Google でログインしてレビューを書く

その他のほかのサーバーとの比較i

  • このカテゴリのほかの19377件のうち86%よりスターが多い
  • このカテゴリのほかの19377件のうち30%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの19377件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Agent Wormholeは安全ですか?

当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

入力が必要なもの:WORMHOLE_API_KEY

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は昨日、最新バージョン(0.8.0)がレジストリに届いたのは2 か月前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。

代わりに使えるものは?

同じカテゴリには:World Monitor, Claude Flow, Windmill

同じカテゴリのほかの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 104 tools.

作者:koala73広く使われている★ 9万今日更新

クラウドで動く✓ 提供元 · worldmonitor.app

Claude Flow

AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.

作者:ruvnet広く使われている↓ 1.4万/週★ 8.2万14 か月前更新

パソコンで動く

Windmill

Run Windmill scripts and flows and manage jobs, schedules, resources and variables.

作者:windmill-labs広く使われている★ 1.9万今日更新

クラウドで動く

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

wormhole-x402

Integration guide: payment safety, policy, confirmed top-ups and launch attestations.

Your agent is about to sign a payment. Is it the one it was quoted?

ALLOW    pays the quoted merchant, quoted amount

REFUSE pays an ATTACKER instead [X402-001] payment destination is not the account derived from the quote REFUSE pays the merchant but 900x the amount [X402-002] payment amount does not match the quoted amount REFUSE pays correctly + silently approves a delegate [X402-006] Approve — delegates spending authority over the account ABSTAIN garbage bytes could not deserialize — refusing to report it as safe

5 transactions checked in 5ms — no RPC, no network


The gap

Every transaction-security product answers the same question: what will this transaction do? Simulation, asset diffs, address reputation. All useful.

None of it helps an agent, because a payment to an attacker's address simulates perfectly. Correct balances. No revert. Clean verdict. The transaction is entirely valid — it is simply not the one that was asked for.

Nobody answers *is this the transaction that was asked for?*

In the leading provider's API that question is not merely unimplemented, it is not expressible. Their Solana scan request carries origin — *"DApp domain proposing these transactions"* — and has no field for the agent's instructions at all. The stack is shaped around a human approving a website's request. A headless agent has neither a website nor a human.

How it decides

One call, either chain

verify() takes a quote and the payment about to be signed, picks the rail from the network string, and returns one verdict. It runs the quote-text scan first — an injected instruction in a merchant's description is refused before its numbers are ever treated as authoritative — then compares destination, asset and amount.

import { verify } from "wormhole-x402/verify";

const result = await verify( { network: "eip155:8453", // or "solana" quote, // what the merchant's 402 said payload, // what the agent is about to sign }, { quoteProvenance: "caller_asserted", issuedAt: new Date().toISOString() }, );

if (result.decision !== "allow") { // refuse AND abstain both mean do not sign. "We could not check it" is // never "it is fine" — that conflation is the bug this library exists for. throw new Error(result.findings.map((f) => f.code).join(",")); }

Time is an input rather than read from the clock, so a verdict is a pure function of its request and replays identically later.

The other entry points
ImportWhat it is
wormhole-x402/verifyverify() — the unified check, both rails
wormhole-x402/clientguardedPay() / guardedFetch() — one line in front of sign()
wormhole-x402/receiptverifyReceipt() / replayMatches() — check a receipt offline
wormhole-x402/servercreateVerifyHandler() — host it yourself
wormhole-x402/meteringusage accounting and cross-agent correlation
wormhole-x402/mcpthe verifier as an MCP tool server — npx wormhole-x402-mcp
wormhole-x402/provenanceX402-301 — was this payee introduced by anything legitimate?
wormhole-x402/deliveryX402-4xx — did the paid response deliver the quoted resource?
wormhole-x402/txX402-7xx — is this transaction the one the agent meant to send?

guardedPay takes the transport as an argument rather than a URL, so the same call runs against the local verifier or a remote one and the two cannot drift.

A verdict off a socket is a claim, not an answer

guardedPay and guardedFetch require an integrity option. It has no default, because every default here is either a silent downgrade of your security or a surprise change to your behaviour:

import { guardedPay } from "wormhole-x402/client";

import { publicKeyFromSpkiBase64 } from "wormhole-x402/receipt";

// The verifier publishes its key at GET /v1/key const publicKey = publicKeyFromSpkiBase64(publishedKeyBase64);

const res = await guardedPay({ network, quote, payload, transport, integrity: { mode: "required", publicKey }, }); if (res.allow) await sign(payload);

Under mode: "required" a decisive verdict clears only if a receipt is present, its signature verifies against your key, the receipt is bound by digest to the request you actually sent, and the receipt's own decision agrees with the envelope's. Anything else becomes an abstain — never an allow, and never a refuse — with integrityFailure naming which check failed. res.verified tells you whether the cryptography actually ran.

For an in-process transport that never crosses a network, say so explicitly:

integrity: { mode: "trusted_transport", reason: "in-process verify(), no socket" }

verified is then false, because nothing was checked. A verifier running without a signing key produces abstains under required, which is the honest answer: an unsigned verdict is one nobody can check.

The MCP server applies the same rule to hosted verdicts. Set WORMHOLE_VERIFY_PUBKEY to the published key; without it a hosted allow is downgraded to abstain unless you explicitly accept an unverifiable one with WORMHOLE_ALLOW_UNSIGNED_HOSTED=1.

Receipts

A decisive verdict carries a receipt: the decision, the rule codes, a coarse amount band and a SHA-256 digest of the request — never the quote text, never the payment bytes. Signed, it is checkable by someone who does not trust you:

import { verifyReceipt, replayMatches } from "wormhole-x402/receipt";

verifyReceipt(receipt, signature, publicKey); // did we really say this? replayMatches(receipt, request); // is it this exact request?

Neither call touches the network. That is the point of a receipt — an attestation you have to phone someone to check is just their word with extra steps.

Install

Every chain dependency is an optional peer, so you install only the one you use — and you must install it. The entry point for each chain imports its own SDK at the top level, so wormhole-x402 alone imports nothing useful:

# Solana

npm install wormhole-x402 @solana/web3.js @solana/spl-token

EVM

npm install wormhole-x402 viem

Text scanning only — no chain SDK needed

npm install wormhole-x402

Each entry point is independent. wormhole-x402/evm and wormhole-x402/quotetext work with no Solana packages present, and wormhole-x402 works with no viem. Importing an entry point whose SDK is not installed is a module-resolution error, not a silent no-op.

As an MCP tool server

Agents that cannot be rewired — Claude Code, Cursor, any MCP host — get the same checkpoint as a tool. Zero extra dependencies: the server is newline-delimited JSON-RPC over stdio, spoken with Node's own readline.

# full install — verifies payments on both rails

claude mcp add x402-guard -- npx -y -p wormhole-x402 -p @solana/web3.js -p @solana/spl-token -p viem wormhole-x402-mcp

lightest form — text scanning only; verify_payment abstains with install

instructions until the chain SDKs for your rail are present

claude mcp add x402-guard -- npx -y wormhole-x402

Two tools:

  • `verify_payment` — network, quote, payload (and optionally expectedPayer) in; allow / refuse / abstain with findings out. Anything that is not allow means do-not-sign.
  • `scan_text` — a 402 body, a merchant listing, an agent card, a memo; scanned for injection shapes before the model reads it.

The server always starts and scan_text always works — the verify core loads lazily, so a missing chain SDK is a per-call abstain naming the install command, never a startup crash.

Set WORMHOLE_API_KEY and verification runs against the hosted verifier instead, returning its answer verbatim — including any spend-policy decision the operator's account enforces there. An unreachable hosted verifier abstains rather than silently falling back to the local core: the operator configured hosted mode to get their policy applied, kill switch included. Verdicts carry caller_asserted provenance — the server cannot see where the quote came from, so its receipts say so rather than implying an attestation nobody made.

import { guardSigner } from "wormhole-x402";

// quote is the PaymentRequirements from the server's HTTP 402 response. const wallet = guardSigner(myWallet, () => currentQuote);

// Signing now throws unless the transaction matches the quote. await wallet.signTransaction(tx);

On EVM the payment is a detached EIP-3009 authorization rather than a transaction, so it has its own wrapper — same guarantee, async because domain verification can read the chain:

import { guardEvmSigner } from "wormhole-x402/evm";

const signer = guardEvmSigner(myWalletClient, () => currentQuote);

// viem sends this single object; ethers sends the same parts positionally — // signTypedData(domain, types, value) — and the wrapper recognises both. This // is the call that CREATES the signature, so there is nothing to recover from // yet. The wrapper checks the domain against the trusted table for (chainId, // asset), requires the TransferWithAuthorization struct exactly as verified, // and compares to, value, the validity window and the nonce to the quote. await signer.signTypedData({ domain, types, primaryType, message });

The typed-data request is what the wallet signs, so it is the one checked, read where the signer reads it: viem's one request object, the first argument, or ethers' domain, types and value, the first three. A call that could be read either way, or that carries an already-signed payment beside a typed-data request, is refused, with the typed request's own findings when it has any: which one a wallet would sign is the wallet's choice, and one cannot be checked for the other.

Both wrappers are default-deny. Every function property is wrapped, not a named subset: the ones the wrapper knows how to check are checked, and everything else is *refused* rather than handed back. Object properties that expose signing methods — viem's account, a wallet adapter's inner provider — are wrapped too, because handing back the raw object is the same hole one level down.

That means an unmodelled method is unusable rather than unchecked, which is the trade worth making: "we did not recognise the call so we allowed it" is how every bypass is written up afterwards. If a method cannot move funds, name it in allow — an escape hatch with a name on it. Dotted paths work for nested members (allow: ["account.sign"]).

No quote is a refusal, not a pass. Every optional security parameter with a permissive default ends up unset in production, and then the guard reports green on all traffic and nobody notices.

Or inspect without wrapping:

import { inspectPayment } from "wormhole-x402";

const verdict = inspectPayment(

冒頭だけを表示しています。続きはリポジトリで読めます