About Blockchain MCP Server DEMO
Blockchain MCP Server DEMO is an MCP server for blockchain data access and analysis, supporting Ethereum Mainnet and Conflux eSpace. It exposes chain-query tools, resources, and RPC calls.
Key features
- 01Supports Ethereum Mainnet and Conflux eSpace
- 02Queries block, transaction, and address data
- 03Runs supported JSON-RPC methods
- 04Provides on-chain data through resource URIs
Use cases
- 01Inspect an address balance and details
- 02Look up transaction details by hash
- 03Read data for a specific block
MCP support
The server exposes blockchain tools and resources to MCP clients, including network listings, blocks, transactions, addresses, and RPC calls.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEBlockchain MCP Server DEMO
A comprehensive Model Context Protocol (MCP) server for interacting with multiple EVM-compatible blockchains. This server provides tools and resources for blockchain data access and analysis.
Features
🔗 Multi-Chain Support
- Ethereum Mainnet (Chain ID: 1)
- Conflux eSpace (Chain ID: 1030)
🛠️ Tools (POST-like endpoints)
get_chains- Get list of supported blockchain networksget_rpc_methods- Get supported RPC method listcall_rpc- Execute arbitrary RPC method callsget_latest_block- Get latest block number for a chainget_transaction- Get transaction details by hashget_address- Get address balance and informationget_block- Get block information by number
📚 Resources (GET-like endpoints)
blockchain://transaction/{hash}- Fetch transaction details (cross-chain search)blockchain://block/{chainId}/{number}- Fetch block informationblockchain://address/{chainId}/{address}- Fetch address information and balanceblockchain://chains- List all supported blockchain networks
Technology Stack
- TypeScript - Type-safe development
- Viem - Modern Ethereum library with excellent TypeScript support
- Model Context Protocol (MCP) - Standardized AI-blockchain communication
- Zod - Runtime type validation
Installation
- Clone the repository:
git clone <repository-url>
cd blockchain-mcp-server
- Install dependencies:
npm install
- Build the project:
npm run build
- Start the server:
npm start
Usage Examples
Tools
Get supported chains
// 获取所有支持的区块链网络
await callTool("get_chains", {});
Get transaction information
// 获取交易信息
await callTool("get_transaction", {
hash: "0x1234567890abcdef...",
chainId: 1 // optional, will search all chains if not provided
});
Get address information
// 获取地址信息
await callTool("get_address", {
address: "0x742de6d65963b2c3a5e8e3b8c7cb56c6f78e0c00",
chainId: 1
});
Execute RPC call
// 获取以太坊主网最新区块号
await callTool("call_rpc", {
method: "eth_blockNumber",
params: [],
chainId: 1
});
// 获取地址余额
await callTool("call_rpc", {
method: "eth_getBalance",
params: ["0x742de6d65963b2c3a5e8e3b8c7cb56c6f78e0c00", "latest"],
chainId: 1
});
Resources
Access transaction data
// 跨链查询交易 (will search all supported chains)
const txResource = await getResource("blockchain://transaction/0x1234567890abcdef...");
Access block data
// 获取以太坊主网特定区块
const block = await getResource("blockchain://block/1/19000000");
// 获取Polygon特定区块
const polygonBlock = await getResource("blockchain://block/137/12345678");
Access address data
// 获取地址信息
const addressInfo = await getResource("blockchain://address/1/0x742de6d65963b2c3a5e8e3b8c7cb56c6f78e0c00");
Access supported chains
// 获取所有支持的区块链网络
const chains = await getResource("blockchain://chains");
Supported RPC Methods
The server supports the following standard Ethereum JSON-RPC methods:
eth_getBalance- Get account balanceeth_getTransactionByHash- Get transaction by hasheth_getTransactionReceipt- Get transaction receipteth_getBlockByNumber- Get block by numbereth_getBlockByHash- Get block by hasheth_getTransactionCount- Get account nonceeth_getCode- Get contract codeeth_call- Execute contract calleth_estimateGas- Estimate gas for transactioneth_gasPrice- Get current gas priceeth_blockNumber- Get latest block numbereth_chainId- Get chain IDnet_version- Get network versionweb3_clientVersion- Get client version
API Reference
Tools
get_chains
Returns a list of all supported blockchain networks.
Parameters: None
Response:
[
{
"chainId": 1,
"name": "Ethereum Mainnet",
"symbol": "ETH",
"rpcUrls": [...],
"blockExplorerUrls": [...],
"nativeCurrency": {...}
}
]
get_transaction
Get detailed transaction information.
Parameters:
hash(string): Transaction hashchainId(number, optional): Chain ID to search on
Response:
{
"hash": "0x...",
"blockNumber": 19000000,
"from": "0x...",
"to": "0x...",
"value": "1.0",
"gasPrice": "0.00002",
"gasUsed": "21000",
"chainId": 1,
"status": 1
}
get_address
Get address balance and information.
Parameters:
address(string): Ethereum addresschainId(number): Chain ID
Response:
{
"address": "0x...",
"balance": "10.5",
"nonce": 42,
"code": null,
"chainId": 1
}
call_rpc
Execute arbitrary RPC method calls.
Parameters:
method(string): RPC method nameparams(array, optional): Method parameterschainId(number, optional): Chain ID (default: 1)
Response: Raw RPC response
Error Handling
The server includes comprehensive error handling:
- Network failures: Automatic failover between RPC endpoints
- Invalid parameters: Input validation using Zod schemas
- Chain unavailability: Graceful handling when chains are down
- Transaction not found: Cross-chain search with clear error messages
Architecture
src/
├── index.ts # Main MCP server implementation
├── blockchain-service.ts # Blockchain interaction service (using viem)
├── config.ts # Chain configurations and constants
└── types.ts # TypeScript interfaces and schemas
Key Components
- BlockchainService: Manages connections to multiple EVM chains using viem clients
- MCP Server: Exposes tools and resources following MCP specification
- Type Safety: Full TypeScript support with Zod validation and viem's excellent types
- Multi-chain Support: Seamless interaction across different networks
Why Viem?
This project uses viem instead of ethers for several advantages:
- Better TypeScript Support: Native TypeScript with strict typing
- Modern API: Functional approach with better tree-shaking
- Performance: Optimized for speed and bundle size
- Reliability: Built-in retry logic and better error handling
- Future-proof: Actively maintained with cutting-edge features
Testing
You can test the server using the MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.js
Configuration
The server automatically connects to multiple blockchain networks using public RPC endpoints. You can customize RPC endpoints by modifying the src/config.ts file.
Adding New Chains
To add support for new EVM-compatible chains, update the SUPPORTED_CHAINS object in src/config.ts:
export const SUPPORTED_CHAINS: Record<number, ChainConfig> = {
// ... existing chains
// New chain example
YOUR_CHAIN_ID: {
chainId: YOUR_CHAIN_ID,
name: "Your Chain Name",
symbol: "TOKEN",
rpcUrls: [
"https://rpc.yourchain.com",
"https://backup-rpc.yourchain.com"
],
blockExplorerUrls: ["https://explorer.yourchain.com"],
nativeCurrency: {
name: "Your Token",
symbol: "TOKEN",
decimals: 18
}
}
};
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
MIT License - see LICENSE file for details.
Support
For questions or issues, please open an issue on the GitHub repository.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.