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 集成