MCP server for querying Bitcoin node status, network info, mempool, and peer connections via JSON-RPC
Four tools with clear, descriptive docstrings (50-200 chars each) and consistent naming (verb_noun pattern: get_*). All tools are READ_ONLY and stateless. However, all four tools have EMPTY input schemas ({}), which is a critical gap. Parameter descriptions are absent because there are no parameters. Output schemas are not documented, responses are free-text strings, not structured objects. Error handling via safe_output decorator catches exceptions but returns generic messages ('The node returned an unexpected response format') without recovery guidance. No tool annotations (readOnlyHint, etc.) present.
Report the node's mempool status. Returns the number of transactions waiting in the mempool, how much memory the mempool uses (and its cap), and the current minimum fee rate required for a transaction to enter the mempool.
Report the node's network and connection status. Returns the Core version and subversion string, the number of connections (total, inbound, outbound), and which networks are currently reachable. The node's own local addresses are never included.
Report the node's chain sync status. Returns the chain name, current block height, header height, verification progress as a percentage, whether an initial block download is still running, and how long the node has been up.
Report a short summary of the node's peer connections. Returns the total number of peers, how many are inbound versus outbound, and the best-observed ping latency span across peers with a completed measurement. Individual peer addresses are not listed.
All four tools have empty input schemas ({}). This prevents LLMs from understanding parameter constraints and types.
Output schemas are not documented. Tools return free-text strings (e.g., 'Chain: mainnet\nBlocks: 850000\n...') instead of structured JSON objects. LLMs cannot reliably parse or chain these responses.
Error messages are generic and non-actionable. safe_output catches all exceptions and returns 'The node returned an unexpected response format' without guidance on what to do next or what went wrong.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | <=2025-11-25 | v2 |
No tool annotations present. Tools are READ_ONLY but lack readOnlyHint annotation. This prevents clients from optimizing caching or safety policies.
RPC credentials (NODE_RPC_USER, NODE_RPC_PASSWORD) are loaded from environment but validation is minimal. No rate limiting or timeout configuration exposed to prevent runaway agent calls.