Privy MCP Server
February 9, 2026 · View on GitHub
Give your AI agent a wallet with Privy. This MCP (Model Context Protocol) server enables Claude and other AI assistants to create wallets, sign transactions, and manage blockchain operations.
Installation
Option 1: npx (Recommended)
Run directly without installation:
npx @privy-io/mcp-server
Option 2: Global Install
npm install -g @privy-io/mcp-server
privy-mcp-server
Option 3: From Source
git clone https://github.com/privy-io/privy-mcp-server.git
cd privy-mcp-server
npm install && npm run build
Quick Start
1. Get Your Credentials
From the Privy Dashboard:
- App ID & Secret: Settings → Basics
2. Configure Your MCP Client
Add to your MCP client configuration:
Claude Desktop (~/.config/claude/claude_desktop_config.json)
{
"mcpServers": {
"privy": {
"command": "npx",
"args": ["@privy-io/mcp-server"],
"env": {
"PRIVY_APP_ID": "your-app-id",
"PRIVY_APP_SECRET": "your-app-secret"
}
}
}
}
Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"privy": {
"command": "npx",
"args": ["@privy-io/mcp-server"],
"env": {
"PRIVY_APP_ID": "your-app-id",
"PRIVY_APP_SECRET": "your-app-secret"
}
}
}
}
Claude Code (project .mcp.json)
{
"privy": {
"command": "npx",
"args": ["@privy-io/mcp-server"],
"env": {
"PRIVY_APP_ID": "your-app-id",
"PRIVY_APP_SECRET": "your-app-secret"
}
}
}
3. Start Using!
Ask Claude to create a wallet:
"Create an Ethereum wallet for me"
Supported Chains
| Chain | Type | Status |
|---|---|---|
| Ethereum (+ all EVM) | ethereum | ✅ Full support |
| Solana | solana | ✅ Full support |
| Cosmos | cosmos | ✅ Supported |
| Stellar | stellar | ✅ Supported |
| Sui | sui | ✅ Supported |
| Aptos | aptos | ✅ Supported |
| Tron | tron | ✅ Supported |
| Bitcoin (SegWit) | bitcoin-segwit | ✅ Supported |
| Near | near | ✅ Supported |
| TON | ton | ✅ Supported |
| Starknet | starknet | ✅ Supported |
Available Tools
Wallet Management
| Tool | Description |
|---|---|
create_wallet | Create a new wallet on any supported chain |
get_wallet_details | Get wallet info by ID |
get_wallets | List all wallets |
get_wallet_balance | Check balance (ETH, USDC, etc.) |
get_wallet_transactions | Get transaction history |
update_wallet | Update wallet policies |
Ethereum Operations
| Tool | Description |
|---|---|
eth_sendTransaction | Sign and broadcast (supports gas sponsorship) |
personal_sign | Sign a message (EIP-191) |
eth_signTransaction | Sign without broadcasting |
eth_signTypedData_v4 | Sign EIP-712 typed data |
secp256k1_sign | Sign a hash directly |
raw_sign | Sign raw data |
Solana Operations
| Tool | Description |
|---|---|
solana_signAndSendTransaction | Sign and broadcast |
solana_signMessage | Sign a message |
solana_signTransaction | Sign without broadcasting |
Policies (Access Control)
| Tool | Description |
|---|---|
create_policy | Create transaction policies |
get_policy / update_policy / delete_policy | Manage policies |
add_rule_to_policy | Add rules to control transactions |
get_policy_rule / update_policy_rule / delete_policy_rule | Manage rules |
Key Quorums (Multi-sig)
| Tool | Description |
|---|---|
create_key_quorum | Create a key quorum for multi-sig |
get_key_quorum / update_key_quorum / delete_key_quorum | Manage quorums |
Transactions
| Tool | Description |
|---|---|
get_transaction | Get transaction details by ID |
Example Conversations
You: Create a wallet and check its balance
Claude: I'll create an Ethereum wallet and check the balance.
🔧 create_wallet → { id: "wallet-abc", address: "0x742d35Cc..." }
🔧 get_wallet_balance → { balance: "0 ETH" }
Done! Your wallet 0x742d35Cc... has been created with 0 ETH.
You: Send 0.01 ETH to 0x123... on Base
Claude: I'll send 0.01 ETH to that address on Base.
🔧 eth_sendTransaction → { hash: "0xabc123...", status: "pending" }
Transaction submitted! Hash: 0xabc123...
Environment Variables
| Variable | Required | Description |
|---|---|---|
PRIVY_APP_ID | Yes | Your Privy App ID |
PRIVY_APP_SECRET | Yes | Your Privy App Secret |
PRIVY_AUTHORIZATION_PRIVATE_KEY | No | For signing ops on owner-controlled wallets |
PRIVY_API_BASE_URL | No | Custom API URL (default: https://api.privy.io/v1) |
Testing
Use the MCP Inspector to test tools interactively:
npm run inspector
Security Best Practices
- Never commit credentials - Use environment variables
- Use policies to restrict what transactions your agent can execute
- Set up key quorums for high-value operations requiring multiple approvals
- Monitor transactions via Privy Dashboard webhooks
Resources
Contributing
Contributions welcome! Please read our contributing guidelines and submit PRs to the main branch.
License
MIT - see LICENSE for details.