ChainRPC MCP

io.github.John0n1由 GitHub 帳號 John0n1 發布v2.0.2更新於 Oct 24, 2026

Safety-first EVM and Bitcoin RPC tools for balances, contracts, blocks, and transactions

發布方自己的服務:Agent.chain.tokyo Address Contracts

已驗證Streamable HTTP可網頁執行金融開發者工具

概覽

AI 產生的概覽

一個以安全為先的 MCP 伺服器,讓助理讀取 EVM 鏈與比特幣的餘額、區塊、交易、合約、日誌和費用,廣播需明確開啟。

可以做什麼
讀取 EVM 鏈狀態:最新區塊編號、鏈資訊、原生代幣餘額、區塊、交易與收據、事件日誌,以及未簽署交易的 Gas 估算。依 ABI 編碼並呼叫智慧合約函式、解碼回傳值,或直接執行帶 calldata 的呼叫。讀取比特幣資料:區塊鏈資訊、區塊、原始交易、交易輸出、地址 UTXO 餘額與手續費估算,並解碼原始交易。在明確開啟並通過字面確認後,廣播已簽署的 EVM 或比特幣交易。
適用情境
適合助理需要檢視以太坊相容鏈或比特幣鏈上狀態、查詢餘額、解碼交易或合約、估算手續費的情境。可用於透過託管端點進行評估與公鏈唯讀查詢,也可透過自建部署與自有 RPC 端點用於生產。
執行需求
可作為託管遠端端點使用,也可透過 npx 在本機執行,需要 Node.js 20 或更新版本。EVM_RPC_URL 與 BITCOIN_RPC_URL 為選用,預設使用 PublicNode 公共端點;選用的 HTTP Basic 認證使用 EVM_RPC_USERNAME/EVM_RPC_PASSWORD 與 BITCOIN_RPC_USERNAME/BITCOIN_RPC_PASSWORD。需要對 RPC 端點的對外網路連線。除非啟用 ALLOW_EVM_BROADCAST 或 ALLOW_BITCOIN_BROADCAST,否則廣播維持關閉。
安裝前請注意
廣播會送出真實交易並花費真實資金,預設關閉,且需要輸入字面確認語句。伺服器不接受私鑰、不簽署交易,簽署需在其他地方完成。託管服務為共用、限流且無可用性 SLA,請求對營運方與上游供應商可見。RPC 回應屬於不可信外部資料,遭入侵的端點可能謊報狀態或窺探查詢,高價值決策應獨立核實。廣播逾時可能導致狀態不明。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 ChainRPC MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.John0n1%2Fchainrpc-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "chainrpc": {
      "type": "http",
      "url": "https://chainrpc-mcp.mitander.io/mcp"
    }
  }
}

README

ChainRPC MCP

JSON-RPC MCP server for EVM chains and Bitcoin

[npm] [CI] [Node.js] [License: MIT]

A safety-first Model Context Protocol server for EVM chains and Bitcoin.

ChainRPC MCP gives agents a focused set of tools for balances, blocks, transactions, logs, smart-contract reads, gas and fee estimation, and transaction decoding. It can submit already-signed transactions, but only behind explicit, disabled-by-default safety gates. It never accepts private keys, manages wallets, or signs transactions.

  • Two ecosystems, one server: EVM JSON-RPC and Bitcoin Core-compatible RPC.
  • Useful without an account: defaults to public Ethereum and Bitcoin endpoints from PublicNode.
  • Bring your own infrastructure: replace either endpoint and optionally use HTTP Basic authentication.
  • Official transports: local stdio and stateful Streamable HTTP through the official MCP SDK.
  • Constrained by design: no arbitrary RPC passthrough and no wallet, admin, debug, miner, or node-management methods.

Choose how to connect

Hosted, read-only service

The public endpoint is available now:

text
https://chainrpc-mcp.mitander.io/mcp

For clients that accept a remote Streamable HTTP server:

json
{  "mcpServers": {    "chainrpc-mcp": {      "url": "https://chainrpc-mcp.mitander.io/mcp"    }  }}

Health and upstream status:

sh
curl 'https://chainrpc-mcp.mitander.io/health?upstream=1'

The hosted service is shared, rate-limited, and intentionally has both broadcast features disabled. It is suitable for evaluation and public-chain reads, but has no availability SLA. Requests are visible to the service operator and upstream RPC providers; use your own deployment for sensitive queries or production workloads.

Local stdio server

Requirements: Node.js 20 or newer.

sh
npx -y chainrpc-mcp

Example client configuration:

json
{  "mcpServers": {    "chainrpc-mcp": {      "command": "npx",      "args": ["-y", "chainrpc-mcp"],      "env": {        "EVM_RPC_URL": "https://ethereum-rpc.publicnode.com",        "BITCOIN_RPC_URL": "https://bitcoin-rpc.publicnode.com"      }    }  }}

The RPC variables are optional; they are shown to make the defaults explicit.

Available tools

EVM

ToolPurposeState-changing
evm_getBlockNumberReturn the latest block numberNo
evm_getChainInfoReturn chain ID and client versionNo
evm_getNativeBalanceRead a native-token balance at a blockNo
evm_getBlockRead a block by number, tag, or hashNo
evm_getTransactionRead a transaction and receiptNo
evm_callExecute an eth_call with encoded calldataNo
evm_readContractEncode, call, and decode a function from its ABINo
evm_estimateTransactionEstimate gas for an unsigned transactionNo
evm_getLogsQuery event logs with address and topic filtersNo
evm_broadcastTransactionPreflight and submit signed transaction bytesYes

Any HTTP(S) EVM JSON-RPC endpoint can be used, so the same tools work with Ethereum mainnet, testnets, and compatible chains. Results always come from the configured endpoint; callers should inspect evm_getChainInfo before making chain-specific assumptions.

Bitcoin

ToolPurposeState-changing
btc_getBlockchainInfoReturn network, height, sync, and pruning informationNo
btc_getAddressBalanceScan confirmed UTXOs for an addressNo
btc_getBlockRead a block by height or hashNo
btc_getTransactionRead raw transaction detailsNo
btc_getTxOutLook up an unspent transaction outputNo
btc_estimateFeeEstimate a fee rate for a confirmation targetNo
btc_decodeRawTransactionDecode serialized transaction bytesNo
btc_broadcastTransactionValidate and submit signed transaction bytesYes

Bitcoin Core is not an address indexer. btc_getAddressBalance uses scantxoutset, which reports currently unspent, confirmed outputs—not history or unconfirmed balance. Only one scan can run on a node at a time, so a shared endpoint may return scan already in progress. Use a dedicated node for frequent address scans.

Safety model

ChainRPC MCP treats transaction submission as an exceptional operation:

  • Broadcasting is off unless ALLOW_EVM_BROADCAST or ALLOW_BITCOIN_BROADCAST is explicitly enabled.
  • The server accepts only serialized, already-signed transaction bytes.
  • Every broadcast call requires the literal confirmation I understand this broadcasts a real transaction.
  • EVM submission checks the endpoint and transaction chain IDs, rejects unprotected legacy transactions, recovers the signer, and runs eth_estimateGas first.
  • Bitcoin submission checks the endpoint network and requires testmempoolaccept to approve the transaction.
  • Submission requests are never automatically retried. A timeout can leave broadcast status ambiguous.
  • Read inputs use strict schemas; upstream concurrency, timeout, retry, and response sizes are bounded.
  • HTTP mode validates hosts and browser origins, supports bearer authentication, caps request bodies, and binds to loopback by default.

RPC responses are untrusted external data. A compromised endpoint can lie about chain state, censor requests, or observe queries. Independently verify high-value decisions, ideally against infrastructure you control.

See SECURITY.md for vulnerability reporting and the complete trust boundary.

Configuration

Copy example.env to .env when running from a checkout.

VariableDefaultDescription
EVM_RPC_URLhttps://ethereum-rpc.publicnode.comAny HTTP(S) EVM JSON-RPC endpoint
BITCOIN_RPC_URLhttps://bitcoin-rpc.publicnode.comAny HTTP(S) Bitcoin Core-compatible endpoint
EVM_RPC_USERNAME / EVM_RPC_PASSWORDunsetOptional EVM HTTP Basic authentication pair
BITCOIN_RPC_USERNAME / BITCOIN_RPC_PASSWORDunsetOptional Bitcoin HTTP Basic authentication pair
RPC_TIMEOUT_MS12000Per-attempt upstream timeout
RPC_RETRIES1Retry count for retryable reads only
RPC_MAX_RESPONSE_BYTES10000000Maximum upstream response body
RPC_MAX_CONCURRENCY20Maximum concurrent requests per chain client
ALLOW_EVM_BROADCASTfalseEnable signed EVM transaction submission
ALLOW_BITCOIN_BROADCASTfalseEnable signed Bitcoin transaction submission
TRANSPORTstdioDefault transport: stdio or http
HOST / PORT127.0.0.1 / 3000HTTP bind address and port
MCP_PATH/mcpStreamable HTTP MCP path
MCP_AUTH_TOKENunsetOptional bearer token for /mcp
ALLOWED_HOSTSunsetRequired allowlist when binding HTTP to a non-loopback address
CORS_ORIGINSunsetComma-separated browser-origin allowlist
MAX_MCP_SESSIONS1000Maximum concurrent HTTP MCP sessions
HTTP_BODY_LIMIT1mbExpress request-body limit

GETH_URL remains a deprecated compatibility alias for EVM_RPC_URL. Credentials embedded in RPC URLs are rejected; use the matching username and password variables.

Self-host with Streamable HTTP

Start a loopback-only HTTP server:

sh
npm startcurl 'http://127.0.0.1:3000/health?upstream=1'

To bind beyond loopback, explicitly set the host allowlist and authentication:

sh
HOST=0.0.0.0 \ALLOWED_HOSTS=mcp.example.com \MCP_AUTH_TOKEN='replace-with-a-long-random-secret' \npm start

Terminate TLS at a trusted reverse proxy, preserve the original Host header, and keep the origin private. A bearer token is useful for a single trusted client; use an OAuth-capable gateway and network access policy for multi-user deployments.

Docker defaults to stdio. Override the command for HTTP:

sh
docker build -t chainrpc-mcp .docker run --rm -p 127.0.0.1:3000:3000 \  -e HOST=0.0.0.0 \  -e ALLOWED_HOSTS=localhost,127.0.0.1 \  -e MCP_AUTH_TOKEN='replace-with-a-long-random-secret' \  chainrpc-mcp --http

Production service topology:

text
MCP client    |    vCloudflare edge -> outbound-only Cloudflare Tunnel -> nginx on loopback                                                     |                                                     v                                              ChainRPC MCP                                                /       \                                               v         v                                          EVM RPC    Bitcoin RPC

Deployment units, nginx configuration, hardening details, and operating commands are in docs/OPERATIONS.md.

Development

sh
git clone https://github.com/John0n1/chainrpc-mcp.gitcd chainrpc-mcpnpm cinpm run checknpm run test:coverage

Useful commands:

CommandPurpose
npm run start:stdioStart the stdio transport
npm startStart Streamable HTTP
npm run devStart HTTP with Node watch mode
npm testRun the test suite
npm run checkSyntax-check the entry point and run all tests
npm pack --dry-runInspect the npm package contents

The detailed design and remediation record is in docs/AUDIT.md. Contributions are welcome through issues and pull requests. Please use a private GitHub security advisory—not a public issue—for suspected vulnerabilities.

License

MIT

來源:README.md,提交 707c39e

工具

0
SourceWeft 尚未讀取此伺服器的工具。

版本歷史

1
  1. v2.0.2最新Sep 16, 2026

評分

已滿足適用檢查項的 85%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Chain 整合