SonarQube
resmiSonarQube Sunucusu veya Cloud ile sorunsuz entegrasyon sağlar ve ajan bağlamı içinde doğrudan kod parçacıklarının analizine olanak tanır
SonarQube MCP ile neler yapabilirsiniz?
- Kod parçacıklarını analiz et — Asistanınızdan,
analyze_code_snippetaracılığıyla bir parçacık veya dosya üzerinde yerel kod analizi yapmasını isteyin; bağlam şişmesini önlemek için isteğe bağlı çalışma alanı bağlama desteğiyle. - Sorunları ara ve yönet — Asistanın SonarQube sorunlarını bulmasını, incelemesini ve güncellemesini sağlayın; salt okunur modda değilken durumlarını değiştirme dahil.
- Kalite kapılarını ve ölçümleri kontrol et — SonarQube projelerinizde kalite kapısı durumu, proje metrikleri, kapsama ve bağımlılık risklerini sorun.
- Güvenlik sıcak noktalarını incele — Asistanın kod tabanınızda işaretlenen güvenlik sıcak noktalarını aramasına ve üzerinden geçmesine izin verin.
- Projelere ve kurallara göz at — Asistanı, projeleri keşfetmek, desteklenen dilleri listelemek ve doğrudan SonarQube'den kodlama kurallarını aramak için kullanın.
Dokümantasyon
SonarQube MCP Sunucusu
SonarQube MCP Sunucusu, kod kalitesi ve güvenliği için SonarQube Server veya Cloud ile sorunsuz entegrasyon sağlayan bir Model Context Protocol (MCP) sunucusudur. Ayrıca, aracı bağlamında doğrudan kod parçacıklarının analizini de destekler.
Hızlı kurulum
Güvenlik en iyi uygulamaları
🔒 Önemli: SonarQube token'ınız hassas bir kimlik bilgisidir. Şu güvenlik uygulamalarına uyun:
CLI komutlarını kullanırken:
- Token'ları komut satırı argümanlarında sabit kodlamaktan kaçının – kabuk geçmişine kaydedilirler
- Ortam değişkenlerini kullanın – komutları çalıştırmadan önce token'ları ortam değişkenlerine ayarlayın
Yapılandırma dosyalarını kullanırken:
- Token'ları asla sürüm kontrolüne göndermeyin
- Mümkünse yapılandırma dosyalarında ortam değişkeni ikamesini kullanın
🚀 Yapılandırmanızı oluşturun
Başlamanın en hızlı yolu SonarQube MCP Sunucusu Yapılandırma Oluşturucu – tercih ettiğiniz AI aracı istemcisi için kullanıma hazır bir yapılandırma üreten etkileşimli bir araçtır.
Manuel kurulum
Kendiniz yapılandırmayı tercih ediyorsanız, en basit yöntem sonarsource/sonarqube-mcp konteyner görüntümüzü kullanmaktır. Otomatik güncellemeler için sonarsource/sonarqube-mcp kullanın (--pull=always ile) veya tekrarlanabilir dağıtımlar için bir sürüm etiketine sabitleyin (örn. sonarsource/sonarqube-mcp:1.19.0.2785). Yerel olarak oluşturmak istiyorsanız aşağıyı okuyun.
Not: Aşağıdaki örnekler
dockerkullanırken, OCI uyumlu herhangi bir konteyner çalışma zamanı çalışır (örn. Podman, nerdctl).dockeröğesini tercih ettiğiniz araçla değiştirmeniz yeterlidir.
Antigravity
SonarQube MCP Sunucusu, Antigravity MCP Mağazası'nda mevcuttur. Şu talimatları izleyin:
- Aracı Yan Paneli'ni açın
- Sağ üstteki üç noktaya (...) tıklayın ve MCP Sunucuları'nı seçin
SonarQubearayın ve Kur'u seçin- Gerekli SonarQube Kullanıcı token'ını sağlayın. SonarQube Cloud için kuruluş anahtarınızı veya SonarQube Server'a bağlanıyorsanız SonarQube URL'sini de sağlayabilirsiniz.
SonarQube Cloud US için URL'yi https://sonarqube.us olarak ayarlayın.
Alternatif olarak, sunucuyu mcp_config.json aracılığıyla manuel olarak yapılandırabilirsiniz:
- SonarQube Cloud'a bağlanmak için:
Aracı Yan Paneli'nde üç noktaya (...) tıklayın -> MCP Mağazası -> MCP Sunucularını Yönet -> Ham yapılandırmayı görüntüle ve aşağıdakini ekleyin:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<YOUR_TOKEN>",
"SONARQUBE_ORG": "<YOUR_ORG>"
}
}
}
}
SonarQube Cloud US için, env bölümüne "SONARQUBE_URL": "https://sonarqube.us" ve args dizisine "-e", "SONARQUBE_URL" öğesini manuel olarak ekleyin.
- SonarQube Server'a bağlanmak için:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
"SONARQUBE_URL": "<YOUR_SERVER_URL>"
}
}
}
}
Claude Code
- SonarQube Cloud'a bağlanmak için:
claude mcp add sonarqube \
--env SONARQUBE_TOKEN=$SONAR_TOKEN \
--env SONARQUBE_ORG=$SONAR_ORG \
-- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp
SonarQube Cloud US için, komuta --env SONARQUBE_URL=https://sonarqube.us ekleyin.
- SonarQube Server'a bağlanmak için:
claude mcp add sonarqube \
--env SONARQUBE_TOKEN=$SONAR_USER_TOKEN \
--env SONARQUBE_URL=$SONAR_URL \
-- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_URL sonarsource/sonarqube-mcp
Codex CLI
~/.codex/config.toml konumundaki yapılandırma dosyasını manuel olarak düzenleyin ve aşağıdaki yapılandırmayı ekleyin:
- SonarQube Cloud'a bağlanmak için:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_USER_TOKEN>", "SONARQUBE_ORG" = "<YOUR_ORG>" }
SonarQube Cloud US için, env bölümüne "SONARQUBE_URL" = "https://sonarqube.us" ve args dizisine "-e", "SONARQUBE_URL" öğesini ekleyin.
- SonarQube Server'a bağlanmak için:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_TOKEN>", "SONARQUBE_URL" = "<YOUR_SERVER_URL>" }
Cursor
- SonarQube Cloud'a bağlanmak için:
SonarQube Cloud US için, kurulumdan sonra MCP yapılandırmanızdaki env bölümüne "SONARQUBE_URL": "https://sonarqube.us" öğesini manuel olarak ekleyin.
- SonarQube Server'a bağlanmak için:
Gemini CLI
Not: Gemini CLI uzantısı sonarqube-agent-plugins deposuna taşınmıştır. Bundan sonra lütfen oradan kurun.
MCP sunucu uzantımızı aşağıdaki komutu kullanarak kurabilirsiniz:
gemini extensions install https://github.com/SonarSource/sonarqube-agent-plugins
Gemini'yi başlatmadan önce gerekli ortam değişkenlerini ayarlamanız gerekecektir:
Gerekli Ortam Değişkenleri:
-
SonarQube Cloud için:
SONARQUBE_TOKEN- SonarQube Cloud token'ınızSONARQUBE_ORG- Kuruluş anahtarınızSONARQUBE_URL- (İsteğe bağlı) SonarQube Cloud US içinhttps://sonarqube.usolarak ayarlayın
-
SonarQube Server için:
SONARQUBE_TOKEN- SonarQube Server KULLANICI token'ınızSONARQUBE_URL- SonarQube Server URL'niz
Kurulduktan sonra uzantı <home>/.gemini/extensions/sonarqube/gemini-extension.json altına kurulacaktır.
GitHub Copilot CLI
Copilot CLI'yi başlattıktan sonra, SonarQube MCP sunucusunu eklemek için aşağıdaki komutu çalıştırın:
/mcp add
MCP sunucusu hakkında farklı bilgiler sağlamanız gerekecek, alanlar arasında gezinmek için sekmeyi kullanabilirsiniz.
- SonarQube Cloud'a bağlanmak için:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_ORG, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_TOKEN>,SONARQUBE_ORG=<YOUR_ORG>
Tools: *
SonarQube Cloud US için, Argümanlara -e, SONARQUBE_URL ve Ortam Değişkenlerine SONARQUBE_URL=https://sonarqube.us ekleyin.
- SonarQube Server'a bağlanmak için:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_URL, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_USER_TOKEN>,SONARQUBE_URL=<YOUR_SERVER_URL>
Tools: *
Yapılandırma dosyası ~/.copilot/mcp-config.json konumunda bulunur.
GitHub Copilot kodlama aracısı
GitHub Copilot kodlama aracısı, SonarQube MCP sunucusunu doğrudan CI/CD'nizde kullanabilir.
Sırları Copilot ortamınıza eklemek için Copilot belgelerini izleyin. Yalnızca adları COPILOT_MCP_ önekiyle başlayan sırlar MCP yapılandırmanızda kullanılabilir olacaktır.
GitHub deponuzda, Ayarlar -> Copilot -> Kodlama aracısı altına gidin ve MCP yapılandırma bölümüne aşağıdaki yapılandırmayı ekleyin:
- SonarQube Cloud'a bağlanmak için:
{
"mcpServers": {
"sonarqube": {
"type": "local",
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"--rm",
"-i",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_TOKEN",
"SONARQUBE_ORG": "COPILOT_MCP_SONARQUBE_ORG"
},
"tools": ["*"]
}
}
}
SonarQube Cloud US için, args dizisine "-e", "SONARQUBE_URL" ve env bölümüne "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" ekleyin, ardından COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us sırrını ayarlayın.
- SonarQube Server'a bağlanmak için:
{
"mcpServers": {
"sonarqube": {
"type": "local",
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"--rm",
"-i",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_USER_TOKEN",
"SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL"
},
"tools": ["*"]
}
}
}
Kiro
Çalışma dizininizde bir .kiro/settings/mcp.json dosyası oluşturun (veya zaten varsa düzenleyin), aşağıdaki yapılandırmayı ekleyin:
- SonarQube Cloud'a bağlanmak için:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<YOUR_TOKEN>",
"SONARQUBE_ORG": "<YOUR_ORG>"
},
"disabled": false,
"autoApprove": []
}
}
}
SonarQube Cloud US için, args dizisine "-e", "SONARQUBE_URL" ve env bölümüne "SONARQUBE_URL": "https://sonarqube.us" ekleyin.
- SonarQube Server'a bağlanmak için:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
"SONARQUBE_URL": "<YOUR_SERVER_URL>"
},
"disabled": false,
"autoApprove": []
}
}
}
VS Code
VS Code içinde kurulum sürecini basitleştirmek için aşağıdaki düğmeleri kullanabilirsiniz.
SonarQube Cloud US için, kurulumdan sonra MCP yapılandırmanızdaki env bölümüne "SONARQUBE_URL": "https://sonarqube.us" öğesini manuel olarak ekleyin.
Windsurf
SonarQube MCP Sunucusu bir Windsurf eklentisi olarak mevcuttur. Şu talimatları izleyin:
- Windsurf Ayarlar > Cascade > MCP Sunucuları'nı açın ve MCP Pazarını Aç'ı seçin
- Cascade MCP Pazarı'nda
sonarqubearayın - SonarQube MCP Sunucusu'nu seçin ve Kur'u seçin
- Gerekli SonarQube Kullanıcı token'ını ekleyin. Ardından SonarQube Cloud'a bağlanmak istiyorsanız kuruluş anahtarını veya SonarQube Server veya Community Build'e bağlanmak istiyorsanız SonarQube URL'sini ekleyin.
SonarQube Cloud US için URL'yi https://sonarqube.us olarak ayarlayın.
Zed
Zed'de Uzantılar görünümüne gidin ve SonarQube MCP Sunucusu'nu arayın. Uzantıyı kurarken, gerekli ortam değişkenlerini sağlamanız istenecektir:
- SonarQube Cloud kullanırken:
{
"sonarqube_token": "YOUR_SONARQUBE_TOKEN",
"sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
"docker_path": "DOCKER_PATH"
}
SonarQube Cloud US için, yapılandırmaya "sonarqube_url": "https://sonarqube.us" ekleyin.
- SonarQube Server kullanırken:
{
"sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
"sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
"docker_path": "DOCKER_PATH"
}
docker_path bir docker çalıştırılabilir dosyasının yoludur. Örnekler:
Linux/macOS: /usr/bin/docker veya /usr/local/bin/docker
Windows: C:\Program Files\Docker\Docker\resources\bin\docker.exe
💡 İpucu: En güncel özelliklere ve düzeltmelere sahip olduğunuzdan emin olmak için en son görüntüyü düzenli olarak çekmenizi veya sorun bildirmeden önce çekmenizi öneririz.
Manuel kurulum
SonarQube MCP sunucusunu, MCP sunucuları yapılandırma dosyasına aşağıdaki parçacığı kopyalayarak manuel olarak kurabilirsiniz:
- SonarQube Cloud'a bağlanmak için:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>"
}
}
}
- SonarQube Server'a bağlanmak için:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
SonarQube for IDE ile entegrasyon
SonarQube MCP Sunucusu, geliştirme iş akışınızı daha da geliştirmek için SonarQube for IDE ile entegre olabilir ve IDE'nizde doğrudan daha iyi kod analizi ve içgörüler sağlar.
Yapılandırma
SonarQube for IDE kullanırken, SONARQUBE_IDE_PORT ortam değişkeni doğru bağlantı noktası numarasıyla ayarlanmalıdır. SonarQube for VS Code, doğru bağlantı noktası yapılandırmasını otomatik olarak ayarlayan bir Hızlı Kur düğmesi içerir.
Örneğin, SonarQube Cloud ile:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"-e",
"SONARQUBE_IDE_PORT",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>",
"SONARQUBE_IDE_PORT": "<64120-64130>"
}
}
}
MCP sunucusunu Linux'ta bir konteynerde çalıştırırken, konteyner localhost'ta çalışan SonarQube for IDE gömülü sunucusuna erişemez. Konteynerin SonarQube for IDE sunucusuna bağlanmasına izin vermek için konteyner çalıştırma komutunuza
--network=hostseçeneğini ekleyin.
Yapılandırma
Ortamınıza bağlı olarak, belirli ortam değişkenlerini sağlamalısınız.
Temel
MCP Sunucusunu çalıştırırken aşağıdaki değişkeni eklemelisiniz:
| Ortam değişkeni | Açıklama |
|---|---|
STORAGE_PATH | SonarQube MCP Sunucusunun dosyalarını saklayacağı yazılabilir bir dizine zorunlu mutlak yol (örn. oluşturma, güncelleme ve kalıcılık için), konteyner görüntüsü kullanılırken otomatik olarak sağlanır |
SONARQUBE_PROJECT_KEY | İsteğe bağlı varsayılan proje anahtarı. Ayarlandığında, proje anahtarı gerektiren tüm araçlar bu değeri otomatik olarak kullanır — projectKey parametresi şemalarından tamamen kaldırılır. Tek bir proje üzerinde çalışırken kullanışlıdır. |
SONARQUBE_IDE_PORT | SonarQube MCP Sunucusunu SonarQube for IDE ile bağlamak için kullanılan 64120 ile 64130 arasında isteğe bağlı bağlantı noktası numarası. |
SONARQUBE_DEBUG_ENABLED | true olarak ayarlandığında, hata ayıklama günlüğünü etkinleştirir. Hata ayıklama günlükleri hem günlük dosyasına hem de STDERR'e yazılır. Bağlantı veya yapılandırma sorunlarını gidermek için kullanışlıdır. Varsayılan: false. |
SONARQUBE_LOG_TO_FILE_DISABLED | true olarak ayarlandığında, günlüklerin diske yazılmasını tamamen devre dışı bırakır. STORAGE_PATH/logs/ altında hiçbir günlük dosyası oluşturulmaz. Dosya günlüğünün istenmediği konteynerleştirilmiş veya geçici ortamlarda kullanışlıdır. Varsayılan: false. |
Çalışma Alanı Bağlama (Bağlam Şişkinliğini Azaltma)
Varsayılan olarak, analyze_code_snippet analiz aracı, aracının tam dosya içeriğini bir fileContent argümanı olarak geçirmesini gerektirir. Büyük dosyalar veya bir oturumda birçok dosyayı analiz ederken, bu bağlam penceresi kullanımını ve maliyeti önemli ölçüde artırır.
Çözüm: Proje dizininizi kapsayıcıya /app/mcp-workspace konumunda bağlayın. Bu bağlama algılandığında, sunucu dosyaları doğrudan diskten proje-göreli filePath bağımsız değişkenini kullanarak okur — dosya içeriği asla aracı bağlamından geçmez.
{
"args": [
"run", "-i", "--rm", "--init", "--pull=always",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_ORG",
"-v", "/path/to/your/project:/app/mcp-workspace",
"sonarsource/sonarqube-mcp"
]
}
Bağlama etkin olduğunda:
- Kuruluşunuz buna yetkiliyse
run_advanced_code_analysiskullanılabilir hale gelir analyze_code_snippet:filePathgereklidir vefileContentkullanılmaz — sunucu dosyayı aynı şekilde çözer
Seçici Araç Seti Etkinleştirme
Varsayılan olarak, bağlam yükünü azaltmak için yalnızca önemli araç setleri etkinleştirilir. Gerektiğinde ek araç setlerini etkinleştirebilirsiniz.
| Ortam değişkeni | Açıklama |
|---|---|
SONARQUBE_TOOLSETS | Etkinleştirilecek araç setlerinin virgülle ayrılmış listesi. Ayarlanırsa, yalnızca bu araç setleri kullanılabilir olur. Ayarlanmazsa, varsayılan önemli araç setleri etkinleştirilir (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Not: projects araç seti her zaman etkindir çünkü diğer işlemler için proje anahtarlarını bulmak gerekir. Vortex bağlam araçları (eski adı: Context Augmentation/CAG) ve Vortex analiz araçları (eski adı: Advanced Analysis/A3S) yalnızca stdio modunda kullanılabilir ve tek bir birleşik kuruluş yetkisini paylaşır — bir kuruluşun her ikisini de kullanabilmesi için her ikisine de yetkili olması gerekir. SonarQube Server'da, stdio hem CAG hem de A3S hub'ları yetkiliyse Vortex bağlamını ve run_advanced_code_analysis listeler. Birleşik vortex araç seti anahtarını tercih edin. Eski cag ve analysis anahtarları hâlâ çalışır; vortex olmadan kullanıldıklarında bir başlangıç uyarısı ve sunucu talimatlarında bir kullanımdan kaldırma notu yayınlanır. Streamable HTTP modunda, istemciler bunu istek başına daha da daraltmak için bir SONARQUBE_TOOLSETS HTTP başlığı gönderebilir, ancak sunucunun başlatıldığı araç setlerinin ötesinde araç setlerini etkinleştiremez (aşağıdaki Streamable HTTP taşıma bölümüne bakın). |
SONARQUBE_READ_ONLY | true olarak ayarlandığında, tüm yazma işlemlerini (örneğin sorun durumunu değiştirme) devre dışı bırakan salt okunur modu etkinleştirir. Bu filtre, her ikisi de ayarlanmışsa SONARQUBE_TOOLSETS ile kümülatiftir. Varsayılan: false. Streamable HTTP modunda, istemciler tek tek istekleri salt okunur olarak daha da kısıtlamak için bir SONARQUBE_READ_ONLY HTTP başlığı gönderebilir, ancak sunucu düzeyindeki bir salt okunur kısıtlamasını kaldıramaz (aşağıdaki Streamable HTTP taşıma bölümüne bakın). |
Kullanılabilir Araç Setleri
| Araç Seti | Anahtar | Açıklama |
|---|---|---|
| Analiz | analysis | Kod analiz araçları (analyze_code_snippet aracılığıyla yerel analiz, analyze_file_list/Vortex analiz lehine kullanımdan kaldırıldı) |
| IDE | ide | SonarQube for IDE köprü araçları (dosya analizi, otomatik analiz geçişi) — şu anda analysis içine de dahildir |
| Sorunlar | issues | SonarQube sorunlarını arayın ve yönetin |
| Güvenlik Açıkları | security-hotspots | Güvenlik Açıklarını arayın ve inceleyin |
| Projeler | projects | SonarQube projelerine göz atın ve arayın |
| Kalite Kapıları | quality-gates | Kalite kapılarına ve durumlarına erişin |
| Kurallar | rules | SonarQube kurallarına göz atın ve arayın |
| Kaynaklar | sources | Kaynak koduna ve SCM bilgilerine erişin |
| Kopyalar | duplications | Projeler arasında kod kopyalarını bulun |
| Ölçümler | measures | Metrikleri ve ölçümleri alın (hem ölçüm hem de metrik araçlarını içerir) |
| Diller | languages | Desteklenen programlama dillerini listeleyin |
| Portföyler | portfolios | Portföyleri ve kuruluşları yönetin (Cloud ve Server) |
| Sistem | system | Sistem yönetim araçları (yalnızca Server) |
| Webhook'lar | webhooks | Webhook'ları yönetin |
| Bağımlılık Riskleri | dependency-risks | Bağımlılık risklerini ve güvenlik sorunlarını analiz edin (SCA) |
| Kapsam | coverage | Test kapsamı analizi ve iyileştirme araçları |
| Vortex Bağlam | cag | Vortex bağlam araçları — yalnızca stdio. vortex lehine kullanımdan kaldırıldı (eski ad: Context Augmentation/CAG) |
| Vortex | vortex | Birleşik, önerilen araç seti; Vortex bağlam ve Vortex analiz araçlarını tek bir ad altında sunar (yalnızca stdio; Cloud birleşik kuruluş yetkisi gerektirir; Server her iki hub'ın yetkili olmasını gerektirir) |
| Aracı Hazırlığı | agentic-readiness | Aracı Hazırlığı Değerlendirme araçları (SonarQube Cloud, kuruluş yetkisi gerektirir) |
Örnekler
Analiz, sorunlar ve kalite kapıları araç setlerini etkinleştirin (Docker ile SonarQube Cloud kullanarak):
docker run --init --pull=always -i --rm \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_ORG="<org>" \
-e SONARQUBE_TOOLSETS="analysis,issues,quality-gates" \
sonarsource/sonarqube-mcp
Not: projects araç seti her zaman otomatik olarak etkindir, bu nedenle SONARQUBE_TOOLSETS içine dahil etmeniz gerekmez.
Salt okunur modu etkinleştirin (Docker ile SonarQube Cloud kullanarak):
docker run --init --pull=always -i --rm \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_ORG="<org>" \
-e SONARQUBE_READ_ONLY="true" \
sonarsource/sonarqube-mcp
SonarQube Cloud
Tam işlevselliği etkinleştirmek için, sunucuyu başlatmadan önce aşağıdaki ortam değişkenleri ayarlanmalıdır:
| Ortam değişkeni | Açıklama | Gerekli |
|---|---|---|
SONARQUBE_TOKEN | SonarQube Cloud belirteciniz | Evet |
SONARQUBE_ORG | SonarQube Cloud kuruluş anahtarınız | Evet |
SONARQUBE_URL | Özel SonarQube Cloud URL'si (varsayılan https://sonarcloud.io). SonarQube Cloud US için kullanın: https://sonarqube.us | Hayır |
Örnekler:
- SonarQube Cloud: Yalnızca
SONARQUBE_TOKENveSONARQUBE_ORGgereklidir - SonarQube Cloud US:
SONARQUBE_TOKEN,SONARQUBE_ORGveSONARQUBE_URL=https://sonarqube.usayarlayın
SonarQube Server
| Ortam değişkeni | Açıklama | Gerekli |
|---|---|---|
SONARQUBE_TOKEN | SonarQube Server KULLANICI belirteciniz | Evet |
SONARQUBE_URL | SonarQube Server URL'niz | Evet |
Sürüm gereksinimi: SonarQube Server 2025.1 (SQS) veya 25.1 (SonarQube Community Build) veya sonrası gereklidir. Başlangıçta, MCP sunucusu bağlı örnek sürümünü okur ve çok eskiyse bir hata ile çıkar (örneğin, eski 9.x/10.x Server sürümleri ve Community Build 24.x desteklenmez). SonarQube Cloud bu kontrole tabi değildir.
⚠️ SonarQube Server'a bağlantı, USER türünde bir token gerektirir ve proje tokenları veya global tokenlar kullanılırsa düzgün çalışmaz.
💡 Yapılandırma İpucu (stdio modu):
SONARQUBE_ORGvarlığı, SonarQube Cloud'a mı yoksa Server'a mı bağlandığınızı belirler.SONARQUBE_ORGayarlanmışsa SonarQube Cloud kullanılır; aksi takdirde SonarQube Server kullanılır.
Taşıma Modları
MCP spesifikasyonu iki taşıma mekanizması tanımlar: Stdio ve Streamable HTTP. SonarQube MCP Sunucusu her ikisini de destekler:
| MCP taşıma | Sunucu modu | Tipik kullanım |
|---|---|---|
| Stdio | Varsayılan (SONARQUBE_TRANSPORT yok) | Sunucuyu alt işlem olarak başlatan yerel MCP istemcileri (Cursor, Claude Code, VS Code, vb.) |
| Streamable HTTP | SONARQUBE_TRANSPORT=http veya https | Uzak veya çok kullanıcılı dağıtımlar; istemciler /mcp adresine HTTP(S) üzerinden bağlanır (ör. kendi kendine barındırılan sunucu URL'si ile Windsurf) |
Not: Streamable HTTP, güncel MCP ağ taşımasıdır. Önceki MCP sürümlerindeki yalnızca SSE tabanlı eski HTTP taşıması kullanımdan kaldırılmıştır ve desteklenmez.
1. Stdio (Varsayılan - Yerel Geliştirme için Önerilir)
Yerel geliştirme ve tek kullanıcılı kurulumlar için önerilen moddur; çoğu MCP istemcisi tarafından kullanılır.
Örnek - SonarQube Cloud ile Docker:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<your-token>",
"SONARQUBE_ORG": "<your-org>"
}
}
}
}
2. HTTP (Streamable HTTP)
Şifrelenmemiş Streamable HTTP taşıması. Çok kullanıcılı dağıtımlar için bunun yerine HTTPS kullanın.
⚠️ Önerilmez: Yerel geliştirme için Stdio veya çok kullanıcılı üretim dağıtımları için HTTPS (Streamable HTTP) kullanın.
| Ortam değişkeni | Açıklama | Varsayılan |
|---|---|---|
SONARQUBE_TRANSPORT | Streamable HTTP taşımasını etkinleştirmek için http olarak ayarlayın | Ayarlı değil (stdio) |
SONARQUBE_HTTP_PORT | Bağlantı noktası numarası (1024-65535) | 8080 |
SONARQUBE_HTTP_HOST | Bağlanacak ana bilgisayar (güvenlik için varsayılan olarak localhost) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | CORS için izin verilen virgülle ayrılmış tarayıcı kaynakları (ör. https://my-app.example.com) | Ayarlı değil |
SONARQUBE_MCP_IN_CONTAINER | Bir kapsayıcı içinde çalışırken true olarak ayarlayın. Resmi Docker görüntüsü bunu otomatik ayarlar; diğer OCI çalışma zamanlarını (Podman, Kubernetes, Nomad, vb.) kullanırken kendiniz ayarlayın. | false |
Not: Streamable HTTP modunda (HTTP veya HTTPS), sunucu durumsuzdur — her istemci isteği, kullanıcının kendi SonarQube tokenını taşıyan bir Authorization: Bearer <token> başlığı içermelidir. SonarQube Cloud için kuruluş şu şekilde çözümlenir:
- Sunucu başlangıcında
SONARQUBE_ORGayarlanmışsa, tüm istekler o kuruluşa yönlendirilir. İstemciler birSONARQUBE_ORGbaşlığı göndermemelidir — gönderilirse hata oluşur. - Sunucu başlangıcında
SONARQUBE_ORGayarlanmamışsa, her istemci her istekte birSONARQUBE_ORGbaşlığı sağlamalıdır. İstemciler ayrıcaSONARQUBE_TOOLSETSve/veyaSONARQUBE_READ_ONLYbaşlıklarını sağlayarak istek başına görünür araçları daraltabilir; bunlar sunucu düzeyindeki yapılandırmanın üzerine ek filtreleme uygular — kapsamı yalnızca azaltabilir, asla genişletemez. İstekler arasında oturum durumu korunmaz.
Kullanımdan kaldırıldı:
SONARQUBE_TOKENistek başlığı geriye dönük uyumluluk için hâlâ kabul edilir, ancak gelecekteki bir sürümde kaldırılacaktır.Authorization: Bearer <token>öğesine geçin.
3. HTTPS (TLS üzerinden Streamable HTTP) (Çok Kullanıcılı Üretim Dağıtımları için Önerilir)
TLS şifrelemesiyle güvenli Streamable HTTP taşıması. SSL sertifikaları gerektirir.
✅ Üretim için Önerilir: MCP sunucusunu Streamable HTTP üzerinden birden çok kullanıcı için dağıtırken HTTPS kullanın. Sunucu, güvenlik için varsayılan olarak
127.0.0.1(localhost) adresine bağlanır.
| Ortam değişkeni | Açıklama | Varsayılan |
|---|---|---|
SONARQUBE_TRANSPORT | TLS üzerinden Streamable HTTP taşımasını etkinleştirmek için https olarak ayarlayın | Ayarlı değil (stdio) |
SONARQUBE_HTTP_PORT | Bağlantı noktası numarası (HTTPS için genellikle 8443) | 8080 |
SONARQUBE_HTTP_HOST | Bağlanacak ana bilgisayar (güvenlik için varsayılan olarak localhost) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | CORS için izin verilen virgülle ayrılmış tarayıcı kaynakları (ör. https://my-app.example.com) | Ayarlı değil |
SONARQUBE_MCP_IN_CONTAINER | Bir kapsayıcı içinde çalışırken true olarak ayarlayın. Resmi Docker görüntüsü bunu otomatik ayarlar; diğer OCI çalışma zamanlarını (Podman, Kubernetes, Nomad, vb.) kullanırken kendiniz ayarlayın. | false |
SSL Sertifika Yapılandırması (İsteğe Bağlı):
| Ortam değişkeni | Açıklama | Varsayılan |
|---|---|---|
SONARQUBE_HTTPS_KEYSTORE_PATH | Anahtar deposu dosyasının yolu (.p12 veya .jks) | /etc/ssl/mcp/keystore.p12 |
SONARQUBE_HTTPS_KEYSTORE_PASSWORD | Anahtar deposu parolası | sonarlint |
SONARQUBE_HTTPS_KEYSTORE_TYPE | Anahtar deposu türü (PKCS12 veya JKS) | PKCS12 |
Örnek - SonarQube Cloud ile Docker:
Not: Bir kapsayıcıda çalışırken, kapsayıcının tüm arabirimlerde dinlemesi ve çalışma zamanının bağlantı noktası eşlemesinin çalışması için
SONARQUBE_HTTP_HOST=0.0.0.0ayarlayın ve sunucuya bir kapsayıcı içinde olduğunu söylemek içinSONARQUBE_MCP_IN_CONTAINER=trueayarlayın. Resmi Docker görüntüsü ikincisini otomatik ayarlar; diğer OCI çalışma zamanlarını (Podman, Kubernetes, Nomad, vb.) kullanırken kendiniz ayarlayın. Ana bilgisayar tarafındaki bağlantı noktası bayrağı, sunucuya kapsayıcı dışından kimlerin erişebileceğini kontrol eder.SONARQUBE_HTTP_HOST=0.0.0.0yalnızca sunucunun kapsayıcı içinde nerede dinlediğini kontrol eder — tarayıcı CORS'u varsayılan olarak localhost kaynaklarına hâlâ izin verir.
Makinenizde yerel olarak çalışan bir sunucu için (yalnızca localhost'tan erişilebilir):
docker run --init --pull=always -p 127.0.0.1:8443:8443 \
-v $(pwd)/keystore.p12:/etc/ssl/mcp/keystore.p12:ro \
-e SONARQUBE_TRANSPORT=https \
-e SONARQUBE_HTTP_HOST=0.0.0.0 \
-e SONARQUBE_HTTP_PORT=8443 \
-e SONARQUBE_TOKEN="<init-token>" \
-e SONARQUBE_ORG="<your-org>" \
sonarsource/sonarqube-mcp
Ağdan erişilebilen bir sunucu için (uzak dağıtımlar):
docker run --init --pull=always -p 8443:8443 \
-v $(pwd)/keystore.p12:/etc/ssl/mcp/keystore.p12:ro \
-e SONARQUBE_TRANSPORT=https \
-e SONARQUBE_HTTP_HOST=0.0.0.0 \
-e SONARQUBE_HTTP_PORT=8443 \
-e SONARQUBE_TOKEN="<init-token>" \
-e SONARQUBE_ORG="<your-org>" \
sonarsource/sonarqube-mcp
İstemci Yapılandırması (SonarQube Cloud):
{
"mcpServers": {
"sonarqube-https": {
"url": "https://your-server:8443/mcp",
"headers": {
"Authorization": "Bearer <your-token>",
"SONARQUBE_ORG": "<your-org>",
"SONARQUBE_TOOLSETS": "issues,quality-gates",
"SONARQUBE_READ_ONLY": "true"
}
}
}
}
İstemci Yapılandırması (SonarQube Server):
{
"mcpServers": {
"sonarqube-https": {
"url": "https://your-server:8443/mcp",
"headers": {
"Authorization": "Bearer <your-token>",
"SONARQUBE_TOOLSETS": "issues,quality-gates",
"SONARQUBE_READ_ONLY": "true"
}
}
}
}
Not:
SONARQUBE_TOOLSETSveSONARQUBE_READ_ONLY, bu belirli istek için sunucu düzeyindeki araç setini daraltan isteğe bağlı istek başına başlıklardır. Yalnızca kapsamı azaltabilirler — sunucunun başlatıldığı kapsamın ötesinde araç setlerini etkinleştiremez veya kısıtlamaları kaldıramazlar.
Not: Yerel geliştirme için bunun yerine Stdio taşımasını kullanın (varsayılan). HTTPS Streamable HTTP, uygun SSL sertifikalarıyla çok kullanıcılı üretim dağıtımları için tasarlanmıştır.
Hizmet Uç Noktaları
Streamable HTTP modunda (http veya https) çalışırken, sunucu /mcp adresindeki MCP uç noktasına ek olarak birkaç kimlik doğrulamasız hizmet uç noktası sunar. Bunlar hizmetten hizmete kullanım (izleme, orkestrasyon, istemci uyumluluk kontrolleri) için tasarlanmıştır ve bir Authorization başlığı gerektirmez.
| Uç nokta | Yöntem | Açıklama | Örnek yanıt |
|---|---|---|---|
/health | GET | Canlılık yoklaması. Sunucu istekleri kabul etmeye başladığında boş gövdeli 200 OK döndürür. | (boş gövde) |
/info | GET | MCP sunucu sürümünü JSON olarak döndürür. Dağıtılan sunucu sürümünü doğrulamak için kullanışlıdır. | {"version":"1.16.0"} |
Bu uç noktalar Stdio taşımasıyla çalışırken kullanılamaz.
Özel Sertifikalar
SonarQube Server'ınız kendi kendine imzalanmış bir sertifika veya özel bir Sertifika Yetkilisi'nden (CA) bir sertifika kullanıyorsa, kapsayıcıya otomatik olarak yüklenecek özel sertifikalar ekleyebilirsiniz.
Yapılandırma
Birim Bağlama Kullanma
Kapsayıcıyı çalıştırırken sertifikalarınızı içeren bir dizin bağlayın:
docker run --init --pull=always -i --rm \
-v /path/to/your/certificates/:/usr/local/share/ca-certificates/:ro \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_URL="<url>" \
sonarsource/sonarqube-mcp
Desteklenen Sertifika Biçimleri
Kapsayıcı aşağıdaki sertifika biçimlerini destekler:
.crtdosyaları (PEM veya DER kodlu).pemdosyaları (PEM kodlu)
Sertifikalarla MCP Yapılandırması
Özel sertifikalar kullanırken, sertifikaları bağlamak için MCP yapılandırmanızı değiştirebilirsiniz:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-v",
"/path/to/your/certificates/:/usr/local/share/ca-certificates/:ro",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Not: Sunucuyu kapsayıcı yerine bir JAR'dan mı çalıştırıyorsunuz? Yukarıdaki birim bağlama, sertifikaları sunucunun da okuduğu kapsayıcının işletim sistemi güven deposuna yükler. İşletim sistemi güven deposunu kullanamıyorsanız — özellikle başvurulmayan Windows'ta — JVM'i CA sertifikasını tutan bir Java güven deposuna yönlendirin:
-Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>. Varsayılan güvenilir sertifikaların üzerine eklenir.
Proxy
SonarQube MCP Sunucusu, standart Java proxy sistem özellikleri aracılığıyla HTTP ve SOCKS5 proxy'lerini destekler.
Yapılandırma
HTTP/HTTPS Proxy
Java sistem özelliklerini kullanarak proxy ayarlarını yapılandırabilirsiniz. Bunlar ortam değişkenleri olarak ayarlanabilir veya JVM bağımsız değişkenleri olarak geçirilebilir.
Yaygın Proxy Özellikleri:
| Özellik | Açıklama | Örnek |
|---|---|---|
http.proxyHost | HTTP proxy ana bilgisayar adı | proxy.example.com |
http.proxyPort | HTTP proxy bağlantı noktası | 8080 |
https.proxyHost | HTTPS proxy ana bilgisayar adı | proxy.example.com |
https.proxyPort | HTTPS proxy bağlantı noktası | 8443 |
http.nonProxyHosts | Proxy'yi atlayan ana bilgisayarlar (boru ile ayrılmış) | localhost|127.0.0.1|*.internal.com |
HTTP/HTTPS Proxy Kimlik Doğrulaması:
| Özellik | Açıklama | Örnek |
|---|---|---|
http.proxyUser | HTTP proxy kullanıcı adı | myuser |
http.proxyPassword | HTTP proxy parolası | mypassword |
https.proxyUser | HTTPS proxy kullanıcı adı | myuser |
https.proxyPassword | HTTPS proxy parolası | mypassword |
SOCKS5 Proxy
SOCKS5 proxy'leri desteklenir.
| Özellik | Açıklama | Varsayılan | Örnek |
|---|---|---|---|
socksProxyHost | SOCKS5 proxy ana bilgisayar adı | — | localhost |
socksProxyPort | SOCKS5 proxy bağlantı noktası | 1080 | 1080 |
java.net.socks.username | SOCKS5 kullanıcı adı (kimlik doğrulama gerekiyorsa) | — | myuser |
java.net.socks.password | SOCKS5 parolası (kimlik doğrulama gerekiyorsa) | — | mypassword |
İstemci Sertifikası (Karşılıklı TLS)
SonQube Sunucunuz, TLS el sıkışması sırasında istemcilerin bir sertifika sunmasını gerektiriyorsa (karşılıklı TLS), kapsayıcıya bir PKCS12 anahtar deposu bağlayarak ve konumunu JAVA_OPTS aracılığıyla ileterek bunu sağlayabilirsiniz.
Yapılandırma
PKCS12 anahtar deposu kullanma
.p12 veya .pfx dosyanızı kapsayıcıya bağlayın ve anahtar deposu özellikleriyle JAVA_OPTS ortam değişkenini ayarlayın:
docker run --init --pull=always -i --rm \
-v /path/to/client.p12:/etc/ssl/mcp/client.p12:ro \
-e JAVA_OPTS="-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>" \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_URL="<url>" \
sonarsource/sonarqube-mcp
Not: Sertifika dosyası kapsayıcı işlemi tarafından okunabilir olmalıdır. Gerekirse izinleri kontrol edin ve düzeltin:
ls -la /path/to/client.p12 # -rw-r--r-- (644) veya daha geniş olup olmadığına bakın chmod 644 /path/to/client.p12 # kapsayıcı kullanıcısına okuma erişimi verin
Anahtar deposunda parola yoksa -Djavax.net.ssl.keyStorePassword öğesini atlayın. Burada kullanılan parolanın docker inspect veya işlem listesi aracılığıyla görülebileceğini unutmayın.
İstemci Sertifikası ile MCP Yapılandırması
{
"sonarqube": {
"command": "docker",
"args": [
"run", "--init", "--pull=always", "-i", "--rm",
"-v", "/path/to/client.p12:/etc/ssl/mcp/client.p12:ro",
"-e", "JAVA_OPTS",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"JAVA_OPTS": "-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Bağımsız JAR ile PKCS12 anahtar deposu kullanma
Sunucuyu bir JAR'dan çalıştırırken, -jar öğesinden önce anahtar deposu özelliklerini JVM bağımsız değişkenleri olarak iletin:
java \
-Djavax.net.ssl.keyStore=/path/to/client.p12 \
-Djavax.net.ssl.keyStoreType=PKCS12 \
-Djavax.net.ssl.keyStorePassword=<passphrase> \
-jar <path_to_sonarqube_mcp_server_jar>
Anahtar deposunda parola yoksa -Djavax.net.ssl.keyStorePassword öğesini atlayın.
İstemci Sertifikası ile MCP Yapılandırması (JAR)
{
"sonarqube": {
"command": "java",
"args": [
"-Djavax.net.ssl.keyStore=/path/to/client.p12",
"-Djavax.net.ssl.keyStoreType=PKCS12",
"-Djavax.net.ssl.keyStorePassword=<passphrase>",
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Not: PEM sertifika ve anahtar dosyaları (ayrı
.crt/.keydosyaları) önce PKCS12 biçimine dönüştürülmelidir. Bunları dönüştürmek içinopenssl pkcs12 -export -in client.crt -inkey client.key -out client.p12kullanın.
Araçlar
Analiz
-
analyze_code_snippet - Kod kalitesi ve güvenlik sorunlarını belirlemek için SonarQube çözümleyicileriyle dosya içeriğini analiz edin. Doğruluk için her zaman dosya içeriğinin tamamını analiz eder. İsteğe bağlı olarak sonuçları belirli bir kod parçacığına göre filtreleyin.
Kullanımdan kaldırıldı:
analyze_code_snippetgelecekteki bir sürümde kaldırılacaktır.analyze_file_listkullanmak için SonarQube for IDE'yi bağlayın veyarun_advanced_code_analysiskullanmak için kuruluşunuz için Vortex analizini etkinleştirin (aşağıya bakın).Kullanım:
- Çalışma alanı bağlıyken (önerilir):
filePath(projeye göreli) iletin — sunucu dosyayı doğrudan okur ve dosya içeriğini aracı bağlam penceresinin dışında tutar - Çalışma alanı bağlantısı olmadan: tam dosya analizi için eksiksiz
fileContentiletin (tüm sorunları bildirir) - Sonuçları filtrelemek için isteğe bağlı
codeSnippetekleyin - yalnızca parçacık içindeki sorunlar bildirilir (parçacık konumu otomatik algılanır)
Parametreler:
projectKey- SonarQube proje anahtarı - Zorunlu Dize (SONARQUBE_PROJECT_KEYtanımlandığında yok sayılır)filePath- Analiz edilecek dosyanın projeye göreli yolu (ör.src/main/java/MyClass.java). Çalışma alanı/app/mcp-workspacekonumuna bağlandığında kullanılır - DizefileContent- Dize olarak eksiksiz dosya içeriği. Çalışma alanı bağlı olmadığında gereklidir - DizecodeSnippet- Sorunları filtrelemek için kod parçacığı (fileContent içindeki içerikle eşleşmelidir) - Dizelanguage- Kodun dili (ör. 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Dizescope- Dosyanın kapsamı: MAIN veya TEST (varsayılan: MAIN) - Dize
Desteklenen Diller: Java, Kotlin, Python, Ruby, Go, JavaScript (
js,jsx), TypeScript (ts,tsx), JSP, PHP, XML, HTML, CSS, CloudFormation, Kubernetes, Terraform, Azure Resource Manager, Ansible, Docker, Secrets algılama - Çalışma alanı bağlıyken (önerilir):
SonarQube for IDE ile entegrasyon etkinleştirildiğinde: (bu iki araç hem analysis hem de ide araç setlerinde etiketlenir)
-
analyze_file_list - SonarQube for IDE kullanarak geçerli çalışma dizinindeki dosyaları analiz edin. Bu araç, bir dosya listesinde kod kalitesi analizi gerçekleştirmek için çalışan bir SonarQube for IDE örneğine bağlanır.
file_absolute_paths- Analiz edilecek mutlak dosya yollarının listesi - Zorunlu Dize[]
-
toggle_automatic_analysis - SonarQube for IDE otomatik analizini etkinleştirin veya devre dışı bırakın. Etkinleştirildiğinde, SonarQube for IDE çalışma dizininde değiştirildikçe dosyaları otomatik olarak analiz eder. Devre dışı bırakıldığında otomatik analiz kapatılır.
enabled- Otomatik analizi etkinleştirin veya devre dışı bırakın - Zorunlu Boole
SonarQube Server'da, hem CAG hem de A3S hub'ları yetkilendirildiğinde stdio, Vortex bağlam araçlarını ve run_advanced_code_analysis öğesini listeler.
Vortex analizi etkinleştirildiğinde:
Çalışma alanının
/app/mcp-workspacekonumuna bağlanmasını gerektirir
- run_advanced_code_analysis - Tek bir dosyada Vortex analizi çalıştırın. Kuruluş, MCP yapılandırmasından çıkarılır (SonarQube Server nil UUID yer tutucusunu kullanır).
projectKey- Projenin anahtarı - Zorunlu Dize (SONARQUBE_PROJECT_KEYtanımlandığında yok sayılır)branch- En son analiz bağlamını almak için kullanılan dal adı - Zorunlu DizefilePath- Analiz edilecek dosyanın projeye göreli yolu (ör.src/main/java/MyClass.java). - Zorunlu DizefileScope- Dosyanın hangi kapsamdan geldiğini tanımlar: 'MAIN' veya 'TEST' (varsayılan: MAIN) - Dize
Kapsam
-
search_files_by_coverage - Kapsama göre sıralanmış bir projedeki dosyaları arayın (artan - en kötü kapsam ilk). Bu araç, test kapsamı iyileştirmeleri gerektiren dosyaları belirlemeye yardımcı olur.
projectKey- Aranacak proje anahtarı - Zorunlu Dize (SONARQUBE_PROJECT_KEYtanımlandığında yok sayılır)branch- Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek içinlist_brancheskullanın - DizepullRequest- İsteğe bağlı çekme isteği anahtarı/ID'si. Geçerli anahtarları keşfetmek içinlist_pull_requestskullanın - DizemaxCoverage- Maksimum kapsam eşiği (0-100). Yalnızca kapsamı bu değere eşit veya daha düşük olan dosyaları döndürün - SayıpageIndex- Sayfa dizini (1 tabanlı, varsayılan: 1) - SayıpageSize- Sayfa boyutu (varsayılan: 100, maks: 500) - Sayı
-
get_file_coverage_details - Belirli bir dosya için satır satır kapsam bilgisi alın; hangi satırların kapsanmadığını ve hangilerinin kısmen kapsanan dallara sahip olduğunu içerir. Bu araç, test kapsamının tam olarak nereye ekleneceğini belirlemeye yardımcı olur. search_files_by_coverage ile düşük kapsamlı dosyaları belirledikten sonra kullanın.
key- Dosya anahtarı (ör. my_project:src/foo/Bar.java) - Zorunlu Dizebranch- Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek içinlist_brancheskullanın - DizepullRequest- İsteğe bağlı çekme isteği anahtarı/ID'si. Geçerli anahtarları keşfetmek içinlist_pull_requestskullanın - Dizefrom- Analiz edilecek ilk satır (1 tabanlı, varsayılan: 1) - Sayıto- Analiz edilecek son satır (dahil). Belirtilmezse tüm satırlar döndürülür - Sayı
Bağımlılık Riskleri
Not: Bağımlılık riskleri yalnızca SonarQube Advanced Security etkinleştirilmiş SonarQube Server 2025.4 Enterprise veya üstüne bağlanırken kullanılabilir.
- search_dependency_risks - Analiz edilen projede, uygulamada veya portföyde görünen sürümlerle eşleştirilmiş bir SonarQube projesinin yazılım kompozisyonu analizi sorunlarını (bağımlılık riskleri) arayın.
projectKey- Proje anahtarı - Zorunlu Dize (SONARQUBE_PROJECT_KEYtanımlandığında yok sayılır)branch- Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek içinlist_brancheskullanın - DizepullRequest- İsteğe bağlı çekme isteği anahtarı/ID'si. Geçerli anahtarları keşfetmek içinlist_pull_requestskullanın - DizepageIndex- İsteğe bağlı sayfa dizini (1 tabanlı, varsayılan: 1) - TamsayıpageSize- İsteğe bağlı sayfa boyutu. 0'dan büyük ve 500'e eşit veya daha küçük olmalıdır (varsayılan: 100) - Tamsayı
Kuruluşlar
Not: Kuruluşlar yalnızca SonarQube Cloud'a bağlanırken kullanılabilir.
- list_enterprises - Erişiminiz olan SonarQube Cloud'da bulunan kuruluşları listeleyin. Diğer araçlarla kullanılabilecek kuruluş kimliklerini keşfetmek için bu aracı kullanın.
enterpriseKey- Sonuçları filtrelemek için isteğe bağlı kuruluş anahtarı - Dize
Sorunlar
-
change_sonar_issue_status - Bir SonarQube sorununun durumunu "accept", "falsepositive" olarak değiştirin veya bir sorunu "reopen" edin.
key- Sorun anahtarı - Zorunlu Dizestatus- Yeni sorunun durumu - Zorunlu Enum {"accept", "falsepositive", "reopen"}comment- Durum değişikliğini açıklayan isteğe bağlı yorum - Dize
-
search_sonar_issues_in_projects - Kuruluşumun projelerindeki SonarQube sorunlarını arayın.
projectKeys- İsteğe bağlı SonarQube proje anahtarları listesi - Dize[]branch- Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek içinlist_brancheskullanın - DizepullRequest- İsteğe bağlı çekme isteği anahtarı/ID'si. Geçerli anahtarları keşfetmek içinlist_pull_requestskullanın - Dizeseverities- Filtrelemek için isteğe bağlı önem düzeyleri listesi. Olası değerler: INFO, LOW, MEDIUM, HIGH, BLOCKER - Dize[]impactSoftwareQualities- Filtrelemek için isteğe bağlı yazılım kaliteleri listesi. Olası değerler: MAINTAINABILITY, RELIABILITY, SECURITY - Dize[]issueStatuses- Filtrelemek için isteğe bağlı sorun durumları listesi. Olası değerler: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - Dize[]tags- Filtrelemek için isteğe bağlı sorun etiketleri listesi. Etiketler küçük harflidir - Dize[]inNewCodePeriod- Yalnızca yeni kod dönemindeki sorunları döndürün.projectKeysvefilesgenelinde tam olarak bir giriş gerektirir - BooleissueKey- Belirli bir sorunu getirmek için isteğe bağlı sorun anahtarı - DizepageIndex- İsteğe bağlı 1 tabanlı sayfa dizini (varsayılan: 1) - TamsayıpageSize- İsteğe bağlı sayfa boyutu. 0'dan büyük ve 500'e eşit veya daha küçük olmalıdır (varsayılan: 100) - Tamsayı
Güvenlik Noktaları
-
search_security_hotspots - Bir SonarQube projesinde Güvenlik Noktalarını arayın.
projectKey- Proje veya uygulama anahtarı - Zorunlu Dize (SONARQUBE_PROJECT_KEYtanımlandığında yok sayılır)hotspotKeys- Alınacak belirli Güvenlik Noktası anahtarlarının virgülle ayrılmış listesi - Dize[]branch- Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek içinlist_brancheskullanın - DizepullRequest- İsteğe bağlı çekme isteği anahtarı/ID'si. Geçerli anahtarları keşfetmek içinlist_pull_requestskullanın - Dizefiles- Filtrelemek için isteğe bağlı dosya yolları listesi - Dize[]status- İsteğe bağlı durum filtresi: TO_REVIEW, REVIEWED - Dizeresolution- İsteğe bağlı çözüm filtresi: FIXED, SAFE, ACKNOWLEDGED - DizesinceLeakPeriod- Sızıntı döneminden (yeni kod) bu yana oluşturulan noktaları filtreleyin - BooleonlyMine- Yalnızca bana atanan noktaları göster - BoolepageIndex- İsteğe bağlı 1 tabanlı sayfa dizini (varsayılan: 1) - TamsayıpageSize- İsteğe bağlı sayfa boyutu. 0'dan büyük ve 500'e eşit veya daha küçük olmalıdır (varsayılan: 100) - Tamsayı
-
show_security_hotspot - Kural ayrıntıları, kod bağlamı, akışlar ve yorumlar dahil olmak üzere belirli bir Güvenlik Noktası hakkında ayrıntılı bilgi alın.
hotspotKey- Güvenlik Noktası anahtarı - Zorunlu Dize
- change_security_hotspot_status - Bir Security Hotspot'u durumunu değiştirerek inceleyin. REVIEWED olarak işaretlerken bir çözüm belirtmelisiniz (FIXED, SAFE veya ACKNOWLEDGED).
hotspotKey- Security Hotspot anahtarı - Zorunlu Stringstatus- Yeni durum - Zorunlu Enum {"TO_REVIEW", "REVIEWED"}resolution- Durum REVIEWED olduğunda çözüm - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}comment- İsteğe bağlı inceleme yorumu - String
Diller
- list_languages - Bu SonarQube örneğinde desteklenen tüm programlama dillerini listeler.
q- Dil anahtarlarını/adlarını eşleştirmek için isteğe bağlı desen - String
Ölçümler
- get_component_measures - Bir bileşen (proje, dizin, dosya) için SonarQube ölçümlerini alır.
projectKey- Proje anahtarı -SONARQUBE_PROJECT_KEYyapılandırılmadığında Zorunlu Stringbranch- Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek içinlist_brancheskullanın - StringmetricKeys- Alınacak isteğe bağlı metrik anahtarları (örn. ncloc, complexity, violations, coverage) - String[]pullRequest- İsteğe bağlı pull request anahtarı/ID'si. Geçerli anahtarları keşfetmek içinlist_pull_requestskullanın - String
Metrikler
- search_metrics - SonarQube metriklerini arar.
pageIndex- İsteğe bağlı 1 tabanlı sayfa dizini (varsayılan: 1) - IntegerpageSize- İsteğe bağlı sayfa boyutu. 0'dan büyük ve 500'e eşit veya küçük olmalıdır (varsayılan: 100) - Integer
Portföyler
-
list_portfolios - SonarQube'de bulunan kurumsal portföyleri filtreleme ve sayfalama seçenekleriyle listeler.
SonarQube Server için:
q- Portföyleri ada veya anahtara göre filtrelemek için isteğe bağlı arama sorgusu - Stringfavorite- true ise yalnızca favori portföyleri döndürür - BooleanpageIndex- İsteğe bağlı 1 tabanlı sayfa numarası (varsayılan: 1) - IntegerpageSize- İsteğe bağlı sayfa boyutu, maksimum 500 (varsayılan: 100) - Integer
SonarQube Cloud için:
enterpriseId- Kurumsal uuid. Yalnızca 'favorite' parametresi true değeriyle sağlanmışsa atlanabilir - Stringq- Portföyleri ada göre filtrelemek için isteğe bağlı arama sorgusu - Stringfavorite- 'enterpriseId' parametresi atlanmışsa true olması zorunludur. true ise yalnızca oturum açmış kullanıcının favorilediği portföyleri döndürür. 'draft' true olduğunda true olamaz - Booleandraft- true ise yalnızca oturum açmış kullanıcının oluşturduğu taslakları döndürür. 'favorite' true olduğunda true olamaz - BooleanpageIndex- Getirilecek sayfanın isteğe bağlı dizini (varsayılan: 1) - IntegerpageSize- Getirilecek sayfanın isteğe bağlı boyutu (varsayılan: 50) - Integer
Projeler
-
search_my_sonarqube_projects - SonarQube projelerini bulur. Yanıt sayfalanmıştır.
pageIndex- İsteğe bağlı 1 tabanlı sayfa dizini (varsayılan: 1) - IntegerpageSize- İsteğe bağlı sayfa boyutu. 0'dan büyük ve 500'e eşit veya küçük olmalıdır (varsayılan: 500) - Integerq- Projeleri ada (kısmi eşleşme) veya anahtara (tam eşleşme) göre filtrelemek için isteğe bağlı arama sorgusu - String
-
list_branches - Bir proje için analiz edilen dalları listeler.
- SonarQube Cloud:
typevemergeBranchalanlarıyla uzun ömürlü (LONG) ve kısa ömürlü (SHORT) dalları döndürür. İsteğe bağlıbranchTypesfiltresi:ALL(varsayılan),LONGveyaSHORT. - SonarQube Server: analiz edilen tüm dalları (ad, kalite kapısı, analiz tarihi) döndürür.
type,mergeBranchveyabranchTypesfiltresi yoktur. - Döndürülen dal adlarını diğer araçlarda
branchparametresi olarak kullanın. Pull request analizi için bunun yerinelist_pull_requestskullanın. projectKey- Proje anahtarı (örn. my_project) - Zorunlu String (SONARQUBE_PROJECT_KEYtanımlandığında yok sayılır)branchTypes- (Yalnızca SonarQube Cloud) İsteğe bağlı filtre:ALL(varsayılan),LONGveyaSHORT- Enum {"ALL", "LONG", "SHORT"}
- SonarQube Cloud:
-
list_pull_requests - Bir proje için tüm pull request'leri listeler. PR ile dekore edilmiş analiz (kapsam, sorunlar, kalite kapısı) için pull request'leri keşfetmek amacıyla bu aracı kullanın. Diğer araçlarla kullanılabilen pull request anahtarını/ID'sini döndürür. Pull request'siz dal tabanlı analiz için bunun yerine
list_brancheskullanın.projectKey- Proje anahtarı (örn. my_project) - Zorunlu String (SONARQUBE_PROJECT_KEYtanımlandığında yok sayılır)
Kalite Kapıları
-
get_project_quality_gate_status - SonarQube projesi için Kalite Kapısı Durumunu alır.
analysisId- İsteğe bağlı analiz ID'si - Stringbranch- Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek içinlist_brancheskullanın - StringprojectId- İsteğe bağlı proje ID'si - StringprojectKey- İsteğe bağlı proje anahtarı - StringpullRequest- İsteğe bağlı pull request anahtarı/ID'si. Geçerli anahtarları keşfetmek içinlist_pull_requestskullanın - String
-
list_quality_gates - SonarQube'deki tüm kalite kapılarını listeler.
Kurallar
- show_rule - Bir SonarQube kuralı hakkında ayrıntılı bilgi gösterir.
key- Kural anahtarı - Zorunlu String
Kopyalar
-
search_duplicated_files - Bir SonarQube projesinde kod kopyası olan dosyaları arar. Varsayılan olarak, tüm sayfalardaki kopyalanmış dosyaları otomatik olarak getirir (maksimum 10.000 dosya). Yalnızca kopya içeren dosyaları döndürür.
projectKey- Proje anahtarı - Zorunlu String (SONARQUBE_PROJECT_KEYtanımlandığında yok sayılır)branch- Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek içinlist_brancheskullanın - StringpullRequest- İsteğe bağlı pull request anahtarı/ID'si. Geçerli anahtarları keşfetmek içinlist_pull_requestskullanın - StringpageSize- Manuel sayfalama için sayfa başına isteğe bağlı sonuç sayısı (maks: 500). Belirtilmezse, tüm kopyalanmış dosyaları otomatik getirir - IntegerpageIndex- Manuel sayfalama için isteğe bağlı sayfa numarası (1'den başlar). Belirtilmezse, tüm kopyalanmış dosyaları otomatik getirir - Integer
-
get_duplications - Bir dosya için kopyaları alır. Dosyanın projesinde Browse izni gerektirir.
key- Dosya anahtarı - Zorunlu Stringbranch- Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek içinlist_brancheskullanın - StringpullRequest- İsteğe bağlı pull request anahtarı/ID'si. Geçerli anahtarları keşfetmek içinlist_pull_requestskullanın - String
Kaynaklar
-
get_raw_source - SonarQube'den kaynak kodunu ham metin olarak alır. Dosyada 'Kaynak Kodunu Gör' izni gerektirir.
key- Dosya anahtarı - Zorunlu Stringbranch- Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek içinlist_brancheskullanın - StringpullRequest- İsteğe bağlı pull request anahtarı/ID'si. Geçerli anahtarları keşfetmek içinlist_pull_requestskullanın - String
-
get_scm_info - SonarQube kaynak dosyalarının SCM bilgilerini alır. Dosyanın projesinde Kaynak Kodunu Gör izni gerektirir.
key- Dosya anahtarı - Zorunlu Stringcommits_by_line- Değer false ise satırları SCM commit'ine göre grupla, aksi halde her satır için commit'leri göster - Stringfrom- Döndürülecek ilk satır. 1'den başlar - Numberto- Döndürülecek son satır (dahil) - Number
Sistem
Not: Sistem araçları yalnızca SonarQube Server'a bağlanırken kullanılabilir.
-
get_system_health - SonarQube Server örneğinin sağlık durumunu alır. GREEN (tamamen çalışır), YELLOW (kullanılabilir ancak dikkat gerektirir) veya RED (çalışmıyor) döndürür.
-
get_system_info - JVM durumu, veritabanı, arama dizinleri ve ayarlar dahil SonarQube Server sistem yapılandırması hakkında ayrıntılı bilgi alır. 'Yönet' izinleri gerektirir.
-
get_system_logs - SonarQube Server sistem günlüklerini düz metin biçiminde alır. Sistem yönetim izni gerektirir.
name- Alınacak günlüklerin isteğe bağlı adı. Olası değerler: access, app, ce, deprecation, es, web. Varsayılan: app - String
-
ping_system - SonarQube Server sisteminin canlı olup olmadığını kontrol etmek için ping atar. Düz metin olarak 'pong' döndürür.
-
get_system_status - SonarQube Server hakkında durum bilgisi alır. Durum (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), sürüm ve kimlik döndürür.
Webhook'lar
-
create_webhook - SonarQube organizasyonu veya projesi için yeni bir webhook oluşturur. Belirtilen projede 'Yönet' izni veya genel 'Yönet' izni gerektirir.
name- Webhook adı - Zorunlu Stringurl- Webhook URL'si - Zorunlu StringprojectKey- Projeye özel webhook için isteğe bağlı proje anahtarı - Stringsecret- Webhook yükünü güvence altına almak için isteğe bağlı webhook sırrı - String
-
list_webhooks - SonarQube organizasyonu veya projesi için tüm webhook'ları listeler. Belirtilen projede 'Yönet' izni veya genel 'Yönet' izni gerektirir.
projectKey- Projeye özel webhook'ları listelemek için isteğe bağlı proje anahtarı - String
Bağlam Genişletme
Mimari Araçlar
-
search_by_signature_patterns - Bildirim imzalarına göre kod öğelerini (sınıflar, yöntemler, arayüzler, ...) regex desenleri kullanarak bulur.
include_code_regex_list- İmzalarla eşleştirilecek regex desenlerinin listesi - Zorunlu String[]exclude_code_regex_list- Sonuçlardan hariç tutulacak regex desenlerinin listesi - String[]include_glob- Dosya filtresi glob deseni (örn.*.java) - Stringexclude_glob- Dosya hariç tutma glob deseni - Stringfields- Yanıta dahil edilecek virgülle ayrılmış alan listesi - Stringlimit- Döndürülecek maksimum sonuç sayısı (varsayılan: 10) - Integerregex_lists_operator- Birden çok desenin nasıl birleştirileceği:OR(varsayılan) veyaAND- String
-
search_by_body_patterns - Uygulama gövdesine göre kod öğelerini regex desenleri kullanarak bulur. API'lerin veya desenlerin gerçekte nerede kullanıldığını bulmak için kullanışlıdır.
include_code_regex_list- Kod gövdelerinde eşleştirilecek regex desenlerinin listesi - Zorunlu String[]exclude_code_regex_list- Sonuçlardan hariç tutulacak regex desenlerinin listesi - String[]include_glob- Dosya filtresi glob deseni - Stringexclude_glob- Dosya hariç tutma glob deseni - Stringfields- Yanıta dahil edilecek virgülle ayrılmış alan listesi - Stringlimit- Döndürülecek maksimum sonuç sayısı (varsayılan: 10) - Integerregex_lists_operator- Birden çok desenin nasıl birleştirileceği:OR(varsayılan) veyaAND- String
-
get_upstream_call_flow - Belirli bir işlevi hangi işlevlerin çağırdığını izler. Tüm çağıranları ve giriş noktalarını bulmak ve bir imza değişirse neyin bozulacağını anlamak için kullanışlıdır.
fqn- İşlevin tam nitelikli adı - Zorunlu Stringdepth- Çağrı zinciri derinliği (0=yalnızca işlev, 1=doğrudan çağıranlar, vb.) - Integerfields- Yanıta dahil edilecek virgülle ayrılmış alan listesi - String
-
get_downstream_call_flow - Belirli bir işlevin hangi işlevleri çağırdığını izler. Etki analizi ve yürütme akışını anlamak için kullanışlıdır.
fqn- İşlevin tam nitelikli adı - Zorunlu Stringdepth- Çağrı zinciri derinliği (0=yalnızca işlev, 1=doğrudan çağrılanlar, vb.) - Integerfields- Yanıta dahil edilecek virgülle ayrılmış alan listesi - String
-
get_source_code - Tam nitelikli adına göre bir kod öğesi için tam kaynak kodunu (imza ve gövde) alır.
fqn- Öğenin tam nitelikli adı - Zorunlu Stringfields- Yanıta dahil edilecek virgülle ayrılmış alan listesi - String
-
get_type_hierarchy - Sınıf benzeri bir yapının (sınıf, arayüz, enum, kayıt, istisna, yapı) tam kalıtım hiyerarşisini alır. Kalıtım ağaçlarını anlamak ve yeniden düzenleme yapmak için gereklidir.
fqn- Sınıf benzeri yapının tam nitelikli adı - Zorunlu Dizefields- Yanıta dahil edilecek alanların virgülle ayrılmış listesi - Dize
-
get_references - Bir sınıf veya modül için doğrudan gelen ve giden kod referanslarını alır. Yalnızca doğrudan (geçişli olmayan) referansları döndürür.
fqn- Sınıfın veya modülün tam nitelikli adı - Zorunlu Dizefields- Yanıta dahil edilecek alanların virgülle ayrılmış listesi - Dize
-
get_current_architecture - Yol öneki ve derinliğe göre filtrelenmiş hiyerarşik bir mimari grafiği alır. Modül yapısını ve üst düzey bağımlılıkları keşfetmek için kullanışlıdır.
depth- Hiyerarşi derinliği (0=yalnızca kök, 1=kök + alt öğeler, vb.) - Zorunlu Tamsayıpath_prefix- Düğümleri filtrelemek için isteğe bağlı yol öneki (örn.com.example.service) - Dizeecosystem- Filtrelemek için isteğe bağlı ekosistem (java,cs,py,js,ts) - Dize
-
get_intended_architecture - Hangi modüllerin diğerlerine bağımlı olmasına izin verildiğini belirten kullanıcı tanımlı mimari kısıtlamaları alır.
Yönergeler Araçları
- get_guidelines - SonarQube proje sorunlarına, kategori kataloglarına veya her ikisinin birleşimine dayalı kodlama yönergelerini alır.
mode- Yönergeleri alma modu:project_based,category_basedveyacombined- Zorunlu Dizecategories- Kategori adlarının listesi (category_basedvecombinedmodları için gereklidir) - Dize[]languages- SonarQube deposu anahtar biçiminde hedef dillerin listesi (categoriessağlandığında gereklidir) - Dize[]file_paths- Yönergeleri filtrelemek için isteğe bağlı dosya yolları listesi - Dize[]
Üçüncü Taraf Bağımlılık Araçları
- check_dependency - Eklemek veya güncellemek istediğiniz üçüncü taraf bir bağımlılığı güvenlik açıkları, tedarik zinciri kötü amaçlı yazılımları ve lisans uyumluluğu açısından kontrol edin.
purl- Sürüm içeren Paket URL'si (purl), purl-spec uyarınca. Biçim:pkg:<type>/<namespace>/<name>@<version>(örn.pkg:npm/lodash@4.17.21,pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1,pkg:pypi/django@3.2.0) - Zorunlu Dize
Bağlam Zenginleştirme Ortam Değişkenleri
| Değişken | Açıklama | Gerekli | Varsayılan |
|---|---|---|---|
SONARQUBE_URL | SonarQube Cloud URL'si | Evet | https://sonarcloud.io |
SONARQUBE_TOKEN | Kimlik doğrulama belirteci | Evet | Yok |
SONARQUBE_ORG | SonarQube Cloud'da kuruluş anahtarı | Evet | Yok |
SONARQUBE_PROJECT_KEY | SonarQube Cloud'da proje anahtarı | Evet | Yok |
SONAR_SQ_BRANCH | Açık SonarQube dal geçersiz kılma * | Hayır | Yok |
SONARQUBE_DEBUG_ENABLED | Hata ayıklama günlüğünü etkinleştir (sorun giderme için) | Hayır | False |
SONAR_LOG_LEVEL | Günlük ayrıntı düzeyi (TRACE, DEBUG, INFO, WARNING, ERROR) | Hayır | INFO |
- Git kullanılmadığında veya git dal adı SonarQube'daki dal adıyla eşleşmediğinde sağlanmalıdır.
Projeye Özel Yapılandırma (Önerilen)
İlk olarak, projeniz için geçerli bir Kişisel Erişim Belirteci (PAT) ile SONARQUBE_TOKEN ortam değişkenini dışa aktarın.
# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"
Ardından, Bağlam Zenginleştirme sunucusuna kaynak dosyalarınıza doğrudan erişim sağlamak için proje çalışma alanını bağlayın:
{
"mcpServers": {
"sonarqube-mcp-server": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--pull=always",
"-e", "SONARQUBE_URL",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_ORG",
"-e", "SONARQUBE_PROJECT_KEY",
"-e", "SONARQUBE_TOOLSETS",
"-v", "/ABSOLUTE/PATH/TO/YOUR/PROJECT:/app/mcp-workspace:rw",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_URL": "https://sonarcloud.io",
"SONARQUBE_ORG": "<YourOrganizationKey>",
"SONARQUBE_PROJECT_KEY": "<YourProjectKey>",
"SONARQUBE_TOOLSETS": "cag"
}
}
}
}
Önemli: Proje kapsamlı bir yapılandırmada, SONARQUBE_TOKEN değerini env bloğuna koymayın. Bunu bir ortam değişkeni (export SONARQUBE_TOKEN=...) olarak dışa aktarın. Docker, -e SONARQUBE_TOKEN aracılığıyla kapsayıcıya iletecektir.
Aracısal Hazırlık
Not: Aracısal Hazırlık araçları yalnızca SonarQube Cloud'da kullanılabilir ve özelliğin kuruluşunuz için etkinleştirilmesini gerektirir.
-
start_agentic_readiness_assessment - Bir proje için aracısal hazırlık değerlendirmesi başlatın.
PENDINGdurumu ve birassessmentIdile hemen döner. Sonuçları yoklamak içinget_agentic_readiness_assessmentkullanın.projectKey- Proje anahtarı - Zorunlu Dize (SONARQUBE_PROJECT_KEYtanımlandığında yok sayılır)branch- Değerlendirilecek dal. Projenin varsayılan dalını kullanmak için atlayın - Dize
-
get_agentic_readiness_assessment - Bir değerlendirmenin sonucunu alın. Durum
COMPLETED,FAILEDveyaINTERRUPTEDolana kadar aynıassessmentIdile yeniden çağırın. Tamamlandığında, genel düzeyi ve önerilen eylemler ve kanıtlarla birlikte sütun bazında bir dökümü döndürür.assessmentId-start_agentic_readiness_assessmenttarafından döndürülen değerlendirme kimliği - Zorunlu Dize
-
list_agentic_readiness_assessments - Bir proje için tüm değerlendirmeleri en yeniden en eskiye doğru listeleyin. Tam sütun düzeyinde sonuçlar için
get_agentic_readiness_assessmentkullanın.projectKey- Değerlendirmelerin listeleneceği proje anahtarı - Zorunlu Dize (SONARQUBE_PROJECT_KEYtanımlandığında yok sayılır)branch- Değerlendirmeleri dal adına göre filtreleyin. Tüm dallar için değerlendirmeleri listelemek üzere atlayın - DizepageIndex- 1 tabanlı sayfa dizini (varsayılan: 1) - SayıpageSize- Sayfa başına öğe sayısı, maksimum 100 (varsayılan: 50) - Sayı
Örnek Komutlar
SonarQube MCP Sunucusunu kurduktan sonra, yaygın gerçek dünya senaryoları için bazı örnek komutlar:
Başarısız Kalite Kapısını Düzeltme
My quality gate is failing for my project. Can you help me understand why and fix the most critical issues?
The quality gate on my feature branch is red. What do I need to fix to get it passing before I can merge to main?
Yayın Öncesi ve Birleştirme Öncesi Kontroller
I'm about to merge my pull request <#247> for the <web-app> project. Can you check if there are any quality issues I should address first?
We're deploying to production tomorrow. Can you check the quality gate status and alert me to any critical issues in this branch?
Kod Kalitesini İyileştirme
I want to reduce technical debt in my project. What are the top issues I should prioritize?
Our code coverage dropped below 70%. Can you identify which files have the lowest coverage and help me improve it?
Sorunları Anlama ve Düzeltme
I have 15 new code smells in my latest commit. Can you explain what they are and help me fix them?
SonarQube flagged a critical security vulnerability in <AuthController.java>. What's the issue and how do I fix it?
Güvenlik ve Bağımlılık Yönetimi
We need to pass a security audit. Can you check all our projects for security vulnerabilities and create a prioritized list of what needs to be fixed?
Are there any known vulnerabilities in our dependencies? Check this project for dependency risks.
Kod İnceleme Yardımı
I just wrote this authentication function. Can you analyze it for security issues and code quality problems before I commit?
Review the changes in <src/database/migrations> for any potential bugs or security issues.
Proje Sağlığı İzleme
Give me a health report for my project: quality gate status, number of bugs, Security Hotspots, and code coverage.
Compare code quality between our main branch and the develop branch. Are we introducing new issues?
Ekip İşbirliği
What are the most common rule violations across all our projects? We might need to update our coding standards.
Show me all the issues that were marked as false positives in the last month. Are we seeing patterns that suggest our rules need adjustment?
Derleme
sonarsource/sonarqube-mcp kapsayıcı görüntüsünü tercih edin.
Sunucuyu Docker olmadan bağımsız bir JAR olarak çalıştırmak için, SonarSource ikili dosyalar deposundan önceden derlenmiş bir sürüm indirin. Yayınlanan her sürüm orada sonarqube-mcp-server-<version>.jar olarak yayınlanır (örneğin, sonarqube-mcp-server-1.19.0.2785.jar).
JAR'dan Çalıştırma
İstediğiniz sürümün JAR dosyasını ikili dosyalar deposundan indirin, ardından Java 21 veya sonrası ile çalıştırmak için MCP istemcinizi yapılandırın:
- SonarQube Cloud'a bağlanmak için:
{
"sonarqube": {
"command": "java",
"args": [
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"STORAGE_PATH": "<path_to_your_mcp_storage>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>"
}
}
}
- SonarQube Server'a bağlanmak için:
{
"sonarqube": {
"command": "java",
"args": [
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"STORAGE_PATH": "<path_to_your_mcp_storage>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Kaynaktan Derleme
SonarQube MCP Sunucusu, derlemek için Java Development Kit (JDK) sürüm 21 veya sonrasını gerektirir.
Projeyi temizlemek ve uygulamayı derlemek için aşağıdaki Gradle komutunu çalıştırın:
./gradlew clean build -x test
JAR dosyası build/libs/ içinde oluşturulacaktır.
Bağımlılıkları ekledikten veya güncelledikten sonra kilit dosyalarını yeniden oluşturun:
./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks
Yukarıdaki JAR'dan Çalıştırma yapılandırmasını kullanın ve <path_to_sonarqube_mcp_server_jar> öğesini build/libs/ içindeki JAR'a yönlendirin.
Sorun Giderme
Uygulama günlükleri varsayılan olarak STORAGE_PATH/logs/mcp.log dosyasına yazılır. Dosya günlüğünü tamamen devre dışı bırakmak için SONARQUBE_LOG_TO_FILE_DISABLED=true ayarlayın.
Yaygın Sorunlar
"SonarQube sunucu sürümü desteklenmiyor"
MCP sunucusu, başlangıç sırasında bağlı SonarQube Server sürümünü kontrol eder. Örnek 2025.1 (SQS) veya 25.1 (SQCB) sürümünden eskiyse, başlangıç şu hatayla başarısız olur:
SonarQube server version is not supported, minimal version is SQS 2025.1 or SQCB 25.1
Çözüm: SonarQube Server'ı desteklenen bir sürüme yükseltin. Bu kontrol yalnızca SonarQube Server'a bağlanırken geçerlidir (SONARQUBE_URL olmadan SONARQUBE_ORG), SonarQube Cloud için geçerli değildir.
"Özellik çalışmıyor" veya "Eksik araçlar/işlevsellik"
Güncel olmayan bir Docker görüntüsü çalıştırıyor olabilirsiniz. Docker görüntüleri yerel olarak önbelleğe alır, bu nedenle güncellemeleri otomatik olarak almazsınız.
Çözüm: En son sürüme güncelleyin:
docker pull sonarsource/sonarqube-mcp
En son görüntüyü çektikten sonra, güncellenmiş sürümü kullanmak için MCP istemcinizi yeniden başlatın.
İsteğe bağlı olarak, her zaman en son sürümü kontrol etmek ve çekmek için docker run komutunuza --pull=always bayrağını ekleyin:
docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp
"Belirli bir sürüme sabitlemek istiyorum"
sonarsource/sonarqube-mcp adresindeki mevcut etiketlere göz atın ve istediğiniz sürüme başvurun:
docker pull sonarsource/sonarqube-mcp:1.19.0.2785
docker run --init -i --rm \
-e SONARQUBE_TOKEN -e SONARQUBE_ORG \
sonarsource/sonarqube-mcp:1.19.0.2785
MCP istemci yapılandırmanızda, sonarsource/sonarqube-mcp yerine sonarsource/sonarqube-mcp:<version> kullanın ve Docker'ın görüntüyü sessizce yükseltmemesi için --pull=always öğesini kaldırın.
Veri ve telemetri
Bu sunucu anonim kullanım verileri toplar ve ürünü iyileştirmeye yardımcı olmak için SonarSource'a gönderir. Kaynak kodu veya IP adresi toplanmaz ve SonarSource verileri başka kimseyle paylaşmaz. Telemetri toplama, aşağıdaki sistem özelliği veya ortam değişkeniyle devre dışı bırakılabilir: TELEMETRY_DISABLED=true. Toplanan verilerin bir örneğini görmek için buraya tıklayın.
Lisans
Telif Hakkı 2025 SonarSource.
SONAR Kaynak Kullanılabilir Lisansı v1.0 altında lisanslanmıştır. SonarQube MCP Sunucusunu bu belgelere uygun olarak kullanmak Rekabetçi Olmayan Bir Amaçtır ve bu nedenle SSAL kapsamında izin verilir.
SonarQube'u MCP aracılığıyla kullanımınız, SonarQube Cloud Hizmet Şartları veya SonarQube Server Şartlar ve Koşulları tarafından yönetilir; Sonuç Verilerinin yalnızca dahili yazılım geliştirme amaçlarınız için kullanımı dahildir.