使用说明

项目简介

本项目 'iOS崩溃分析MCP服务器' 是一个基于 Model Context Protocol (MCP) 构建的后端服务,专门用于接收和分析 iOS 应用程序的崩溃日志。它利用 'atos' 工具进行符号化,结合源码仓库定位崩溃代码行,并根据错误类型提供初步的修复建议。该服务旨在帮助开发者更高效地理解和解决 iOS 应用的崩溃问题。

主要功能点

  1. 崩溃日志分析: 接收 iOS 崩溃日志文件,提取关键崩溃信息,如堆栈跟踪和错误类型。
  2. dSYM 符号化: 利用 dSYM 文件将崩溃堆栈中的内存地址转换为可读的函数名和代码行号,方便开发者理解崩溃发生的位置。
  3. 源码定位: 结合 Git 仓库,根据符号化结果定位到具体的源代码文件和行数,直观展示错误代码上下文。
  4. 修复建议: 根据常见的错误类型,提供初步的修复建议,例如内存访问错误、算术错误等,为开发者提供排错方向。

安装步骤

  1. 环境准备:

    • 确保您的 macOS 系统已安装 Xcode 或 Command Line Tools (用于 'atos' 工具)。
    • 确保已安装 'git' 工具。
    • 确保已安装 Python 3.6 或更高版本。
  2. 安装依赖:

    • 建议使用虚拟环境:'python3 -m venv venv'
    • 激活虚拟环境:'source venv/bin/activate' (或 'venv\Scripts\activate' for Windows)
    • 安装项目依赖:'pip install gitpython packaging fastmcp'
  3. 启动服务器:

    • 运行 'crash_analyzer_server.py' 脚本:'python crash_analyzer_server.py'
    • 服务器默认使用 Stdio 传输协议,启动后会在控制台等待 MCP 客户端连接和请求。

服务器配置

MCP 客户端需要配置以下 JSON 信息以连接到 'iOS崩溃分析MCP服务器':

{
  "serverName": "CrashAnalyzer",
  "command": "python",
  "args": ["crash_analyzer_server.py"]
}

配置参数说明:

  • 'serverName': MCP 服务器的名称,必须与服务器代码中 'FastMCP("CrashAnalyzer", ...)' 定义的名称一致,这里为 "CrashAnalyzer"。
  • 'command': 启动 MCP 服务器的命令,这里使用 'python' 解释器。
  • 'args': 启动命令的参数列表,这里指定运行 'crash_analyzer_server.py' 脚本。

注意:

  • 确保 MCP 客户端能够找到 'crash_analyzer_server.py' 脚本,如果脚本不在客户端的当前工作目录或环境变量 'PATH' 中,'args' 中需要提供脚本的完整路径。
  • 确保 MCP 客户端的网络环境可以访问运行 MCP 服务器的机器。如果服务器和客户端在同一台机器上,则无需特殊网络配置。

基本使用方法

  1. MCP 客户端发起请求: MCP 客户端需要调用名为 'analyze_crash' 的 Tool,并提供以下参数:

    • 'crash_content': bytes 类型,iOS 崩溃日志文件的内容。
    • 'dsym_content': bytes 类型,与崩溃应用版本对应的 dSYM 文件的内容。
    • 'git_repo_url': string 类型,崩溃应用源码的 Git 仓库 URL。
  2. 服务器处理请求: 'iOS崩溃分析MCP服务器' 接收到请求后,会执行以下步骤:

    • 将 'crash_content' 和 'dsym_content' 保存到临时文件。
    • 从崩溃日志和 dSYM 文件中提取版本信息并进行匹配验证。
    • 克隆指定的 Git 仓库并检出与崩溃版本对应的代码。
    • 解析崩溃日志,提取堆栈信息。
    • 使用 'atos' 工具对堆栈地址进行符号化。
    • 根据符号化结果定位到源码文件和行号。
    • 从源码中获取崩溃代码行的内容。
    • 根据错误类型给出修复建议。
    • 将分析结果以字符串形式返回给 MCP 客户端。
  3. MCP 客户端接收响应: MCP 客户端接收到服务器返回的分析结果字符串,通常会展示给用户。分析结果包含错误位置(文件名和行号)、崩溃代码行、错误类型以及修复建议。

示例: 假设您有一个 MCP 客户端应用,您需要将 iOS 崩溃日志文件、dSYM 文件和 Git 仓库 URL 作为参数传递给客户端,客户端会按照 MCP 协议与 'iOS崩溃分析MCP服务器' 通信,并将分析结果展示给您。

信息

分类

开发者工具