Blockchain MCP Server DEMO
Description
# Blockchain 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…
About
# Blockchain 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) <!-- - **Polygon**…
Details
- Author
- darwintree
- Downloads
- 294
- Categories
- Other
Jump to
- Multi-chain support for Ethereum Mainnet and Conflux eSpace.
- Tools for RPC calls, transactions, addresses, blocks, and chain lists.
- Resource URIs for cross-chain transaction, block, and address lookup.
- Automatic failover between RPC endpoints on network failure.
- Input validation using Zod schemas with TypeScript type safety.
- Extensible configuration to add new EVM chains.
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Blockchain MCP Server DEMOCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Clone the repository, install dependencies with npm install, build with npm run build, and start with npm start. Interact via MCP client tools (e.g., MCP Inspector: npx @modelcontextprotocol/inspector node dist/index.js) using defined tools and resources like callTool("get_transaction", ...) or resource URIs like blockchain://transaction/{hash}.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"blockchain mcp server demo": {
"blockchain-mcp-server": {
"command": "npx",
"args": [
"@modelcontextprotocol/inspector",
"node",
"dist/index.js"
]
}
}
}
}
McpServers
{
"blockchain-mcp-server": {
"command": "npx",
"args": [
"@modelcontextprotocol/inspector",
"node",
"dist/index.js"
]
}
}
Blockchain 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) <!-- - Polygon (Chain ID: 137) - BNB Smart Chain (Chain ID: 56) - Arbitrum One (Chain ID: 42161) - Optimism (Chain ID: 10) - Avalanche C-Chain (Chain ID: 43114) - Fantom Opera (Chain ID: 250) --> - Conflux eSpace (Chain ID: 1030)🛠️ Tools (POST-like endpoints)
1.get_chains - Get list of supported blockchain networks
2. get_rpc_methods - Get supported RPC method list
3. call_rpc - Execute arbitrary RPC method calls
4. get_latest_block - Get latest block number for a chain
5. get_transaction - Get transaction details by hash
6. get_address - Get address balance and information
7. get_block - Get block information by number
📚 Resources (GET-like endpoints)
1.blockchain://transaction/{hash} - Fetch transaction details (cross-chain search)
2. blockchain://block/{chainId}/{number} - Fetch block information
3. blockchain://address/{chainId}/{address} - Fetch address information and balance
4. blockchain://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
1. Clone the repository:
git clone <repository-url>
cd blockchain-mcp-server
2. Install dependencies:
npm install
3. Build the project:
npm run build
4. 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 balance
- eth_getTransactionByHash - Get transaction by hash
- eth_getTransactionReceipt - Get transaction receipt
- eth_getBlockByNumber - Get block by number
- eth_getBlockByHash - Get block by hash
- eth_getTransactionCount - Get account nonce
- eth_getCode - Get contract code
- eth_call - Execute contract call
- eth_estimateGas - Estimate gas for transaction
- eth_gasPrice - Get current gas price
- eth_blockNumber - Get latest block number
- eth_chainId - Get chain ID
- net_version - Get network version
- web3_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 hash
- chainId (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 address
- chainId (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 name
- params (array, optional): Method parameters
- chainId (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
1. BlockchainService: Manages connections to multiple EVM chains using viem clients
2. MCP Server: Exposes tools and resources following MCP specification
3. Type Safety: Full TypeScript support with Zod validation and viem's excellent types
4. 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
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. 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.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



