Skip to content

Latest commit

 

History

History
118 lines (91 loc) · 3.58 KB

File metadata and controls

118 lines (91 loc) · 3.58 KB

Joern MCP Server

一个简单的Joern的MCP Server。

项目简介

本项目是一个基于Joern的MCP Server,提供了一系列功能来帮助开发者进行代码审查和安全分析。

环境要求

  • Python >= 3.10(默认3.12) & uv
  • Joern

安装步骤

  1. 克隆项目到本地:

    git clone https://github.com/sfncat/mcp-joern.git
    cd mcp-joern
  2. 安装Python依赖:

    uv venv .venv
    source .venv/bin/activate
    uv sync

项目结构

├── server.py                       # MCP Server主程序
├── test_mcp_client.py              # joern server和 mcp tool测试程序
├── test_sc_tools.py                # 直接测试sc中的tool程序
├── common_tools.py                 # 通用工具函数
├── server_tools.py                 # 服务器工具函数
├── server_tools.sc                 # 服务器工具函数的scala实现
├── server_tools_source.sc          # 服务器工具函数的scala实现,使用sourceCode获取method的code
├── requirements.txt                # Python依赖文件
├── sample_cline_mcp_settings.json  # cline mcp 配置样例文件
└── env_example.txt                 # 环境变量样例文件

使用方法

  1. 启动Joern服务器:

    joern -J-Xmx40G --server --server-host 127.0.0.1 --server-port 16162 --server-auth-username user --server-auth-password password --import server_tools.sc
    或
    joern -J-Xmx40G --server --server-host 127.0.0.1 --server-port 16162 --server-auth-username user --server-auth-password password --import server_tools_source.sc

    如果是在Windows下使用,可能需要通过命令行或在系统环境变量中设置JVM系统变量解决加载脚本失败的问题

    set _JAVA_OPTIONS=-Dfile.encoding=UTF-8
    

    设置joern通用日志级别

    set SL_LOGGING_LEVEL=ERROR //windows
    export SL_LOGGING_LEVEL=ERROR //linux
    

    如果有下面的告警

    Unable to create a system terminal, creating a dumb terminal (enable debug logging for more information)
    

    可以通过设置环境变量关闭

    set TERM=dumb
    export TERM=dumb
    

    恢复

    set TERM=xterm-256color
    export TERM=xterm-256color
    
  2. 复制env_example.txt为.env 修改配置信息和joern server启动配置的信息一致

  3. 运行测试连接: 修改test_mcp_client.py中的信息,确认joern server正常

    uv run test_mcp_client.py
    Starting MCP server test...
    ==================================================
    Testing server connection...
    [04/16/25 20:38:54] INFO     Processing request of type CallToolRequest                                                                                                                     server.py:534
    Connection test result: Successfully connected to Joern MCP, joern server version is XXX
  4. 配置MCP server 在cline中配置mcp服务器,可参考 sample_cline_mcp_settings.json

  5. 使用MCP server 向大模型提问,可参考prompts_cn.md

开发说明

  • .env 文件用于存储环境变量
  • .gitignore 文件定义了Git版本控制需要忽略的文件
  • pyproject.toml 定义了项目的Python配置
  • mcp tool开发
    • server_tools.sc中实现,在server_tools.py增加定义,在test_mcp_client.py中增加测试

贡献指南

欢迎提交Issue和Pull Request来帮助改进项目。

欢迎增加更多的tool。

参考

https://github.com/flankerhqd/jebmcp

https://docs.joern.io/server/

https://docs.joern.io/interpreter/