用途
evm-mcp-server 是一个全面的 Model Context Protocol (MCP) 服务器,旨在为大型语言模型(LLM)和 AI 智能体提供与 EVM 兼容区块链网络交互的工具。它使 AI 智能体能够通过统一的接口与 Ethereum、Optimism、Arbitrum、Base、Polygon 等 60 多个 EVM 链进行交互,涵盖 34 个主网和 26 个测试网。
主要能力
区块链数据访问
- 支持 60 多个 EVM 兼容网络的多链支持。
- 获取链信息,包括 blockNumber、chainId 和 RPC。
- 按编号、哈希或最新状态访问区块数据。
- 获取交易详情和收据,包括解码日志。
- 查询地址的原生代币和所有代币标准的余额。
- 支持 ENS 解析,允许使用人类可读的以太坊地址(如 'vitalik.eth' 代替 '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045')。
代币操作
- ERC20 代币:获取代币元数据(名称、符号、小数位、供应量),检查代币余额,在地址之间转账代币,批准支出限额。
- NFTs (ERC721):获取集合和代币元数据,验证代币所有权,在地址之间转账 NFT,检索代币 URI 和持有数量。
- 多代币 (ERC1155):获取代币余额和元数据,按数量转账代币,访问代币 URI。
智能合约交互
- 通过 view/pure 函数读取合约状态。
- 写入合约:执行任何状态更改函数,并自动获取 ABI。
- 合约验证,以区分于 EOA。
- 事件日志检索和过滤。
- 从 Etherscan v2 API 自动获取 ABI,覆盖所有 60 多个网络,无需提前知道 ABI。
- ABI 解析和验证,支持函数发现。
交易支持
- 灵活的钱包支持:使用私钥或助记词(BIP-39)配置,支持 HD 路径。
- 在所有支持的网络上进行原生代币转账。
- 交易规划的 Gas 估算。
- 交易状态和收据信息。
- 带有描述性消息的错误处理。
消息签名能力
- 个人消息签名:为认证和验证签署任意消息。
- EIP-712 类型化数据签名:为无 Gas 交易和元交易签署结构化数据。
- SIWE 支持:启用 Sign-In With Ethereum 认证流程。
- Permit 签名:为无 Gas 代币操作创建链下批准。
- 元交易支持:为中继服务和无 Gas 转账签署交易数据。
AI 引导工作流(提示)
- 交易准备:规划和执行转账的指导。
- 钱包分析:分析钱包活动和持有量的工具。
- 智能合约探索:交互式 ABI 获取和合约分析。
- 合约交互:在智能合约上安全执行写操作。
- 网络信息:了解 EVM 网络和比较。
- 批准审计:审查和管理代币批准。
- 错误诊断:故障排除交易失败。
使用方式
先决条件
- Bun 1.0.0 或更高版本(推荐)。
- Node.js 20.0.0 或更高版本(如果不使用 Bun)。
- 可选:Etherscan API 密钥用于 ABI 获取。
配置
服务器使用以下环境变量。对于写操作和 ABI 获取,必须配置这些变量:
- 钱包配置:可以使用私钥或助记词。
- 选项 1:私钥。
- 选项 2:助记词(推荐用于 HD 钱包)。助记词选项支持分层确定性(HD)钱包派生:使用 BIP-39 标准助记词(12 或 24 个单词),支持 BIP-44 派生路径:m/44'/60'/0'/0/{accountIndex},EVM_ACCOUNT_INDEX 允许从同一助记词派生不同账户,默认账户索引为 0。
- 钱包用于:转账原生代币(transfer_native 工具)、转账 ERC20 代币(transfer_erc20 工具)、批准代币支出(approve_token_spending 工具)、写入智能合约(write_contract 工具)、签署消息用于认证(sign_message 工具)、签署结构化数据用于无 Gas 交易(sign_typed_data 工具)。
- 安全提示:切勿将私钥或助记词提交到版本控制,使用环境变量或安全的密钥管理系统,安全存储助记词,考虑为不同目的使用不同的账户索引。
- Etherscan API 密钥:可选,但对于从区块浏览器自动获取 ABI(get_contract_abi 工具)、读取合约时自动获取 ABI(read_contract 工具带 abiJson 参数)以及 fetch_and_analyze_abi 提示是必需的。从 Etherscan 获取免费 API 密钥,同一密钥通过 Etherscan v2 API 在所有 60 多个 EVM 网络上工作。
默认配置
- 默认链 ID:1(Ethereum Mainnet)。
- 服务器端口:3001。
- 服务器主机:0.0.0.0(可从任何网络接口访问)。 这些值在应用程序中硬编码。如需修改,可以编辑以下文件:链配置:src/core/chains.ts;服务器配置:src/server/http-server.ts。
运行服务器
- 使用 npx(无需安装):可以直接使用 npx 运行 MCP EVM 服务器。
- 本地运行服务器:使用 stdio 启动服务器(用于嵌入 CLI 工具),或使用 SSE 启动 HTTP 服务器(用于 Web 应用程序)。
连接服务器
使用任何 MCP 兼容客户端连接到此 MCP 服务器。对于测试和调试,可以使用 MCP Inspector。
从 Cursor 连接
- 打开 Cursor 并转到设置(左下角的齿轮图标)。
- 点击左侧边栏中的“Features”。
- 向下滚动到“MCP Servers”部分。
- 点击“Add new MCP server”。
- 输入以下详细信息:服务器名称:evm-mcp-server;类型:command;命令:npx @mcpdotdirect/evm-mcp-server。 连接后,可以直接在 Cursor 中使用 MCP 服务器的功能。服务器将出现在 MCP Servers 列表中,并可以根据需要启用/禁用。
使用 mcp.json 与 Cursor
为了更便携的配置,可以在项目根目录创建 .cursor/mcp.json 文件。将此文件放在项目的 .cursor 目录中(如果不存在则创建),Cursor 将在该项目中工作时自动检测并使用这些 MCP 服务器配置。这种方法便于:与团队共享 MCP 配置、版本控制 MCP 设置、为不同项目使用不同的服务器配置。
示例:使用 SSE 的 HTTP 模式
如果正在开发 Web 应用程序并希望连接到带有 Server-Sent Events (SSE) 的 HTTP 服务器,可以使用此配置。这直接连接到 HTTP 服务器的 SSE 端点,适用于:需要从浏览器连接到 MCP 服务器的 Web 应用程序、运行本地命令不理想的环境、在多个用户或应用程序之间共享单个 MCP 服务器实例。
使用 Claude CLI 连接
如果使用 Claude CLI,只需两个命令即可连接到 MCP 服务器。
适用场景
evm-mcp-server 适用于以下场景:
- AI 智能体需要与区块链网络交互,例如查询余额、转账代币或与智能合约交互。
- 开发人员希望将区块链功能集成到 AI 助手或聊天机器人中。
- 需要跨多个 EVM 网络进行统一操作的工具。
- 使用自然语言进行区块链操作,例如通过 Cursor 或 Claude CLI 询问“检查 vitalik.eth 的当前 ETH 余额”。
限制
- 需要配置钱包私钥或助记词才能进行写操作。
- 自动 ABI 获取需要 Etherscan API 密钥。
- 默认配置硬编码,修改需要编辑源代码。
- 安全考虑:私钥仅用于交易签名,服务器从不存储。对于生产使用,考虑实施额外的认证机制,使用 HTTPS,实施速率限制,对于高价值服务,考虑添加确认步骤。
- 项目使用 MIT 许可证。