Token导航 LogoToken导航TokenDH.com
MCP for ethOnline logo
AI代理stdio官方级别未说明来源级核验

MCP for ethOnline

MCP Server

一个基于Slither和自定义解析工具的Solidity智能合约分析工具集,提供AST生成、安全漏洞检测和MCP协议集成。

工具数

4

提示词数

0

GitHub Stars

0

资源数

0
Python静态分析区块链开发

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

watson-eth-project

提供方

watson-eth-project

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install slither-analyzer

详细介绍

MCP固体分析工具

使用Slither和自定义解析工具进行Solidity智能合约分析的模型上下文协议(MCP)服务器。

已部署MCP

https://mcp-ethonline-production.up.railway.app/mcp

此代码的作用

该项目提供了一个全面的工具包,用于通过多种方法分析Solidity智能合约:

固体分析器(parser_solidity.py)

  • AST生成:使用Solidity编译器将Solidity代码编译为抽象语法树
  • 合同抽取:分析合约、函数、修饰符、事件、结构和枚举
  • 版本管理:根据pragma指令自动检测并安装正确的Solidity编译器版本
  • 位置跟踪:为每个函数提供精确的源代码位置(行号、偏移量)
  • 缓存:缓存编译AST以提高重复分析的性能
  • 进度记录:跟踪调试和监控的编译步骤

更顺畅的整合(slither_wrapper.py)

  • 静态分析:对Solidity合约运行Slither安全分析
  • 漏洞检测:确定常见的安全问题、气体优化和最佳实践违规
  • 编译器管理:处理Solidity编译器安装和版本切换
  • 流输出:提供分析进度和结果
  • 错误处理:优雅地处理编译错误和缺少的依赖关系

MCP服务器(server.py)

  • 协议实现:实现AI工具集成的模型上下文协议
  • 工具注册:将分析功能作为MCP工具公开
  • 资源管理:提供对缓存的AST和分析结果的访问
  • API终点:为合约分析提供类似REST的接口

安装

先决条件

  • Python 3.11+
  • 紫外线 包管理器
  • Docker(可选,用于容器化部署)

设置

选项1:本地安装

  1. 克隆存储库:
git clone 
cd mcp_modules
  1. 安装依赖项:
uv sync
  1. 安装滑套(如果尚未安装):
pip install slither-analyzer

选项2:Docker安装

  1. 克隆存储库:
git clone 
cd mcp_modules
  1. 使用Docker Compose构建和运行:
# Build and start the container
docker-compose up --build

# Run in detached mode
docker-compose up -d --build

# View logs
docker-compose logs -f

# Stop the container
docker-compose down
  1. 或者直接使用Docker构建和运行:
# Build the image
docker build -t mcp-modules .

# Run the container
docker run -p 3000:3000 -v mcp_cache:/tmp/ast_cache mcp-modules

用法

运行测试

局部测试

uv run pytest -q

Docker测试

# Run tests in Docker container
docker-compose run --rm mcp-modules uv run pytest -q

# Or with direct Docker command
docker run --rm mcp-modules uv run pytest -q

启动MCP服务器

地方发展

uv run server.py

Docker开发

# Using Docker Compose (recommended)
docker-compose up --build

# Using Docker directly
docker run -p 3000:3000 mcp-modules

发展模式

地方发展

uv run mcp dev server.py

Docker开发

# Mount source code for live development
docker run -p 3000:3000 -v $(pwd)/mcp_modules:/app/mcp_modules mcp-modules

示例用法

解析实体代码

from mcp_modules.parser_solidity import run

# Parse a simple contract
code = """
pragma solidity ^0.8.0;

contract Example {
    function hello() public pure returns (string memory) {
        return "Hello, World!";
    }
}
"""

result = run(code, engine="solc", auto_version=True)
print(f"Found {len(result['contracts'])} contracts")

使用Slither进行分析

from mcp_modules.slither_wrapper import analyze_contract

# Run security analysis
analysis = analyze_contract(code, stream_logs=True)
print(f"Found {len(analysis['findings'])} security issues")

访问缓存AST

# Get specific AST node by position
ast_node = get_ast_node(
    hash="abc12345", 
    src="1:10:0",  # start:length:fileIndex
    limit=5
)

项目结构

mcp_modules/
├── mcp_modules/           # Main package
│   ├── common/            # Common utilities
│   ├── validation/        # Validation schemas
│   ├── parser_solidity.py # Solidity parser
│   └── slither_wrapper.py # Slither integration
├── tests/                 # Test suite
├── server.py             # MCP server entry point
├── pyproject.toml        # Project configuration
├── Dockerfile            # Docker container definition
├── docker-compose.yml    # Docker Compose configuration
├── .dockerignore         # Docker ignore file
└── README.md             # This file

Docker配置

该项目包括全面的Docker支持:

Dockerfile功能

  • 基本图像:Python 3.11纤薄以获得最佳大小
  • 系统相关性:包括Solidity编译的构建工具
  • 包管理:用途 uv 用于快速解决依赖关系
  • 缓存管理:持久AST缓存卷
  • 健康检查:内置容器健康监测

Docker编写功能

  • 服务管理:轻松启动/停止/重新启动
  • 体积持久性:AST缓存在容器重启后仍然有效
  • 端口映射:MCP服务器可在端口3000上访问
  • 发展模式:用于实时开发的源代码挂载
  • 健康监测:自动健康检查和重启策略

集装箱体积

  • mcp_cache:编译AST文件的持久存储
  • 用于开发的源代码挂载(可选)

待办事项

  • 解析器同时将所有内容放在一堆中(如果同时为多个合同传输代码)

API

MCP工具可用

服务器公开了以下MCP工具:

parse_solidity

  • 目的:解析Solidity代码并提取合约结构
  • 输入:Solidity源代码,可选编译器版本
  • 输出:合同定义、功能、事件,以及职位信息
  • 特性:自动版本检测、AST缓存、进度记录

analyze_with_slither

  • 目的:使用Slither运行全面的安全分析
  • 输入:Solidity源代码,分析选项
  • 输出:安全调查结果、气体优化、违反最佳实践
  • 特性:实时流媒体、错误恢复、编译器管理

get_ast_node

  • 目的:从缓存的编译结果中检索特定的AST节点
  • 输入:AST哈希、源位置或JSON指针
  • 输出:带有元数据的AST子树
  • 特性:灵活的查询,基于职位的查找

list_cached_asts

  • 目的:列出所有缓存的AST文件及其元数据
  • 输入:无
  • 输出:缓存统计信息、文件信息
  • 特性:缓存管理、调试支持

滑动包装

slither_wrapper.py 模块提供:

  • analyze_contract():合同分析的主要功能
  • _ensure_solc_for_source():Solidity编译器版本管理
  • _ensure_solc_auto_by_pragma():基于pragma的自动编译器检测

固体分析器

parser_solidity.py 模块提供:

  • run():具有全面选项的主解析功能
  • _extract_contracts_with_members():合同结构提取
  • _src_span():从AST节点提取源位置
  • _line_from_offset():根据字符偏移量计算行号
  • 合同结构分析
  • 函数和变量提取
  • 导入依赖关系解决

配置

该项目使用 pyproject.toml 用于配置。关键依赖关系包括:

  • slither-analyzer:静态分析工具
  • solc-select:Solidity编译器管理
  • pytest:测试框架

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 添加新功能的测试
  5. 运行测试套件
  6. 提交拉取请求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

致谢

目录标签

目录标签

Python静态分析区块链开发智能合约分析本地部署安全检测MCP协议

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP