使用说明
⛽ EVM MCP服务器
在您的AI工作流程中完成EVM JSON-RPC访问。 通过任何节点提供商查询任何与EVM兼容的网络(以太坊、Polygon、Arbitrum、Optimism、BSC等)。适用于Infura、Alchemy、QuickNode、本地节点等。
一 MCP(模型上下文协议) 该服务器为Cursor和Claude Desktop等AI编码环境提供对以太坊虚拟机(EVM)JSON-RPC方法的全面访问。
为什么使用EVM MCP?
- 🌐 任何EVM网络 –以太坊、Polygon、Arbitrum、乐观主义、BSC、雪崩等
- 🔌 任何节点提供者 –Infura、炼金术、QuickNode、本地节点或自定义RPC
- 📊 20+RPC方法 –完全访问区块链数据、交易和合同
- ⚡ 轻松设置 –在Cursor中单击安装或简单的手动设置
- 🔧 灵活配置 –适用于任何JSON-RPC兼容端点
快速开始
准备好与EVM区块链交互了吗?几秒钟内安装:
在Cursor中安装(推荐):
🔗 在游标中安装
或手动安装:
npm install -g @jamesanz/evm-mcp
# Or from source:
git clone https://github.com/JamesANZ/evm-mcp.git
cd evm-mcp && npm install && npm run build
特性
🔢 区块链数据
eth_blockNumber–获取最新的区块编号eth_getBalance–获取账户余额eth_getTransactionCount–获取交易计数(nonce)eth_getBlockByNumber–获取区块信息eth_getTransactionByHash–获取交易详细信息eth_getTransactionReceipt–获取交易收据eth_getCode–获取合约字节码eth_getStorageAt–获取存储价值
🔄 交易
eth_call–执行合同调用eth_estimateGas–估算交易用气eth_sendRawTransaction–发送已签名的交易eth_gasPrice–获取当前天然气价格
🧪 事务模拟(只读,从不广播)
用自然语言处理事务,并针对分叉/覆盖的EVM状态进行模拟。报告交易是成功还是恢复,恢复原因(用简单的英语),估计的天然气和余额/状态变化。支持地址别名和ENS名称(例如。 alice.eth).默认情况下,发送方由虚拟ETH资助,因此模拟可以“从”任何地址运行;设置 fund: false 使用实际余额。
simulate_native_transfer–模拟发送本国货币(例如“将100 ETH从A转移到B”)simulate_erc20_transfer–模拟人类金额的ERC20转账(例如“从fun.eth向alice.eth转账10 USDC”)simulate_contract_call–对函数签名+参数进行编码,并模拟调用simulate_transaction–模拟原始交易(从/到/值/数据)encode_function_data–从人类可读的签名(纯助手,无RPC)对调用数据进行编码
这些工具仅用于
eth_call,eth_estimateGas,以及debug_traceCall(当提供商支持时)。他们从不签署或发送真实的交易。在以下情况下使用真实状态差异debug_traceCall可用;否则从解码的意图推断出变化。
📊 事件和日志
eth_getLogs–获取事件日志
🌍 网络
list_supported_networks–列出已配置的网络和提供商list_known_addresses-列出配置的钱包别名和已知的令牌/合约地址eth_chainId–获取链IDnet_version–获取网络版本net_listening–检查是否在听net_peerCount–获取同行计数
🌐 Web3
web3_clientVersion–获取客户端版本web3_sha3–使用Keccak-256哈希数据
安装
光标(单击一次)
单击上面的安装链接或使用:
cursor://anysphere.cursor-deeplink/mcp/install?name=evm-mcp&config=eyJldm0tbWNwIjp7ImNvbW1hbmQiOiJucHgiLCJhcmdzIjpbIi15IiwiQGphbWVzYW56L2V2bS1tY3AiXX19
手动安装
要求: Node.js 18+和npm
# Clone and build
git clone https://github.com/JamesANZ/evm-mcp.git
cd evm-mcp
npm install
npm run build
# Set provider API keys
export INFURA_API_KEY="your-infura-api-key"
export DEFAULT_NETWORK="ethereum"
export DEFAULT_PROVIDER="infura"
# Run server
npm start
Claude 桌面版
增添 claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"evm-mcp": {
"command": "node",
"args": ["/absolute/path/to/evm-mcp/build/index.js"],
"env": {
"INFURA_API_KEY": "your-infura-api-key",
"DEFAULT_NETWORK": "ethereum",
"DEFAULT_PROVIDER": "infura",
"RPC_PROVIDER_ORDER": "infura,alchemy"
}
}
}
}
配置后重新启动Claude Desktop。
配置
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
INFURA_API_KEY |
* | Infura项目API密钥之一(内置预设) |
ALCHEMY_API_KEY |
* | Alchemy应用程序API密钥之一(内置预设) |
DEFAULT_NETWORK |
否 | 默认链段塞或链ID(默认值: ethereum) |
DEFAULT_PROVIDER |
否 | 首选提供商slug(infura, alchemy,或自定义) |
RPC_PROVIDER_ORDER |
否 | 逗号分隔的提供程序回退顺序(默认值: infura,alchemy) |
CUSTOM_PROVIDERS |
用户定义提供程序的* | JSON数组之一 |
CUSTOM_NETWORKS |
用户定义网络的* | JSON数组之一 |
KNOWN_ADDRESSES |
否 | 已知令牌/合约的JSON数组(网络范围) |
WALLET_ADDRESSES |
否 | 个人钱包和合约别名的JSON数组 |
*至少有一个提供程序API密钥、自定义提供程序或自定义网络 rpcUrl 是必需的。
内置提供者(Infura/Alchemy)
设置API密钥,服务器将自动为支持的网络生成RPC URL:
{
"INFURA_API_KEY": "your-infura-key",
"DEFAULT_NETWORK": "ethereum",
"DEFAULT_PROVIDER": "infura",
"RPC_PROVIDER_ORDER": "infura,alchemy"
}
每个RPC工具都接受一个可选 network 参数(slug、名称或链ID)。当省略时, DEFAULT_NETWORK 使用。
{
"tool": "eth_chainId",
"arguments": { "network": "polygon" }
}
使用 list_supported_networks 以发现配置的网络和提供商。
自定义提供商(CUSTOM_PROVIDERS)
通过提供基本URL模板和特定于网络的URL来注册任何RPC提供程序:
"CUSTOM_PROVIDERS": "[{\"slug\":\"quicknode\",\"apiKeyEnv\":\"QUICKNODE_API_KEY\",\"baseUrl\":\"https://rpc.example.com/v1/{apiKey}\",\"networkUrls\":{\"ethereum\":\"https://eth.quiknode.pro/{apiKey}/\",\"polygon\":\"https://polygon.quiknode.pro/{apiKey}/\"}}]"
- 绝对的
networkUrls值直接使用(与{apiKey}替代)。 - 相对的 路径(以开头
/)附于baseUrl.
自定义网络(CUSTOM_NETWORKS)
按名称注册任意链:
"CUSTOM_NETWORKS": "[{\"name\":\"HyperEVM\",\"slug\":\"hyperevm\",\"chainId\":999,\"rpcUrl\":\"https://rpc.hyperliquid.xyz/evm\"}]"
或者通过设置路由通过提供商 provider 并将网络段块添加到该提供商的 networkUrls.
已知地址(KNOWN_ADDRESSES)
按名称注册令牌和合约,以便工具接受别名,如 USDC 而不是原始十六进制地址。每个条目都适用于一个网络:
"KNOWN_ADDRESSES": "[{\"name\":\"USDC\",\"address\":\"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\"network\":\"ethereum\",\"type\":\"token\",\"decimals\":6,\"aliases\":[\"usd-coin\"]}]"
| 字段 | 必填 | 描述 |
|---|---|---|
name |
是 | 主查找键 |
address |
是 | 已核对的合同地址 |
network |
yes | 链段、名称、链ID或网络别名 |
type |
没有 | token 或 contract (默认值: contract) |
decimals |
否 | 格式化余额的令牌小数 |
aliases |
否 | 额外的查找键 |
当 eth_getBalance 使用令牌别名调用,服务器使用中配置的第一个钱包 WALLET_ADDRESSES 作为代币持有者。
钱包地址(WALLET_ADDRESSES)
通过别名注册个人钱包和合同,这样你就可以说“检查我的个人钱包”,而不是粘贴十六进制:
"WALLET_ADDRESSES": "[{\"name\":\"my-wallet\",\"address\":\"0x42ea529282DDE0AA87B42d9E83316eb23FE62c3f\",\"aliases\":[\"personal\",\"my wallet\"],\"description\":\"Main EOA\"}]"
| 字段 | 必填 | 描述 |
|---|---|---|
name |
是 | 主查找键 |
address |
是 | 钱包或合约地址 |
network |
no | 一个链的作用域别名(默认:所有链) |
aliases |
否 | 额外的查找键 |
description |
否 | 人类可读的注释 |
地址别名适用于 eth_getBalance, eth_getCode, eth_call, eth_getLogs以及接受地址参数的其他工具。使用 list_known_addresses 以发现配置的别名。
从RPC_URL迁移
- "RPC_URL": "https://mainnet.infura.io/v3/KEY"
- "CHAIN_ID": "1"
+ "INFURA_API_KEY": "KEY"
+ "DEFAULT_NETWORK": "ethereum"
+ "DEFAULT_PROVIDER": "infura"
配置更改需要重新启动MCP服务器。
支持的内置网络
- 以太坊:Sepolia主网
- 多边形:厦门主网
- 仲裁:一,Sepolia
- 乐观主义:Sepolia主网
- BNB智能链:主网、测试网
- 雪崩:C链
- 基地:Sepolia主网
- 任何EVM兼容链 通过
CUSTOM_NETWORKS
使用示例
获取最新区块编号
查询当前区块号:
{
"tool": "eth_blockNumber",
"arguments": {}
}
获取账户余额
使用十六进制地址或配置的别名检查地址余额:
{
"tool": "eth_getBalance",
"arguments": {
"address": "personal",
"blockNumber": "latest"
}
}
获取交易详细信息
查看交易信息:
{
"tool": "eth_getTransactionByHash",
"arguments": {
"txHash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
}
}
呼叫智能合约
执行合约调用:
{
"tool": "eth_call",
"arguments": {
"to": "0xA0b86a33E6441c8C06DDD46C310c0eF8D9441C8F",
"data": "0x70a08231000000000000000000000000742d35Cc6634C0532925a3b8D6Ac6e2F0C4C9B7C"
}
}
获取事件日志
查询合同事件:
{
"tool": "eth_getLogs",
"arguments": {
"fromBlock": "0x1234567",
"toBlock": "latest",
"address": "0xA0b86a33E6441c8C06DDD46C310c0eF8D9441C8F",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
]
}
}
用例
- 区块链分析 –查询交易数据、余额和合同状态
- DeFi应用程序 –监控代币余额、交易收据和智能合约调用
- NFT项目 –跟踪传输、元数据和收集统计数据
- 开发工具 –调试交易、估算天然气和测试智能合约
- 监控 –关注特定事件和交易模式
- 研究 –跨多个EVM网络分析区块链数据
技术细节
内置: Node.js、TypeScript、MCP SDK、Ethers.js
依赖关系: @modelcontextprotocol/sdk, ethers, zod
平台: macOS、Windows、Linux
环境变量: 看 配置 上面。
贡献
⭐ 如果这个项目对你有帮助,请在GitHub上加星! ⭐
欢迎投稿!请打开问题或提交拉取请求。
许可证
MIT许可证——见 许可证.md 了解详情。
支持
如果你觉得这个项目有用,可以考虑支持它:
⚡ 闪电网络
lnbc1pjhhsqepp5mjgwnvg0z53shm22hfe9us289lnaqkwv8rn2s0rtekg5vvj56xnqdqqcqzzsxqyz5vqsp5gu6vh9hyp94c7t3tkpqrp2r059t4vrw7ps78a4n0a2u52678c7yq9qyyssq7zcferywka50wcy75skjfrdrk930cuyx24rg55cwfuzxs49rc9c53mpz6zug5y2544pt8y9jflnq0ltlha26ed846jh0y7n4gm8jd3qqaautqa
₿ 比特币: bc1ptzvr93pn959xq4et6sqzpfk2args22ewv5u2th4ps7shfaqrshe0xtp
※以太坊/EVM。: 0x42ea529282DDE0AA87B42d9E83316eb23FE62c3f