@sinco-lab/evm-mcp-server

@sinco-lab/evm-mcp-server

site icon
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 包管理器

安装教程

  1. 克隆仓库:
git clone https://github.com/sinco-lab/evm-mcp-server.git
cd evm-mcp-server
  1. 使用 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

  1. 在项目根目录创建 .cursor/mcp.json 文件
  2. 添加服务器配置(参考 README 中的 JSON 结构)
  3. 重启 Cursor 或重新加载项目

配置 Claude Desktop

  1. 找到或创建 Claude Desktop 配置文件
  2. 合并 mcpServers 配置(参考 README 中的 JSON 结构)
  3. 重启 Claude Desktop 应用

许可证

该项目遵循 MIT 开源许可条款。