使用说明
Web3 MCP服务器
用于以太坊区块链操作的模型上下文协议(MCP)服务器,使用流式HTTP传输部署在Smithery.ai上。
特性
- 钱包管理:检查钱包余额并发送ETH交易
- 令牌操作:获取ERC-20代币余额和价格
- DeFi集成:将ETH包装到WETH,并在Uniswap V3上交换代币
- 智能合约交互:通用合约函数调用
- 价格信息:来自Chainlink的实时ETH/USD价格(即将推出)
- 多网络支持:Sepolia测试网和以太坊主网
可用工具
1. get_wallet_balance
获取任何钱包地址的本地ETH余额。
2. get_token_price
从Chainlink价格源获取实时ETH/USD价格。
3. send_eth
将ETH从代理钱包发送到任何地址。
4. interact_with_contract
调用任何智能合约上的任何函数(读或写)。
5. get_erc20_balance
检查任何钱包的ERC-20代币余额。
6. wrap_eth
将原生ETH转换为WETH(包裹ETH)。
7. swap_tokens_for_tokens
在Uniswap V3上自动批准交换代币。
部署到Smithery.ai
此服务器配置为使用Streamable HTTP传输部署在Smithery.ai上。
所需配置
服务器需要以下环境变量:
WEB3_PROVIDER_URL:您的以太坊RPC端点(例如,Infura、Alchemy)AGENT_PRIVATE_KEY:代理钱包的私钥(不带0x前缀)
网络特定地址
Sepolia测试网(默认)
- WETH合同:
0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14 - Uniswap路由器:
0x3bFA4769FB09eefC5a399D6D47036A5d3fA67B54 - ETH/USD价格反馈:
0x694AA1769357215DE4FAC081bf1f309aDC325306
以太坊主网
- WETH合同:
0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 - Uniswap路由器:
0xE592427A0AEce92De3Edee1F18E0157C05861564 - ETH/USD价格反馈:
0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
端口配置
服务器在端口3000上运行,并配置为容器部署。
本地开发
先决条件
- Python 3.10+
- 以太坊RPC端点(Infura、Alchemy或本地节点)
- 用于测试钱包的私钥
设置
-
安装依赖项:
pip install -r requirements.txt -
设置环境变量:
export WEB3_PROVIDER_URL="https://sepolia.infura.io/v3/YOUR_PROJECT_ID" export AGENT_PRIVATE_KEY="your_private_key_without_0x" export NETWORK="sepolia" # or "mainnet" -
运行服务器:
python server.py
环境变量
创建一个 .env 项目根目录中的文件:
WEB3_PROVIDER_URL=https://sepolia.infura.io/v3/YOUR_PROJECT_ID
AGENT_PRIVATE_KEY=your_private_key_without_0x
NETWORK=sepolia
Docker部署
构建图像
docker build -t web3-mcp-server .
运行容器
docker run -p 3000:3000 \
-e WEB3_PROVIDER_URL="https://sepolia.infura.io/v3/YOUR_PROJECT_ID" \
-e AGENT_PRIVATE_KEY="your_private_key_without_0x" \
-e NETWORK="sepolia" \
web3-mcp-server
安全考虑
- 对所有敏感数据使用环境变量
- 考虑为MCP服务器使用专用钱包
- 定期轮换私钥
- 监控钱包余额和交易
- 使用测试网进行开发和测试
错误处理
服务器包括全面的错误处理:
- 与Web3提供商的连接验证
- 事务超时处理(默认5分钟)
- 地址和金额的输入验证
- 优雅的错误响应和详细的消息
- 用于调试和监控的日志记录
网络支持
- Sepolia测试网:建议用于开发和测试
- 以太坊主网:生产使用(谨慎使用)
依赖项
fastmcp:MCP服务器框架web3:以太坊区块链交互python-dotenv:环境变量管理requests:HTTP请求处理
故障排除
常见问题
- 连接失败:检查RPC端点URL和网络连接
- 余额不足:确保代理钱包有足够的ETH支付汽油费
- 交易失败:检查天然气价格和网络拥堵情况
- 无效地址:确保地址是有效的以太坊地址
调试模式
通过在代码中设置日志级别启用调试日志记录:
logging.basicConfig(level=logging.DEBUG)
支持
有关Smithery.ai上的部署问题,请参阅他们的文档和支持渠道。
有关区块链相关问题,请查看:
- RPC提供程序的状态页
- 网络天然气价格和拥堵
- 合同地址和总部地址。