Foundry MCP服务器
一个简单、轻量级和快速的MCP(模型上下文协议)服务器,使用Foundry工具链(Forge、Cast和Anvil)提供Solidity开发功能。
概述
此服务器将LLM助手连接到Foundry生态系统,使他们能够:
- 与节点(本地Anvil实例或远程RPC端点)交互
- 分析智能合约和区块链数据
- 使用Cast执行常见的EVM操作
- 管理、部署和执行Solidity代码和脚本
- 使用持久的Forge工作区
特性
网络交互
- 启动并管理本地Anvil实例
- 连接到任何远程网络(只需指定RPC)
- 获取网络/链信息
合同互动
- 调用合约函数(只读)
- 将交易发送到合同(如果
PRIVATE_KEY已配置) - 获取交易收据
- 读取合同存储
- 分析交易痕迹
- 从区块浏览器检索合同ABI和来源
稳健发展
- 维护专用的Forge工作区
- 创建和编辑Solidity文件
- 安装依赖项
- 运行Forge脚本
- 部署合同
实用函数
- 计算合同地址
- 检查合约字节码大小
- 估算天然气成本
- 单位之间的转换(十六进制到小数等)
- 生成钱包
- 获取事件日志
- 查找函数和事件签名
智能合约分析(Heimdall)
- 将EVM字节码分解为人类可读的操作码
- 无需ABI即可解码原始通话数据
- 将EVM字节码分解为Solidity源代码和ABI
- 为EVM字节码生成可视化控制流图
- 通过调用数据解码和跟踪分析进行详细的交易检查
用法
该服务器旨在用作MCP客户端的MCP工具提供者。当连接到客户端时,它使客户端(claude桌面、光标、客户端等)能够直接执行Solidity和链上操作。
需求
手动设置
- 确保您的系统上安装了铸造工具(锻造、铸造、铁砧):
curl -L https://foundry.paradigm.xyz | bash
foundryup- 克隆并构建服务器。
bun i && bun build ./src/index.ts --outdir ./dist --target node
- 更新您的客户端配置(例如:Claude桌面):
"mcpServers": {
"foundry": {
"command": "node",
"args": [
"path/to/foundry-mcp-server/dist/index.js"
],
"env" :{
"PRIVATE_KEY": "0x1234",
}
}
}\[!注意\] PRIVATE_KEY 是可选的使用NPM包进行设置
您现在可以直接使用npm安装并运行服务器:
全球安装
npm install -g @pranesh.asp/foundry-mcp-server直接使用npx
npx @pranesh.asp/foundry-mcp-serverMCP客户端配置
克劳德代码
claude mcp add-json foundry-mcp-server '{"type":"stdio","command":"npx","args":["@pranesh.asp/foundry-mcp-server"],"env":{"RPC_URL":"","PRIVATE_KEY":""}}' 其他MCP客户端(Cursor、Claude、Windsurf)
添加到MCP设置中:
{
"mcpServers": {
"foundry": {
"command": "npx",
"args": ["@pranesh.asp/foundry-mcp-server"],
"env": {
"RPC_URL": "http://localhost:8545",
"PRIVATE_KEY": "0x..."
}
}
}
}配置
服务器支持以下环境变量:
RPC_URL:未指定时使用的默认RPC URL(可选)PRIVATE_KEY:用于交易的私钥(可选)
\[!小心\] 不要用主网资金添加密钥。即使代码安全地使用它,LLM也会破坏和发送恶意交易。 仅用于测试/开发目的。不要相信LLM!!
\[!提示\] 获得Invalid configuration错误?检查JSON语法——常见问题包括双引号(""KEY"→"KEY")、尾随逗号或未加引号的键。验证方式echo '...' | jq .
工作区
服务器在以下位置维护一个持久的Forge工作区 ~/.mcp-foundry-workspace 适用于所有Solidity文件、脚本和依赖项。
工具
铁砧
anvil_start:启动一个新的Anvil实例anvil_stop:停止正在运行的Anvil实例anvil_status:检查Anvil是否正在运行并获取其状态
演员阵容
cast_call:调用合约函数(只读)cast_send:将交易发送到合约函数cast_balance:检查地址的ETH余额cast_receipt:获取交易收据cast_storage:读取特定插槽中的合约存储cast_run:在本地环境中运行已发布的事务cast_logs:按签名或主题获取日志cast_sig:获取函数或事件签名的选择器cast_4byte:从4byte目录中查找函数或事件签名cast_chain:获取当前链的信息
锻造
forge_script:从工作区运行Forge脚本install_dependency:安装Forge工作区的依赖项
文件管理
create_solidity_file:在工作区中创建或更新Solidity文件read_file:从工作区读取文件内容list_files:列出工作区中的文件
公用事业
convert_eth_units:在EVM单位(wei、gwei、十六进制)之间转换compute_address:计算将要部署的合约的地址contract_size:获取已部署合约的字节码大小estimate_gas:估算交易的天然气成本
海姆达尔分析
heimdall_disassemble:将EVM字节码分解为人类可读的操作码heimdall_decode:解码原始通话数据,无需ABIheimdall_decompile:将EVM字节码分解为Solidity源代码和ABIheimdall_cfg:为EVM字节码生成可视化控制流图heimdall_inspect:以太坊交易的详细检查
在Claude桌面应用程序中的使用🎯
一旦安装完成,并且配置了Claude桌面应用程序,您必须完全关闭并重新打开Claude桌面程序才能看到tavily mcp服务器。您应该在应用程序的左下角看到一个锤子图标,指示可用的MCP工具,您可以单击锤子图标查看有关可用工具的更多详细信息。
现在,claude将完全访问foundry mcp服务器。如果您将以下示例插入到Claude桌面应用程序中,您应该会看到代工厂mcp服务器工具正在运行。
例子
- 交易分析:
Can you analyze the transaction and explain what it does?
https://etherscan.io/tx/0xcb73ad3116f19358e2e649d4dc801b7ae0590a47b8bb2e57a8e98b6daa5fb14b- 查询余额:
Query the mainnet ETH and USDT balances for the wallet 0x195F46025a6926968a1b3275822096eB12D97E70.- 发送交易:
Transfer 0.5 USDC to 0x195F46025a6926968a1b3275822096eB12D97E70 on Mainnet. - 部署合约/运行脚本:
Deploy a mock ERC20 contract to a local anvil instance and name it "Fire Coin".致谢✨
免责声明
_软件按原样提供。对于软件的安全性或正确性,不作任何明示或暗示的保证、陈述或担保。它们没有经过审计,因此无法保证它们会按预期工作,用户可能会遇到延迟、故障、错误、遗漏、传输信息丢失或资金损失。创作者不对上述任何一项承担责任。用户应谨慎使用,并自行承担风险。_
