Joern MCP 服务器
为 Joern 提供的简单 MCP 服务器。
项目介绍
该项目是一个基于 Joern 的 MCP Server,提供一系列功能帮助开发人员进行代码审查和安全分析。
环境要求
- Python >= 3.10 (默认 3.12) & uv
- 乔恩
安装步骤
- 本地克隆项目:
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 Server main program
├── test_mcp_client.py # Test program for joern server and mcp tool
├── test_sc_tools.py # Direct test program for sc tools
├── common_tools.py # Common utility functions
├── server_tools.py # Server utility functions
├── server_tools.sc # Scala implementation of server utility functions
├── server_tools_source.sc # Scala implementation of server utility functions,use sourceCode to get the source code of method
├── requirements.txt # Python dependency file
├── sample_cline_mcp_settings.json # Sample cline mcp configuration file
└── env_example.txt # Environment variables example file
用法
- 启动 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
Or
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
- 将env_example.txt复制到.env修改配置信息,以匹配joern服务器启动配置
- 运行测试连接:修改
test_mcp_client.py
中的信息,确认joern服务器正常运行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
- 配置 MCP 服务器 在 cline 中配置 mcp 服务器,参考
sample_cline_mcp_settings.json
。 - 使用 MCP 服务器向大型语言模型提问,参考
prompts_en.md
开发说明
.env
文件用于存储环境变量.gitignore
文件定义 Git 版本控制忽略的文件pyproject.toml
定义项目的 Python 配置- MCP工具开发
- 在
server_tools.sc
中实现,在server_tools.py
中添加定义,并在test_mcp_client.py
中添加测试
贡献指南
欢迎提交问题和拉取请求以帮助改进项目。
欢迎添加更多工具。
参考
https://github.com/flankerhqd/jebmcp
https://docs.joern.io/server/
https://docs.joern.io/interpreter/