JasminGuberinic/code-security-mcp
GitHub: JasminGuberinic/code-security-mcp
面向 AI 编程 agent 的代码安全 MCP 服务器,通过原生静态分析工具为 Kotlin、Java 和 Python 提供实时的安全扫描、diff 审查和安全编码模式查询。
Stars: 0 | Forks: 0
# code-security-mcp
[](https://github.com/JasminGuberinic/code-security-mcp/actions/workflows/ci.yml)
[](LICENSE)
[](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, 代码安全审计, 无后门, 逆向工具, 静态代码扫描