mcp-bitcoin
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_BITCOIN_NETWORK | No | Network to use: mainnet, testnet, signet, regtest. | mainnet |
| MCP_BITCOIN_TIMEOUT | No | Per-backend request timeout in seconds. | 30 |
| MCP_BITCOIN_CORE_URL | No | Bitcoin Core RPC URL. Omit credentials to use cookie auth. | |
| MCP_BITCOIN_TOR_PROXY | No | SOCKS5 proxy URL for routing all backend connections through Tor; server fails to start if unreachable. | |
| MCP_BITCOIN_ESPLORA_URL | No | Esplora API base URL. | |
| MCP_BITCOIN_MEMPOOL_URL | No | mempool.space API base URL. | |
| MCP_BITCOIN_ELECTRUM_URL | No | Electrum server URL, e.g. ssl://host:50002 or tcp://host:50001. | |
| MCP_BITCOIN_ALLOW_MNEMONIC | No | Set to 'true' to enable seed-phrase and private-key tools. | false |
| MCP_BITCOIN_CORE_COOKIE_PATH | No | Override the .cookie location. | auto |
| MCP_BITCOIN_FAILOVER_COOLDOWN | No | Initial backoff for a failed backend in seconds. | 60 |
| MCP_BITCOIN_PROVIDER_PRIORITY | No | Comma-separated failover order for backends. | core,electrum,mempool,esplora |
| MCP_BITCOIN_ELECTRUM_ALLOW_SELF_SIGNED | No | Accept self-signed certificates for Electrum (unauthenticated). | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Check server health and which backends are reachable. Start here when other tools report backend errors. |
| list_backendsA | List configured backends, their reachability and their capabilities. |
| convert_unitsA | Convert between Bitcoin units. Works offline. Args: amount: Amount to convert, e.g. "0.001". from_unit: Source unit: btc, mbtc, bit or sat. to_unit: Target unit: btc, mbtc, bit or sat. |
| generate_mnemonicA | Generate a new BIP-39 seed phrase. Works offline. Requires MCP_BITCOIN_ALLOW_MNEMONIC=true, because the generated phrase is returned into the conversation and therefore into your client's transcript. Never use a phrase generated this way for real funds — use a hardware wallet or an offline generator. Args: word_count: 12, 15, 18, 21 or 24. Defaults to 24. |
| validate_mnemonicA | Check a BIP-39 phrase's word count, wordlist and checksum. Works offline. Args: mnemonic: The space-separated seed phrase to check. |
| derive_addressesA | Derive addresses from an xpub (preferred) or a seed phrase. Works offline. Passing an xpub/ypub/zpub is the safe path and needs no special permission. Passing a mnemonic requires MCP_BITCOIN_ALLOW_MNEMONIC=true. Args: source: An xpub/ypub/zpub, or a BIP-39 mnemonic. passphrase: Optional BIP-39 passphrase; only used with a mnemonic. address_type: legacy, nested_segwit, native_segwit or taproot. account: BIP-44 account index. change: 0 for receiving addresses, 1 for change. start_index: First address index. count: How many addresses to derive, up to 500. network: Override the server's network for this call. |
| derive_from_pathA | Derive one key at an arbitrary BIP-32 path, in every address format. Works offline. Private keys are never returned. Args: source: An xpub/ypub/zpub, or a BIP-39 mnemonic. path: A BIP-32 path such as "m/84'/0'/0'/0/0". passphrase: Optional BIP-39 passphrase; only used with a mnemonic. network: Override the server's network for this call. |
| derive_xpubA | Extract an account xpub/ypub/zpub from a seed phrase. Works offline. Requires MCP_BITCOIN_ALLOW_MNEMONIC=true. Run this once, keep the xpub, and every later address query can stay watch-only. Args: mnemonic: The BIP-39 seed phrase. standard: bip44, bip49, bip84 or bip86. passphrase: Optional BIP-39 passphrase. account: Account index. network: Override the server's network for this call. |
| derive_entropy_bip85A | Derive a deterministic child seed or entropy from a master seed (BIP-85). Works offline. Requires MCP_BITCOIN_ALLOW_MNEMONIC=true. Args: mnemonic: The master BIP-39 seed phrase. index: Derivation index; each index gives a different child. passphrase: Optional BIP-39 passphrase for the master seed. child_mnemonic_words: Set to 12/15/18/21/24 to derive a child seed phrase. Leave unset to derive raw hex entropy instead. num_bytes: Entropy length, 16-64, when deriving raw entropy. |
| decode_wifA | Show the public key and addresses for a WIF private key. Works offline. Requires MCP_BITCOIN_ALLOW_MNEMONIC=true. The private key is not echoed back. Args: wif: The WIF-encoded private key. network: Override the server's network for this call. |
| get_address_from_pubkeyA | Convert a hex public key to an address. Works offline. Args: pubkey: Hex-encoded public key, compressed or uncompressed. address_type: legacy, nested_segwit, native_segwit, taproot, or "all". network: Override the server's network for this call. |
| get_balanceA | Get an address's confirmed and unconfirmed balance. Needs a backend. Args: address: The Bitcoin address to look up. network: Override the server's network for this call. |
| get_utxosA | List an address's unspent outputs. Needs a backend. Args: address: The Bitcoin address to look up. min_confirmations: Exclude UTXOs below this confirmation count. network: Override the server's network for this call. |
| get_tx_historyA | Get an address's transaction history, newest first. Needs a backend. Paginates by cursor: pass the returned next_cursor as after_txid to page on. Args: address: The Bitcoin address to look up. limit: How many transactions to return, up to 100. after_txid: Continue after this txid, from a previous next_cursor. network: Override the server's network for this call. |
| get_transactionA | Fetch and decode a transaction by txid. Needs a backend. Args: txid: The 64-hex-character transaction ID. network: Override the server's network for this call. |
| get_raw_transactionB | Fetch a transaction's raw hex. Needs a backend. Args: txid: The 64-hex-character transaction ID. network: Override the server's network for this call. |
| decode_raw_transactionA | Decode raw transaction hex, showing destinations. Works offline. Args: raw_tx: The raw transaction hex. network: Override the server's network for address rendering. |
| get_blockA | Fetch a block header by hash or height. Needs a backend. Args: block: A block hash, or a block height as a number. network: Override the server's network for this call. |
| get_block_heightA | Get the current chain tip height. Needs a backend. Args: network: Override the server's network for this call. |
| validate_addressA | Check whether an address is valid and which network it belongs to. Works offline. Args: address: The address to check. network: Compare against this network instead of the server default. |
| decode_scriptA | Decode a scriptPubKey to its type and address. Works offline. Args: script_hex: The hex-encoded script. network: Override the server's network for address rendering. |
| decode_psbtA | Decode a PSBT, showing every destination, the fee and signing status. Works offline. Use this to check where funds are going before signing in your wallet. This server cannot sign or broadcast. Args: psbt: The base64-encoded PSBT. network: Override the server's network for address rendering. |
| estimate_feeA | Estimate the fee rate to confirm within a number of blocks. Needs a backend. Args: target_blocks: Desired confirmation target, 1 to 1008. network: Override the server's network for this call. |
| get_recommended_feesA | Get economy, normal and priority fee rates. Needs a backend. Args: network: Override the server's network for this call. |
| get_fee_histogramC | Get the mempool fee distribution. Needs a backend. Args: network: Override the server's network for this call. |
| get_mempool_infoA | Get mempool size, vsize and minimum fee rate. Needs a backend. Args: network: Override the server's network for this call. |
| get_mempool_entryA | Get mempool details for an unconfirmed transaction. Needs a backend. Args: txid: The 64-hex-character transaction ID. network: Override the server's network for this call. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 27 tools
Most tools target a distinct resource/action, and the descriptions clearly specify inputs and outputs. A few pairs such as get_transaction/get_raw_transaction/decode_raw_transaction and estimate_fee/get_recommended_fees are close enough that an agent could pick the wrong one without reading carefully.
The vast majority follow a clean snake_case verb_noun pattern: get_*, decode_*, derive_*, and validate_* are consistent. The pattern is only slightly interrupted by bare ping and list_backends, and by a minor mix of list_ vs get_ for similar lookup operations.
27 tools is on the heavy side for a single server, even for a broad Bitcoin domain; the health tools and the fee/mempool cluster could plausibly be consolidated. Each tool has a distinguishable purpose, so the count feels borderline rather than chaotic.
The server covers mnemonic handling, key derivation, address/script/PSBT decoding, balances, UTXOs, history, transactions, blocks, fees, and mempool state—strong coverage for a read-only Bitcoin utility. The main gaps are transaction building/broadcasting and block-transaction listing, though the server explicitly positions itself as non-signing and non-broadcasting.