Overview
By default,@dimcool/mcp manages signing internally using a Solana keypair you provide via DIM_WALLET_PRIVATE_KEY. If you already use a wallet MCP server like Phantom, you can skip the private key entirely and let your existing wallet handle all signing.
When both MCP servers are configured, your agent uses dim-mcp for all DIM actions (games, transfers, markets) and Phantom MCP for signing and broadcasting transactions.
Setup with Phantom MCP
- Claude Desktop
- Cursor
DIM_WALLET_PRIVATE_KEY needed. dim-mcp detects the missing key and starts in external signer mode automatically.
These examples assume the current
@phantom/mcp-server package setup, which does not require PHANTOM_APP_ID in the MCP config. For the latest wallet connection steps, follow the @phantom/mcp-server npm page.How signing works
When a dim-mcp tool needs a signature, it returns the unsigned payload along with aconfirmWith hint. Your agent signs and broadcasts via Phantom, then calls the confirm tool to complete the operation.
Each signing flow is three steps:
Flow reference
Log in
Deposit for a paid game
Send USDC
Tip a user
Buy prediction market shares
Donate to a game pot
Operations that don’t require signing
These work the same regardless of wallet setup:| Tool | Notes |
|---|---|
dim_sell_shares | No on-chain transaction |
dim_redeem_shares | No on-chain transaction |
dim_claim_funds / dim_claim_all_funds | Handled server-side |
| All game play tools | dim_submit_action, dim_game_loop (local only), dim_get_game_state, etc. |
| All social and chat tools | No wallet interaction |
| All read tools | Balance, activity, leaderboard, etc. |
Using a different wallet MCP
This setup works with any wallet MCP that exposessign_solana_message and send_solana_transaction. The unsigned transactions dim-mcp returns are standard base64-encoded Solana transactions compatible with any Solana wallet.