使用说明
项目简介
Joern MCP Server 是一个基于 Model Context Protocol (MCP) 构建的应用后端,专门为 Joern 代码分析平台设计。它作为 LLM 与 Joern 之间的桥梁,旨在为 LLM 提供结构化的代码上下文信息和强大的代码分析工具,从而支持代码审查、安全分析、漏洞检测和代码理解等任务。
主要功能点
- 代码查询与检索: 提供多种工具,允许 LLM 根据方法名、类名、ID 等信息查询和检索代码片段,快速定位代码位置。
- 调用关系分析: 支持分析方法之间的调用关系,例如查找方法的调用者和被调用者,帮助 LLM 理解代码的执行流程和依赖关系。
- CPG管理: 允许 LLM 加载和检查 Code Property Graph (CPG) 的加载状态,确保代码分析的数据基础已就绪。
- 自定义查询: 支持 LLM 执行自定义 Joern 查询语句(Scala 代码),灵活地进行各种复杂的代码分析任务。
- 丰富的代码信息获取: 提供获取类、方法、调用点等代码元素的源代码、完整名称、ID等详细信息的功能。
安装步骤
-
克隆仓库到本地:
git clone https://github.com/sfncat/mcp-joern.git cd mcp-joern -
安装 Python 依赖:
uv venv .venv source .venv/bin/activate uv sync -
安装 Joern:
- 请参考 Joern 官方文档 进行安装和配置。
- 确保 Joern 服务器已成功启动并可访问。
服务器配置
MCP 客户端需要配置以下 JSON 对象以连接到 Joern MCP Server。这个配置描述了如何启动和连接到 MCP 服务器,客户端会根据这些信息建立连接并使用服务器提供的功能。
{ "serverName": "joern-mcp", "command": "python", "args": ["server.py"], "transport": "stdio" }
配置信息说明:
- 'serverName': MCP 服务器的名称,用于在客户端标识和管理不同的 MCP 服务器连接,可以自定义,例如 "joern-code-analysis"。
- 'command': 启动 MCP 服务器的命令,指定执行 'server.py' 脚本的解释器,这里使用 'python'。
- 'args': 启动命令的参数列表,'["server.py"]' 表示要运行的 Python 脚本文件是 'server.py'。
- 'transport': MCP 客户端与服务器之间进行通信的传输协议,'"stdio"' 表示使用标准输入输出流进行通信,这是最简单和常用的方式。
基本使用方法
-
启动 Joern 服务器:
- 按照仓库 'README.md' 和 Joern 官方文档的指引,配置并启动 Joern 服务器。
- 确保 Joern 服务器监听在配置的地址和端口,例如 '127.0.0.1:16162'。
-
配置 '.env' 文件:
- 复制 'env_example.txt' 文件为 '.env'。
- 修改 '.env' 文件中的配置信息,包括 Joern 服务器的地址、端口、用户名和密码,确保与 Joern 服务器的配置一致。
-
启动 Joern MCP Server:
- 在终端中,进入 'mcp-joern' 仓库目录。
- 运行命令 'python server.py' 启动 MCP 服务器。
- 观察终端输出,确认 MCP 服务器成功启动并连接到 Joern 服务器。
-
在 MCP 客户端中使用:
- 在支持 MCP 协议的 LLM 客户端 (如实现了 MCP 客户端的 IDE 插件或独立应用) 中,配置上述 '服务器配置' JSON。
- 客户端将根据配置连接到 Joern MCP Server,并可以通过自然语言指令或预设的 Prompt 模板,调用服务器提供的代码分析工具,例如查询代码、分析调用关系等。
注意: 使用前请确保已正确安装和配置 Joern 代码分析平台,并已启动 Joern 服务器。
信息
分类
开发者工具