Model Context Protocol (MCP) server for interacting with GetBlock.io API.
- Blockchain data requests from various networks (ETH, Solana)
- Real-time blockchain statistics
- Wallet balance checking
- Transaction status monitoring
- Getting Solana account information
- Getting current gas price in Ethereum
- JSON-RPC interface to blockchain nodes
- Environment-based configuration for API tokens
- Install dependencies:
npm install
- Compile TypeScript:
npm run build
- Create a
.env
file with access tokens for different blockchains (optional):
# Access tokens for different blockchains
ETH_ACCESS_TOKEN=your_eth_access_token_here
SOLANA_ACCESS_TOKEN=your_solana_access_token_here
- Start the server:
npm start
- Build the Docker image:
docker build -t mcp/getblock:latest .
- Run the container with environment variables:
docker run -i --rm \
-e ETH_ACCESS_TOKEN=your_eth_access_token_here \
-e SOLANA_ACCESS_TOKEN=your_solana_access_token_here \
mcp/getblock:latest
For development, you can use the command:
npm run dev
This command will compile TypeScript and start the server.
- Configure Claude Desktop to use this server by editing
claude_desktop_config.json
:
{
"mcpServers": {
"getblock": {
"command": "npm",
"args": [
"start",
"--prefix",
"/ABSOLUTE/PATH/TO/mcp-getblock"
],
"env": {
"ETH_ACCESS_TOKEN": "your_eth_access_token_here",
"SOLANA_ACCESS_TOKEN": "your_solana_access_token_here"
}
}
}
}
- Configure Claude Desktop to use the Docker container:
{
"mcpServers": {
"getblock": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ETH_ACCESS_TOKEN",
"-e",
"SOLANA_ACCESS_TOKEN",
"mcp/getblock:latest"
],
"env": {
"ETH_ACCESS_TOKEN": "your_eth_access_token_here",
"SOLANA_ACCESS_TOKEN": "your_solana_access_token_here"
}
}
}
}
- Restart Claude Desktop
- You should see the available tools in the toolbar
get-chain-info
- get general information about a blockchain network (ETH, Solana)get-wallet-balance
- check wallet balance on the blockchainget-transaction
- get details about a specific transactionget-latest-blocks
- get information about the latest blocksget-solana-account
- get information about a Solana accountget-eth-gas-price
- get current gas price in the Ethereum network
{
"name": "get-chain-info",
"description": "Get general information about a blockchain network",
"inputSchema": {
"properties": {
"chain": {
"type": "string",
"description": "Blockchain network (e.g., eth, solana)",
"default": "eth"
}
}
}
}
{
"name": "get-wallet-balance",
"description": "Get the balance of a wallet address on a blockchain",
"inputSchema": {
"properties": {
"address": {
"type": "string",
"description": "The wallet address to check"
},
"chain": {
"type": "string",
"description": "Blockchain network (e.g., eth, solana)",
"default": "eth"
}
},
"required": ["address"]
}
}
{
"name": "get-transaction",
"description": "Get details of a specific transaction",
"inputSchema": {
"properties": {
"txid": {
"type": "string",
"description": "Transaction ID/hash"
},
"chain": {
"type": "string",
"description": "Blockchain network (e.g., eth, solana)",
"default": "eth"
}
},
"required": ["txid"]
}
}
Access tokens are used in the following priority order:
- Tokens passed through environment variables (
env
in claude_desktop_config.json) - Tokens from the .env file
- Default values (if not specified in items 1 and 2)
- Language: TypeScript (compiled to JavaScript)
- Runtime: Node.js
- Communication Protocol: Model Context Protocol (MCP)
- API Integration: GetBlock.io JSON-RPC API
- Authentication: Token-based API authentication
- Transport Layer: Standard I/O (stdio) for communication with Claude Desktop
- Dependencies:
@modelcontextprotocol/sdk
: For MCP implementationaxios
: HTTP client for API requestsdotenv
: Environment variable management
As of June 2025, this MCP server supports the following blockchain networks:
- Ethereum (ETH) - Full support for balance, transaction, block, and gas price queries
- Solana (SOL) - Support for balance, account info, transaction, and block queries
Support for additional networks from GetBlock.io's infrastructure (which includes over 75+ blockchain networks [1]) can be implemented by extending the current codebase.
You can ask Claude to check the balance of an Ethereum wallet by using the get-wallet-balance
tool:
What is the balance of this Ethereum wallet: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?
To get information about a specific transaction:
Can you show me the details of this Ethereum transaction: 0x0ac94a788a79e3eaa72a33f1da97b79728b570054fe156a7f60e06f5791aaf36?
To check the current gas prices on Ethereum:
What are the current gas prices on Ethereum?
The server follows a simple architecture:
- Initialization: The server initializes using the MCP SDK and configures the supported tools
- Tool Registration: Each blockchain operation is registered as a separate tool with its own input schema
- Request Handling: Incoming requests are processed by the main handler which:
- Extracts the tool name and arguments
- Validates input parameters
- Constructs the appropriate JSON-RPC call to GetBlock API
- Processes the response and returns formatted results
- Authentication: API tokens are managed with a priority system using environment variables
- Tool Definitions: Each blockchain operation is defined as a separate tool with metadata
- Request Handler: Main logic for processing tool invocations
- API Integration: Helper functions for constructing and sending requests to GetBlock
- Response Processing: Formatting and conversion of blockchain data (e.g., wei to ether)
If you encounter connection issues to the GetBlock API:
- Verify that your access tokens are correctly set in environment variables or .env file
- Check if the GetBlock service is operational
- Ensure your network can reach the GetBlock API servers
If you receive error messages about invalid response format:
- Verify that the blockchain and method you're using are supported by GetBlock
- Check if your access token has sufficient permissions
- Ensure the parameters are correctly formatted for the specific blockchain