remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Integrations
Uses Bun as a runtime environment with specific support for installation and running the server with Bun commands.
Provides blockchain services for Ethereum mainnet, allowing AI agents to read blockchain state, check balances, transfer tokens, interact with smart contracts, and resolve ENS names to addresses.
Provides support for the Fantom network, enabling token transfers, balance checks, smart contract interactions, and general blockchain data access on the Fantom chain.
EVM MCP 服务器
一个全面的模型上下文协议 (MCP) 服务器,可在多个兼容 EVM 的网络中提供区块链服务。该服务器使 AI 代理能够通过统一的接口与以太坊、Optimism、Arbitrum、Base、Polygon 以及许多其他 EVM 链进行交互。
📋 内容
🔭 概述
MCP EVM 服务器利用模型上下文协议 (MCP) 为 AI 代理提供区块链服务。它支持多种服务,包括:
- 读取区块链状态(余额、交易、区块等)
- 与智能合约交互
- 转移代币(原生代币、ERC20、ERC721、ERC1155)
- 查询代币元数据和余额
- 跨 30 多个 EVM 网络的链特定服务
- 所有地址参数的ENS 名称解析(使用人类可读的名称,如“vitalik.eth”,而不是地址)
所有服务均通过 MCP 工具和资源的统一接口公开,方便 AI 代理发现和使用区块链功能。所有接受以太坊地址的工具也支持 ENS 域名,并在后台自动将其解析为地址。
✨ 特点
区块链数据访问
- 支持 30 多个 EVM 兼容网络的多链
- 链信息,包括 blockNumber、chainId 和 RPC
- 通过数字、哈希或最新数据来阻止数据访问
- 带有解码日志的交易详细信息和收据
- 原生代币和所有代币标准的地址余额
- ENS 解析人类可读的以太坊地址(使用“vitalik.eth”而不是“0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045”)
代币服务
- ERC20代币
- 获取代币元数据(名称、符号、小数、供应量)
- 检查代币余额
- 在地址之间转移代币
- 批准支出限额
- NFT(ERC721)
- 获取集合和令牌元数据
- 验证代币所有权
- 在地址之间转移 NFT
- 检索代币 URI 并统计持有量
- 多代币(ERC1155)
- 获取代币余额和元数据
- 转移代币数量
- 访问令牌 URI
智能合约交互
- 通过视图/纯函数读取合约状态
- 使用私钥签名编写服务
- 合同验证以区别于 EOA
- 事件日志检索和过滤
全面的交易支持
- 原生代币在所有支持网络上传输
- 交易规划的Gas 估算
- 交易状态和收据信息
- 使用描述性消息进行错误处理
🌐 支持的网络
主网
- 以太坊(ETH)
- 乐观主义(OP)
- 仲裁(ARB)
- 新仲裁庭
- 根据
- 多边形(MATIC)
- 多边形 zkEVM
- 雪崩(AVAX)
- 币安智能链(BSC)
- zkSync 时代
- 莱尼亚
- 塞洛
- Gnosis(xDai)
- 幻影(FTM)
- Filecoin(FIL)
- 月光
- 月河
- 克洛诺斯
- 滚动
- 地幔
- 蝠鲼
- 爆炸
- 弗拉克斯塔尔
- 模式
- 梅蒂斯人
- 克罗马
- 佐拉
- 极光
- 坎托
测试网
- 塞波利亚
- 乐观塞波利亚
- 塞波利亚仲裁庭
- 塞波利亚基地
- 多边形淘
- 雪崩富士
- BSC 测试网
- zkSync Sepolia
- 线状塞波利亚
- 滚动塞波利亚
- 披风
- 蝠鲼
- 爆炸棕褐色
- Fraxtal 测试网
- 模式测试网
- 梅蒂斯·塞波利亚
- 克罗马塞波利亚
- 佐拉·塞波利亚
- 塞洛·阿尔法霍雷斯
- 戈利
- 霍莱斯基
🛠️ 先决条件
- Bun 1.0.0 或更高版本
- Node.js 18.0.0 或更高版本(如果不使用 Bun)
📦安装
⚙️ 服务器配置
服务器使用以下默认配置:
- 默认链 ID :1(以太坊主网)
- 服务器端口:3001
- 服务器主机:0.0.0.0(可从任何网络接口访问)
这些值在应用程序中是硬编码的。如果需要修改它们,可以编辑以下文件:
- 对于链配置:
src/core/chains.ts
- 对于服务器配置:
src/server/http-server.ts
🚀 使用方法
使用 npx(无需安装)
您可以使用 npx 直接运行 MCP EVM 服务器,无需安装:
本地运行服务器
使用 stdio 启动服务器(用于嵌入 CLI 工具):
或者使用 SSE 为 Web 应用程序启动 HTTP 服务器:
连接到服务器
使用任何兼容 MCP 的客户端连接到此 MCP 服务器。您可以使用MCP 检查器进行测试和调试。
从光标连接
要从 Cursor 连接到 MCP 服务器:
- 打开 Cursor 并转到“设置”(左下角的齿轮图标)
- 点击左侧边栏中的“功能”
- 向下滚动到“MCP 服务器”部分
- 点击“添加新的 MCP 服务器”
- 输入以下详细信息:
- 服务器名称:
evm-mcp-server
- 类型:
command
- 命令:
npx @mcpdotdirect/evm-mcp-server
- 服务器名称:
- 点击“保存”
连接后,您可以直接在 Cursor 中使用 MCP 服务器的功能。该服务器将显示在 MCP 服务器列表中,您可以根据需要启用/禁用。
使用 mcp.json 和 Cursor
为了获得可与团队共享或跨项目使用的更便携的配置,您可以在项目的根目录中创建一个.cursor/mcp.json
文件:
将此文件放在项目的.cursor
目录中(如果不存在,请创建一个),Cursor 会在处理该项目时自动检测并使用这些 MCP 服务器配置。这种方法可以轻松实现以下操作:
- 与您的团队共享 MCP 配置
- 版本控制您的 MCP 设置
- 对不同的项目使用不同的服务器配置
示例:带有 SSE 的 HTTP 模式
如果您正在开发 Web 应用程序并希望使用服务器发送事件 (SSE) 连接到 HTTP 服务器,则可以使用以下配置:
这直接连接到 HTTP 服务器的 SSE 端点,这对于以下方面很有用:
- 需要从浏览器连接到 MCP 服务器的 Web 应用程序
- 不适合运行本地命令的环境
- 在多个用户或应用程序之间共享单个 MCP 服务器实例
要使用此配置:
- 如果不存在,请在项目根目录中创建一个
.cursor
目录 - 将上述 JSON 保存为
.cursor
目录中的mcp.json
- 重新启动 Cursor 或打开您的项目
- Cursor 将检测配置并提供启用服务器
示例:在 Cursor 中使用 MCP 服务器
使用mcp.json
配置 MCP 服务器后,您可以轻松地在 Cursor 中使用它。以下是示例工作流程:
- 在您的项目中创建一个新的 JavaScript/TypeScript 文件:
- 在 Cursor 中打开文件后,您可以要求 Cursor 执行以下操作:
- “检查 vitalik.eth 的当前 ETH 余额”
- “查看以太坊上的 USDC 价格”
- “向我展示关于乐观主义的最新区块”
- 检查 0x1234... 是否为合约地址
- Cursor 将使用 MCP 服务器执行这些操作并在您的对话中直接返回结果。
MCP 服务器处理所有区块链通信,同时允许 Cursor 通过自然语言理解和执行与区块链相关的任务。
使用 Claude CLI 进行连接
如果您使用 Claude CLI,则只需两个命令即可连接到 MCP 服务器:
示例:使用 ENS 获取代币余额
示例:解析 ENS 名称
📚 API 参考
工具
服务器为代理提供以下 MCP 工具。所有接受地址参数的工具均支持以太坊地址和 ENS 域名。
代币服务
工具名称 | 描述 | 关键参数 |
---|---|---|
get-token-info | 获取 ERC20 代币元数据 | tokenAddress (地址/ENS), network |
get-token-balance | 检查 ERC20 代币余额 | tokenAddress (地址/ENS)、 ownerAddress (地址/ENS)、 network |
transfer-token | 转移 ERC20 代币 | privateKey 、 tokenAddress (地址/ENS)、 toAddress (地址/ENS)、 amount 、 network |
approve-token-spending | 批准令牌限额 | privateKey 、 tokenAddress (地址/ENS)、 spenderAddress (地址/ENS)、 amount 、 network |
get-nft-info | 获取 NFT 元数据 | tokenAddress (地址/ENS)、 tokenId 、 network |
check-nft-ownership | 验证 NFT 所有权 | tokenAddress (地址/ENS)、 tokenId 、 ownerAddress (地址/ENS)、 network |
transfer-nft | 转移NFT | privateKey 、 tokenAddress (地址/ENS)、 tokenId 、 toAddress (地址/ENS)、 network |
get-nft-balance | 统计拥有的 NFT 数量 | tokenAddress (地址/ENS)、 ownerAddress (地址/ENS)、 network |
get-erc1155-token-uri | 获取 ERC1155 元数据 | tokenAddress (地址/ENS)、 tokenId 、 network |
get-erc1155-balance | 检查 ERC1155 余额 | tokenAddress (地址/ENS)、 tokenId 、 ownerAddress (地址/ENS)、 network |
transfer-erc1155 | 转移 ERC1155 代币 | privateKey 、 tokenAddress (地址/ENS)、 tokenId 、 amount 、 toAddress (地址/ENS)、 network |
区块链服务
工具名称 | 描述 | 关键参数 |
---|---|---|
get-chain-info | 获取网络信息 | network |
get-balance | 获取原生代币余额 | address (地址/ENS)、 network |
transfer-eth | 发送原生代币 | privateKey , to (地址/ENS), amount , network |
get-transaction | 获取交易详情 | txHash , network |
read-contract | 读取智能合约状态 | contractAddress (地址/ENS)、 abi 、 functionName 、 args 、 network |
write-contract | 写入智能合约 | contractAddress (地址/ENS)、 abi 、 functionName 、 args 、 privateKey 、 network |
is-contract | 检查地址是否为合约 | address (地址/ENS)、 network |
resolve-ens | 将 ENS 名称解析为地址 | ensName , network |
资源
服务器通过以下 MCP 资源 URI 公开区块链数据。所有接受地址的资源 URI 也支持 ENS 名称,这些名称会自动解析为地址。
区块链资源
资源 URI 模式 | 描述 |
---|---|
evm://{network}/chain | 特定网络的链信息 |
evm://chain | 以太坊主网链信息 |
evm://{network}/block/{blockNumber} | 按号码阻止数据 |
evm://{network}/block/latest | 最新区块数据 |
evm://{network}/address/{address}/balance | 原生代币余额 |
evm://{network}/tx/{txHash} | 交易详情 |
evm://{network}/tx/{txHash}/receipt | 带有日志的交易收据 |
代币资源
资源 URI 模式 | 描述 |
---|---|
evm://{network}/token/{tokenAddress} | ERC20代币信息 |
evm://{network}/token/{tokenAddress}/balanceOf/{address} | ERC20 代币余额 |
evm://{network}/nft/{tokenAddress}/{tokenId} | NFT(ERC721)代币信息 |
evm://{network}/nft/{tokenAddress}/{tokenId}/isOwnedBy/{address} | NFT 所有权验证 |
evm://{network}/erc1155/{tokenAddress}/{tokenId}/uri | ERC1155 代币 URI |
evm://{network}/erc1155/{tokenAddress}/{tokenId}/balanceOf/{address} | ERC1155 代币余额 |
🔒 安全注意事项
- 私钥仅用于交易签名,服务器永远不会存储
- 考虑实施额外的身份验证机制以供生产使用
- 在生产环境中使用 HTTPS 作为 HTTP 服务器
- 实施速率限制以防止滥用
- 对于高价值服务,考虑添加确认步骤
📁 项目结构
🛠️ 开发
要修改或扩展服务器:
- 在
src/core/services/
下的相应文件中添加新服务 - 在
src/core/tools.ts
中注册新工具 - 在
src/core/resources.ts
中注册新资源 - 在
src/core/chains.ts
中添加新的网络支持 - 要更改服务器配置,请编辑
src/server/http-server.ts
中的硬编码值
📄 许可证
该项目根据MIT 许可证条款进行授权。
This server cannot be installed
一个综合服务器,使AI代理能够通过统一的接口与多个兼容EVM的区块链网络进行交互,支持ENS解析、代币操作和智能合约交互。