@cryptoapis-io/mcp-signer
OfficialLocally sign blockchain transactions and x402 payment messages across multiple chains — no network calls or API key required.
EVM (
evm_sign): sign pre-built unsigned tx hex, build-and-sign from fields, or sign EIP-712 typed data (x402 gasless/EIP-3009 path).UTXO (
utxo_sign): sign Bitcoin, Bitcoin Cash, Litecoin, Dogecoin, Dash, and Zcash transactions from prepared details or unsigned hex (with input metadata).Tron (
tron_sign): sign Tron transactions from details containingraw_data_hexor from unsigned hex.XRP (
xrp_sign): sign XRP transactions from structured details or XRPL-serialized unsigned hex.Kaspa (
kaspa_sign): sign prepared Kaspa mainnet transactions using Schnorr signatures.Solana/SVM (
svm_sign): partial-sign x402 Solana payment transactions with only the buyer/source-authority signature.Tezos (
tezos_sign): sign forged Tezos operations for tz1/tz2/tz3 keys with destination/amount/fee validation.Outputs: most tools return signed transaction hex ready for broadcast; x402 paths return a signature or base64 transaction.
Allows local signing of Bitcoin transactions (UTXO-based) using provided private keys.
Allows local signing of Bitcoin Cash transactions (UTXO-based) using provided private keys.
Allows local signing of Dash transactions (UTXO-based) using provided private keys.
Allows local signing of Dogecoin transactions (UTXO-based) using provided private keys.
Allows local signing of Ethereum transactions (EVM) using provided private keys.
Allows local signing of Litecoin transactions (UTXO-based) using provided private keys.
Allows local signing of Optimism transactions (EVM) using provided private keys.
Allows local signing of Polygon transactions (EVM) using provided private keys.
Allows local signing of XRP transactions using provided private keys.
Allows local signing of Zcash transactions (UTXO-based) using provided private keys.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@cryptoapis-io/mcp-signer Sign an EVM transaction sending 0.01 ETH to 0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@cryptoapis-io/mcp-signer
MCP server for local transaction signing across EVM, UTXO, Tron, XRP, Kaspa, Solana and Tezos. No Crypto APIs HTTP calls — signing happens entirely on your machine. No API key required.
Security
Stdio only — no HTTP transport. The server does not listen on any port.
Private keys in tool input — each tool receives
privateKey/privateKeys/secretas parameters. Keys are never read from environment variables.No network calls — all signing is done locally using cryptographic libraries.
Related MCP server: local-kms-mcp-server
Installation
npm install @cryptoapis-io/mcp-signerOr install all Crypto APIs MCP servers: npm install @cryptoapis-io/mcp
Usage
npx @cryptoapis-io/mcp-signerClaude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"cryptoapis-signer": {
"command": "npx",
"args": ["-y", "@cryptoapis-io/mcp-signer"]
}
}
}Cursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"cryptoapis-signer": {
"command": "npx",
"args": ["-y", "@cryptoapis-io/mcp-signer"]
}
}
}MCP Inspector
npx @modelcontextprotocol/inspector npx @cryptoapis-io/mcp-signerAvailable Tools
evm_sign
Sign an EVM transaction (Ethereum, Ethereum Classic, BSC, Polygon, Avalanche (C-Chain), Arbitrum, Base, Optimism, Tron).
Action | Description |
| Sign from structured transaction fields (to, value, gasLimit, etc.) |
| Sign a pre-built unsigned transaction hex |
| Sign an EIP-712 typed-data message (the x402 gasless path — e.g. the EIP-3009 |
utxo_sign
Sign a UTXO transaction (Bitcoin, Bitcoin Cash, Litecoin, Dogecoin, Dash, Zcash).
Action | Description |
| Sign from a prepared transaction object (inputs, outputs). For zcash, produces a v5 (ZIP 225/244) transaction and requires exactly one of |
| Sign a raw unsigned transaction hex with input descriptors. Does not support zcash |
tron_sign
Sign a Tron transaction using secp256k1 (no TronWeb dependency).
Action | Description |
| Sign from a transaction object with |
| Sign a pre-built unsigned transaction hex |
xrp_sign
Sign an XRP transaction.
Action | Description |
| Sign from structured XRP transaction fields |
| Sign a pre-built unsigned transaction hex |
kaspa_sign
Sign a Kaspa transaction using schnorr (BIP340) via kaspa-wasm. Mainnet only.
Action | Description |
| Sign a prepared Kaspa transaction (from the prepare-transaction API) |
svm_sign
Partial-sign a Solana (SVM) x402 payment transaction — the buyer's source-authority signature only (the facilitator's feePayer slot stays unsigned, signed at settle).
Action | Description |
| Deserialize the base64 unsigned TransferChecked tx from the x402 buyer |
tezos_sign
Sign a Tezos operation for tz1 (ed25519), tz2 (secp256k1) or tz3 (P-256) keys (edsk… / spsk… / p2sk…).
Action | Description |
| Sign the |
Most tools return signedTransactionHex — ready to broadcast with @cryptoapis-io/mcp-broadcast. The
x402 paths return { signature } (EVM typed-data) or { transaction } (SVM) instead.
Dependencies
Package | Purpose |
| EVM transaction signing |
| UTXO transaction signing |
| Tron transaction signing (secp256k1) |
| XRP transaction signing |
License
MIT
Available Tools
7 toolsevm_signA
Sign an EVM transaction or EIP-712 typed-data message. Three actions: (1) sign-unsigned-hex: sign pre-built unsigned tx hex; (2) sign-from-details: build and sign from fields (blockchain, network, toAddress, value, gas, fee, etc.); (3) sign-typed-data: sign an EIP-712 typed-data message — the x402 GASLESS path, e.g. the EIP-3009 TransferWithAuthorization returned by the x402 buyer /authorize (scheme eip712). For (3) pass domain/types/primaryType/message verbatim; it returns a 65-byte signature (no tx built). Network names (e.g. ethereum+sepolia, polygon+mainnet) are mapped to chainId internally. Private key is always passed as parameter (never from env). SECURITY: Private keys may be logged by MCP clients or stored in conversation history — use only in trusted local environments.
Inputs: no named parameters.
kaspa_signA
Sign a Kaspa (native KAS) transaction locally. Kaspa is a UTXO/blockDAG chain (schnorr signatures, mainnet only). Action sign-from-details: sign from a prepared transaction object (data.item from the Kaspa prepare-transaction API) — each input carries its prevout script + sompi. Returns the signed tx as JSON (the form the Kaspa broadcast service expects). Private keys (one per input) are passed as parameters (never from env). SECURITY: Private keys may be logged by MCP clients or stored in conversation history — use only in trusted local environments.
Inputs: no named parameters.
svm_signA
Partial-sign a Solana (SVM) x402 payment transaction locally (@solana/web3.js). One action: partial-sign — deserialize the base64 UNSIGNED TransferChecked tx from the x402 buyer /authorize (scheme svm-transaction), add ONLY the source-authority (buyer) signature, and re-serialize to base64. The feePayer slot stays UNSIGNED — the facilitator signs it at settle. Returns { transaction } (base64). Secret key is base58, passed as parameter (never from env). SECURITY: keys may be logged by MCP clients or stored in conversation history — use only in trusted local environments.
Inputs: no named parameters.
tezos_signA
Sign a Tezos operation locally for tz1 (ed25519), tz2 (secp256k1) or tz3 (P-256) keys. Action sign-forged-operation: pass the forgedOperation hex from prepare_transactions_tezos and the secret key (edsk…/spsk…/p2sk…). Before signing, the operation is decoded and checked: only reveal/transaction ops from the key's own address are signed, and expected (destination, amount in mutez, maxFee) must match — always pass what the user asked for. Returns signedOperation (hex to broadcast with broadcast_signed_transaction), operationHash (o…), signature and the decoded contents. SECURITY: Private keys may be logged by MCP clients or stored in conversation history — use only in trusted local environments.
Inputs: no named parameters.
tron_signA
Sign a Tron transaction (no TronWeb): Node crypto (sha256) + elliptic (secp256k1) + minimal protobuf encode/decode. Two actions: (1) sign-from-details: sign from transaction object (must include raw_data_hex); (2) sign-unsigned-hex: sign from raw unsigned tx hex. Returns signedTransactionHex. Private key is passed as parameter (never from env). SECURITY: Private keys may be logged by MCP clients or stored in conversation history — use only in trusted local environments.
Inputs: no named parameters.
utxo_signA
Sign a UTXO transaction (bitcoin, bitcoin-cash, litecoin, dogecoin, dash, zcash). Two actions: (1) sign-from-details: sign from prepared transaction object (e.g. HD wallet prepare-transaction) — for zcash this produces a v5 (ZIP 225/244) transaction and requires exactly one of targetHeight (chain tip + 1) or consensusBranchId; (2) sign-unsigned-hex: sign from raw unsigned tx hex (provide inputs metadata: script, satoshis per input) — does not support zcash. Private key is passed as parameter (never from env). SECURITY: Private keys may be logged by MCP clients or stored in conversation history — use only in trusted local environments.
Inputs: no named parameters.
xrp_signA
Sign an XRP (Ripple) transaction. Two actions: (1) sign-from-details: sign from transaction object (JSON); (2) sign-unsigned-hex: sign from raw unsigned tx hex (XRPL serialized). Returns signedTransactionHex and signedTransactionHash. Secret is passed as parameter (never from env). SECURITY: Private keys may be logged by MCP clients or stored in conversation history — use only in trusted local environments.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool maps to a distinct chain family (UTXO, EVM, Kaspa, SVM, Tron, Tezos, XRP), so an agent can pick purely from the blockchain name. The only mild overlap is utxo_sign vs kaspa_sign (both UTXO-style), but Kaspa's schnorr/blockDAG specifics and explicit exclusion from utxo_sign make the boundary clear. Multi-action tools are documented with enumerated actions, keeping intra-tool selection unambiguous.
All seven tools follow an identical <chain>_sign pattern (utxo_sign, evm_sign, kaspa_sign, svm_sign, tron_sign, tezos_sign, xrp_sign). Predictable, scannable, and no mixed conventions or stray verbs.
Seven tools is well within the sweet spot and each one earns its place by covering a distinct signing domain. The multi-action design (sign-from-details, sign-unsigned-hex, typed-data, partial-sign) avoids fragmenting into dozens of per-action tools.
The signing lifecycle is well covered across major chains, including niche needs like x402 gasless EIP-712 and Solana partial-sign. Gaps exist: EVM lacks a plain personal_sign/message-signing action, and there is no key/address derivation or verify tool, though these are workable around. Broadcasting is delegated to other services (referenced in tezos_sign), so the surface is coherent for a signer-only server.
Maintenance
Related MCP Connectors
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
MCP server for Klever blockchain smart contract development.
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
Hosted MCP server for live Bittensor chain reads and self-custodial on-chain writes.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceNon-custodial MCP server that routes blockchain transactions to your browser wallet (MetaMask, Rabby, etc.) for signing — private keys never leave your browser.2MIT
- AlicenseAqualityCmaintenanceLocal-first MCP server for per-agent key management, generating and using signing keys without external KMS.836 npm1MIT
- AlicenseAqualityCmaintenanceA local MCP server for handling X402 payment-protected HTTP endpoints, offering tools for order placement, signing, and payment submission with multiple signing modes and blockchain networks.788 npm1MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that lets any AI agent operate a wallet directly on-chain: create wallets, send, swap, bridge, and deploy contracts across EVM and Bitcoin networks.1MIT