Skip to main content
Glama

Blockchain Payment MCP Server

by logos-42
README.md10.9 kB
# 区块链支付MCP服务器 基于Base网络的区块链支付MCP(Model Context Protocol)服务器,提供完整的区块链支付功能。 ## 🌟 功能特性 - **多网络支持**: 支持多个测试网和主网,包括Base Sepolia、Base Mainnet、Ethereum Sepolia、Ethereum Mainnet等 - **代币支持**: ETH、USDC、USDT、DAI、WETH等主流代币 - **余额查询**: 查询任意地址的ETH和代币余额 - **安全转账**: 支持ETH和ERC20代币转账 - **交易追踪**: 实时查询交易状态和确认数 - **Gas估算**: 智能估算交易Gas费用 - **钱包管理**: 创建新钱包、验证地址格式 - **安全限制**: 内置交易金额限制和安全检查 ## 🚀 快速开始 ### 1. 安装MCP包 ```bash pip install blockchain-payment-mcp ``` ### 2. MCP配置文件 项目根目录的 `mcp_config.json` 文件已经配置好了MCP服务器: ```json { "mcpServers": { "blockchain-payment": { "command": "blockchain-payment-mcp", "args": [], "env": { "PRIVATE_KEY": "your-private-key-here", "DEFAULT_NETWORK": "base_sepolia", "DEBUG": "true", "MAX_TRANSACTION_VALUE": "10", "PYTHONPATH": "." } } } } ``` ### 3. 环境变量配置 在 `mcp_config.json` 中配置以下环境变量: - `PRIVATE_KEY`: 你的私钥(用于发送交易) - `DEFAULT_NETWORK`: 默认网络(base_sepolia, ethereum_mainnet 等) - `DEBUG`: 调试模式(true/false) - `MAX_TRANSACTION_VALUE`: 最大交易金额限制 ## 支持的MCP工具 ### 余额和查询工具 1. **get_balance** - 查询指定地址的余额 - 参数: `address` (必需), `token_symbol` (可选), `network` (可选) 2. **get_network_info** - 获取当前网络信息 - 参数: `network` (可选) 3. **get_supported_tokens** - 获取支持的代币列表 - 参数: `random_string` (必需,用于无参数工具) 4. **validate_address** - 验证以太坊地址格式 - 参数: `address` (必需) ### 交易工具 5. **send_transaction** - 发送代币转账交易 - 参数: `to_address` (必需), `amount` (必需), `token_symbol` (可选), `network` (可选) 6. **get_transaction_status** - 查询交易状态和详情 - 参数: `tx_hash` (必需), `network` (可选) 7. **estimate_gas_fees** - 估算Gas费用 - 参数: `to_address` (可选), `amount` (可选), `token_symbol` (可选), `network` (可选) ### 钱包管理工具 8. **create_wallet** - 创建新的钱包地址和私钥 - 参数: `label` (可选) 9. **set_user_wallet** - 设置用户钱包私钥 - 参数: `private_key` (必需), `label` (可选) 10. **list_wallets** - 列出所有已添加的钱包 - 参数: `random_string` (必需) 11. **switch_wallet** - 切换当前使用的钱包 - 参数: `label` (必需) 12. **remove_wallet** - 移除指定标签的钱包 - 参数: `label` (必需) ## 支持的网络 - `base_sepolia` - Base Sepolia 测试网 - `base_mainnet` - Base 主网 - `ethereum_mainnet` - 以太坊主网 - `ethereum_sepolia` - 以太坊 Sepolia 测试网 - `bsc_mainnet` - BSC 主网 - `bsc_testnet` - BSC 测试网 - `polygon_mainnet` - Polygon 主网 - `polygon_amoy` - Polygon Amoy 测试网 - `avalanche_mainnet` - Avalanche 主网 - `avalanche_fuji` - Avalanche Fuji 测试网 - `solana_mainnet` - Solana 主网 - `solana_devnet` - Solana 开发网 ## 支持的代币 - `ETH` - 以太币 - `USDC` - USD Coin - `USDC_BASE` - Base 网络上的 USDC - `USDC_BSC` - BSC 网络上的 USDC - `USDC_POLYGON` - Polygon 网络上的 USDC - `DAI` - Dai 稳定币 - `DAI_BASE` - Base 网络上的 DAI - `DAI_BSC` - BSC 网络上的 DAI - `DAI_POLYGON` - Polygon 网络上的 DAI - `WETH` - Wrapped Ether - `WETH_BASE` - Base 网络上的 WETH ## 本地下载代码 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 环境配置 ```bash # 私钥(用于发送交易,可选) PRIVATE_KEY=your_private_key_here # 默认网络(默认为base_sepolia) DEFAULT_NETWORK=base_sepolia # 最大交易金额限制(默认10 ETH) MAX_TRANSACTION_VALUE=10 # 调试模式 DEBUG=false ``` ### 3. 本地代码-配置MCP客户端 在Cursor的`mcp.json`中添加: ```json { "mcpServers": { "blockchain-payment": { "command": "python", "args": ["-m", "blockchain_payment_mcp.server"], "env": { "PRIVATE_KEY": "your_private_key_here", "DEFAULT_NETWORK": "base_sepolia", "DEBUG": "false", "MAX_TRANSACTION_VALUE": "10" }, "cwd": "/path/to/blockmcp" } } } ``` ### 4. 测试服务器 ``` ## 🛠️ 可用工具 ### `get_balance` 查询指定地址的余额 **参数:** - `address`: 钱包地址(必需) - `token_symbol`: 代币符号,如"USDC"、"DAI"(可选) - `network`: 网络名称(可选,默认base_sepolia) **示例:** ```python # 查询ETH余额 {"address": "0x742d..."} # 查询USDC余额 {"address": "0x742d...", "token_symbol": "USDC"} ``` ### `send_transaction` 发送代币转账交易 **参数:** - `to_address`: 接收方地址(必需) - `amount`: 转账金额(必需) - `token_symbol`: 代币符号(可选,默认"ETH") - `network`: 网络名称(可选) - `private_key`: 发送方私钥(可选,如未提供则使用环境变量) **示例:** ```python # 发送0.01 ETH {"to_address": "0x...", "amount": "0.01"} # 发送100 USDC {"to_address": "0x...", "amount": "100", "token_symbol": "USDC"} ``` ### `get_transaction_status` 查询交易状态 **参数:** - `tx_hash`: 交易哈希(必需) - `network`: 网络名称(可选) ### `estimate_gas_fees` 估算Gas费用 **参数:** - `to_address`: 接收方地址(可选) - `amount`: 转账金额(可选) - `token_symbol`: 代币符号(可选) - `network`: 网络名称(可选) ### `create_wallet` 创建新的钱包地址和私钥 **参数:** 无 ### `get_network_info` 获取当前网络信息 **参数:** - `network`: 网络名称(可选) ### `get_supported_tokens` 获取支持的代币列表 **参数:** 无 ### `validate_address` 验证以太坊地址格式 **参数:** - `address`: 要验证的地址(必需) ## 🌐 支持的网络 ### Base Sepolia (测试网) - **Chain ID**: 84532 - **RPC**: https://base-sepolia-rpc.publicnode.com - **浏览器**: https://sepolia.basescan.org - **原生代币**: ETH ### Base Mainnet (主网) - **Chain ID**: 8453 - **RPC**: https://base-rpc.publicnode.com - **浏览器**: https://basescan.org - **原生代币**: ETH ### Ethereum Sepolia (测试网) - **Chain ID**: 11155111 - **RPC**: https://ethereum-sepolia-rpc.publicnode.com - **浏览器**: https://sepolia.etherscan.io - **原生代币**: ETH ### Ethereum Mainnet (主网) - **Chain ID**: 1 - **RPC**: https://ethereum-rpc.publicnode.com - **浏览器**: https://etherscan.io - **原生代币**: ETH ### BSC Testnet (测试网) - **Chain ID**: 97 - **RPC**: https://bsc-testnet-rpc.publicnode.com - **浏览器**: https://testnet.bscscan.com - **原生代币**: BNB ### BSC Mainnet (主网) - **Chain ID**: 56 - **RPC**: https://bsc-rpc.publicnode.com - **浏览器**: https://bscscan.com - **原生代币**: BNB ### Polygon Amoy (测试网) - **Chain ID**: 80002 - **RPC**: https://polygon-amoy-rpc.publicnode.com - **浏览器**: https://amoy.polygonscan.com - **原生代币**: MATIC ### Polygon Mainnet (主网) - **Chain ID**: 137 - **RPC**: https://polygon-rpc.com - **浏览器**: https://polygonscan.com - **原生代币**: MATIC ### Avalanche Fuji (测试网) - **Chain ID**: 43113 - **RPC**: https://avalanche-fuji-c-chain-rpc.publicnode.com - **浏览器**: https://testnet.snowtrace.io - **原生代币**: AVAX ### Avalanche Mainnet (主网) - **Chain ID**: 43114 - **RPC**: https://avalanche-c-chain-rpc.publicnode.com - **浏览器**: https://snowtrace.io - **原生代币**: AVAX ## 🔒 安全特性 1. **交易限制**: 内置最大交易金额限制(默认10 ETH) 2. **地址验证**: 严格验证所有以太坊地址格式 3. **私钥保护**: 支持环境变量和可选私钥传入 4. **错误处理**: 完善的异常处理和错误信息 5. **日志记录**: 详细的操作日志和调试信息 ## 🧪 测试 运行测试脚本验证功能: ```bash python test_mcp.py ``` 测试包括: - 配置加载测试 - 网络连接测试 - 钱包功能测试 - 地址验证测试 - Gas估算测试 ## 📝 示例用法 ### 在AI对话中使用 ``` 请帮我查询地址 0x742d... 的USDC余额 ``` ``` 请发送0.001 ETH到地址 0x123456789... ``` ``` 请查询交易 0xabcdef... 的状态 ``` ### 在测试链上进行操作 ``` 请在Base Sepolia测试网上查询地址 0x742d35cc6585c5d74b3c9e5c29ae4eeaae27b76d 的ETH余额 ``` ``` 请在Ethereum Sepolia测试网上发送0.001 ETH到地址 0x1234567890123456789012345678901234567890 ``` ### 程序化使用 ```python # 直接调用MCP工具 from blockchain_payment_mcp.server import handle_get_balance result = await handle_get_balance({ "address": "0x742d35cc6585c5d74b3c9e5c29ae4eeaae27b76d", "token_symbol": "USDC", "network": "ethereum_sepolia" }) print(result) ``` ## 🔧 开发 ### 项目结构 ``` blockmcp/ ├── blockchain_payment_mcp/ │ ├── __init__.py │ ├── server.py # MCP服务器主文件 │ ├── blockchain.py # 区块链交互层 │ ├── wallet.py # 钱包和签名器 │ └── config.py # 配置管理 ├── requirements.txt # Python依赖 ├── pyproject.toml # 项目配置 ├── test_mcp.py # 测试脚本 └── README.md # 说明文档 ``` ## 🧪 测试链支持 本系统支持在多个测试链上进行支付操作,包括: 1. Ethereum Sepolia (ETH) 2. Base Sepolia (ETH) 3. BSC Testnet (BNB) 4. Polygon Amoy (MATIC) 5. Avalanche Fuji (AVAX) ### 获取测试代币 要获取测试链上的代币用于测试,请访问相应的水龙头: 1. **Ethereum Sepolia**: - https://sepoliafaucet.com/ - https://www.infura.io/faucet/sepolia 2. **Base Sepolia**: - https://base.org/faucet 3. **BSC Testnet**: - https://testnet.bnbchain.org/faucet-smart 4. **Polygon Amoy**: - https://tools.polygon.technology/faucet/ 5. **Avalanche Fuji**: - https://faucet.avax-test.network/ ### 测试链注意事项 1. 测试链上的代币没有实际价值,仅用于开发和测试目的 2. 测试链的Gas价格通常比主网低得多 3. 不同测试链可能有不同的区块时间和确认时间 4. 测试链可能会重置,导致测试资产丢失 ## 🤝 贡献 欢迎提交Issue和Pull Request! ## 📄 许可证 MIT License ## ⚠️ 免责声明 本软件仅用于教育和开发目的。使用前请充分测试,作者不承担任何资金损失责任。在主网使用前请确保充分的安全测试。

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/logos-42/blockchain-payment-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server