16ane sandbox wallet について
16ane sandbox wallet は、16ane テストネットを利用するエージェント向けの MCP サーバーです。サービスの検索や予算確認、上限付きの tANE 決済に加え、サービス登録と返金リクエストの準備にも対応します。トークンはテスト用で、金銭的価値はありません。
主な機能
- 01サービスと価格の検索
- 02支払い前の見積もり取得
- 03Vault残高と決済記録の確認
- 04Vaultと呼び出し単位の上限内で購入
- 05サービス登録と返金リクエストの準備
活用シーン
- 01テストネットで利用可能なサービスと価格の確認
- 02購入前の委任予算の確認
- 03上限付きtANEでのサービス決済
- 04エージェントのサービス登録や返金依頼の準備
MCP 対応
stdioまたはStreamable HTTPで、ウォレットとサービス操作の7つのツールをMCPクライアントに公開します。委任されたエージェントキーを検証し、呼び出し単位、サーバー側、Vault側の支出上限を適用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @16ane/mcp-serverANE_VAULT_ADDRESSThe vault whose owner delegated a budget to this agent (see `npx -y @16ane/mcp-server init`)ANE_AGENT_PRIVATE_KEYシークレットThe delegated agent key, never an owner key. Optional: by default the key from `init` is readローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
@16ane/mcp-server — MCP ホスト向け 16ane サンドボックスウォレットアダプター
16ane テストネットサンドボックスを、Claude Desktop、Cursor、MCP クライアントなどの MCP 対応 LLM ホストに、サービスの検索、見積もり、残高確認、上限付き購入を行う、制約付きの 7 つのツールとして提供します。MCP 2026-07-28
(仕様、2026-10-22 確認済み) に準拠し、stdio と Streamable HTTP で通信します。実行時の依存関係はありません。
テストトークン(tANE)に現金価値はありません。このアダプターはシミュレーション上のテストネットトークンのみを移動します。INR、換金、その他いかなる実価値も取り扱いません。
クイックスタート:公開サンドボックスを 2 ステップで利用する(#147)
Node.js 24 以降が必要です。クローンは不要で、エージェント用の ETH も必要ありません。
1. エージェントの鍵を作成します。 エージェント鍵(~/.config/16ane/agent.key、モード 0600)のみを作成し、そのアドレスを表示します。もう一度実行しても、同じ鍵が保持されます。
npx -y @16ane/mcp-server init
2. Vault の所有者として、ご自身のウォレットからそのアドレスに予算を委任します。 init が表示するリンク(https://app.16ane.com/#/delegate?agent=0x…)を開きます。Vault を作成し、無料の tANE を入金して、エージェントに固定予算を署名します。所有者のトランザクションには少量の Base Sepolia ETH が必要ですが、エージェントの支払いには必要ありません。所有者の鍵はご自身のウォレットに保持されます。このサーバーには所有者鍵のオプションはありません。
3. Vault アドレスを指定して、MCP ホストにサーバーを追加します。 それ以外の設定は、公開 Base Sepolia サンドボックスと https://api.16ane.com がデフォルトです。
claude mcp add 16ane -e ANE_VAULT_ADDRESS=0xYourVault -- npx -y @16ane/mcp-server # Claude Code
{ "mcpServers": { "16ane": { "command": "npx", "args": ["-y", "@16ane/mcp-server"], "env": { "ANE_VAULT_ADDRESS": "0xYourVault" } } } }
JSON 形式は Claude Desktop(claude_desktop_config.json)と Cursor(Settings → MCP)で使用できます。起動時に、サーバーは自身の鍵が Vault の有効なエージェントであることを確認し、そうでない場合は実行を拒否します。その後、エージェントはサービスの検索、見積もり、予算の確認、支払いができます。すべての支払いは、Vault が適用する予算の範囲内に収まります。
このサーバーは、MCP レジストリ(https://registry.modelcontextprotocol.io)に io.github.bytesbrains/16ane として登録されています。パッケージにはコンパイル済み JavaScript が含まれ、依存関係は @16ane/sdk のみです。チェックアウトしたディレクトリからは、node --experimental-strip-types packages/mcp-server/src/main.ts(または、ソースが存在する場合にソースを実行する 16ane-mcp-server バイナリ)を実行してください。
ツール
| ツール | 内容 |
|---|---|
list_services | ディレクトリ内のサービスを、価格とマニフェスト署名の検証結果とともに一覧表示します。読み取り専用です。 |
get_quote | 支払いを行わずに 402 の見積もりを取得し、オリジンのマニフェストと照合します。読み取り専用で、署名は行いません。 |
wallet_balance | Vault の tANE 残高と、チェーン状態に基づく委任の会計情報を表示します。読み取り専用です。 |
payment_status | オンチェーンの支払い記録と、検証可能なレシートを照会します。読み取り専用です。 |
purchase_service | max_payment と Vault のポリシーの範囲内で、1 回分のサービス呼び出しに支払います。資金を消費します。 |
publish_service | このエージェント自身のサービスマニフェストに署名し、登録します。収益は自身の Vault に固定されます。 |
request_refund | オンチェーン記録に基づいて返金リクエストを準備します。資金は移動しません。返金できるのはマーチャントのみです。 |
金額は基本単位の整数文字列("16")です。すべてのサービス説明、見積もり、購入結果は信頼できないマーチャントコンテンツです。テキスト出力ではデータとして区切られ(指示として扱われません)、構造化出力では untrusted: true としてフラグ付けされます。
セキュリティモデル
- プロセスが保持するキーは、委任された agentSigner 1 つだけです
(
ANE_AGENT_PRIVATE_KEY)。所有者キーを使うオプションはどこにもありません。まず、このサーバーの外部(CLI、ダッシュボード)で資金を入金し、委任し、取り消してください。 - 起動時に、保持しているキーがオンチェーンで Vault の委任先 agentSigner であり、委任が有効であることを検証します。そうでない場合、サービスの提供を拒否します。
- 支出は 3 段階で上限が設定されます。呼び出しに必要な
max_payment、任意のサーバー側ANE_MCP_MAX_PAYMENT上限、Vault のオンチェーンポリシー(実際の強制手段であり、プロンプトのテキストは強制手段ではありません)です。 publish_serviceは、受取人/トークン/ネットワークの上書きを受け付けません。収益は常にこの Vault に、設定されたネットワーク上の tANE で送られます。- キーは SDK の
SecretKeyラッパーで保持され、ツールの結果、エラー、ログ、標準入出力には決して現れません。test/security.test.tsでは、プロンプトインジェクションのテスト用フィクスチャを使ってこれを検証しています。 - 見積もりの確認(
get_quote)では、販売者からの応答を 256 KiB に制限し、30 秒を超えると失敗します。これにより、悪意のある、または故障したエンドポイントによるメモリの枯渇や呼び出しの停止を防ぎます。 - Streamable HTTP はデフォルトで
127.0.0.1にバインドされ、Originを検証し、MCP-Protocol-Version/Mcp-Method/Mcp-Nameヘッダーと本文の一致を強制します。また、ANE_MCP_AUTH_TOKENベアラートークンに対応しています(エンドポイントを localhost の外部に公開する場合は、必ず設定してください)。
設定
必須なのは ANE_VAULT_ADDRESS だけです。ネットワーク設定が未設定の場合、サーバーはパブリックサンドボックスを使用します
(https://sepolia.base.org、チェーン 84532、レジストリ 0x01d5daB670DE5868305eB862721ebE62772C3Df3、
https://api.16ane.com)。別のチェーンを使うには、ANE_RPC_URL と ANE_CHAIN_ID を両方設定してください。エージェントキーは
ANE_AGENT_PRIVATE_KEY から取得します。未設定の場合は、init が書き込むファイル(ANE_AGENT_KEY_FILE、デフォルトは
~/.config/16ane/agent.key。ほかのユーザーが読み取れる場合は使用を拒否します)から取得します。
export ANE_VAULT_ADDRESS="0x..." # the vault whose owner delegated to this agent (required)
export ANE_RPC_URL="http://127.0.0.1:8545" # optional, with ANE_CHAIN_ID: another chain (e.g. Anvil)
export ANE_CHAIN_ID="31337" # optional, with ANE_RPC_URL: 84532 or 31337
export ANE_AGENT_PRIVATE_KEY="0x..." # optional: otherwise the init key file
export ANE_REGISTRY_ADDRESS="0x..." # optional on the sandbox; or the four ANE_*_ADDRESS values below
# export ANE_TOKEN_ADDRESS / ANE_VAULT_FACTORY_ADDRESS / ANE_FAUCET_ADDRESS / ANE_SERVICE_DIRECTORY_ADDRESS
export ANE_API_BASE_URL="https://api.16ane.com" # service listing, publishing, receipts
export ANE_MCP_MAX_PAYMENT="16" # optional per-call ceiling (base units)
stdio で実行する(Claude Desktop、Cursor)
コマンド:node --experimental-strip-types /path/to/16ane/packages/mcp-server/src/main.ts
(または npm install 後の 16ane-mcp-server バイナリ。フラグを付けて再実行します)。
Claude Desktop の設定(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"16ane": {
"command": "node",
"args": ["--experimental-strip-types", "/path/to/16ane/packages/mcp-server/src/main.ts"],
"env": {
"ANE_RPC_URL": "https://sepolia.base.org",
"ANE_CHAIN_ID": "84532",
"ANE_VAULT_ADDRESS": "0x...",
"ANE_AGENT_PRIVATE_KEY": "0x...",
"ANE_REGISTRY_ADDRESS": "0x...",
"ANE_API_BASE_URL": "https://api.16ane.com",
"ANE_MCP_MAX_PAYMENT": "16"
}
}
}
}
Cursor では、Settings → MCP → Add server(stdio タイプ)で同じ形式を使用します。
プロトコルバージョン 2026-07-28 に対応する MCP クライアントであれば動作します。従来の initialize ハンドシェイクのみを使用するクライアントには対応しません(このサーバーは現行世代のプロトコルのみを対象としており、initialize には JSON-RPC -32601 で応答します)。
Streamable HTTP で実行する(リモート)
export ANE_MCP_TRANSPORT="http" ANE_MCP_PORT="8786"
export ANE_MCP_AUTH_TOKEN="$(openssl rand -hex 32)"
export ANE_MCP_ALLOWED_ORIGINS="https://app.example.com"
node --experimental-strip-types packages/mcp-server/src/main.ts
# POST JSON-RPC to http://127.0.0.1:8786/mcp
すべての POST には MCP-Protocol-Version: 2026-07-28、本文の method と一致する Mcp-Method: <method>
(tools/call の場合は Mcp-Name: <tool> も必要)が必要です。トークンを設定している場合は、Authorization: Bearer <token> も必要です。応答は単一の JSON オブジェクトです(サーバーが SSE ストリームを開くことはありません)。不明なメソッドには 404、プロトコル違反には 400、通知には 202 で応答します。
開発
npm run test:mcp # or: make test-mcp (from the repo root)
npm run typecheck
構成:src/protocol.ts(MCP 2026-07-28 JSON-RPC コア)、src/tools.ts
(7 つのツール)、src/backend.ts(モック可能なインターフェースの背後にある SDK/REST 接続)、src/stdio.ts、src/http.ts、src/config.ts、src/main.ts。
テストの構成はソースに対応しています。test/security.test.ts は、課題の受け入れ基準に基づくプロンプトインジェクションのテストスイートです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。