SonarQube MCP Server

resmi

SonarQube 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

Dokümantasyon

SonarQube MCP Sunucusu

Build Quality Gate Status

SonarQube MCP Sunucusu, kod kalitesi ve güvenliği için SonarQube Server veya Cloud ile sorunsuz entegrasyon sağlayan bir Model Bağlam Protokolü (MCP) sunucusudur. Ayrıca, doğrudan aracı bağlamı içinde kod parçacığı analizini de destekler.

Hızlı kurulum

Güvenlik en iyi uygulamaları

🔒 Önemli: SonarQube token'ınız hassas bir kimlik bilgisidir. Şu güvenlik uygulamalarını izleyin:

CLI komutlarını kullanırken:

  • Token'ları sabit kodlamaktan kaçının – komut satırı argümanlarında kabuk geçmişine kaydedilirler
  • Ortam değişkenlerini kullanın – komutları çalıştırmadan önce token'ları ortam değişkenlerinde ayarlayın

Yapılandırma dosyalarını kullanırken:

  • Token'ları asla sürüm kontrolüne göndermeyin
  • Mümkün olduğunda yapılandırma dosyalarında ortam değişkeni ikamesi kullanın

🚀 Yapılandırmanızı oluşturun

Başlamanın en hızlı yolu, tercih ettiğiniz AI aracı istemcisi için kullanıma hazır bir yapılandırma üreten etkileşimli bir araç olan SonarQube MCP Sunucusu Yapılandırma Oluşturucu'dur.

Manuel kurulum

Kendiniz yapılandırmayı tercih ederseniz, en basit yöntem sonarsource/sonarqube-mcp adresindeki konteyner imajı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 (örn. sonarsource/sonarqube-mcp:1.19.0.2785) sabitleyin. Yerel olarak oluşturmak istiyorsanız aşağıyı okuyun.

Not: Aşağıdaki örnekler docker kullanırken, OCI uyumlu herhangi bir konteyner çalışma zamanı çalışır (örn. Podman, nerdctl). docker yerine tercih ettiğiniz aracı koymanız yeterlidir.

Antigravity

SonarQube MCP Sunucusu, Antigravity MCP Mağazası'nda mevcuttur. Şu talimatları izleyin:

  1. Aracı Yan Paneli'ni açın
  2. Sağ üstteki üç noktaya (...) tıklayın ve MCP Sunucuları'nı seçin
  3. SonarQube için arama yapın ve Yükle'yi seçin
  4. Gerekli SonarQube Kullanıcı token'ını sağlayın. Ayrıca SonarQube Cloud için organizasyon 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 ile bağlanmak için:

Aracı Yan Paneli'nde, üç noktaya (...) -> MCP Mağazası -> MCP Sunucularını Yönet -> Ham yapılandırmayı görüntüle'ye tıklayın 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 manuel olarak "SONARQUBE_URL": "https://sonarqube.us" ve args dizisine "-e", "SONARQUBE_URL" ekleyin.

  • SonarQube Server ile 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 ile 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 ile 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 ile 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" ekleyin.

  • SonarQube Server ile 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 ile bağlanmak için:

Install for SonarQube Cloud

SonarQube Cloud US için, kurulumdan sonra MCP yapılandırmanızdaki env bölümüne manuel olarak "SONARQUBE_URL": "https://sonarqube.us" ekleyin.

  • SonarQube Server ile bağlanmak için:

Install for SonarQube Server

Gemini CLI

Not: Gemini CLI uzantısı sonarqube-agent-plugins deposuna taşındı. Lütfen ileriye dönük olarak oradan yükleyin.

MCP sunucu uzantımızı aşağıdaki komutu kullanarak yükleyebilirsiniz:

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ız
    • SONARQUBE_ORG - Organizasyon anahtarınız
    • SONARQUBE_URL - (İsteğe bağlı) SonarQube Cloud US için https://sonarqube.us olarak ayarlayın
  • SonarQube Server için:

    • SONARQUBE_TOKEN - SonarQube Server KULLANICI token'ınız
    • SONARQUBE_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 sekme tuşunu kullanabilirsiniz.

  • SonarQube Cloud ile 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ümanlar'a -e, SONARQUBE_URL ve Ortam Değişkenleri'ne SONARQUBE_URL=https://sonarqube.us ekleyin.

  • SonarQube Server ile 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ı, CI/CD'nizde doğrudan SonarQube MCP sunucusundan yararlanabilir.

Sırları Copilot ortamınıza eklemek için Copilot dokümantasyonunu izleyin. Yalnızca COPILOT_MCP_ ile ön eklenmiş adlara sahip sırlar MCP yapılandırmanız tarafından 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 ile 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 ile 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 alanı dizininizde bir .kiro/settings/mcp.json dosyası oluşturun (veya zaten varsa düzenleyin), aşağıdaki yapılandırmayı ekleyin:

  • SonarQube Cloud ile 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 ile 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.

Install for SonarQube Cloud

SonarQube Cloud US için, kurulumdan sonra MCP yapılandırmanızdaki env bölümüne manuel olarak "SONARQUBE_URL": "https://sonarqube.us" ekleyin.

Install for SonarQube Server

Windsurf

SonarQube MCP Sunucusu, bir Windsurf eklentisi olarak mevcuttur. Şu talimatları izleyin:

  1. Windsurf Ayarlar > Cascade > MCP Sunucuları'nı açın ve MCP Pazar Yeri'ni Aç'ı seçin
  2. Cascade MCP Pazar Yeri'nde sonarqube için arama yapın
  3. SonarQube MCP Sunucusu'nu seçin ve Yükle'yi seçin
  4. Gerekli SonarQube Kullanıcı token'ını ekleyin. Ardından SonarQube Cloud ile bağlanmak istiyorsanız organizasyon 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 için arama yapın. Uzantıyı yüklerken, 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 yürütülebilir 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 imajı düzenli olarak 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 ile 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 ile 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>"
    }
  }
}

IDE için SonarQube ile Entegrasyon

SonarQube MCP Sunucusu, geliştirme iş akışınızı daha da geliştirmek için IDE için SonarQube ile entegre olabilir ve doğrudan IDE'niz içinde daha iyi kod analizi ve içgörüler sağlayabilir.

Yapılandırma

IDE için SonarQube kullanırken, SONARQUBE_IDE_PORT ortam değişkeni doğru port numarasıyla ayarlanmalıdır. VS Code için SonarQube, doğru port yapılandırmasını otomatik olarak ayarlayan bir Hızlı Yükle 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 konteyner içinde çalıştırırken, konteyner localhost üzerinde çalışan IDE için SonarQube gömülü sunucusuna erişemez. Konteynerin IDE için SonarQube sunucusuna bağlanmasına izin vermek için, konteyner çalıştırma komutunuza --network=host seçeneğini ekleyin.

Yapılandırma

Ortamınıza bağlı olarak, belirli ortam değişkenleri sağlamalısınız.

Temel

MCP Sunucusunu çalıştırırken aşağıdaki değişkeni eklemelisiniz:

Ortam değişkeniAçıklama
STORAGE_PATHSonarQube MCP Sunucusu'nun dosyalarını depolayacağı yazılabilir bir dizine giden zorunlu mutlak yol (örn. oluşturma, güncelleme ve kalıcılık için), konteyner imajı 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_PORTSonarQube MCP Sunucusu'nu IDE için SonarQube ile bağlamak için kullanılan 64120 ile 64130 arasında isteğe bağlı port numarası.
SONARQUBE_DEBUG_ENABLEDtrue 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_DISABLEDtrue olarak ayarlandığında, diske günlük yazmayı 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, analiz aracı analyze_code_snippet, aracının tam dosya içeriğini bir fileContent argümanı olarak iletmesini gerektirir. Büyük dosyalar için 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 /app/mcp-workspace konumunda konteynere bağlayın. Bu bağlama algılandığında, sunucu dosyaları doğrudan diskten proje-göreli filePath argümanını 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şunuzun yetkisi varsa run_advanced_code_analysis kullanılabilir hale gelir
  • analyze_code_snippet: filePath gereklidir ve fileContent kullanılmaz — sunucu dosyayı aynı şekilde çözümler

Seçici Araç Seti Etkinleştirme

Varsayılan olarak, bağlam yükünü azaltmak için yalnızca önemli araç setleri etkindir. İhtiyaç duydukça ek araç setlerini etkinleştirebilirsiniz.

Ortam değişkeniAçıklama
SONARQUBE_TOOLSETSEtkinleştirilecek araç setlerinin virgülle ayrılmış listesi. Ayarlandığında, yalnızca bu araç setleri kullanılabilir olur. Ayarlanmazsa, varsayılan önemli araç setleri etkinleştirilir (analysis, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Not: projects araç seti, diğer işlemler için proje anahtarlarını bulmak amacıyla gerekli olduğundan her zaman etkindir. Bağlam Artırma araçları yalnızca stdio modunda kullanılabilir ve kuruluş yetkisi gerektirir. Akışkan HTTP modunda, istemciler istek başına bunu daha da daraltmak için bir SONARQUBE_TOOLSETS HTTP başlığı gönderebilir, ancak sunucunun başlatıldığı araç setlerinin ötesinde araç seti etkinleştiremez (aşağıdaki Akışkan HTTP aktarımı bölümüne bakın).
SONARQUBE_READ_ONLYtrue 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 birikimlidir. Varsayılan: false. Akışkan HTTP modunda, istemciler bireysel 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 Akışkan HTTP aktarımı bölümüne bakın).
Kullanılabilir Araç Setleri
Araç SetiAnahtarAçıklama
AnalizanalysisKod analiz araçları (yerel analiz ve gelişmiş uzak analiz)
SorunlarissuesSonarQube sorunlarını arama ve yönetme
Güvenlik Açık Noktalarısecurity-hotspotsGüvenlik Açık Noktalarını arama ve inceleme
ProjelerprojectsSonarQube projelerine göz atma ve arama
Kalite Kapılarıquality-gatesKalite kapılarına ve durumlarına erişim
KurallarrulesSonarQube kurallarına göz atma ve arama
KaynaklarsourcesKaynak koda ve SCM bilgilerine erişim
TekrarlarduplicationsProjeler arası kod tekrarlarını bulma
ÖlçümlermeasuresMetrikleri ve ölçümleri alma (hem ölçümler hem de metrik araçlarını içerir)
DillerlanguagesDesteklenen programlama dillerini listeleme
PortföylerportfoliosPortföy ve kuruluşları yönetme (Cloud ve Server)
SistemsystemSistem yönetim araçları (yalnızca Server)
Web KancalarıwebhooksWeb kancalarını yönetme
Bağımlılık Riskleridependency-risksBağımlılık risklerini ve güvenlik sorunlarını analiz etme (SCA)
KapsamcoverageTest kapsamı analizi ve iyileştirme araçları
Bağlam ArtırmacagBağlam Artırma araçları (yalnızca stdio modu, kuruluş yetkisi gerektirir)
Aracı Hazırlığıagentic-readinessAracı Hazırlık Değerlendirme araçları (SonarQube Cloud, kuruluş yetkisi gerektirir)

Örnekler

Analiz, sorunlar ve kalite kapıları araç setlerini etkinleştirme (SonarQube Cloud ile Docker 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 etkinleştirilir, bu nedenle SONARQUBE_TOOLSETS içine dahil etmeniz gerekmez.

Salt okunur modu etkinleştirme (SonarQube Cloud ile Docker 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şkeniAçıklamaGerekli
SONARQUBE_TOKENSonarQube Cloud tokenEvet
SONARQUBE_ORGSonarQube Cloud kuruluş anahtarıEvet
SONARQUBE_URLÖzel SonarQube Cloud URL'si (varsayılan: https://sonarcloud.io). SonarQube Cloud US için bunu kullanın: https://sonarqube.usHayır

Örnekler:

  • SonarQube Cloud: Yalnızca SONARQUBE_TOKEN ve SONARQUBE_ORG gereklidir
  • SonarQube Cloud US: SONARQUBE_TOKEN, SONARQUBE_ORG ve SONARQUBE_URL=https://sonarqube.us ayarlayın

SonarQube Server

Ortam değişkeniAçıklamaGerekli
SONARQUBE_TOKENSonarQube Server KULLANICI tokenEvet
SONARQUBE_URLSonarQube Server URL'nizEvet

⚠️ SonarQube Server'a bağlantı, KULLANICI türünde bir token gerektirir ve proje token'ları veya global token'lar kullanılırsa düzgün çalışmaz.

💡 Yapılandırma İpucu (stdio modu): SONARQUBE_ORG varlığı, SonarQube Cloud'a mı yoksa Server'a mı bağlandığınızı belirler. SONARQUBE_ORG ayarlanmışsa SonarQube Cloud kullanılır; aksi takdirde SonarQube Server kullanılır.

Aktarım Modları

MCP belirtimi iki aktarım mekanizması tanımlar: Stdio ve Akışkan HTTP. SonarQube MCP Sunucusu her ikisini de destekler:

MCP aktarımıSunucu moduTipik kullanım
StdioVarsayılan (SONARQUBE_TRANSPORT yok)Sunucuyu bir alt süreç olarak başlatan yerel MCP istemcileri (Cursor, Claude Code, VS Code, vb.)
Akışkan HTTPSONARQUBE_TRANSPORT=http veya httpsUzak veya çok kullanıcılı dağıtımlar; istemciler HTTP(S) üzerinden /mcp adresine bağlanır (örn. kendi barındırılan sunucu URL'si ile Windsurf)

Not: Akışkan HTTP güncel MCP ağ aktarımıdır. Önceki MCP sürümlerindeki eski yalnızca SSE HTTP aktarımı kullanımdan kaldırılmıştır ve desteklenmez.

1. Stdio (Varsayılan - Yerel Geliştirme için Önerilir)

Çoğu MCP istemcisi tarafından kullanılan, yerel geliştirme ve tek kullanıcılı kurulumlar için önerilen mod.

Ö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 (Akışkan HTTP)

Şifrelenmemiş Akışkan HTTP aktarımı. Ç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 (Akışkan HTTP) kullanın.

Ortam değişkeniAçıklamaVarsayılan
SONARQUBE_TRANSPORTAkışkan HTTP aktarımını etkinleştirmek için http olarak ayarlayınAyarlanmamış (stdio)
SONARQUBE_HTTP_PORTPort numarası (1024-65535)8080
SONARQUBE_HTTP_HOSTBağlanacak ana bilgisayar (güvenlik için varsayılan localhost)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSCORS için izin verilen virgülle ayrılmış tarayıcı kaynakları (örn. https://my-app.example.com)Ayarlanmamış
SONARQUBE_MCP_IN_CONTAINERBir konteyner içinde çalışırken true olarak ayarlayın. Resmi Docker imajı bunu otomatik olarak 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 organizasyon şu şekilde çözümlenir:
  • Sunucu başlatılırken SONARQUBE_ORG ayarlanmışsa, tüm istekler o organizasyona yönlendirilir. İstemciler SONARQUBE_ORG başlığı göndermemelidir — gönderilmesi hataya neden olur.
  • Sunucu başlatılırken SONARQUBE_ORG ayarlanmamışsa, her istemci her istekte bir SONARQUBE_ORG başlığı sağlamak zorundadır. İstemciler ayrıca SONARQUBE_TOOLSETS ve/veya SONARQUBE_READ_ONLY baş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 — yalnızca kapsamı azaltabilir, asla genişletemez. İstekler arasında oturum durumu korunmaz.

Kullanımdan kaldırıldı: SONARQUBE_TOKEN istek başlığı geriye dönük uyumluluk için hâlâ kabul edilmektedir ancak gelecekteki bir sürümde kaldırılacaktır. Authorization: Bearer <token> başlığına geçin.

3. HTTPS (TLS üzerinden Streamable HTTP) (Çok Kullanıcılı Üretim Dağıtımları için Önerilir)

TLS şifrelemesi ile güvenli Streamable HTTP aktarımı. SSL sertifikaları gerektirir.

Üretim için Önerilir: MCP sunucusunu Streamable HTTP üzerinden birden fazla 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şkeniAçıklamaVarsayılan
SONARQUBE_TRANSPORTTLS üzerinden Streamable HTTP aktarımını etkinleştirmek için https olarak ayarlayınAyarlanmadı (stdio)
SONARQUBE_HTTP_PORTPort numarası (HTTPS için genellikle 8443)8080
SONARQUBE_HTTP_HOSTBağlanacak ana bilgisayar (güvenlik için varsayılan localhost)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSCORS için izin verilen virgülle ayrılmış tarayıcı kaynakları (örn. https://my-app.example.com)Ayarlanmadı
SONARQUBE_MCP_IN_CONTAINERBir konteyner içinde çalışırken true olarak ayarlayın. Resmi Docker imajı bunu otomatik olarak 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şkeniAçıklamaVarsayılan
SONARQUBE_HTTPS_KEYSTORE_PATHAnahtar deposu dosyasının yolu (.p12 veya .jks)/etc/ssl/mcp/keystore.p12
SONARQUBE_HTTPS_KEYSTORE_PASSWORDAnahtar deposu parolasısonarlint
SONARQUBE_HTTPS_KEYSTORE_TYPEAnahtar deposu türü (PKCS12 veya JKS)PKCS12

Örnek - SonarQube Cloud ile Docker:

Not: Bir konteyner içinde çalışırken, konteynerin tüm arayüzleri dinlemesi ve çalışma zamanının port eşlemesinin çalışması için SONARQUBE_HTTP_HOST=0.0.0.0 ayarlayın ve sunucuya bir konteyner içinde olduğunu bildirmek için SONARQUBE_MCP_IN_CONTAINER=true ayarlayın. Resmi Docker imajı ikincisini otomatik olarak ayarlar; diğer OCI çalışma zamanlarını (Podman, Kubernetes, Nomad, vb.) kullanırken kendiniz ayarlayın. Ana bilgisayar tarafındaki port bayrağı, sunucuya konteyner dışından kimlerin erişebileceğini kontrol eder. SONARQUBE_HTTP_HOST=0.0.0.0 yalnızca sunucunun konteyner içinde nerede dinleyeceğini kontrol eder — tarayıcı CORS varsayılan olarak hâlâ localhost kaynaklarına 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_TOOLSETS ve SONARQUBE_READ_ONLY, belirli bir istek için sunucu düzeyindeki araç setini daraltan isteğe bağlı istek başlıklarıdır. Yalnızca kapsamı azaltabilirler — sunucunun başlatıldığı araç setlerini veya kısıtlamaları etkinleştiremez veya kaldıramazlar.

Not: Yerel geliştirme için bunun yerine Stdio aktarımını kullanın (varsayılan). HTTPS Streamable HTTP, uygun SSL sertifikalarına sahip ç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ç NoktaYöntemAçıklamaÖrnek yanıt
/healthGETCanlılık sondası. Sunucu istekleri kabul etmeye başladığında boş bir gövde ile 200 OK döndürür.(boş gövde)
/infoGETMCP 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 aktarımı ile çalışırken kullanılamaz.

Özel Sertifikalar

SonarQube Server'ınız kendinden imzalı bir sertifika veya özel bir Sertifika Yetkilisinden (CA) alınmış bir sertifika kullanıyorsa, otomatik olarak yüklenecek özel sertifikaları konteynere ekleyebilirsiniz.

Yapılandırma

Birim Bağlama Kullanma

Konteyneri çalıştırırken sertifikalarınızı içeren bir dizini 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 Formatları

Konteyner aşağıdaki sertifika formatlarını destekler:

  • .crt dosyaları (PEM veya DER kodlu)
  • .pem dosyaları (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>"
    }
  }
}

Proxy

SonarQube MCP Sunucusu, standart Java proxy sistem özellikleri aracılığıyla HTTP ve SOCKS5 proxy'lerini destekler.

Yapılandırma

HTTP/HTTPS Proxy

Proxy ayarlarını Java sistem özelliklerini kullanarak yapılandırabilirsiniz. Bunlar ortam değişkenleri olarak ayarlanabilir veya JVM argümanları olarak iletilebilir.

Yaygın Proxy Özellikleri:

ÖzellikAçıklamaÖrnek
http.proxyHostHTTP proxy ana bilgisayar adıproxy.example.com
http.proxyPortHTTP proxy portu8080
https.proxyHostHTTPS proxy ana bilgisayar adıproxy.example.com
https.proxyPortHTTPS proxy portu8443
http.nonProxyHostsProxy'yi atlayacak ana bilgisayarlar (pipe ile ayrılmış)localhost|127.0.0.1|*.internal.com

HTTP/HTTPS Proxy Kimlik Doğrulaması:

ÖzellikAçıklamaÖrnek
http.proxyUserHTTP proxy kullanıcı adımyuser
http.proxyPasswordHTTP proxy parolasımypassword
https.proxyUserHTTPS proxy kullanıcı adımyuser
https.proxyPasswordHTTPS proxy parolasımypassword

SOCKS5 Proxy

SOCKS5 proxy'leri desteklenir.

ÖzellikAçıklamaVarsayılanÖrnek
socksProxyHostSOCKS5 proxy ana bilgisayar adılocalhost
socksProxyPortSOCKS5 proxy portu10801080
java.net.socks.usernameSOCKS5 kullanıcı adı (kimlik doğrulama gerekiyorsa)myuser
java.net.socks.passwordSOCKS5 parolası (kimlik doğrulama gerekiyorsa)mypassword

Araçlar

Analiz

  • analyze_code_snippet - Kod kalitesi ve güvenlik sorunlarını belirlemek için dosya içeriğini SonarQube analizörleri ile analiz edin. Doğruluk için her zaman tam dosya içeriğini analiz eder. Sonuçları isteğe bağlı olarak belirli bir kod parçacığına filtreleyin.

    Kullanım:

    • Çalışma alanı bağlıyken (önerilir): filePath (projeye göreli) iletin — sunucu dosyayı doğrudan okur, dosya içeriğini aracı bağlam penceresinin dışında tutar
    • Çalışma alanı bağlı değilken: tam dosya analizi için tam fileContent iletin (tüm sorunları raporlar)
    • Sonuçları filtrelemek için isteğe bağlı codeSnippet ekleyin - yalnızca parçacık içindeki sorunlar raporlanır (parçacık konumu otomatik algılanır)

    Parametreler:

    • projectKey - SonarQube proje anahtarı - Zorunlu String ( SONARQUBE_PROJECT_KEY tanımlandığında yok sayılır)
    • filePath - Analiz edilecek dosyanın projeye göreli yolu (örn., src/main/java/MyClass.java). Çalışma alanı /app/mcp-workspace konumuna bağlandığında kullanılır - String
    • fileContent - String olarak tam dosya içeriği. Çalışma alanı bağlı değilken zorunludur - String
    • codeSnippet - Sorunları filtrelemek için kod parçacığı (fileContent içindeki içerikle eşleşmelidir) - String
    • language - Kodun dili (örn., 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - String
    • scope - Dosyanın kapsamı: MAIN veya TEST (varsayılan: MAIN) - String

    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, Sır tespiti

IDE için SonarQube entegrasyonu etkinleştirildiğinde:

  • analyze_file_list - IDE için SonarQube kullanarak geçerli çalışma dizinindeki dosyaları analiz edin. Bu araç, bir dosya listesi üzerinde kod kalitesi analizi gerçekleştirmek için çalışan bir IDE için SonarQube örneğine bağlanır.

    • file_absolute_paths - Analiz edilecek mutlak dosya yollarının listesi - Zorunlu String[]
  • toggle_automatic_analysis - IDE için SonarQube otomatik analizini etkinleştirin veya devre dışı bırakın. Etkinleştirildiğinde, IDE için SonarQube çalışma dizininde dosyalar değiştirildikçe bunları 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 Boolean

SonarQube Cloud organizasyonunuz için gelişmiş analiz etkinleştirildiğinde:

Çalışma alanının /app/mcp-workspace konumuna bağlanmasını gerektirir

  • run_advanced_code_analysis - Tek bir dosya için SonarQube Cloud'da gelişmiş kod analizi çalıştırın. Organizasyon, MCP yapılandırmasından çıkarılır.
    • projectKey - Projenin anahtarı - Zorunlu String ( SONARQUBE_PROJECT_KEY tanımlandığında yok sayılır)
    • branchName - En son analiz bağlamını almak için kullanılan dal adı - Zorunlu String
    • filePath - Analiz edilecek dosyanın projeye göreli yolu (örn., src/main/java/MyClass.java). - Zorunlu String
    • fileScope - Dosyanın hangi kapsamdan geldiğini tanımlar: 'MAIN' veya 'TEST' (varsayılan: MAIN) - String

Kapsam

  • search_files_by_coverage - Bir projedeki dosyaları kapsama oranına göre sıralayarak arayın (artan - en kötü kapsama önce gelir). Bu araç, test kapsamı iyileştirmesi gereken dosyaları belirlemeye yardımcı olur.

    • projectKey - Aranacak proje anahtarı - Zorunlu String ( SONARQUBE_PROJECT_KEY tanımlandığında yok sayılır)
    • branch - İsteğe bağlı uzun ömürlü dal adı (örn. main, develop). Geçerli adları bulmak için list_branches kullanın - String
    • pullRequest - İsteğe bağlı pull request anahtarı/kimliği. Geçerli anahtarları bulmak için list_pull_requests kullanın - String
    • maxCoverage - Maksimum kapsama eşiği (0-100). Yalnızca kapsama oranı <= bu değer olan dosyaları döndürür - Number
    • pageIndex - Sayfa indeksi (1 tabanlı, varsayılan: 1) - Number
    • pageSize - Sayfa boyutu (varsayılan: 100, maks: 500) - Number
  • get_file_coverage_details - Belirli bir dosya için satır satır kapsama bilgisi alın; hangi satırların kapsanmadığı ve hangilerinin kısmen kapsanan dallara sahip olduğu dahil. Bu araç, test kapsamının tam olarak nereye eklenmesi gerektiğini belirlemeye yardımcı olur. search_files_by_coverage ile düşük kapsama oranına sahip dosyaları belirledikten sonra kullanın.

    • key - Dosya anahtarı (örn. my_project:src/foo/Bar.java) - Zorunlu String
    • branch - İsteğe bağlı uzun ömürlü dal adı (örn. main, develop). Geçerli adları bulmak için list_branches kullanın - String
    • pullRequest - İsteğe bağlı pull request anahtarı/kimliği. Geçerli anahtarları bulmak için list_pull_requests kullanın - String
    • from - Analiz edilecek ilk satır (1 tabanlı, varsayılan: 1) - Number
    • to - Analiz edilecek son satır (dahil). Belirtilmezse tüm satırlar döndürülür - Number

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 - Bir SonarQube projesinin yazılım kompozisyon analizi sorunlarını (bağımlılık riskleri), analiz edilen proje, uygulama veya portföyde görünen sürümlerle eşleştirerek arayın.
    • projectKey - Proje anahtarı - Zorunlu String ( SONARQUBE_PROJECT_KEY tanımlandığında yok sayılır)
    • branch - İsteğe bağlı uzun ömürlü dal adı (örn. main, develop). Geçerli adları bulmak için list_branches kullanın - String
    • pullRequest - İsteğe bağlı pull request anahtarı/kimliği. Geçerli anahtarları bulmak için list_pull_requests kullanın - String
    • pageIndex - İsteğe bağlı sayfa indeksi (1 tabanlı, varsayılan: 1) - Integer
    • pageSize - İ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

Kuruluşlar

Not: Kuruluşlar yalnızca SonarQube Cloud'a bağlanırken kullanılabilir.

  • list_enterprises - SonarQube Cloud'da erişiminiz olan 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ı - String

Sorunlar

  • change_sonar_issue_status - Bir SonarQube sorununun durumunu "accept", "falsepositive" olarak değiştirin veya bir sorunu "reopen" edin.

    • key - Sorun anahtarı - Zorunlu String
    • status - Yeni sorun durumu - Zorunlu Enum {"accept", "falsepositive", "reopen"}
  • search_sonar_issues_in_projects - Kuruluşumun projelerindeki SonarQube sorunlarını arayın.

    • projects - İsteğe bağlı Sonar projeleri listesi - String[]
    • branch - İsteğe bağlı uzun ömürlü dal adı (örn. main, develop). Geçerli adları bulmak için list_branches kullanın - String
    • pullRequest - İsteğe bağlı pull request anahtarı/kimliği. Geçerli anahtarları bulmak için list_pull_requests kullanın - String
    • severities - Filtrelenecek isteğe bağlı önem dereceleri listesi. Olası değerler: INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]
    • impactSoftwareQualities - Filtrelenecek isteğe bağlı yazılım kalitesi listesi. Olası değerler: MAINTAINABILITY, RELIABILITY, SECURITY - String[]
    • issueStatuses - Filtrelenecek isteğe bağlı sorun durumları listesi. Olası değerler: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]
    • issueKey - Belirli bir sorunu getirmek için isteğe bağlı sorun anahtarı - String
    • p - İsteğe bağlı sayfa numarası (varsayılan: 1) - Integer
    • ps - İ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

Güvenlik Açık Noktaları

  • search_security_hotspots - Bir SonarQube projesindeki Güvenlik Açık Noktalarını arayın.

    • projectKey - Proje veya uygulama anahtarı - Zorunlu String ( SONARQUBE_PROJECT_KEY tanımlandığında yok sayılır)
    • hotspotKeys - Alınacak belirli Güvenlik Açık Noktası anahtarlarının virgülle ayrılmış listesi - String[]
    • branch - İsteğe bağlı uzun ömürlü dal adı (örn. main, develop). Geçerli adları bulmak için list_branches kullanın - String
    • pullRequest - İsteğe bağlı pull request anahtarı/kimliği. Geçerli anahtarları bulmak için list_pull_requests kullanın - String
    • files - Filtrelenecek isteğe bağlı dosya yolları listesi - String[]
    • status - İsteğe bağlı durum filtresi: TO_REVIEW, REVIEWED - String
    • resolution - İsteğe bağlı çözüm filtresi: FIXED, SAFE, ACKNOWLEDGED - String
    • sinceLeakPeriod - Sızıntı döneminden bu yana oluşturulan açık noktaları filtrele (yeni kod) - Boolean
    • onlyMine - Yalnızca bana atanmış açık noktaları göster - Boolean
    • p - İsteğe bağlı sayfa numarası (varsayılan: 1) - Integer
    • ps - İ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
  • show_security_hotspot - Kural detayları, kod bağlamı, akışlar ve yorumlar dahil olmak üzere belirli bir Güvenlik Açık Noktası hakkında ayrıntılı bilgi alın.

    • hotspotKey - Güvenlik Açık Noktası anahtarı - Zorunlu String
  • change_security_hotspot_status - Durumunu değiştirerek bir Güvenlik Açık Noktasını inceleyin. REVIEWED olarak işaretlerken bir çözüm (FIXED, SAFE veya ACKNOWLEDGED) belirtmelisiniz.

    • hotspotKey - Güvenlik Açık Noktası anahtarı - Zorunlu String
    • status - 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 listeleyin.
    • 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ın.
    • projectKey - Proje anahtarı - SONARQUBE_PROJECT_KEY yapılandırılmadığında Zorunlu String_
    • branch - İsteğe bağlı uzun ömürlü dal adı (örn. main, develop). Geçerli adları bulmak için list_branches kullanın - String
    • metricKeys - Alınacak isteğe bağlı metrik anahtarları (örn. ncloc, complexity, violations, coverage) - String[]
    • pullRequest - İsteğe bağlı pull request anahtarı/kimliği. Geçerli anahtarları bulmak için list_pull_requests kullanın - String

Metrikler

  • search_metrics - SonarQube metriklerini arayın.
    • p - İsteğe bağlı sayfa numarası (varsayılan: 1) - Integer
    • ps - İ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'da bulunan kurumsal portföyleri filtreleme ve sayfalama seçenekleriyle listeleyin.

    SonarQube Server için:

    • q - Portföyleri ada veya anahtara göre filtrelemek için isteğe bağlı arama sorgusu - String
    • favorite - true ise yalnızca favori portföyleri döndürür - Boolean
    • pageIndex - İsteğe bağlı 1 tabanlı sayfa numarası (varsayılan: 1) - Integer
    • pageSize - İsteğe bağlı sayfa boyutu, maks 500 (varsayılan: 100) - Integer

    SonarQube Cloud için:

    • enterpriseId - Kuruluş uuid'si. Yalnızca 'favorite' parametresi true değeriyle sağlanırsa atlanabilir - String
    • q - Portföyleri ada göre filtrelemek için isteğe bağlı arama sorgusu - String
    • favorite - 'enterpriseId' parametresi atlanırsa true olması zorunludur. true ise yalnızca oturum açmış kullanıcı tarafından favorilere eklenen portföyleri döndürür. 'draft' true olduğunda true olamaz - Boolean
    • draft - true ise yalnızca oturum açmış kullanıcı tarafından oluşturulan taslakları döndürür. 'favorite' true olduğunda true olamaz - Boolean
    • pageIndex - Getirilecek sayfanın isteğe bağlı indeksi (varsayılan: 1) - Integer
    • pageSize - Getirilecek sayfanın isteğe bağlı boyutu (varsayılan: 50) - Integer

Projeler

  • search_my_sonarqube_projects - SonarQube projelerini bulun. Yanıt sayfalıdır.

    • page - İsteğe bağlı sayfa numarası - String
  • list_branches - Bir proje için uzun ömürlü dalları listeleyin (örn. main, develop, master). SonarQube Cloud'da yalnızca LONG dallarını ve SonarQube Server'da BRANCH girişini döndürür — diğer araçlardaki branch parametresi için güvenli adlar. Pull request'ler için bunun yerine list_pull_requests kullanın.

    • projectKey - Proje anahtarı (örn. my_project) - Zorunlu String ( SONARQUBE_PROJECT_KEY tanımlandığında yok sayılır)
  • list_pull_requests - Bir proje için tüm pull request'leri listeleyin. Kapsamlarını, sorunlarını veya kalitelerini analiz etmeden önce mevcut pull request'leri keşfetmek için bu aracı kullanın. Diğer araçlarla (örn. search_files_by_coverage, get_file_coverage_details) kullanılabilecek pull request anahtarını/kimliğini döndürür. Uzun ömürlü dallar için bunun yerine list_branches kullanın.

    • projectKey - Proje anahtarı (örn. my_project) - Zorunlu String ( SONARQUBE_PROJECT_KEY tanımlandığında yok sayılır)

Kalite Kapıları

  • get_project_quality_gate_status - SonarQube projesi için Kalite Kapısı Durumunu alın.

    • analysisId - İsteğe bağlı analiz kimliği - String
    • branch - İsteğe bağlı uzun ömürlü dal adı (örn. main, develop). Geçerli adları bulmak için list_branches kullanın - String
    • projectId - İsteğe bağlı proje kimliği - String
    • projectKey - İsteğe bağlı proje anahtarı - String
    • pullRequest - İsteğe bağlı pull request anahtarı/kimliği. Geçerli anahtarları bulmak için list_pull_requests kullanın - String
  • list_quality_gates - SonarQube'umdaki tüm kalite kapılarını listeleyin.

Kurallar

  • show_rule - Bir SonarQube kuralı hakkında ayrıntılı bilgi gösterir.
    • key - Kural anahtarı - Zorunlu String

Tekrarlar (Duplications)

  • search_duplicated_files - Bir SonarQube projesinde kod tekrarı olan dosyaları arayın. Varsayılan olarak, tüm sayfalardaki tüm tekrarlı dosyaları otomatik olarak getirir (maksimum 10.000 dosya). Yalnızca tekrar içeren dosyaları döndürür.

    • projectKey - Proje anahtarı - Zorunlu String ( SONARQUBE_PROJECT_KEY tanımlandığında yok sayılır)
    • branch - İsteğe bağlı uzun ömürlü dal adı (örn. main, develop). Geçerli adları bulmak için list_branches kullanın - String
    • pullRequest - İsteğe bağlı pull request anahtarı/kimliği. Geçerli anahtarları bulmak için list_pull_requests kullanın - String
    • pageSize - Manuel sayfalama için isteğe bağlı sayfa başına sonuç sayısı (maks: 500). Belirtilmezse tüm tekrarlı dosyaları otomatik getirir - Integer
    • pageIndex - Manuel sayfalama için isteğe bağlı sayfa numarası (1'den başlar). Belirtilmezse tüm tekrarlı dosyaları otomatik getirir - Integer
  • get_duplications - Bir dosya için tekrarları alın. Dosyanın projesinde Gözatma izni gerektirir.

    • key - Dosya anahtarı - Zorunlu String
    • branch - İsteğe bağlı uzun ömürlü dal adı (örn. main, develop). Geçerli adları bulmak için list_branches kullanın - String
    • pullRequest - İsteğe bağlı pull request anahtarı/kimliği. Geçerli anahtarları bulmak için list_pull_requests kullanın - String

Kaynaklar

  • get_raw_source - SonarQube'dan kaynak kodunu ham metin olarak alır. Dosya üzerinde 'Kaynak Kodunu Gör' izni gerektirir.

    • key - Dosya anahtarı - Zorunlu String
    • branch - İsteğe bağlı uzun ömürlü dal adı (örn. main, develop). Geçerli adları bulmak için list_branches kullanın - String
    • pullRequest - İsteğe bağlı pull request anahtarı/ID'si. Geçerli anahtarları bulmak için list_pull_requests kullanı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 String
    • commits_by_line - Değer false ise satırları SCM commit'ine göre gruplandır, aksi takdirde her satır için commit'leri göster - String
    • from - Döndürülecek ilk satır. 1'den başlar - Number
    • to - 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 durumda), 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 olmak üzere 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önetimi 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 sistemine ping atarak canlı olup olmadığını kontrol eder. 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 id döndürür.

Web Kancaları

  • create_webhook - SonarQube organizasyonu veya projesi için yeni bir web kancası oluşturur. Belirtilen projede 'Yönet' izni veya global 'Yönet' izni gerektirir.

    • name - Web kancası adı - Zorunlu String
    • url - Web kancası URL'si - Zorunlu String
    • projectKey - Projeye özel web kancası için isteğe bağlı proje anahtarı - String
    • secret - Web kancası yükünü güvence altına almak için isteğe bağlı web kancası sırrı - String
  • list_webhooks - SonarQube organizasyonu veya projesi için tüm web kancalarını listeler. Belirtilen projede 'Yönet' izni veya global 'Yönet' izni gerektirir.

    • projectKey - Projeye özel web kancalarını listelemek için isteğe bağlı proje anahtarı - String

Bağlam Artırma

Mimari Araçları
  • search_by_signature_patterns - Regex desenleri kullanarak kod öğelerini (sınıflar, metotlar, arayüzler, ...) bildirim imzalarına göre bulur.

    • include_code_regex_list - İmzalarla eşleştirilecek regex desenleri listesi - Zorunlu String[]
    • exclude_code_regex_list - Sonuçlardan hariç tutulacak regex desenleri listesi - String[]
    • include_glob - Dosya filtresi glob deseni (örn., *.java) - String
    • exclude_glob - Dosya hariç tutma glob deseni - String
    • fields - Yanıta dahil edilecek alanların virgülle ayrılmış listesi - String
    • limit - Döndürülecek maksimum sonuç sayısı (varsayılan: 10) - Integer
    • regex_lists_operator - Birden çok desenin nasıl birleştirileceği: OR (varsayılan) veya AND - String
  • search_by_body_patterns - Regex desenleri kullanarak kod öğelerini uygulama gövdelerine göre 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 desenleri listesi - Zorunlu String[]
    • exclude_code_regex_list - Sonuçlardan hariç tutulacak regex desenleri listesi - String[]
    • include_glob - Dosya filtresi glob deseni - String
    • exclude_glob - Dosya hariç tutma glob deseni - String
    • fields - Yanıta dahil edilecek alanların virgülle ayrılmış listesi - String
    • limit - Döndürülecek maksimum sonuç sayısı (varsayılan: 10) - Integer
    • regex_lists_operator - Birden çok desenin nasıl birleştirileceği: OR (varsayılan) veya AND - String
  • get_upstream_call_flow - Belirli bir fonksiyonu hangi fonksiyonların ç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 - Fonksiyonun tam nitelikli adı - Zorunlu String
    • depth - Çağrı zinciri derinliği (0=sadece fonksiyon, 1=doğrudan çağıranlar, vb.) - Integer
    • fields - Yanıta dahil edilecek alanların virgülle ayrılmış listesi - String
  • get_downstream_call_flow - Belirli bir fonksiyonun hangi fonksiyonları çağırdığını izler. Etki analizi ve yürütme akışını anlamak için kullanışlıdır.

    • fqn - Fonksiyonun tam nitelikli adı - Zorunlu String
    • depth - Çağrı zinciri derinliği (0=sadece fonksiyon, 1=doğrudan çağrılanlar, vb.) - Integer
    • fields - Yanıta dahil edilecek alanların virgülle ayrılmış listesi - String
  • get_source_code - Tam nitelikli adıyla bir kod öğesi için tam kaynak kodunu (imza ve gövde) alır.

    • fqn - Öğenin tam nitelikli adı - Zorunlu String
    • fields - Yanıta dahil edilecek alanların virgülle ayrılmış listesi - String
  • get_type_hierarchy - Sınıf benzeri bir yapı (sınıf, arayüz, enum, record, exception, struct) için tam kalıtım hiyerarşisini alır. Kalıtım ağaçlarını ve yeniden düzenlemeyi anlamak için gereklidir.

    • fqn - Sınıf benzeri yapının tam nitelikli adı - Zorunlu String
    • fields - Yanıta dahil edilecek alanların virgülle ayrılmış listesi - String
  • 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 String
    • fields - Yanıta dahil edilecek alanların virgülle ayrılmış listesi - String
  • 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=sadece kök, 1=kök + çocuklar, vb.) - Zorunlu Integer
    • path_prefix - Düğümleri filtrelemek için isteğe bağlı yol öneki (örn., com.example.service) - String
    • ecosystem - Filtrelenecek isteğe bağlı ekosistem (java, cs, py, js, ts) - String
  • get_intended_architecture - Hangi modüllerin diğerlerine bağlı olmasına izin verildiğini belirten kullanıcı tanımlı mimari kısıtlamaları alır.

Kılavuz Araçları
  • get_guidelines - SonarQube proje sorunlarına, katalog kategorilerine veya her ikisinin bir kombinasyonuna dayalı kodlama kılavuzlarını alır.
    • mode - Kılavuz alma modu: project_based, category_based veya combined - Zorunlu String
    • categories - Kategori adları listesi (category_based ve combined modları için gereklidir) - String[]
    • languages - SonarQube depo anahtarı biçiminde hedef dillerin listesi (categories sağlandığında gereklidir) - String[]
    • file_paths - Kılavuzları filtrelemek için isteğe bağlı dosya yolları listesi - String[]
Üçüncü Taraf Bağımlılık Araçları
  • check_dependency - Bir üçüncü taraf bağımlılığını eklemeden veya güncellemeden önce güvenlik açıkları, tedarik zinciri kötü amaçlı yazılımları ve lisans uyumluluğu açısından kontrol eder.
Bağlam Artırma Ortam Değişkenleri
DeğişkenAçıklamaGerekliVarsayılan
SONARQUBE_URLSonarQube Cloud URL'siEvethttps://sonarcloud.io
SONARQUBE_TOKENKimlik doğrulama belirteciEvetYok
SONARQUBE_ORGSonarQube Cloud'daki organizasyon anahtarıEvetYok
SONARQUBE_PROJECT_KEYSonarQube Cloud'daki proje anahtarıEvetYok
SONAR_SQ_BRANCHAçık SonarQube dal geçersiz kılması *HayırYok
SONARQUBE_DEBUG_ENABLEDHata ayıklama günlüğünü etkinleştir (sorun giderme için)HayırFalse
SONAR_LOG_LEVELGünlük ayrıntı düzeyi (TRACE, DEBUG, INFO, WARNING, ERROR)HayırINFO
  • 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 (Önerilir)

Öncelikle, 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 Artırma 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 olarak dışa aktarın (export SONARQUBE_TOKEN=...). Docker, -e SONARQUBE_TOKEN aracılığıyla bunu konteynere iletecektir.

Ajan Hazırlığı

Not: Ajan Hazırlığı araçları yalnızca SonarQube Cloud'da kullanılabilir ve özelliğin organizasyonunuz için etkinleştirilmiş olmasını gerektirir.

  • start_agentic_readiness_assessment - Bir proje için ajan hazırlık değerlendirmesi başlatır. PENDING durumu ve bir assessmentId ile hemen döner. Sonuçları sorgulamak için get_agentic_readiness_assessment kullanın.

    • projectKey - Proje anahtarı - Zorunlu String ( SONARQUBE_PROJECT_KEY tanımlandığında yok sayılır)
    • branch - Değerlendirilecek dal. Projenin varsayılan dalını kullanmak için atlayın - String
  • get_agentic_readiness_assessment - Bir değerlendirmenin sonucunu alır. Durum COMPLETED, FAILED veya INTERRUPTED olana kadar aynı assessmentId ile yeniden çağırın. Tamamlandığında, genel seviyeyi ve önerilen eylemler ile kanıtları içeren sütun bazında bir dökümü döndürür.

    • assessmentId - start_agentic_readiness_assessment tarafından döndürülen değerlendirme ID'si - Zorunlu String
  • list_agentic_readiness_assessments - Bir proje için tüm değerlendirmeleri en yeniden eskiye doğru listeler. Tam sütun düzeyinde sonuçlar için get_agentic_readiness_assessment kullanın.

    • projectKey - Değerlendirmeleri listelenecek proje anahtarı - Zorunlu String ( SONARQUBE_PROJECT_KEY tanımlandığında yok sayılır)
    • branch - Değerlendirmeleri dal adına göre filtrele. Tüm dallar için değerlendirmeleri listelemek üzere atlayın - String
    • pageIndex - 1 tabanlı sayfa dizini (varsayılan: 1) - Number
    • pageSize - Sayfa başına öğe sayısı, maksimum 100 (varsayılan: 50) - Number

Örnek İstemler

SonarQube MCP Sunucusunu kurduktan sonra, yaygın gerçek dünya senaryoları için bazı örnek istemler:

Başarısız Bir 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?
Sürüm Ö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 Artırma
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 Desteği
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 konteyner imajını tercih edin.

Sunucuyu Docker olmadan bağımsız bir JAR olarak çalıştırmak için, SonarSource ikili dosya deposundan önceden derlenmiş bir sürüm indirin. Yayınlanan her sürüm burada sonarqube-mcp-server-<version>.jar olarak yayınlanır (örneğin, sonarqube-mcp-server-1.19.0.2785.jar).

JAR'dan Çalıştırma

İkili dosya deposundan istediğiniz sürümün JAR dosyasını indirin, ardından MCP istemcinizi Java 21 veya üzeri ile çalışacak şekilde 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 üzerini 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> yolunu 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 ayarını yapın.

Yaygın Sorunlar

"Özellik çalışmıyor" veya "Eksik araçlar/işlevsellik"

Güncel olmayan bir Docker imajı çalıştırıyor olabilirsiniz. Docker imajları 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 imajı ç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 edip ç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ümü referans alın:

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 imajı sessizce yükseltmemesi için --pull=always öğesini kaldırın.

Veri ve Telemetri

Bu sunucu, ürünü geliştirmeye yardımcı olmak için anonim kullanım verileri toplar ve SonarSource'a gönderir. Hiçbir kaynak kodu veya IP adresi toplanmaz ve SonarSource verileri başka hiç kimseyle paylaşmaz. Telemetri toplama, aşağıdaki sistem özelliği veya ortam değişkeni ile 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 Source-Available License v1.0 kapsamı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, Sonuç Verilerinin yalnızca dahili yazılım geliştirme amaçlarınız için kullanılması da dahil olmak üzere, SonarQube Cloud Hizmet Şartları veya SonarQube Server Hüküm ve Koşulları tarafından yönetilir.