Web3 MCP
An MCP server implementation wrapping Ankr Advanced API.
Overview
FastMCP is a Model Context Protocol (MCP) server that provides access to Ankr's Advanced API for blockchain data. It allows LLMs to interact with blockchain data across multiple chains including Ethereum, BSC, Polygon, Avalanche, and more.
MCP Client Setting
{
"mcpServers": {
"web3": {
"command": "uvx",
"args": [
"web3-mcp"
],
"env": {
"ANKR_ENDPOINT": "https://rpc.ankr.com/...",
}
}
}
}
Features
- Complete wrapper for all Ankr Advanced API endpoints
- NFT API: Get NFT metadata, holders, transfers, and ownership information
- Query API: Access blockchain statistics, blocks, logs, and transaction data
- Token API: Get token balances, prices, holders, and transfer history
- Support for multiple blockchain networks
Installation
# Clone the repository
git clone https://github.com/tumf/web3-mcp.git
cd web3-mcp
# Install with uv
uv pip install -e .
Configuration
Set the following environment variables:
# Required
export ANKR_ENDPOINT="your_ankr_rpc_endpoint"
# Optional but recommended for authenticated requests
export ANKR_PRIVATE_KEY="your_private_key"
Usage
Running the server
from web3_mcp.server import init_server
# Initialize MCP server
mcp = init_server(
name="Ankr MCP",
endpoint="your_ankr_endpoint", # Optional, defaults to ANKR_ENDPOINT env var
private_key="your_private_key" # Optional, defaults to ANKR_PRIVATE_KEY env var
)
# Run server
mcp.run()
Using with FastMCP CLI
# Set environment variables first
export ANKR_ENDPOINT="your_ankr_endpoint"
export ANKR_PRIVATE_KEY="your_private_key"
# Run the server
python -m web3_mcp
API Categories
NFT API
get_nfts_by_owner
: Get NFTs owned by a wallet addressget_nft_metadata
: Get metadata for a specific NFTget_nft_holders
: Get holders of a specific NFT collectionget_nft_transfers
: Get transfer history for NFTs
Query API
get_blockchain_stats
: Get blockchain statisticsget_blocks
: Get blocks informationget_logs
: Get blockchain logsget_transactions_by_hash
: Get transactions by hashget_transactions_by_address
: Get transactions by addressget_interactions
: Get wallet interactions with contracts
Token API
get_account_balance
: Get token balances for a walletget_currencies
: Get available currenciesget_token_price
: Get token price informationget_token_holders
: Get token holdersget_token_holders_count
: Get token holders countget_token_transfers
: Get token transfer history
License
MIT