📇 🏠 - Non-custodial EVM wallet that routes transactions to browser wallets like MetaMask for signing, with…
mcp-wallet-signer
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
> [!WARNING]
> **Superseded by browser-web3-signer** — the
> same browser-wallet signing flow, reimplemented in Rust with a CLI plus Rust/TypeScript/Go
> libraries. Everything published from this repo is now a thin compatibility shim over it, so
> existing installs keep working; new code should use browser-web3-signer directly.
**Your private keys never leave your browser.** Every transaction requires explicit approval in
your own wallet (MetaMask, Rabby, TronLink, …).
Most blockchain tooling wants a private key in a config file — full, unsupervised access to your
funds. These packages route each request to the browser wallet you already use, so you review and
approve it like any other dapp interaction.
Packages
| Package | What it is now |
|---------|----------------|
| mcp-wallet-signer | MCP stdio server: four signing tools over browser-web3-signer |
| browser-evm-signer | The old WalletSigner EVM library API, re-backed by the Rust bridge |
| browser-tron-signer | The same for TRON (TronLink, TRC-20, contract deploys) |
All three spawn browser-web3-signer serve, which owns the localhost bridge, the approval page
and the browser tab. The binary for your platform is installed as a dependency; nothing else to
set up.
MCP server
Or, for Claude Desktop / Cursor / Windsurf and any other stdio MCP client:
| Tool | Description |
|------|-------------|
| connect_wallet | Connect a wallet, return the address |
| send_transaction | Send value or call a contract, return the tx hash |
| sign_message | personal_sign a message, return the signature |
| sign_typed_data | Sign EIP-712 typed data, return the signature |
EVM_MCP_DEFAULT_CHAIN sets the chain id used when a call omits one (default: 1).
Libraries
What changed in the shims
- **Gone:** PendingStore, pendingStore, createHttpServer, startTestServer,
buildConnectUrl, buildSignUrl, openBrowser — the in-process HTTP bridge they drove no
longer exists.
- **approvalUrl** is now the bridge's base URL. The bridge opens the approval page itself and
does not hand the per-request URL back.
- **port** (the constructor option) is ignored: the bridge binds its own free port.
getPort() / DEFAULT_PORT still resolve, for source compatibility.
- **MCP:** the balance tools (get_balance, get_token_balance) and the TRON tools are gone
from the MCP server. Balances never needed a wallet — any RPC-reading MCP server or cast call