基于 Joern 的一个简单的 MCP 服务器。
<a href="https://glama.ai/mcp/servers/@sfncat/mcp-joern"> <img width="380" height="200" src="https://gips2.baidu.com/it/u=3551020009,662242165&fm=3081&app=3081&f=PNG?w=760&h=400" alt="Joern 服务器 MCP 服务器" /> </a>该项目是一个基于 Joern 的 MCP 服务器,提供了一系列功能来帮助开发者进行代码审查和安全分析。
将项目克隆到本地:
git clone https://github.com/sfncat/mcp-joern.git
cd mcp-joern
安装 Python 依赖项:
uv venv .venv
source .venv/bin/activate
uv sync
├── server.py # MCP 服务器主程序
├── test_mcp_client.py # Joern 服务器和 MCP 工具测试程序
├── test_sc_tools.py # 直接测试 SC 工具的程序
├── common_tools.py # 常用工具函数
├── server_tools.py # 服务器工具函数
├── server_tools.sc # 服务器工具函数的 Scala 实现
├── server_tools_source.sc # 服务器工具函数的 Scala 实现,使用源码获取方法的源代码
├── requirements.txt # Python 依赖文件
├── sample_cline_mcp_settings.json # 示例 cline MCP 配置文件
└── env_example.txt # 环境变量示例文件
启动 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 日志级别为 ERROR
set SL_LOGGING_LEVEL=ERROR //Windows
export SL_LOGGING_LEVEL=ERROR //Linux
如果出现以下警告
无法创建系统终端,正在创建哑终端(启用调试日志以获取更多信息)
可以通过设置环境变量禁用它
set TERM=dumb
export TERM=dumb
恢复默认行为
set TERM=xterm-256color
export TERM=xterm-256color
将 env_example.txt 复制到 .env
修改配置信息以匹配 Joern 服务器启动配置
运行测试连接:
修改 test_mcp_client.py 中的信息,确认 Joern 服务器运行正常
uv run test_mcp_client.py
正在测试 MCP 服务器...
==================================================
测试服务器连接...
[04/16/25 20:38:54] 信息 处理类型为 CallToolRequest 的请求 server.py:534
连接测试结果:成功连接到 Joern MCP,Joern 服务器版本是 XXX
配置 MCP 服务器
在 cline 中配置 MCP 服务器,参考 sample_cline_mcp_settings.json。
使用 MCP 服务器
向大型语言模型提问,参考 prompts_en.md
.env 文件用于存储环境变量.gitignore 文件定义了 Git 版本控制忽略的文件pyproject.toml 定义了项目的 Python 配置server_tools.sc 中实现,在 server_tools.py 中添加定义,并在 test_mcp_client.py 中添加测试欢迎提交 Issue 和 Pull Request 来帮助改进项目。
欢迎添加更多工具。