Bitcoin-first MCP server for BTC/STX wallets, DeFi, sBTC, NFTs, and x402 paid APIs.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Aibtc MCP Server.
wallet_createCreate a new wallet for Claude
wallet_importImport an existing wallet for Claude
wallet_unlockUnlock Claude's wallet
wallet_lockLock Claude's wallet
wallet_listList Claude's available wallets
wallet_switchSwitch Claude to a different wallet
Bitcoin-native MCP server for AI agents: BTC/STX wallets, DeFi yield, sBTC peg, NFTs, and x402 payments.
That's it! This automatically configures Claude Code. Restart your terminal and start chatting.
This detects your OS and writes to the correct Claude Desktop config file:
| OS | Config Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
| Windows | %APPDATA%/Claude/claude_desktop_config.json |
Restart Claude Desktop after installing.
This is a standard stdio MCP server, so it works with any MCP-compatible client. Claude Code is the default --install target; select another client with a flag:
| Flag | Client | Config written |
|---|---|---|
| (none) | Claude Code | ~/.claude.json |
--desktop | Claude Desktop | claude_desktop_config.json (see path table above) |
--cursor | Cursor | ~/.cursor/mcp.json |
--windsurf | Windsurf | ~/.codeium/windsurf/mcp_config.json |
--gemini | Gemini CLI | ~/.gemini/settings.json |
--codex | OpenAI Codex CLI | ~/.codex/config.toml |
--vscode | VS Code (Copilot agent) | ./.vscode/mcp.json (project-scoped) |
Each installer merges into the existing config β it won't clobber other servers or settings. Restart the client afterward.
The clients above are MCP hosts β they connect to this server for you. To drive the tools with an OpenRouter model instead, the server ships a built-in bridge: it spawns itself in server mode, exposes the tools to the model as function tools, and runs the tool-call loop. This is the client-side pattern from OpenRouter's MCP cookbook, packaged into the binary.
Safety flags (this server moves real funds, so the bridge defaults to nothing extra and lets you constrain it):
| Flag | Effect |
|---|---|
--read-only | Expose only read-only tools (no transfer/swap/deploy/etc.) |
--allow a,b | Force-allow specific tool names (added to the set) |
--block a,b | Force-remove specific tool names (wins over --allow) |
--max-spend-ustx <n> / --max-spend-sats <n> | Cap spend via the server's spend-limit rail (enforced before signing) |
--list-tools | Print the exposed tool set and exit (no API key needed) |
--model <id> | OpenRouter model (default anthropic/claude-3.5-haiku) |
--network <net> | mainnet or testnet (default mainnet) |
--max-turns <n> | Tool-call loop cap (default 10) |
Before any agent loop runs (and on --list-tools), the bridge prints a compact safety receipt to stderr β network, read-only mode, exposed/write/blocked tool counts, the session spend cap, and the number of known x402 endpoints β so the configured execution boundaries are visible up front. It reports boundaries only; it never claims any value moved.
The allowlist is re-enforced at execution time, so a model can never call a tool outside the exposed set. Any MCP-capable agent framework (@openrouter/agent, OpenAI Agents SDK, Claude Agent SDK) can also point at this server directly β the bridge is for driving it through OpenRouter's raw API without adopting a framework.
Add --testnet to any install command:
Why npx? Using
npx @aibtc/mcp-server@latestensures you always get the newest version automatically. Global installs (npm install -g) won't auto-update.
If you prefer to configure manually, add the following to your client's config file. The -y flag stops npx from prompting for confirmation.
Claude Code / Claude Desktop / Cursor / Windsurf / Gemini CLI β mcpServers JSON:
VS Code (.vscode/mcp.json) β uses a servers key and a typed entry:
OpenAI Codex CLI (~/.codex/config.toml) β TOML, not JSON:
Zed (settings.json) β uses a context_servers key:
Cline / Roo Code (VS Code extension) β add the same mcpServers JSON block above via the extension's MCP settings panel (the exact cline_mcp_settings.json path varies by OS and VS Code build).
Any other MCP client works too β point it at
npx -y @aibtc/mcp-server@latestover stdio withNETWORKin the env.
When you first use @aibtc/mcp-server, Claude doesn't have a wallet. Here's the smooth onboarding flow:
| State | What Claude Says | What To Do |
|---|---|---|
| No wallet | "I don't have a wallet yet" | Use wallet_create or wallet_import |
| Locked | "My wallet is locked" | Use wallet_unlock with password |
| Ready | "My address is ST..." | Claude can perform transactions |
wallet_set_timeout (set to 0 to disable)wallet_lock to manually lock the walletwallet_unlock when you need Claude to transact againClaude's wallets are stored locally on your machine:
Security:
Each wallet automatically derives both a Stacks address and a Bitcoin address from the same mnemonic using BIP39/BIP32 standards.
Derivation Paths (BIP84):
m/84'/0'/0'/0/0 (Bitcoin coin type 0)m/84'/1'/0'/0/0 (Bitcoin testnet coin type 1)Address Format:
bc1q... (Native SegWit P2WPKH)tb1q... (Native SegWit P2WPKH)Capabilities:
Example:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mcp-server-85)<a href="https://allmcps.com/mcp/mcp-server-85"><img src="https://allmcps.com/api/badge/mcp-server-85?style=directory" alt="Aibtc MCP Server on AllMCPs" /></a>