EVM Wallet Signer について
ツールに秘密鍵を渡さず、ブラウザーウォレットで承認したいユーザー向けに、EVM署名を仲介するMCPサーバーとライブラリを提供します。このリポジトリは browser-web3-signer に置き換えられており、現在のパッケージは互換シムとして動作します。
主な機能
- 01ブラウザーウォレットに接続してアドレスを取得
- 02ウォレット承認用のトランザクション送信
- 03personal_signによるメッセージ署名
- 04EIP-712型付きデータの署名
- 05秘密鍵をブラウザー内に保持
- 06旧パッケージ向けの互換シム
活用シーン
- 01ブラウザーウォレットでEVMトランザクションを承認
- 02設定ファイルに秘密鍵を置かずにメッセージへ署名
- 03接続済みウォレットでEIP-712データに署名
- 04互換シムに依存する既存インストールを継続利用
MCP 対応
stdio MCPサーバーは connect_wallet、send_transaction、sign_message、sign_typed_data の4つのツールを公開します。署名リクエストは browser-web3-signer 経由でブラウザーウォレットに送られ、明示的な承認を求めます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y mcp-wallet-signerEVM_MCP_PORTHTTP server port for the browser approval UI (default: 3847)EVM_MCP_DEFAULT_CHAINDefault EVM chain ID (default: 1 for Ethereum mainnet)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| chainId | number | いいえ | 接続先の Chain ID(デフォルト:Ethereum メインネットは 1) |
詳細
mcp-wallet-signer
警告
browser-web3-signer に置き換えられました — 同じブラウザーウォレット署名フローを、CLI と Rust/TypeScript/Go ライブラリを備えた Rust 実装として再構築しています。このリポジトリから公開されるものはすべて、現在はその薄い互換性シムです。そのため既存のインストールは引き続き動作しますが、新しいコードでは
browser-web3-signerを直接使用してください。
秘密鍵がブラウザーの外に出ることはありません。 すべてのトランザクションには、ご自身のウォレット(MetaMask、Rabby、TronLink など)での明示的な承認が必要です。
多くのブロックチェーンツールでは、設定ファイルに秘密鍵を入力する必要があり、資金への完全かつ監視されないアクセスを許してしまいます。これらのパッケージは、各リクエストをすでにお使いのブラウザーウォレットに転送するため、ほかの dapp とのやり取りと同じように内容を確認して承認できます。
パッケージ
| パッケージ | 現在の内容 |
|---|---|
mcp-wallet-signer | MCP stdio サーバー:browser-web3-signer を介した 4 つの署名ツール |
browser-evm-signer | 旧 WalletSigner EVM ライブラリ API を Rust ブリッジで再実装したもの |
browser-tron-signer | TRON(TronLink、TRC-20、コントラクトのデプロイ)向けの同様のライブラリ |
3 つすべてが browser-web3-signer serve を起動します。このコマンドが localhost ブリッジ、承認ページ、ブラウザータブを管理します。お使いのプラットフォーム用バイナリは依存関係としてインストールされるため、ほかに設定するものはありません。
MCP サーバー
claude mcp add wallet-signer -- npx -y mcp-wallet-signer
または、Claude Desktop/Cursor/Windsurf など、stdio MCP クライアントを使用する場合:
{
"mcpServers": {
"wallet-signer": {
"command": "npx",
"args": ["-y", "mcp-wallet-signer"]
}
}
}
| ツール | 説明 |
|---|---|
connect_wallet | ウォレットに接続し、アドレスを返します |
send_transaction | 値を送信するかコントラクトを呼び出し、トランザクションハッシュを返します |
sign_message | メッセージに personal_sign を実行し、署名を返します |
sign_typed_data | EIP-712 型付きデータに署名し、署名を返します |
EVM_MCP_DEFAULT_CHAIN は、呼び出しでチェーンが指定されていない場合に使用するチェーン ID を設定します(デフォルト:1)。
ライブラリ
import { WalletSigner } from "browser-evm-signer";
const signer = new WalletSigner({ defaultChainId: 8453 });
const { address } = await signer.connectWallet();
const { txHash } = await signer.sendTransaction({ to: "0x…", value: "1000000000000000000" });
シムでの変更点
- 削除済み:
PendingStore、pendingStore、createHttpServer、startTestServer、buildConnectUrl、buildSignUrl、openBrowser— これらが利用していたプロセス内 HTTP ブリッジは、すでに存在しません。 approvalUrlは、ブリッジのベース URL になりました。ブリッジが承認ページを自ら開くため、リクエストごとの URL を返しません。port(コンストラクターオプション)は無視されます。ブリッジは独自に空きポートを割り当てます。ソース互換性のため、getPort()/DEFAULT_PORTは引き続き解決されます。- MCP: 残高ツール(
get_balance、get_token_balance)と TRON ツールは、MCP サーバーから削除されました。残高の取得にウォレットは必要ありません。承認プロンプトなしで、RPC 読み取り用の任意の MCP サーバーやcast callで取得できます。また、TRON の署名には CLI を使用できます。両方のライブラリにあるWalletSigner.getBalanceと.getTokenBalanceには変更ありません。 - npm と JSR で非推奨になりました。
[email protected]は一度も動作しませんでした。exportsは./esm/mod.jsを参照していましたが、tarball に含まれていたのは./esm/browser-evm-signer/src/mod.jsであり、その影響で[email protected]も動作しなくなりました (#2)。
シム導入前の Deno 実装 — プロセス内ブリッジ、Svelte 承認 UI、wallet-signer-core パッケージ — は、コミット
636fd3b までの履歴にあります。
開発
npm install
npm test # builds, then runs each package's tests against a fake bridge
リリースはパッケージごとに行います。<package>@<version> のタグを作成し、GitHub リリースを公開してください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。