JasminGuberinic/code-security-mcp

GitHub: JasminGuberinic/code-security-mcp

面向 AI 编程 agent 的代码安全 MCP 服务器,通过原生静态分析工具为 Kotlin、Java 和 Python 提供实时的安全扫描、diff 审查和安全编码模式查询。

Stars: 0 | Forks: 0

# code-security-mcp [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/JasminGuberinic/code-security-mcp/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/) **一个专为 AI 编程 agent 设计的安全 [MCP](https://modelcontextprotocol.io) 服务器。** 它让 Claude Code、Cursor 等 agent 在**编写代码时实时获取真实的安全发现, 而不是在编写之后** —— 并且每种语言都由其**最佳的原生安全工具**进行分析, 而不是使用一个通用扫描器敷衍了事。 ## 为什么需要 通用的助手和多语言扫描器对框架规范缺乏深入理解—— 它们不知道 `@GetMapping` 缺失了 `@PreAuthorize`,不知道 WebClient 信任了所有证书,也不知道 Vert.x 的 cookie 没有设置 `HttpOnly`。本服务器 封装了一个**包含 216 条规则且具备框架感知能力的分析器**(即 [`kotlin-security-scanner`](https://github.com/JasminGuberinic/kotlin-security-scanner) detekt 规则集),并通过三个工具将其提供给 agent。 **设计原则:** 每种语言都由其**最佳的原生安全分析器**处理——自动 路由——绝不依赖单一且最低标准的通用扫描器。 ## 支持语言 | 语言 | 分析器 | 分析对象 | |----------|----------|----------| | **Kotlin** | detekt + 包含 216 条规则且具备框架感知能力的规则集 | 源码 (`.kt`, `.kts`) | | **Java** | SpotBugs + FindSecBugs | 编译后的字节码 —— 指向**项目根目录**(它会自动寻找 `build/classes`、`target/classes` 等)、classes 目录或 `.jar` 文件(需先构建) | | **Python** | Bandit | 源码 (`.py`) —— 无需构建,只需 `pip install` | ## 工具 | 工具 | 功能说明 | |------|--------------| | `security_scan(path)` | 扫描文件/目录(支持 Kotlin、Java 或 Python)并返回所有安全发现(规则、代码行号、严重程度、CWE)。 | | `review_diff(diff)` | 审查 unified diff,并仅标记该更改*引入*的问题 —— 可用作提交前的自我检查。 | | `secure_pattern(task, framework?)` | 获取执行高风险任务前经过审查的安全方式 —— *在编写代码之前*。 | 对于 Kotlin,`security_scan` 仅返回**安全**发现 —— detekt 内置的样式/复杂度规则已被关闭,因此 agent 获取到的是有效信号,而非 噪音。 ### 示例 ``` // secure_pattern(task = "create a session cookie", framework = "vertx") → CWE-614 val cookie = Cookie.cookie("session", token) .setSecure(true) // only sent over HTTPS .setHttpOnly(true) // hidden from JavaScript .setSameSite(CookieSameSite.STRICT) response.addCookie(cookie) ``` ## 架构 简洁的六边形架构(端口与适配器)。依赖向内指向;领域模型对 detekt 或 MCP 一无所知。 ``` server.py MCP surface + composition root (knows MCP) │ application/ use cases: scan / review_diff / secure_pattern │ domain/ Finding, ScanResult, ports (pure vocabulary) ↑ implemented by adapters/ DetektAnalyzer, JavaAnalyzer, RoutingAnalyzer, SARIF & diff parsers, pattern catalog ``` `RoutingAnalyzer` 会将每个目标发送到支持它的分析器,因此 用例对“单语言”和“多语言”的处理方式完全相同。添加一种语言只需 一个新的、实现相同 `LanguageAnalyzer` 端口的适配器 —— 领域模型和用例 无需更改。 ## 环境要求 - Python 3.11+ - Kotlin: JDK + detekt CLI jar + 规则集 jar(s) - Java: JDK + SpotBugs jar + FindSecBugs 插件 jar - Python: Bandit (`pip install "code-security-mcp[python]"`) —— 无需 JDK,无需 jar 包 每个分析器都是可选的,并且可以独立启用 —— 你只需配置 所需的语言即可。(只要安装了 Bandit,Python 分析器就会自动启用。) ## 配置 服务器通过环境变量来定位其工具: | 变量 | 含义 | |----------|---------| | `KSM_JAVA` | `java` 可执行文件的路径(共享) | | `KSM_DETEKT_CLI_JAR` | Kotlin: detekt CLI (`-all`) jar | | `KSM_PLUGIN_JARS` | Kotlin: 逗号分隔的规则集 jar(s) | | `KSM_DETEKT_CONFIG` | Kotlin: _(可选)_ `detekt.yml` 的路径 | | `KSM_SPOTBUGS_JAR` | Java: SpotBugs 引擎 jar | | `KSM_FINDSECBUGS_JARS` | Java: 逗号分隔的插件 jar(s) (FindSecBugs) | | `KSM_JAVA_AUXCLASSPATH` | Java: _(可选)_ 逗号分隔的依赖 jar/目录,用于更精确的分析 | Python 无需任何变量 —— 安装 Bandit 后即会自动使用。 ## 配合 Claude Code 使用 ``` claude mcp add code-security -s user \ -e KSM_JAVA=/path/to/java \ -e KSM_DETEKT_CLI_JAR=/path/to/detekt-cli--all.jar \ -e KSM_PLUGIN_JARS=/path/to/scanner-core.jar,/path/to/scanner-spring-boot.jar,... \ -- /path/to/.venv/bin/code-security-mcp ``` 然后向 agent 发送指令,例如 _“对 src/Main.kt 运行 security_scan”_ 或 _“对我暂存的更改运行 review_diff”_。 ## 开发说明 ``` python3 -m venv .venv .venv/bin/pip install -e ".[dev]" .venv/bin/pytest ``` 测试套件是完全自包含的 —— 它使用模拟分析器和手工构建的 SARIF / diff / Bandit-JSON 固定测试数据,因此无需任何外部分析器(JDK、detekt、SpotBugs 或 Bandit)即可运行。 ## 路线图 每一种新语言都将以**原生的、具备框架感知能力**的分析器适配器形式加入 (绝不使用通用的多语言扫描器): - ✅ **Kotlin** —— detekt + 包含 216 条规则且具备框架感知能力的规则集。 - ✅ **Java** —— SpotBugs + FindSecBugs。 - ✅ **Python** —— Bandit。 - **C#** —— 通过 **Roslyn** 分析器实现。 - 零配置:自动解析 JVM 分析器的运行时和规则集。 ## 许可证 MIT —— 详见 [LICENSE](LICENSE)。 关键词:MCP server, Model Context Protocol, Kotlin security, JVM security, SAST, static analysis, detekt, Spring Security, AI coding agent, Claude Code, Cursor, secure coding.
标签:AI编程助手, JS文件枚举, Kotlin, MCP Server, Python, 代码安全审计, 无后门, 逆向工具, 静态代码扫描