SonarLink MCP服务器
一个模型上下文协议(MCP)服务器,使用SonarLink的独立SLOOP后端为Claude Desktop和其他MCP客户端提供企业级代码分析。
 ](https://nodejs.org/)
特性
- 🔍 实时代码分析 -检测bug、代码异味和安全漏洞
- 🚀 快速和独立 -无需IDE或SonarQube服务器
- 📦 多种语言 -JavaScript、TypeScript、Python(265+JS规则)
- 💾 会话存储 -存储在内存中的多回合对话结果
- 🔧 快速修复 -针对常见问题的自动建议
- 🎯 批次分析 -高效分析多个文件
快速开始
先决条件
- Node.js 22或更高版本
- Claude Desktop(或任何MCP客户端)
安装
无需安装!使用 npx 直接运行:
npx @nielspeter/sonarlint-mcp-serverSLOOP后端(约70MB)在首次运行时会自动下载。
来源(用于开发):
git clone https://github.com/nielspeter/sonarlint-mcp-server.git
cd sonarlint-mcp-server
npm install # Auto-downloads SLOOP backend (~70MB)
npm run build使用Claude代码进行配置
使用Claude CLI添加MCP服务器:
claude mcp add --transport stdio sonarlint -- npx -y @nielspeter/sonarlint-mcp-server这将自动更新您的Claude Code配置。无需重新启动!
使用Claude Desktop进行配置
添加到您的 claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"sonarlint": {
"command": "npx",
"args": ["-y", "@nielspeter/sonarlint-mcp-server"]
}
}
}重新启动Claude Desktop以应用更改。
规则配置
通过创建 sonarlint.json 在项目根目录中:
{
"rules": {
"typescript:S3776": {
"level": "on",
"parameters": {
"threshold": "20"
}
},
"javascript:S1481": {
"level": "off"
}
}
}level:"on"(默认)或"off"启用/禁用规则parameters:覆盖规则阈值和设置(请参见 可配置规则)- 后备方案:如果没有
sonarlint.json发现,.sonarlint/settings.json已选中(IDE约定)
复制 sonarlint.example.json 从这个回购开始。使用 list_rules 以发现可用规则及其可配置参数。
用法
配置后,Claude可以分析您的代码:
Analyze my JavaScript file for code quality issues: /path/to/file.jsCheck these files for bugs: src/app.ts, src/utils.tsAnalyze this code snippet:
function process(data) {
var result = data; // Issues with 'var'
return result;
}可用工具
| 工具 | 说明 |
|---|---|
check_quality | 检查文件是否存在代码质量问题 |
check_files | 在一次通话中检查多个文件 |
check_code | 检查代码片段(不需要磁盘上的文件) |
fix_issue | 自动修复一个特定问题 |
fix_all_issues | 自动修复文件中的所有可修复问题 |
list_rules | 列出所有活动代码质量规则 |
health_check | 检查服务器状态和诊断 |
示例分析输出
{
file: "/path/to/file.js",
language: "javascript",
issues: [
{
line: 4,
column: 2,
severity: "MAJOR",
rule: "javascript:S3504",
message: "Unexpected var, use let or const instead.",
quickFix: {
message: "Replace with 'const'",
edits: [...]
}
}
],
summary: {
total: 5,
critical: 0,
major: 3,
minor: 2
}
}支持的语言
| 语言 | 扩展 | 规则 |
|---|---|---|
| JavaScript | .js, .jsx, .mjs, .cjs | 265 |
| TypeScript | .ts, .tsx | 265 |
python .py | ~100 |
建筑
Claude Desktop
↓ MCP Protocol (stdio)
SonarLint MCP Server (this project)
↓ JSON-RPC
SLOOP Backend (SonarLint Local Operations)
↓ Plugin API
Language Analyzers (JS/TS, Python)服务器使用SonarLink的独立SLOOP后端,具有:
- 版本: 10.32.0.82302(与WebStorm兼容)
- 捆绑JRE: Java 17
- 双向RPC: 已实现客户端请求处理程序
- 会话存储: 存储在内存中的多回合对话结果
SLOOP集成:范围生命周期
SLOOP需要特定的初始化序列。弄错了会导致分析挂起:
- 预注册文件 --将文件DTO存储在
scopeFiles在创建范围之前绘制地图。SLOOP呼叫listFiles在作用域创建期间同步,因此文件必须已经可用。 - 创建范围 --发送
addConfigurationScope通知SLOOP。 - 等待准备就绪 --SLOOP发送
didChangeAnalysisReadiness当示波器准备就绪时。在此之前的分析请求将自动失败。 - 分析 --呼叫
analyzeFilesAndTrack与文件。
关键设计决策:
- 中没有目录扫描
listFiles--仅返回请求分析的特定文件。扫描项目根目录返回了500多个真实项目的文件,并导致了数分钟的挂起。 getBaseDir返回项目根 --通过检测package.json,.git等等。SLOOP将此用于.gitignore匹配和文件排除模式。ideRelativePath相对于项目根 --斯洛普WildcardPattern.match要求这样;空值会导致NPE。
发展
# Install dependencies (auto-downloads backend)
npm install
# Build
npm run build
# Run tests
npm test
# Watch mode (auto-rebuild)
npm run dev
# Inspect with MCP Inspector
npm run inspect测试
# Run test suite
npm test
# Run with UI
npm run test:ui
# Run with coverage
npm run test:coverage测试验证:
- SLOOP桥接功能
- 文件和内容分析
- JavaScript和Python插件检测
- 快速修复支持
- 错误处理
文档
- 设置.md -详细的安装指南
- 故障排除.md -常见问题和解决方案
- docs/可配置规则.md -具有参数和默认值的所有84个可配置规则
- docs/SLOOP_RPC_PROTOCOL.md -完整的RPC协议文档
- docs/TEST.md -测试指南
技术亮点
该项目展示了几个关键技术成果:
- 独立SLOOP -SonarLink的SLOOP后端首次被记录为独立使用
- 双向RPC -完成客户端请求处理程序的实现
- MCP集成 -使用资源实现完整的模型上下文协议
- 会话管理 -多回合对话的结果存储
- 生产就绪 -全面的测试、错误处理和监控
关键实施细节
对于以编程方式使用SLOOP的任何人:
listFiles必须返回ClientFileDto包含文件内容(不仅仅是URI)isUserDefined: true是强制性的(SLOOP会过滤掉错误值)bundlePath应该是父目录(SLOOP附加/package/bin/server.cjs)- 客户端必须实现4个请求处理程序(listFiles、getBaseDir等)
backendCapabilities正确初始化所需
为什么采用这种方法?
优势
- ✅ 无IDE依赖性-完全独立运行
- ✅ API完全访问-所有SLOOP服务都可用
- ✅ 更好的控制-根据特定需求进行配置
- ✅ 更可靠-直接过程通信
- ✅ 支持CI/CD-可以在自动化环境中运行
- ✅ 更快-无IDE开销
与IDE集成的比较
我们最初研究了连接到IDE服务器(WebStorm端口64120),但发现:
- IDE服务器仅适用于SonarQube服务器/云的“在IDE中打开”
- API访问受限
- IDE必须正在运行
- 不适合程序化访问
相关项目
- SonarQube MCP服务器 -SonarQube服务器/云API的官方服务器
- 需要服务器设置的补充方法 - 该项目提供本地独立分析
贡献
欢迎投稿!需要改进的地方:
- 其他语言支持(Java、Go、PHP)
- 自定义规则开发
- 性能优化
- CI/CD集成
许可证
MIT许可证-请参阅 许可证
致谢
- SonarSource 用于构建SLOOP和SonarLink
- Anthropic 对于模型上下文协议
- 克劳德代码 为了促进这一发展
______________________________________________________________________
状态: ✅ 生产就绪-所有阶段都经过全面测试
