使用说明(Markdown 格式)
- 项目简介
- Joern MCP Server 是一个将 Joern 代码分析能力暴露为 MCP 服务端的后端。它通过 MCP 协议向 LLM 提供上下文信息、资源访问、工具调用和 Prompt 模板渲染等能力,支持多传输通道(stdio、SSE、WebSocket),并实现了资源、工具、提示模板、查询等模块的统一管理。
- 主要功能点
- 资源管理(Resources):暴露并管理代码项目、函数、漏洞等数据资源,便于 LLM 客户端按需获取数据。
- 工具注册与执行(Tools):注册各类分析工具(如 Call Graph、Data Flow、Taint、CFG、Query 等),LLM 可以通过 JSON-RPC 调用并获取结果。
- 提示模板(Prompts):提供可渲染的提示模板,帮助 LLM 以更好的交互方式进行分析任务。
- MCP 协议支持:通过 JSON-RPC 与客户端通信,支持读取资源、调用工具、获取 Prompt 等请求与响应。
- 会话与能力声明:服务器维护会话状态、当前活跃项目、Joern 服务端等能力信息,确保多客户端/会话的安全协作。
- 多传输协议:初步实现支持 stdio、HTTP+WebSocket 等传输,便于在本地开发或远程环境中使用。
- 安装与运行(简要要点)
- 该服务器以 Python 实现,入口点通常是通过执行 python -m joern_mcp 启动。
- 运行前请确保已安装 Python 3.10+、所需依赖(在项目根目录执行 pip install -e ".[dev]" 即可)。
- 服务器启动后,LLM 客户端可通过 MCP 的 JSON-RPC 接口对资源、工具、Prompts 等进行请求。
- 服务器配置(供 MCP 客户端了解,不作为客户端代码) { "server_name": "Joern MCP Server", "command": "python", "args": ["-m", "joern_mcp"] } 说明:
- server_name:服务器的标识名称,客户端可显示或日志记录之用
- command:启动服务器的主命令
- args:启动命令的参数列表 注:MCP 客户端不需要本地代码实现,只需要在自己的配置中记录如何启动服务器即可。服务器支持多种传输方式,实际传输协议由客户端与服务端协商确定。
- 基本使用方法
- 启动服务器:在具备 Python 环境的终端执行上面的启动命令(python -m joern_mcp)。
- 与客户端通信:客户端通过 MCP 协议以 JSON-RPC 形式提交请求,例如读取资源、执行工具、获取 prompts 等,服务器返回标准的 JSON-RPC 响应。
- 常用场景:
- 读取资源(如项目、函数、漏洞等)以供分析
- 调用分析工具(如 Call Graph、Data Flow、Taint、CFG 等)并获取结果
- 获取并渲染 Prompts,辅助 LLM 进行对话式分析
- 安全性与扩展:服务器实现了简单的查询验证、并发控制、缓存及慢查询日志等基础能力,便于在生产环境中进行扩展与优化。
备注:
- 本项目实现了完整的 MCP 服务器能力,包括工具、资源、Prompts、查询等多模块的暴露与调用,具备可运行的服务器端代码和明确的功能边界,符合 MCP 服务器的核心定义与实现要求。
信息
分类
AI与计算