返回市场
以太坊虚拟机MCP服务器

以太坊虚拟机MCP服务器

作者:mcpdotdirect345 星标更新:2025-11-20

项目介绍

EVM MCP 服务器

License: MIT EVM Networks TypeScript MCP Viem

这是一个全面的模型上下文协议(MCP)服务器,提供跨60多个EVM兼容网络的区块链服务。该服务器使AI代理能够通过22个工具和10个人工智能引导提示与以太坊、Optimism、Arbitrum、Base、Polygon等许多其他EVM链进行交互。

📋 内容

🔭 概述

MCP EVM 服务器利用模型上下文协议为AI代理提供区块链服务。它支持广泛的包括以下服务:

  • 读取区块链状态(余额、交易、区块等)
  • 通过从区块浏览器自动获取ABI与智能合约交互
  • 转移代币(原生代币、ERC20、ERC721、ERC1155)
  • 查询代币元数据和余额
  • 在60多个EVM网络(34个主网+26个测试网)上的特定链服务
  • 对所有地址参数进行ENS名称解析(使用如'vitalik.eth'的人类可读名称代替地址)
  • 引导代理完成复杂工作流程的人工智能友好提示

所有服务都通过一致的MCP工具、资源和提示接口暴露,使得AI代理可以轻松发现并使用区块链功能。接受以太坊地址的所有工具也支持ENS名称,并在后台自动解析它们。 服务器包含智能ABI抓取功能,无需提前知道合约ABI。

✨ 特性

区块链数据访问

  • 支持60多个EVM兼容网络(34个主网+26个测试网)
  • 包括区块号、链ID和RPC在内的链信息
  • 通过编号、哈希或最新区块访问区块数据
  • 解码日志的交易详情和收据
  • 原生代币和其他代币标准的地址余额
  • 人类可读的以太坊地址的ENS解析(使用'vitalik.eth'代替'0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045')

代币服务

  • ERC20 代币

    • 获取代币元数据(名称、符号、小数位数、供应量)
    • 检查代币余额
    • 地址之间的代币转移
    • 批准花费限额
  • NFT(ERC721)

    • 获取集合和代币元数据
    • 验证代币所有权
    • 地址之间的NFT转移
    • 检索代币URI和持有数量
  • 多代币(ERC1155)

    • 获取代币余额和元数据
    • 数量转移代币
    • 访问代币URI

智能合约交互

  • 通过view/pure函数读取合约状态
  • 写入合约 - 执行任何状态更改函数,自动抓取ABI
  • 合约验证以区分EOA
  • 事件日志检索和过滤
  • 通过Etherscan v2 API跨所有60多个网络自动抓取ABI(无需提前知道ABI)
  • 函数发现的ABI解析和验证

全面的交易支持

  • 灵活的钱包支持 - 使用私钥或助记词(BIP-39)配置,支持HD路径
  • 跨所有支持网络的原生代币转移
  • 交易规划的汽油估算
  • 交易状态和收据信息
  • 描述性消息的错误处理

人工智能引导的工作流程(提示)

  • 交易准备 - 指导计划和执行转移
  • 钱包分析 - 分析钱包活动和持有的工具
  • 智能合约探索 - 互动ABI抓取和合约分析
  • 合约交互 - 安全执行智能合约的写操作
  • 网络信息 - 学习EVM网络及其比较
  • 批准审计 - 审查和管理代币批准
  • 错误诊断 - 交易失败的故障排除

🌐 支持的网络

主网

  • 以太坊(ETH)
  • Optimism(OP)
  • Arbitrum(ARB)
  • Arbitrum Nova
  • Base
  • Polygon(MATIC)
  • Polygon zkEVM
  • Avalanche(AVAX)
  • Binance Smart Chain(BSC)
  • zkSync Era
  • Linea
  • Celo
  • Gnosis(xDai)
  • Fantom(FTM)
  • Filecoin(FIL)
  • Moonbeam
  • Moonriver
  • Cronos
  • Scroll
  • Mantle
  • Manta
  • Blast
  • Fraxtal
  • Mode
  • Metis
  • Kroma
  • Zora
  • Aurora
  • Canto
  • Flow
  • Lumia

测试网

  • Sepolia
  • Optimism Sepolia
  • Arbitrum Sepolia
  • Base Sepolia
  • Polygon Amoy
  • Avalanche Fuji
  • BSC 测试网
  • zkSync Sepolia
  • Linea Sepolia
  • Scroll Sepolia
  • Mantle Sepolia
  • Manta Sepolia
  • Blast Sepolia
  • Fraxtal 测试网
  • Mode 测试网
  • Metis Sepolia
  • Kroma Sepolia
  • Zora Sepolia
  • Celo Alfajores
  • Goerli
  • Holesky
  • Flow 测试网
  • Filecoin 校准
  • Lumia 测试网

🛠️ 前置条件

  • Bun 1.0.0 或更高版本(推荐)
  • Node.js 20.0.0 或更高版本(如果未使用Bun)
  • 可选:Etherscan API密钥用于ABI抓取

📦 安装

# 克隆仓库
git clone https://github.com/mcpdotdirect/mcp-evm-server.git
cd mcp-evm-server

# 使用Bun安装依赖
bun install

# 或使用npm
npm install

⚙️ 配置

环境变量

服务器使用以下环境变量。对于写操作和ABI抓取,必须配置这些变量:

钱包配置(用于写操作)

您可以使用私钥助记词短语来配置您的钱包:

选项1:私钥

export EVM_PRIVATE_KEY="0x..." # 您的十六进制格式的私钥(带或不带0x前缀)

选项2:助记词短语(推荐用于HD钱包)

export EVM_MNEMONIC="word1 word2 word3 ... word12" # 您的12或24个单词的BIP-39助记词
export EVM_ACCOUNT_INDEX="0" # 可选:HD钱包派生账户索引(默认:0)

助记词选项支持层次确定性(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工具)

⚠️ 安全性

  • 切勿将私钥或助记词提交到版本控制中
  • 使用环境变量或安全密钥管理系统
  • 安全存储助记词 - 它们提供了对所有派生账户的访问
  • 考虑为不同目的使用不同的账户索引

API密钥(用于ABI抓取)

export ETHERSCAN_API_KEY="your-api-key-here"

此API密钥是可选的,但需要用于:

  • 自动从区块浏览器抓取合约ABI(get_contract_abi工具)
  • 当读取合约时自动抓取ABI(read_contract工具,带有abiJson参数)
  • fetch_and_analyze_abi提示

从以下位置获取您的免费API密钥:

  • Etherscan - 适用于以太坊及其兼容链
  • 同一密钥可通过Etherscan v2 API在所有60多个EVM网络上使用

服务器配置

服务器使用以下默认配置:

  • 默认链ID:1(以太坊主网)
  • 服务器端口:3001
  • 服务器主机:0.0.0.0(可以从任何网络接口访问)

这些值在应用程序中是硬编码的。如果您需要修改它们,可以编辑以下文件:

  • 对于链配置:src/core/chains.ts
  • 对于服务器配置:src/server/http-server.ts

🚀 使用

使用npx(无需安装)

您可以直接使用npx运行MCP EVM服务器,而无需安装:

# 以stdio模式运行服务器(用于CLI工具)
npx @mcpdotdirect/evm-mcp-server

# 以HTTP模式运行服务器(用于Web应用)
npx @mcpdotdirect/evm-mcp-server --http

在本地运行服务器

使用stdio启动服务器(嵌入到CLI工具中):

# 启动stdio服务器
bun start

# 开发模式,自动重新加载
bun dev

或者启动带有SSE的HTTP服务器,用于Web应用:

# 启动HTTP服务器
bun start:http

# 开发模式,自动重新加载
b[END_OF_TEXT]