SonarQube

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

SonarQube MCP ile neler yapabilirsiniz?

  • Kod parçacıklarını analiz et — Asistanınızdan, analyze_code_snippet aracı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

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 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 docker kullanı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:

  1. Aracı Yan Paneli'ni açın
  2. Sağ üstteki üç noktaya (...) tıklayın ve MCP Sunucuları'nı seçin
  3. SonarQube arayın ve Kur'u seçin
  4. 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:

Install for SonarQube Cloud

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:

Install for SonarQube Server

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ız
    • SONARQUBE_ORG - Kuruluş 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 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.

Install for SonarQube Cloud

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.

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ını Aç'ı seçin
  2. Cascade MCP Pazarı'nda sonarqube arayın
  3. SonarQube MCP Sunucusu'nu seçin ve Kur'u seçin
  4. 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=host seç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şkeniAçıklama
STORAGE_PATHSonarQube 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_PORTSonarQube 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_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, 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_analysis kullanılabilir hale gelir
  • analyze_code_snippet: filePath gereklidir ve fileContent kullanı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şkeniAçıklama
SONARQUBE_TOOLSETSEtkinleş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_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 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ç SetiAnahtarAçıklama
AnalizanalysisKod analiz araçları (analyze_code_snippet aracılığıyla yerel analiz, analyze_file_list/Vortex analiz lehine kullanımdan kaldırıldı)
IDEideSonarQube for IDE köprü araçları (dosya analizi, otomatik analiz geçişi) — şu anda analysis içine de dahildir
SorunlarissuesSonarQube sorunlarını arayın ve yönetin
Güvenlik Açıklarısecurity-hotspotsGüvenlik Açıklarını arayın ve inceleyin
ProjelerprojectsSonarQube projelerine göz atın ve arayın
Kalite Kapılarıquality-gatesKalite kapılarına ve durumlarına erişin
KurallarrulesSonarQube kurallarına göz atın ve arayın
KaynaklarsourcesKaynak koduna ve SCM bilgilerine erişin
KopyalarduplicationsProjeler arasında kod kopyalarını bulun
ÖlçümlermeasuresMetrikleri ve ölçümleri alın (hem ölçüm hem de metrik araçlarını içerir)
DillerlanguagesDesteklenen programlama dillerini listeleyin
PortföylerportfoliosPortföyleri ve kuruluşları yönetin (Cloud ve Server)
SistemsystemSistem yönetim araçları (yalnızca Server)
Webhook'larwebhooksWebhook'ları yönetin
Bağımlılık Riskleridependency-risksBağımlılık risklerini ve güvenlik sorunlarını analiz edin (SCA)
KapsamcoverageTest kapsamı analizi ve iyileştirme araçları
Vortex BağlamcagVortex bağlam araçları — yalnızca stdio. vortex lehine kullanımdan kaldırıldı (eski ad: Context Augmentation/CAG)
VortexvortexBirleş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-readinessAracı 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şkeniAçıklamaGerekli
SONARQUBE_TOKENSonarQube Cloud belirtecinizEvet
SONARQUBE_ORGSonarQube Cloud kuruluş anahtarınızEvet
SONARQUBE_URLÖzel SonarQube Cloud URL'si (varsayılan https://sonarcloud.io). SonarQube Cloud US için 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 belirtecinizEvet
SONARQUBE_URLSonarQube Server URL'nizEvet

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_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.

Taşıma Modları

MCP spesifikasyonu iki taşıma mekanizması tanımlar: Stdio ve Streamable HTTP. SonarQube MCP Sunucusu her ikisini de destekler:

MCP taşımaSunucu moduTipik kullanım
StdioVarsayılan (SONARQUBE_TRANSPORT yok)Sunucuyu alt işlem olarak başlatan yerel MCP istemcileri (Cursor, Claude Code, VS Code, vb.)
Streamable HTTPSONARQUBE_TRANSPORT=http veya httpsUzak 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şkeniAçıklamaVarsayılan
SONARQUBE_TRANSPORTStreamable HTTP taşımasını etkinleştirmek için http olarak ayarlayınAyarlı değil (stdio)
SONARQUBE_HTTP_PORTBağlantı noktası numarası (1024-65535)8080
SONARQUBE_HTTP_HOSTBağlanacak ana bilgisayar (güvenlik için varsayılan olarak localhost)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSCORS için izin verilen virgülle ayrılmış tarayıcı kaynakları (ör. https://my-app.example.com)Ayarlı değil
SONARQUBE_MCP_IN_CONTAINERBir 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_ORG ayarlanmışsa, tüm istekler o kuruluşa yönlendirilir. İstemciler bir SONARQUBE_ORG başlığı göndermemelidir — gönderilirse hata oluşur.
  • Sunucu başlangıcında SONARQUBE_ORG ayarlanmamışsa, her istemci her istekte bir SONARQUBE_ORG başlığı sağlamalıdı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 — kapsamı yalnızca 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 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şkeniAçıklamaVarsayılan
SONARQUBE_TRANSPORTTLS üzerinden Streamable HTTP taşımasını etkinleştirmek için https olarak ayarlayınAyarlı değil (stdio)
SONARQUBE_HTTP_PORTBağlantı noktası numarası (HTTPS için genellikle 8443)8080
SONARQUBE_HTTP_HOSTBağlanacak ana bilgisayar (güvenlik için varsayılan olarak localhost)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSCORS için izin verilen virgülle ayrılmış tarayıcı kaynakları (ör. https://my-app.example.com)Ayarlı değil
SONARQUBE_MCP_IN_CONTAINERBir 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ş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 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.0 ayarlayın ve sunucuya bir kapsayıcı içinde olduğunu söylemek için SONARQUBE_MCP_IN_CONTAINER=true ayarlayı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.0 yalnı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_TOOLSETS ve SONARQUBE_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ç noktaYöntemAçıklamaÖrnek yanıt
/healthGETCanlılık yoklaması. Sunucu istekleri kabul etmeye başladığında boş gövdeli 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 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:

  • .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>"
    }
  }
}

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:

ÖzellikAçıklamaÖrnek
http.proxyHostHTTP proxy ana bilgisayar adıproxy.example.com
http.proxyPortHTTP proxy bağlantı noktası8080
https.proxyHostHTTPS proxy ana bilgisayar adıproxy.example.com
https.proxyPortHTTPS proxy bağlantı noktası8443
http.nonProxyHostsProxy'yi atlayan ana bilgisayarlar (boru 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 bağlantı noktası10801080
java.net.socks.usernameSOCKS5 kullanıcı adı (kimlik doğrulama gerekiyorsa)—myuser
java.net.socks.passwordSOCKS5 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/.key dosyaları) önce PKCS12 biçimine dönüştürülmelidir. Bunları dönüştürmek için openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 kullanı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_snippet gelecekteki bir sürümde kaldırılacaktır. analyze_file_list kullanmak için SonarQube for IDE'yi bağlayın veya run_advanced_code_analysis kullanmak 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 fileContent iletin (tüm sorunları bildirir)
    • Sonuçları filtrelemek için isteğe bağlı codeSnippet ekleyin - 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_KEY tanı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-workspace konumuna bağlandığında kullanılır - Dize
    • fileContent - Dize olarak eksiksiz dosya içeriği. Çalışma alanı bağlı olmadığında gereklidir - Dize
    • codeSnippet - Sorunları filtrelemek için kod parçacığı (fileContent içindeki içerikle eşleşmelidir) - Dize
    • language - Kodun dili (ör. 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Dize
    • scope - 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

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-workspace konumuna 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_KEY tanımlandığında yok sayılır)
    • branch - En son analiz bağlamını almak için kullanılan dal adı - Zorunlu Dize
    • filePath - Analiz edilecek dosyanın projeye göreli yolu (ör. src/main/java/MyClass.java). - Zorunlu Dize
    • fileScope - 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_KEY tanımlandığında yok sayılır)
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek için list_branches kullanın - Dize
    • pullRequest - İsteğe bağlı çekme isteği anahtarı/ID'si. Geçerli anahtarları keşfetmek için list_pull_requests kullanın - Dize
    • maxCoverage - 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 Dize
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek için list_branches kullanın - Dize
    • pullRequest - İsteğe bağlı çekme isteği anahtarı/ID'si. Geçerli anahtarları keşfetmek için list_pull_requests kullanın - Dize
    • from - 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_KEY tanımlandığında yok sayılır)
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek için list_branches kullanın - Dize
    • pullRequest - İsteğe bağlı çekme isteği anahtarı/ID'si. Geçerli anahtarları keşfetmek için list_pull_requests kullanın - Dize
    • pageIndex - İ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 Dize
    • status - 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çin list_branches kullanın - Dize
    • pullRequest - İsteğe bağlı çekme isteği anahtarı/ID'si. Geçerli anahtarları keşfetmek için list_pull_requests kullanın - Dize
    • severities - 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. projectKeys ve files genelinde tam olarak bir giriş gerektirir - Boole
    • issueKey - Belirli bir sorunu getirmek için isteğe bağlı sorun anahtarı - Dize
    • pageIndex - İ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_KEY tanı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çin list_branches kullanın - Dize
    • pullRequest - İsteğe bağlı çekme isteği anahtarı/ID'si. Geçerli anahtarları keşfetmek için list_pull_requests kullanın - Dize
    • files - Filtrelemek için isteğe bağlı dosya yolları listesi - Dize[]
    • status - İsteğe bağlı durum filtresi: TO_REVIEW, REVIEWED - Dize
    • resolution - İsteğe bağlı çözüm filtresi: FIXED, SAFE, ACKNOWLEDGED - Dize
    • sinceLeakPeriod - Sızıntı döneminden (yeni kod) bu yana oluşturulan noktaları filtreleyin - Boole
    • onlyMine - Yalnızca bana atanan noktaları göster - Boole
    • pageIndex - İ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 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 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_KEY yapılandırılmadığında Zorunlu String
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek 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ı/ID'si. Geçerli anahtarları keşfetmek için list_pull_requests kullanın - String

Metrikler

  • search_metrics - SonarQube metriklerini arar.
    • pageIndex - İsteğe bağlı 1 tabanlı sayfa dizini (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

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 - 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, maksimum 500 (varsayılan: 100) - Integer

    SonarQube Cloud için:

    • enterpriseId - Kurumsal uuid. Yalnızca 'favorite' parametresi true değeriyle sağlanmışsa atlanabilir - String
    • q - Portföyleri ada göre filtrelemek için isteğe bağlı arama sorgusu - String
    • favorite - '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 - Boolean
    • draft - 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 - Boolean
    • pageIndex - Getirilecek sayfanın isteğe bağlı dizini (varsayılan: 1) - Integer
    • pageSize - 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) - 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: 500) - Integer
    • q - 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: type ve mergeBranch alanlarıyla uzun ömürlü (LONG) ve kısa ömürlü (SHORT) dalları döndürür. İsteğe bağlı branchTypes filtresi: ALL (varsayılan), LONG veya SHORT.
    • SonarQube Server: analiz edilen tüm dalları (ad, kalite kapısı, analiz tarihi) döndürür. type, mergeBranch veya branchTypes filtresi yoktur.
    • Döndürülen dal adlarını diğer araçlarda branch parametresi olarak kullanın. Pull request analizi 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)
    • branchTypes - (Yalnızca SonarQube Cloud) İsteğe bağlı filtre: ALL (varsayılan), LONG veya SHORT - Enum {"ALL", "LONG", "SHORT"}
  • 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_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ır.

    • analysisId - İsteğe bağlı analiz ID'si - String
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek için list_branches kullanın - String
    • projectId - İsteğe bağlı proje ID'si - String
    • projectKey - İsteğe bağlı proje anahtarı - String
    • pullRequest - İsteğe bağlı pull request anahtarı/ID'si. Geçerli anahtarları keşfetmek için list_pull_requests kullanı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_KEY tanımlandığında yok sayılır)
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek için list_branches kullanın - String
    • pullRequest - İsteğe bağlı pull request anahtarı/ID'si. Geçerli anahtarları keşfetmek için list_pull_requests kullanın - String
    • pageSize - Manuel sayfalama için sayfa başına isteğe bağlı sonuç sayısı (maks: 500). Belirtilmezse, tüm kopyalanmış dosyaları otomatik getirir - Integer
    • pageIndex - 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 String
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek için list_branches kullanın - String
    • pullRequest - İsteğe bağlı pull request anahtarı/ID'si. Geçerli anahtarları keşfetmek için list_pull_requests kullanı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 String
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları keşfetmek için list_branches kullanın - String
    • pullRequest - İsteğe bağlı pull request anahtarı/ID'si. Geçerli anahtarları keşfetmek 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 grupla, aksi halde 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), 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 String
    • url - Webhook URL'si - Zorunlu String
    • projectKey - Projeye özel webhook için isteğe bağlı proje anahtarı - String
    • secret - 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) - String
    • exclude_glob - Dosya hariç tutma glob deseni - String
    • fields - Yanıta dahil edilecek virgülle ayrılmış alan 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 - 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 - String
    • exclude_glob - Dosya hariç tutma glob deseni - String
    • fields - Yanıta dahil edilecek virgülle ayrılmış alan 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 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 String
    • depth - Çağrı zinciri derinliği (0=yalnızca işlev, 1=doğrudan çağıranlar, vb.) - Integer
    • fields - 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 String
    • depth - Çağrı zinciri derinliği (0=yalnızca işlev, 1=doğrudan çağrılanlar, vb.) - Integer
    • fields - 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 String
    • fields - 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 Dize
    • fields - 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 Dize
    • fields - 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) - Dize
    • ecosystem - 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_based veya combined - Zorunlu Dize
    • categories - Kategori adlarının listesi (category_based ve combined modları için gereklidir) - Dize[]
    • languages - SonarQube deposu anahtar biçiminde hedef dillerin listesi (categories sağ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şkenAçıklamaGerekliVarsayılan
SONARQUBE_URLSonarQube Cloud URL'siEvethttps://sonarcloud.io
SONARQUBE_TOKENKimlik doğrulama belirteciEvetYok
SONARQUBE_ORGSonarQube Cloud'da kuruluş anahtarıEvetYok
SONARQUBE_PROJECT_KEYSonarQube Cloud'da proje anahtarıEvetYok
SONAR_SQ_BRANCHAçık SonarQube dal geçersiz kılma *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 (Ö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. PENDING durumu ve bir assessmentId ile hemen döner. Sonuçları yoklamak için get_agentic_readiness_assessment kullanın.

    • projectKey - Proje anahtarı - Zorunlu Dize (SONARQUBE_PROJECT_KEY tanı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, FAILED veya INTERRUPTED olana kadar aynı assessmentId ile 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_assessment tarafı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_assessment kullanın.

    • projectKey - Değerlendirmelerin listeleneceği proje anahtarı - Zorunlu Dize (SONARQUBE_PROJECT_KEY tanı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 - Dize
    • pageIndex - 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.