Foundry MCP 服务器

一个提供与 Foundry、Anvil 和 Cast 命令交互工具的模型上下文协议(MCP)服务器,适用于智能合约开发和优化。

  • by bcamp136
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 bcamp136/foundry-mcp-server

使用说明

Foundry MCP服务器

一种模型上下文协议(MCP)服务器,提供与Foundry、Anvil和Cast命令交互的工具。

VS代码设置

先决条件

  1. 安装Foundry:

    curl -L https://foundry.paradigm.xyz | bash
    foundryup
    
  2. 安装Node.js (版本18或更高)

  3. 确保GitHub Copilot已设置 启用MCP支持的VS代码

有关VS Code中MCP服务器设置的详细信息,请参阅 官方VS Code MCP文档.

本地设置

  1. 克隆并构建MCP服务器:

    git clone <your-repo-url>
    cd foundry-mcp-server
    npm install
    npm run build
    
  2. 配置VS代码设置:

    打开VS代码设置(命令面板→ “首选项:打开用户设置(JSON)”)并添加MCP服务器配置:

    {
      "github.copilot.chat.mcp.servers": {
        "foundry": {
          "command": "node",
          "args": ["/absolute/path/to/foundry-mcp-server/dist/server.js"],
          "env": {
            "FOUNDRY_PRIVATE_KEY": "0x_your_private_key_here_optional",
            "PROJECT_ROOT": "/path/to/your/foundry/project"
          }
        }
      }
    }
    

    重要:替换 /absolute/path/to/foundry-mcp-server 带有克隆此存储库的实际绝对路径。

  3. 重新启动VS代码 加载MCP服务器

  4. 验证设置:

    • 在VS代码中打开GitHub Copilot聊天
    • 您应该看到Foundry MCP服务器被列为已连接
    • 尝试使用以下工具 foundry_project_info 测试连接

使用npm链接的替代设置

如果您希望全局安装:

cd foundry-mcp-server
npm run build
npm link

然后在VS Code设置中,使用:

{
  "github.copilot.chat.mcp.servers": {
    "foundry": {
      "command": "foundry-mcp-server",
      "env": {
        "FOUNDRY_PRIVATE_KEY": "0x_your_private_key_here_optional",
        "PROJECT_ROOT": "/path/to/your/foundry/project"
      }
    }
  }
}

开发设置

对于开发和测试:

  1. 以开发模式运行:

    npm run dev
    
  2. 注意变化 (如果修改代码):

    npm run build
    # Restart VS Code to reload the MCP server
    

环境变量

FOUNDRY_私人密钥

设置此环境变量,为需要事务签名的Cast操作提供默认私钥:

export FOUNDRY_PRIVATE_KEY="0x your_private_key_here"

设置此环境变量时:

  • cast_send 如果没有明确指示,操作将自动使用此键 privateKey 参数已提供
  • 您可以使用 cast_wallet_info 工具

PROJECT_ROOT

覆盖默认项目根目录:

export PROJECT_ROOT="/path/to/your/foundry/project"

如果未设置,则默认为当前工作目录。

工具

锻造工具

  • forge_build -编制合同
  • forge_test -运行测试
  • forge_gas_report -生成详细的天然气使用报告,包括最低/平均/中位数/最高成本
  • forge_gas_snapshot -创建、比较和管理用于回归测试的气体快照
  • forge_gas_optimize -分析气体模式并提供优化建议

铁砧工具

  • anvil_start -启动本地区块链
  • anvil_stop -停止本地区块链
  • anvil_status -检查Anvil是否正在运行

铸造工具

  • cast_call -调用只读合约函数
  • cast_send -发送交易(如果没有提供密钥,则使用FOUNDRY_PRIVATE_KEY)
  • cast_estimate_gas -估算交易天然气
  • cast_balance -获取地址余额
  • cast_wallet_info -获取已配置私钥的钱包信息

项目工具

  • foundry_project_info -获取项目目录结构

模板工具

  • generate_contract_prompt -根据Foundry最佳实践为AI工具生成结构化提示
  • foundry_project_template -使用配置生成完整的Foundry项目结构

气体分析工具

  • gas_profile_function -具有针对性分析的特定功能气体使用情况
  • gas_compare_implementations -比较不同实施方式之间的天然气成本
  • gas_regression_test -根据基线监测天然气使用回归
  • gas_optimization_suggestions -获取具体的优化建议

用AI创建智能合约

此MCP服务器包括使用ChatGPT或Claude等人工智能工具生成智能合约的专用工具,遵循Foundry的官方提示指南。

工作流程:

  1. 生成结构化提示:

    Use the generate_contract_prompt tool with your requirements:
    - Requirements: "Create an ERC20 token with minting and burning capabilities"
    - Contract type: "token" 
    - Include comprehensive tests and deployment scripts
    
  2. 复制生成的提示 到您选择的AI工具(ChatGPT、Claude等)

  3. 获取AI生成的代码 遵循Foundry最佳实践,包括:

    • 适当的项目结构
    • 综合测试(单元、模糊、不变)
    • 安全最佳实践
    • 带验证的部署脚本
    • NatSpec文件
  4. 生成项目结构 使用 foundry_project_template 获取完整的样板

支持的合同类型:

  • 代币:具有高级功能的ERC20实现
  • 金库:符合ERC4626标准的保险库,具有收益机制
  • 德菲:DEX、借贷和其他DeFi协议
  • 非同质化代币:ERC721/ERC1155实施
  • 治理:表决和提案机制
  • 代理:可升级的合同模式
  • 自定义:任何其他合同类型

气体优化工作流程

此MCP服务器基于Foundry的气体跟踪功能提供全面的气体分析和优化工具。

气体分析管道:

  1. 生成基线报告:

    Use forge_gas_report to get detailed function-level gas usage
    Use forge_gas_snapshot with action="create" to establish baselines
    
  2. 配置文件特定功能:

    Use gas_profile_function for targeted analysis of expensive functions
    Compare different implementation approaches with gas_compare_implementations
    
  3. 监控回归:

    Use gas_regression_test to detect gas increases during development
    Set up automated testing with configurable thresholds
    
  4. 获取优化指导:

    Use gas_optimization_suggestions for targeted improvement recommendations
    Focus on specific areas: deployment, functions, loops, storage, external_calls
    

支持的优化策略:

  • 功能级别分析:每个功能的最小/平均/中值/最大天然气成本
  • 快照比较:跟踪天然气使用量随时间的变化
  • 实施测试:A/B测试不同的编码方法
  • 回归检测:具有可配置阈值的自动监控
  • 有针对性的建议:专注于部署、循环、存储或外部调用

气体优化工作流程示例:

# 1. Establish baseline
forge_gas_snapshot action="create" snapshotFile=".gas-baseline"

# 2. Get detailed function analysis  
forge_gas_report matchContract="MyContract"

# 3. Profile expensive functions
gas_profile_function contractName="MyContract" functionName="expensiveFunction"

# 4. Test optimization
# ... make code changes ...

# 5. Check for regressions
gas_regression_test baselineSnapshot=".gas-baseline" threshold=5

# 6. Compare implementations
gas_compare_implementations implementationTests=["testOriginal", "testOptimized"]

安全

⚠️ 重要:永远不要将私钥提交给版本控制。始终使用环境变量或安全密钥管理解决方案。

故障排除

常见问题

  1. MCP服务器未连接:

    • 确保VS代码设置中的路径是绝对正确的
    • 检查构建是否成功(npm run build)
    • 配置更改后重新启动VS代码
  2. Foundry命令不起作用:

    • 验证Foundry是否已安装: forge --version
    • 确保您位于Foundry项目目录或集合中 PROJECT_ROOT
  3. 私钥不起作用:

    • 确保私钥格式正确(以开头 0x)
    • 测试用 cast_wallet_info 验证密钥是否有效
  4. 权限被拒绝错误:

    • 确保MCP服务器脚本可执行
    • 检查存储库目录上的文件权限

调试模式

要查看详细的日志,您可以直接运行MCP服务器:

cd foundry-mcp-server
node dist/server.js

这将显示任何启动错误或连接问题。