mcp-blockchain
mcp-blockchain
An MCP server that exposes blockchain data as native tools for any AI agent.
Status: early. Two tools work end to end. The rest are listed as planned ā not built.
The Problem
AI agents can reason about financial data, but on-chain data sits behind bespoke integrations. Every agent framework ends up writing its own connector, and every model switch breaks it.
MCP standardizes the tool interface. This exposes blockchain reads through it.
What It Does
mcp-blockchain is an MCP server exposing on-chain data as tools any MCP-compatible agent (Claude Code, Cursor, Gemini CLI) can call natively ā the same way it would query a database.
Tools
Tool | Description | Status |
| Native token balance (ETH/MATIC) for a wallet | ā Working |
| ERC-20 balances for a given token list | ā Working |
| Recent transactions | š Planned |
| TVL, APY, liquidity | š Planned |
| NFT inventory | š Planned |
| Subscribe to on-chain events | š Planned |
get_token_holdings requires an explicit list of ERC-20 contract addresses ā there is no auto-discovery yet. That needs an indexer, which is why it isn't done.
Supported Chains
Ethereum, Polygon, and Base. Each defaults to a public RPC and can be overridden by environment variable.
Quick Start
Not yet published to npm ā clone and run locally:
git clone https://github.com/shubhamdusane/mcp-blockchain.git
cd mcp-blockchain
npm install
node server.jsAdd to your MCP client config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"blockchain": {
"command": "node",
"args": ["/absolute/path/to/mcp-blockchain/server.js"],
"env": {
"ETH_RPC_URL": "https://mainnet.infura.io/v3/YOUR_KEY"
}
}
}
}Environment variables
Variable | Default |
|
|
|
|
|
|
Public RPCs are rate-limited. Use your own endpoint for anything beyond experimentation.
Example
You: What's the ETH balance of 0x742d35Cc6634C0532925a3b8D4C9C4C7b7E6b7a?
Agent: [calls get_wallet_balance]
{
"address": "0x742d35Cc6634C0532925a3b8D4C9C4C7b7E6b7a",
"chain": "ethereum",
"native_balance": { "formatted": "1.2470 ETH" }
}Architecture
mcp-blockchain/
āāā tools/
ā āāā get_wallet_balance.js # native balance
ā āāā get_token_holdings.js # ERC-20 balances
āāā chains/
ā āāā index.js # provider factory, RPC config, caching
āāā server.js # MCP server entrypoint
āāā package.json
āāā LICENSEEach tool exports a tool descriptor (name, description, JSON input schema) and an execute function. server.js registers them. Adding a tool means adding one file and one registration line.
Scope
Read-only by design. No signing, no key handling, no transaction submission. An agent using this cannot move funds ā it can only observe chain state.
Good First Issues
Add Arbitrum to the provider factory
Add
get_gas_price()ENS name resolution for addresses
Test suite for the chain adapters
Implement
get_transaction_history(needs an indexer or explorer API)
Contributing
PRs welcome. Keep tools single-purpose and read-only.
Built By
Shubham Dusane ā blockchain engineer and AI product lead. 6 years across smart contracts and agent infrastructure.
License
MIT ā see LICENSE.