⛓️ Block MCP Server
A Model Context Protocol (MCP) server for Blockchain interactions. This server enables AI agents to interact with multiple blockchain networks, check financial data, and send real-time notifications to Telegram.
🛠️ Tools Included
- 💰 Wallet Balance Checker: Retrieves native token balances for any wallet address across Ethereum, Polygon, Arbitrum, Optimism, and Base simultaneously using public RPC nodes.
- 📜 Frax Transactions: Fetches the 5 latest transactions on the FRAX network, including both native transfers and ERC-20 token events.
- ⛽ Gas Price Estimator: Provides real-time gas fee estimates (in Gwei) across multiple blockchain networks to help determine transaction costs.
- 💱 Crypto Converter: Converts cryptocurrency and fiat values using real-time market rates (e.g., BTC to ETH or USDC to USD).
- 🤖 Telegram Bot: Programmatically posts updates, messages, or automated notifications to a specific Telegram chat or channel.
⚙️ Setup Instructions
Prerequisites
- Python 3.11+
- uv
1. Environment Variables
Create a .env file in the root directory and populate it with your credentials:
# Telegram Configuration
TELEGRAM_BOT_TOKEN=your_bot_token_from_botfather
TELEGRAM_CHAT_ID=your_numeric_chat_id
# Blockchain API Keys
FRAXSCAN_API_KEY=your_fraxscan_api_key
# Optional: CoinGecko API Key
COINGECKO_API_KEY=your_api_key
2. Installation
-
Clone the repository:
git clone <YOUR_REPO_URL_HERE> cd <YOUR_REPO_NAME> -
Install dependencies: This project uses
uvfor fast dependency management.make install
🚀 How to Run
The easiest way to test the tools is using the built-in Makefile command, which launches the MCP Inspector.
make dev
Alternatively: uv run fastmcp dev main.py
📖 Usage & Examples
Below are example inputs for testing the tools in the MCP Inspector.
1. Wallet Balance Checker Tool (wallet_check)
Queries multiple public RPC endpoints to retrieve native balances across various chains.
- Input:
{ "address": "0x..." } - Response:
{ "Ethereum": "1.2450 ETH", "Arbitrum": "0.0000 ETH", "Polygon": "150.3200 MATIC", "Optimism": "0.0500 ETH", "Base": "0.1200 ETH" }
2. Frax Transaction History (get_frax_transactions)
Merges native and token transfer history from the Fraxscan API, sorted by timestamp.
- Input:
{ "address": "0x4200000000000000000000000000000000000015" } - Response:
[ { "time": "2026-01-30 18:00:00", "amount": "0.5000 frxETH", "token": "frxETH", "type": "Native", "hash": "0x..." } ]
3. Gas Price Estimator (get_gas_prices)
Monitors real-time gas prices (in Gwei) to estimate transaction costs.
- Input:
{} - Response:
{ "Ethereum": "🔴 45.2 Gwei", "Base": "🟢 0.01 Gwei" }
4. Crypto Converter (convert_crypto)
Converts time between timezones.
- Input:
{ "amount": 1, "from_coin": "bitcoin", "to_coin": "ripple" } - Response:
{ "Response": "1 BITCOIN = 1235999999.0 XRP (Rate: 95000)" }
5. Telegram Bot (send_telegram_message)
Sends messages to your configured Telegram chat through a bot.
- Input (Example: Addition):
{ "message": "Message from telegram bot" } - Response:
{ "Results": "Message sent succesfully" }