使用 Slither-MCP 提升你的 Solidity LLM 工具

Trail of Bits 发布了 Slither-MCP,这是一个利用 Slither 的静态分析引擎增强大型语言模型(LLM)的新工具。Slither-MCP 通过 Model Context Protocol 提供 Slither 的静态分析 API,帮助 LLM 更快地查找关键代码,更有效地浏览代码库,并最终提高智能合约的编写和审计性能。

我们发布了 Slither-MCP,这是一个新的工具,它利用 Slither 无与伦比的静态分析引擎来增强 LLM 的能力。Slither-MCP 通过工具暴露 Slither 的静态分析 API,几乎适用于 LLM 的所有使用场景,从而允许 LLM 更快地找到关键代码,更有效地浏览代码库,并最终提高智能合约编写和审计的性能。

Slither-MCP 如何工作

Slither-MCP 是一个 MCP 服务器,它包装了 Slither 的静态分析功能,使其可以通过模型上下文协议访问。它可以分析 Solidity 项目(Foundry、Hardhat 等),并生成关于合约、函数、继承层次结构等的综合元数据。

当 LLM 使用 Slither-MCP 时,它不再需要依赖像 grep 和 read_file 这样的基本工具来识别特定函数的实现位置、函数的调用者以及其他复杂且容易出错的任务。

因为 LLM 是概率系统,所以在大多数情况下,它们的正确性只是概率性的。Slither-MCP 有助于使用传统的静态分析为基于 LLM 的分析设置一个基本事实:它减少了 token 的使用,并增加了提示得到正确回答的概率。

示例:简化审计任务

考虑一个包含两个 ERC20 合约的项目:一个用于生产部署,另一个用于测试。LLM 的任务是审计合约对 ERC20.transfer() 的使用,并且需要找到该函数的源代码。

如果没有 Slither-MCP,LLM 有两种选择:

  1. 尝试解析 ERC20 合约的导入路径,然后尝试调用 read_file 来查看 ERC20.transfer() 的源代码。此选项通常需要多次调用 read_file,特别是当对 ERC20.transfer() 的调用是通过从 ERC20 继承的子合约进行的。无论如何,此选项都容易出错并且需要大量的工具调用。

  2. 尝试使用 grep 工具来定位 ERC20.transfer() 的实现。根据 grep 工具调用的结构方式,它可能会返回错误的 ERC20 合约。

这两种选择都不是理想的,容易出错,并且不太可能以高置信区间保证正确。

使用 Slither-MCP,LLM 只需调用 get_function_source 即可找到该函数的源代码。

简单的设置

Slither-MCP 易于设置,可以使用以下命令将其添加到 Claude Code:

claude mcp add --transport stdio slither -- uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp

也可以通过将以下内容添加到你的 ~/.cursor/mcp.json 中,轻松地将 Slither-MCP 添加到 Cursor:


Run sudo ln -s ~/.local/bin/uvx /usr/local/bin/uvx
Then use this config:
{
 "mcpServers": {
    "slither-mcp": {
      "command": "uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp"
    }
  }
}

图 1:将 Slither-MCP 添加到 Cursor

目前,Slither-MCP 公开了 Slither 分析引擎的一个子集,我们认为 LLM 从中使用受益最多。这包括以下功能:

  • 提取给定合约或函数的源代码以进行分析

  • 识别函数的调用者和被调用者

  • 识别合约的派生和继承成员

  • 基于签名定位函数的潜在实现(例如,查找 IOracle.price(...) 的具体定义)

  • 运行 Slither 的详尽检测器套件并过滤结果

如果你对新的 MCP 工具的请求或建议,我们很乐意听取你的意见

许可

Slither-MCP 采用 AGPLv3 许可,与 Slither 使用的许可相同。此许可要求你在 Web 服务或 SaaS 产品中使用它时,发布应用程序的完整源代码。对于许多工具来说,这不是一个可以接受的折衷方案。

为了帮助解决这个问题,我们现在为 Slither 和 Slither-MCP 提供双重许可。通过提供双重许可,Slither 和 Slither-MCP 可以用于支持基于 LLM 的安全 Web 应用程序,而无需发布你的整个源代码,也无需花费数年时间来重现其功能集。

如果你目前在你的商业 Web 应用程序中使用 Slither,或者有兴趣使用它,请联系我们

发布 Attacknet:一种使用混沌测试在区块链节点中查找错误的新工具 2024 年 3 月 18 日\ 今天,Trail of Bits 发布了 Attacknet,这是一种解决传统运行时局限性的新工具……我们构建了 MCP 始终需要的安全层 2025 年 7 月 28 日\ 今天,我们宣布发布 mcp-context-protector 的 Beta 版本,这是一个使用模型的 LLM 应用程序的安全包装器……当尝试、尝试、再尝试导致乱序执行错误时 2024 年 3 月 1 日\ 你是否想知道 rollup 及其基础链(rollup 提交状态检查点的链)是如何……

  • 原文链接: blog.trailofbits.com/202...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Trail of Bits
Trail of Bits
https://www.trailofbits.com/