项目简介
这是一个基于 Model Context Protocol (MCP) 构建的服务器,其主要目的是将开源静态应用安全测试 (SAST) 工具 Artemis 的能力暴露给支持 MCP 的 LLM 客户端。通过实现标准的 MCP 接口,LLM 可以调用服务器提供的工具进行源代码安全扫描,并获取扫描结果。
主要功能点
- 源代码安全扫描: 利用 Artemis 工具对指定的源代码目录进行全面的安全漏洞扫描。
- 编译构建: 调用 Artemis 的构建功能,根据 'build.properties' 文件编译项目并生成代码语义数据库,这是进行扫描的前提。
- 漏洞列表获取: 枚举扫描报告中发现的所有漏洞或特定类型的漏洞,提供漏洞名称、插件名、等级和描述等信息。
- 扫描概览: 提供扫描结果的汇总信息,包括漏洞总数和按类型分类的漏洞数量。
安装步骤
- 克隆仓库:
git clone https://github.com/zsdlove/artemis-mcp-server.git cd artemis-mcp-server - 安装依赖: 该服务器依赖 'fastmcp' 库。请确保您的 Python 环境已安装。
# 可能需要安装 fastmcp (根据项目实际依赖情况) pip install fastmcp # 其他潜在依赖(如 subprocess, requests, logging, argparse)通常是Python标准库,无需额外安装 - 获取 Artemis 工具: 将 Artemis 的可执行 Jar 包 ('Artemis.jar') 和规则文件 ('Checker.xml') 放置在服务器代码期望的位置(根据 'config.py' 中的 'artemis_path' 和 'rule_path' 配置,默认可能在项目目录下的 'artemis-mcp-server/artemis-scanner/' 目录内)。
- 配置 Artemis 构建: 在待扫描的项目源代码的根目录下,需要创建或确保存在一个 'build.properties' 文件,用于指导 Artemis 如何编译项目。文件中至少需要配置 'java_home' (Java安装路径) 和 'build_cmd' (项目构建命令,如 Maven 或 Gradle 命令)。
服务器配置 (供 MCP 客户端使用)
MCP 客户端需要知道如何启动和连接到此服务器。根据仓库信息,客户端需要配置以下信息:
- 服务器名称: 例如 'artemis-mcp-server' (这是一个标识符,客户端可自行命名)
- 启动命令 (Command): 用于启动服务器进程的可执行命令。 'python3 -m artemis_mcp_server'
- 启动参数 (Args): 启动命令所需的参数。
'-s <host> -p <port> [-r <rule_path>]'
- '-s <host>': 指定服务器监听的 IP 地址或主机名。
- '-p <port>': 指定服务器监听的端口号。
- '-r <rule_path>': (可选)指定 Artemis 规则文件的路径,如果未指定,则使用默认配置中的路径。
- 传输协议 (TransportType): 服务器使用的通信协议。 'sse' (Server-Sent Events)
- 连接地址模板 (URL Pattern): 客户端连接服务器时使用的 URL 格式。 'http://<host>:<port>/sse' (根据您启动服务器时指定的 host 和 port 填写)
注意: 客户端配置中可能还包含 'autoApprove' (自动批准可调用的工具列表) 和 'timeout' (请求超时时间) 等选项,具体取决于客户端实现。
基本使用方法 (通过 LLM 客户端)
- 确保服务器已启动并按照上述配置信息在客户端中正确 등록。
- 用户可以通过 LLM 客户端与此服务器交互,请求执行以下操作:
- 调用 'scan' 工具,并提供待分析的源代码路径 ('path') 和项目名称 ('project_name')。服务器会先尝试构建项目,然后进行扫描,并返回扫描结果概览和报告路径。
- 获取 'scan' 返回的报告路径后,可以调用 'list_all_flaws' 或 'list_target_vuln' 工具,提供报告路径 ('report_path') 和(如果是 'list_target_vuln')漏洞类型 ('vuln_type'),以获取详细的漏洞列表。
信息
分类
开发者工具