
Plugs your AI agent directly into Bitcoin through the Satoshi API or your own node. Get smart fee recommendations, analyze mempool congestion, decode transactions with inscription detection, track mining difficulty and hashrate, and check address balances. The 49 tools cover everything from estimating exact transaction costs before broadcast to comparing fee tiers across confirmation targets. Zero configuration to start with the hosted API, and you can switch to local Bitcoin Core when you need it. Includes prebuilt prompts like "should I send this transaction now or wait" that call the fee intelligence tools and give you a clear answer with savings breakdowns.
Give any AI agent Bitcoin superpowers — fee intelligence, mempool analysis, and 50 tools backed by your Bitcoin node or compatible API.
50 standard tools · 6 prompts · 8 resources · Bitcoin Core or compatible API backend · MIT licensed
If bitcoin-mcp is useful to you, consider giving it a star — it helps others discover the project.
pip install bitcoin-mcp
bitcoin-mcp needs a Bitcoin data backend. It auto-detects a local Bitcoin Core/Knots node from its cookie or RPC settings. Without a local node, set SATOSHI_API_URL to a compatible deployment.
Service status: the public Satoshi API previously hosted at
bitcoinsapi.comis paused and should not be treated as a working default. Use a local node or an explicitly configured compatible API.
Add to your claude_desktop_config.json:
{
"mcpServers": {
"bitcoin": {
"command": "uvx",
"args": ["bitcoin-mcp"]
}
}
}
claude mcp add bitcoin -- uvx bitcoin-mcp
Add to .cursor/mcp.json:
{
"mcpServers": {
"bitcoin": {
"command": "uvx",
"args": ["bitcoin-mcp"]
}
}
}
Add to .vscode/mcp.json:
{
"servers": {
"bitcoin": {
"command": "uvx",
"args": ["bitcoin-mcp"]
}
}
}
Add to your Zed settings.json under context_servers:
{
"context_servers": {
"bitcoin": {
"command": "uvx",
"args": ["bitcoin-mcp"]
}
}
}
See the Zed MCP docs for the current settings location and custom server flow.
docker build -t bitcoin-mcp .
docker run -i bitcoin-mcp
Or with docker compose:
docker compose up
Pass environment variables to connect to a local Bitcoin Core node or a compatible API:
docker run -i -e BITCOIN_RPC_HOST=host.docker.internal -e BITCOIN_RPC_PORT=8332 bitcoin-mcp
# or
docker run -i -e SATOSHI_API_URL=https://your-api.example bitcoin-mcp
Use this as the first useful activation path after install:
"I need to send a Bitcoin transaction today. Use bitcoin-mcp to decide whether to send now or wait, and show the fee rate you used."
Expected path:
get_fee_recommendation.SATOSHI_API_URL before retrying.After it works, Star this repo and share a short showcase with the prompt, tool call, and outcome so other Bitcoin agent builders can see the path.
For repos that need Bitcoin tools, add bitcoin-mcp to the agent's MCP config and configure one of its supported backends:
BITCOIN_RPC_HOST, BITCOIN_RPC_PORT, and optional credentials or datadirSATOSHI_API_URL and, when required, SATOSHI_API_KEYGenerated HTTP examples should use canonical Satoshi API /api/v1 paths.
Ask your AI agent:
| Prompt | What it does |
|---|---|
| "What's the cheapest time to send Bitcoin today?" | Fee recommendation with savings breakdown |
| "Analyze the current mempool congestion" | Real-time mempool depth, fee tiers, pending tx count |
| "How much would I save waiting 6 blocks vs next block?" | Side-by-side fee comparison across confirmation targets |
| "Search for this transaction: abc123..." | Full transaction decode with inscription detection |
| "Give me a situation summary of Bitcoin right now" | Price, fees, mempool, mining, difficulty — one call |
| Tool | Description |
|---|---|
get_fee_recommendation | Optimal fee rate with urgency tiers and savings tips |
get_fee_estimates | Fee estimates across all confirmation targets |
estimate_smart_fee | Fee estimate for a specific confirmation target |
compare_fee_estimates | Side-by-side comparison of fee sources |
estimate_transaction_cost | Exact cost estimate for a transaction before sending |
| Tool | Description |
|---|---|
analyze_block | Deep analysis of any block by height or hash |
get_block_stats | Statistical breakdown of a block |
get_block_count | Current chain height |
compare_blocks | Compare two blocks side by side |
search_blocks | Search a range of blocks |
analyze_transaction | Full transaction analysis with inscription detection |
decode_raw_transaction | Decode a raw transaction hex |
send_raw_transaction | Broadcast a signed transaction |
check_utxo | Check if a UTXO is spent or unspent |
| Tool | Description |
|---|---|
analyze_mempool | Full mempool analysis — depth, fees, congestion |
get_mempool_info | Mempool size, bytes, fee floor |
get_mempool_entry | Details for a specific unconfirmed transaction |
get_mempool_ancestors | Ancestor chain for a mempool transaction |
| Tool | Description |
|---|---|
get_mining_info | Current mining difficulty, hashrate, block reward |
analyze_next_block | Preview of the next block template |
get_mining_pool_rankings | Top mining pools by recent blocks |
get_difficulty_adjustment | Time and percentage of next difficulty change |
get_halving_countdown | Blocks and estimated time until next halving |
| Tool | Description |
|---|---|
get_blockchain_info | Chain state, verification progress, softfork status |
get_network_info | Node version, connections, relay info |
get_node_status | Connection status and node health |
get_peer_info | Connected peer details |
get_chain_tips | Active and stale chain tips |
get_chain_tx_stats | Transaction throughput over N blocks |
get_utxo_set_info | UTXO set size and total supply |
get_supply_info | Circulating supply, inflation rate, percent mined |
get_situation_summary | Aggregated overview — price, fees, mempool, mining |
get_btc_price | Current BTC/USD price |
get_market_sentiment | Fear/greed index and market indicators |
| Tool | Description |
|---|---|
get_address_utxos | UTXOs for an address |
validate_address | Validate and classify a Bitcoin address |
| Tool | Description |
|---|---|
get_address_balance | Total received/sent/balance, tx count, first/last seen |
get_address_history | Paginated transaction history with net value change |
get_address_transactions | Transaction history with per-transaction value details |
get_indexed_transaction | Enriched tx with resolved input addresses + spent status |
get_indexer_status | Sync progress, ETA, blocks/sec |
| Tool | Description |
|---|---|
analyze_psbt_security | Security analysis of a Partially Signed Bitcoin Transaction |
explain_inscription_listing_security | Security guide for ordinal inscription listings |
| Tool | Description |
|---|---|
search_blockchain | Universal search — address, txid, block hash, or height |
generate_keypair | Generate a new Bitcoin keypair |
explain_script | Decode and explain a Bitcoin script |
decode_bolt11_invoice | Decode a Lightning Network BOLT11 invoice |
describe_rpc_command | Help text for any Bitcoin Core RPC command |
list_rpc_commands | List all available RPC commands |
decode_xpub | Decode and inspect an extended public key |
query_remote_api is registered only when SATOSHI_API_URL is set and the l402 extra is installed. It queries canonical /api/v1 routes on that explicitly configured endpoint.
Configure either a local Bitcoin Core/Knots node or a compatible remote API. If neither is available, bitcoin-mcp exits its connection check with a setup error instead of silently selecting an unavailable public service.
bitcoin-mcp supports the following runtime flags:
| Flag | Values | Default | Description |
|---|---|---|---|
--transport | stdio, sse, streamable-http | stdio | MCP transport to run |
--host | hostname / IP | 127.0.0.1 for HTTP transports | Bind host for sse and streamable-http |
--port | integer | 8000 for HTTP transports | Bind port for sse and streamable-http |
--log-level | DEBUG, INFO, WARNING, ERROR | INFO | Server log verbosity |
Example:
bitcoin-mcp --transport sse --host 127.0.0.1 --port 8000 --log-level DEBUG
| Variable | Description | Default |
|---|---|---|
BITCOIN_RPC_HOST | Bitcoin Core RPC host | 127.0.0.1 |
BITCOIN_RPC_PORT | Bitcoin Core RPC port | Auto by network |
BITCOIN_NETWORK | mainnet, testnet, signet, or regtest | mainnet |
SATOSHI_API_URL | Compatible Satoshi API base URL | None |
SATOSHI_API_KEY | API key for authenticated access | None |
To connect to a local Bitcoin Core node:
{
"mcpServers": {
"bitcoin": {
"command": "uvx",
"args": ["bitcoin-mcp"],
"env": {
"BITCOIN_RPC_HOST": "127.0.0.1",
"BITCOIN_RPC_PORT": "8332"
}
}
}
}
6 built-in prompts for common workflows:
analyze_fee_environment, investigate_transaction, monitor_mempool_fees, taproot_adoption_report, network_health_report, track_transaction
8 resources for context injection:
bitcoin://connection/status, bitcoin://node/status, bitcoin://fees/current, bitcoin://fees/history, bitcoin://mempool/snapshot, bitcoin://protocol/script-opcodes, bitcoin://protocol/address-types, bitcoin://protocol/sighash-types
io.github.Bortlesboat/bitcoin-mcpSee the examples/ folder for documented usage patterns:
bitcoin-mcp is free, open-source Bitcoin infrastructure. Support development through OpenSats.
Contributions are welcome. See CONTRIBUTING.md for guidelines, including how to add new tools and the PR checklist.
Please report security vulnerabilities privately — see SECURITY.md.
bitcoin-mcp is created and maintained by Andrew Barnes, bridging AI agents and Bitcoin infrastructure through the Model Context Protocol.
Related projects:
BITCOIN_RPC_HOSTBitcoin Core RPC host (default: 127.0.0.1)
BITCOIN_RPC_PORTBitcoin Core RPC port (default: auto-selected by network)
BITCOIN_NETWORKBitcoin network: mainnet, testnet, signet, or regtest (default: mainnet). Sets default RPC port if BITCOIN_RPC_PORT is not set.
SATOSHI_API_URLOverride the default hosted API URL (default: https://bitcoinsapi.com). The hosted API is used automatically when no local node is detected.
SATOSHI_API_KEYsecretAPI key for authenticated access to the hosted Satoshi API (get one free at POST /api/v1/register)