1.2.0 • Published 6 months ago
@amyseer/sol-compiler-mcp v1.2.0
Solidity编译器MCP服务
一个基于Model Context Protocol (MCP)的Solidity智能合约编译服务,专为web3tgbot项目优化,支持完整的导入解析功能。
核心特性
- ✅ 智能导入解析 - 自动处理OpenZeppelin等第三方库导入
- ✅ 简单API - 仅需传递Solidity源码即可完成编译
- ✅ 多种路径支持 - 处理相对路径、绝对路径和包路径导入
- ✅ 完整编译信息 - 提供ABI、字节码、部署字节码和燃气估算
- ✅ 适配MCP协议 - 与任何MCP客户端无缝协作
- ✅ 版本检测 - 自动检测代码中的Solidity版本并提供相应错误提示
版本历史
v1.2.0
- 新增Solidity版本检测功能
- 增强错误处理,更友好的错误提示
- 提高OpenZeppelin库兼容性
v1.1.0
- 修复ES模块兼容性问题
- 改善导入路径解析
v1.0.0
- 首次发布
安装
# 全局安装(推荐用于CLI使用)
npm install -g @amyseer/sol-compiler-mcp
# 作为项目依赖安装
npm install @amyseer/sol-compiler-mcp快速开始
启动服务
服务可以作为独立进程运行,或被其他MCP客户端调用:
# 使用CLI启动
npx @amyseer/sol-compiler-mcp serve
# 或者全局安装后启动
sol-compiler-mcp serve在web3tgbot中使用
本服务专为web3tgbot项目优化。确保在web3tgbot的MCP配置中包含solidity-compiler:
{
"mcpServers": {
"solidity-compiler": {
"command": "npx",
"args": ["@amyseer/sol-compiler-mcp@1.2.0", "serve"]
}
}
}版本兼容性
本服务当前使用的依赖版本:
- Solidity 编译器: v0.8.20
- OpenZeppelin 库: v5.0.1 (支持Solidity ^0.8.20)
如果您正在编译使用较旧版本的合约(如Solidity 0.7.x),请注意它们可能与当前的OpenZeppelin库不兼容。您应该使用相应版本的OpenZeppelin库,例如:
- Solidity 0.7.x → OpenZeppelin 4.x
- Solidity 0.8.x → OpenZeppelin 5.x
API说明
本服务实现了以下MCP功能:
工具
- compile-contract
- 参数:
contractSource(必填):Solidity合约源代码或文件路径contractName(可选):指定要编译的合约名称,未提供时会自动从源码提取
- 返回:
- 编译成功状态
- 合约名称
- 合约字节码
- 部署后的字节码
- 合约ABI
- 燃气估算
- 参数:
资源
- solidity-info://compiler-version - 显示当前使用的Solidity编译器版本
- solidity-info://example-contract - 提供示例ERC20合约
- solidity-info://info - 显示服务信息和可用资源
- solidity-info://node-modules - 显示已配置的node_modules路径
导入路径支持
本服务支持以下类型的导入路径:
- 相对路径导入:
import "./Contract.sol"或import "../Contract.sol" - 绝对路径导入:
import "/path/to/Contract.sol" - 包导入:
import "@openzeppelin/contracts/token/ERC20/ERC20.sol" - 本地导入:
import "Contract.sol"(在当前目录或contracts目录中查找)
与web3tgbot集成
在web3tgbot项目中,本服务用于编译由用户通过Telegram机器人创建的ERC20代币。集成使用以下流程:
- web3tgbot通过
src/erc20/compile.ts中的SolidityCompiler类调用本服务 - 用户的合约代码通过
contractSource参数传递 - 本服务处理代码中的所有导入语句,特别是OpenZeppelin合约
- 编译结果(字节码、ABI等)返回给web3tgbot,用于后续部署
依赖项
- Node.js 18.0.0+
- solc 0.8.20+
- @openzeppelin/contracts 5.0.1+
- @modelcontextprotocol/sdk 1.10.2+
调试
如果遇到编译问题,可以检查stderr输出中的日志,它包含详细的编译和导入解析信息。
服务会自动记录以下内容:
- 导入解析过程和路径尝试
- 编译警告和错误
- 依赖检查结果
- Solidity版本检测信息
开发说明
# 克隆仓库
git clone https://github.com/amyseer/sol-compiler-mcp.git
cd sol-compiler-mcp
# 安装依赖
npm install
# 构建项目
npm run build
# 启动服务
npm run serve许可证
MIT