
@sinco-lab/evm-mcp-server

2025.04.14
0
TypeScript区块链交互EVM 网关金融服务开发效率
evm-mcp-server 是一个基于 Model Context Protocol (MCP) 和 Viem 的 EVM 交互服务网关,旨在为 AI 代理或其他服务提供与配置的 EVM 兼容区块链的安全交互能力。该服务通过标准化的 MCP 接口暴露 EVM 功能,支持多种核心区块链操作,如余额查询、代币转账、消息签名和合约交互等。
View on GitHub
Overview
基本能力
产品定位
evm-mcp-server 是一个 EVM 交互服务网关,旨在为 AI 代理或其他服务提供与 EVM 兼容区块链的安全交互能力。
核心功能
- MCP 集成:将 EVM 功能暴露为标准 MCP 工具。
- Viem 驱动:使用现代高效的 Viem 库进行可靠的 EVM 交互。
- 可配置端点:通过环境变量连接到任何 EVM 兼容链。
- 核心 EVM 操作:支持余额查询、代币转账、消息签名、合约交互等。
- 类型安全:完全使用 TypeScript 开发,提供更好的维护性和开发体验。
适用场景
- AI 代理与区块链的交互
- 开发测试环境中的区块链操作
- 需要标准化接口的 EVM 链交互服务
工具列表
工具名称 | 描述 |
---|---|
getAddress |
获取服务器配置的钱包地址 |
getChain |
获取服务器连接的链 ID 和名称 |
getBalance |
获取指定地址(或服务器钱包)的原生代币余额 |
signMessage |
使用服务器配置的钱包签名消息 |
sendNativeToken |
从服务器钱包发送原生代币(如 ETH)到接收方 |
getTokenBalance |
获取指定地址的 ERC20 代币余额 |
transferToken |
从服务器钱包发送指定数量的 ERC20 代币 |
getTokenTotalSupply |
获取 ERC20 代币的总供应量 |
getTokenAllowance |
获取所有者授予支出者的 ERC20 代币许可额度 |
approveToken |
批准支出者从服务器钱包提取 ERC20 代币 |
revokeApproval |
撤销支出者对 ERC20 代币的许可额度 |
transferTokenFrom |
从一个地址向另一个地址转账 ERC20 代币(需要预先批准) |
convertToBaseUnit |
将十进制代币金额转换为其基本单位表示(如 wei) |
convertFromBaseUnit |
将代币金额从其基本单位表示转换为十进制字符串 |
常见问题解答
- 私钥管理:不要在版本控制中提交包含私钥的文件,建议为开发和测试创建专用的钱包私钥。
- RPC 端点安全:确保
RPC_PROVIDER_URL
指向可信节点。 - 访问控制:在 stdio 模式下运行的服务器缺乏内置访问控制,需确保服务器运行环境的安全。
使用教程
使用依赖
- Node.js 18.0.0 或更高版本
- pnpm 包管理器
安装教程
- 克隆仓库:
git clone https://github.com/sinco-lab/evm-mcp-server.git
cd evm-mcp-server
- 使用 pnpm 安装依赖:
pnpm install
配置
创建 .env
文件并配置以下变量:
- WALLET_PRIVATE_KEY
:服务器使用的钱包私钥(以 0x
开头)
- RPC_PROVIDER_URL
:目标 EVM 网络的 JSON-RPC 端点 URL
构建项目
pnpm run build
启动 MCP 服务器(Stdio 模式)
node build/evm.js
运行测试客户端
pnpm run test
调试
pnpm run debug
连接客户端(Cursor, Claude)
配置 Cursor
- 在项目根目录创建
.cursor/mcp.json
文件 - 添加服务器配置(参考 README 中的 JSON 结构)
- 重启 Cursor 或重新加载项目
配置 Claude Desktop
- 找到或创建 Claude Desktop 配置文件
- 合并
mcpServers
配置(参考 README 中的 JSON 结构) - 重启 Claude Desktop 应用