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?

  • SonarQube Cloud veya Server'a bağlanın — Asistanınızı SonarQube'a bağlamak için sonarsource/sonarqube-mcp kapsayıcısını bir token, kuruluş anahtarı veya sunucu URL'siyle yapılandırın.
  • Kod parçacıklarını analiz edin — Asistandan, dosyaları doğrudan diskten okumak için bir çalışma alanı bağlaması kullanarak bir kod parçacığını veya dosyayı analiz etmesini isteyin.
  • Sorunları arayın ve yönetin — issues araç seti aracılığıyla SonarQube sorunlarını bulun ve güncelleyin.
  • Güvenlik noktalarını inceleyin — security-hotspots araç seti aracılığıyla Güvenlik Noktalarını arayın ve inceleyin.
  • Projeleri ve kalite kapılarını görüntüleyin — Proje anahtarlarını, kalite kapılarını, kuralları, ölçümleri ve kapsam verilerini arayın.
  • Araç setlerini sınırlayın ve salt okunur modu kullanın — Hangi araçların yükleneceğini denetlemek ve yazma işlemlerini engellemek için SONARQUBE_TOOLSETS ve SONARQUBE_READ_ONLY değişkenlerini kullanın.

Dokümantasyon

Sonar logo

Build Quality Gate Status

SonarQube MCP Server

SonarQube MCP Server, 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, kod parçacıklarının doğrudan aracı bağlamında analiz edilmesini destekler.

Hızlı kurulum ile başlayın veya SonarQube ürün ailesi hakkında daha fazla bilgi edinin.

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ı komut satırı bağımsız değişkenlerinde sabit kodlamaktan kaçının – bunlar kabuk geçmişine kaydedilir
  • 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 ikamesini kullanın

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

Başlamanın en hızlı yolu, tercih ettiğiniz yapay zeka aracı istemcisi için kullanıma hazır bir yapılandırma oluşturan etkileşimli bir araç olan SonarQube MCP Server Configuration Generator'ı kullanmaktır.

Manuel kurulum

Her şeyi kendiniz yapılandırmayı tercih ediyorsanız, en basit yöntem sonarsource/sonarqube-mcp kapsayıcı imajımızı kullanmaktır. Otomatik güncellemeler için sonarsource/sonarqube-mcp ( --pull=always ile) kullanın veya tekrarlanabilir dağıtımlar için bir sürüm etiketine (ör. sonarsource/sonarqube-mcp:1.19.0.2785) sabitleyin. Bazı sürümler, hizalandıkları SonarQube Server sürümüyle <SQS major>.<SQS minor>.<patch> biçiminde (ör. sonarsource/sonarqube-mcp:2026.5.0) etiketlenir; yama numarası, bu SonarQube Server sürümünü hedefleyen her MCP sürümünde artırılır. Yerel olarak derlemek istiyorsanız aşağıyı okuyun.

Not: Aşağıdaki örneklerde docker kullanılsa da OCI uyumlu herhangi bir kapsayıcı çalışma zamanı kullanılabilir (ör. Podman, nerdctl). docker yerine tercih ettiğiniz aracı kullanmanız yeterlidir.

Antigravity

SonarQube MCP Server, Antigravity MCP Store'da kullanılabilir. Şu yönergeleri izleyin:

  1. Agent Side Panel'i açın
  2. Sağ üstteki üç noktaya (...) tıklayın ve MCP Servers'ı seçin
  3. SonarQube için arama yapın ve Install'ı seçin
  4. Gerekli SonarQube User token'ını girin. SonarQube Cloud için kuruluş anahtarınızı veya SonarQube Server'a bağlanıyorsanız SonarQube URL'sini de girebilirsiniz.

SonarQube Cloud US için URL'yi https://sonarqube.us olarak ayarlayın.

Alternatif olarak, sunucuyu mcp_config.json üzerinden manuel olarak yapılandırabilirsiniz:

  • SonarQube Cloud'a bağlanmak için:

Agent Side Panel'de üç noktaya (...) tıklayın -> MCP Store -> Manage MCP Servers -> View raw config yolunu izleyin 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 "SONARQUBE_URL": "https://sonarqube.us" öğesini env bölümüne, "-e", "SONARQUBE_URL" öğesini ise args dizisine 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 "SONARQUBE_URL" = "https://sonarqube.us" öğesini env bölümüne, "-e", "SONARQUBE_URL" öğesini ise args dizisine 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şındı. Bundan sonra lütfen uzantıyı oradan yükleyin.

MCP sunucusu 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 gerekir:

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 USER token'ınız
    • SONARQUBE_URL - SonarQube Server URL'niz

Kurulum tamamlandığında uzantı <home>/.gemini/extensions/sonarqube/gemini-extension.json altına yüklenir.

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 girmeniz gerekecek; alanlar arasında gezinmek için Tab tuşunu 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 Arguments'a -e, SONARQUBE_URL, Environment Variables'a 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 konumundadır.

GitHub Copilot coding agent

GitHub Copilot coding agent, SonarQube MCP sunucusundan doğrudan CI/CD'nizde yararlanabilir.

Gizli bilgileri Copilot ortamınıza eklemek için Copilot belgelerini izleyin. Yalnızca adı COPILOT_MCP_ ile başlayan gizli bilgiler MCP yapılandırmanızda kullanılabilir.

GitHub deponuzda Settings -> Copilot -> Coding agent yolunu izleyin ve MCP configuration 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 "-e", "SONARQUBE_URL" öğesini args dizisine, "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" öğesini ise env bölümüne ekleyin ve ardından COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us gizli bilgisini 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 alanı dizininizde bir .kiro/settings/mcp.json dosyası oluşturun (veya varsa düzenleyin) ve 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 "-e", "SONARQUBE_URL" öğesini args dizisine, "SONARQUBE_URL": "https://sonarqube.us" öğesini ise env bölümüne 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 kolaylaştırmak 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 Server, Windsurf eklentisi olarak kullanılabilir. Şu yönergeleri izleyin:

  1. Windsurf Settings > Cascade > MCP Servers bölümünü açın ve Open MCP Marketplace'i seçin
  2. Cascade MCP Marketplace'te sonarqube için arama yapın
  3. SonarQube MCP Server'ı seçin ve Install'ı seçin
  4. Gerekli SonarQube User token'ını ekleyin. İsteğe bağlı olarak SonarQube Cloud için varsayılan bir kuruluş anahtarı veya SonarQube Server ya da Community Build için SonarQube URL'si ekleyin.

SonarQube Cloud US için URL'yi https://sonarqube.us olarak ayarlayın.

Zed

Zed'de Extensions görünümüne gidin ve SonarQube MCP Server için arama yapın. Uzantıyı yüklerken gerekli ortam değişkenlerini girmeniz istenir:

  • 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, 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

Aşağıdaki parçacığı MCP sunucuları yapılandırma dosyasına kopyalayarak SonarQube MCP sunucusunu manuel olarak yükleyebilirsiniz:

  • 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 Server, geliştirme iş akışınızı daha da iyileştirmek ve doğrudan IDE'nizde daha iyi kod analizi ve içgörüler sağlamak için SonarQube for IDE ile entegre olabilir.

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 Quick Install 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 sunucusu Linux'ta bir kapsayıcı içinde çalışırken kapsayıcı, localhost üzerinde çalışan SonarQube for IDE gömülü sunucusuna erişemez. Kapsayıcının SonarQube for IDE sunucusuna bağlanmasını sağlamak için kapsayıcı çalıştırma komutuna --network=host seçeneğini ekleyin.

Yapılandırma

Ortamınıza bağlı olarak belirli ortam değişkenlerini sağlamanız gerekir.

Temel

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

Ortam değişkeniAçıklama
STORAGE_PATHSonarQube MCP Server’ın dosyalarını (ör. oluşturma, güncelleme ve kalıcılık için) depolayacağı yazılabilir bir dizinin mutlak yolu zorunludur; kapsayıcı görüntüsü kullanıldığında 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 projede çalışırken kullanışlıdır.
SONARQUBE_IDE_PORTSonarQube MCP Server’ı SonarQube for IDE’ye bağlamak için kullanılan, 64120 ile 64130 arasında isteğe bağlı bağlantı noktası numarası.
SONARQUBE_FORCE_LOCAL_ANALYSISCloud stdio’da, yetkilendirilmiş kuruluşlar da dahil olmak üzere Vortex analizi yerine analyze_code_snippet kullanmak için true olarak ayarlayın. analysis araç kümesini gerektirir. Varsayılan: false. SonarQube Server veya Cloud HTTP üzerinde etkisi yoktur.
SONARQUBE_DEBUG_ENABLEDtrue olarak ayarlandığında hata ayıklama günlüklerini etkinleştirir. Hata ayıklama günlükleri hem günlük dosyasına hem de STDERR’a 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 günlük dosyaları oluşturulmaz. Dosyaya günlük yazmanın istenmediği kapsayıcılı veya geçici ortamlarda kullanışlıdır. Varsayılan: false.

Çalışma Alanını Bağlama (Bağlam Şişmesini Azaltma)

Varsayılan olarak, analiz aracı analyze_code_snippet, aracının tüm dosya içeriğini fileContent bağımsız değişkeni olarak iletmesini gerektirir. Büyük dosyalarda veya bir oturumda çok sayıda dosya analiz edilirken 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 aracının bağlamından hiç 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 yapıldığında analiz araçları dosyaları doğrudan filePath kullanarak okur; fileContent gerekmez.

stdio üzerinden analiz, başlangıçta (etkinleştirilmiş araç kümelerine bağlı olarak) seçilir:

  • SonarQube Cloud: Çalışma alanı bağlaması ve en az bir yetkilendirilmiş kuruluş varsa Vortex analizi (run_advanced_code_analysis); aksi durumda yerel analiz. Vortex analizi yalnızca yetkilendirilmiş kuruluşları kabul eder.
  • SonarQube Server: Yetkilendirilmiş örneklerde Vortex analizi (çalışma alanı bağlaması gerekir); Vortex olmayan örneklerde yerel analiz.

Yerel analiz, bağlıysa SonarQube for IDE’yi, aksi durumda analyze_code_snippet kullanır. Bağlama olmadan parça analizi için fileContent gerekir.

Cloud stdio’da SONARQUBE_ORG, yetkilendirme denetimini bu kuruluşla sınırlar. Tüm kuruluşlar için parçaları kullanmak üzere SONARQUBE_FORCE_LOCAL_ANALYSIS=true ayarını yapın, analysis araç kümesini etkinleştirin ve sunucuyu yeniden başlatın. Bu ayar yalnızca Cloud stdio’yu etkiler.

HTTP/HTTPS üzerinden Cloud ve Server, MCP sunucusunda başlangıçta bir SONARQUBE_TOKEN varsa ve analysis araç kümesi etkinse analyze_code_snippet özelliğini destekler. Çözümleyicinin başlatılması için başlangıç belirteci gerekir (Cloud eklenti indirmeleri anonimdir); çağrılar, kalite profillerini ve etkin kuralları almak için çağıranın belirtecini ve Cloud’da istek için seçilen kuruluşu kullanır. Başlangıç belirteci olmadan, SONARQUBE_FORCE_LOCAL_ANALYSIS=true ayarlanmış olsa bile parça analizi ve çözümleyici indirmeleri devre dışıdır. Vortex yetkilendirmesi gerekmez.

Araçları Seçerek Etkinleştirme

MCP istemcileri, etkinleştirilmiş her aracı — adını, açıklamasını ve girdi şemasını — her konuşmada aracının bağlamına yükler. Bu listeyi SONARQUBE_TOOLSETS ile sınırlamak, bağlam kullanımını ve her oturumun belirteç maliyetini azaltır.

Varsayılan olarak yalnızca önemli araç kümeleri etkinleştirilir. Ek araç kümelerini yalnızca gerektiğinde etkinleştirin.

Ortam değişkeniAçıklama
SONARQUBE_TOOLSETSEtkinleştirilecek araç kümelerinin virgülle ayrılmış listesi. Ayarlandığında yalnızca bu araç kümeleri kullanılabilir. Ayarlanmazsa varsayılan önemli araç kümeleri etkinleştirilir (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Not: Diğer işlemler için proje anahtarlarını bulmak gerektiğinden projects araç kümesi her zaman etkindir. Vortex bağlam araçları (kullanımdan kaldırılmış adı: Context Augmentation/CAG) ve Vortex analiz araçları (kullanımdan kaldırılmış adı: Advanced Analysis/A3S) yalnızca stdio modunda kullanılabilir ve tek bir birleşik kuruluş yetkilendirmesini paylaşır — her ikisini de kullanabilmek için kuruluşun her ikisi için de yetkilendirilmiş olması gerekir. Cloud’un yerleşik analizi, çalışma zamanında seçilen kuruluşu denetler; proxy üzerinden sunulan bağlam araçları başlangıç kuruluşunu kullanır. SonarQube Server’da stdio, hem CAG hem de A3S hub’ları yetkilendirilmişse Vortex bağlamını ve run_advanced_code_analysis aracını listeler. Birleşik vortex araç kümesi anahtarını tercih edin. Kullanımdan kaldırılmış cag ve analysis anahtarları çalışmaya devam eder; vortex olmadan kullanıldıklarında başlangıç uyarısı ve sunucu talimatlarında kullanımdan kaldırma notu gösterilir. Streamable HTTP modunda istemciler, isteğe göre bu listeyi daha da daraltmak için bir SONARQUBE_TOOLSETS HTTP başlığı gönderebilir; ancak sunucu başlatılırken etkinleştirilenlerin ötesinde araç kümelerini etkinleştiremezler (aşağıdaki Streamable 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. Her ikisi de ayarlanmışsa bu filtre, SONARQUBE_TOOLSETS ile birlikte uygulanır. 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 salt okunur kısıtlamasını kaldıramazlar (aşağıdaki Streamable HTTP aktarımı bölümüne bakın).
Kullanılabilir Araç Kümeleri | Araç kümesi | Anahtar | Açıklama | |-----------------------|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| | **Analiz** | `analysis` | Kod analizi araçları (`analyze_code_snippet` aracılığıyla yerel analiz, `analyze_file_list`/Vortex analizinin lehine **kullanımdan kaldırılmıştır**) | | **IDE** | `ide` | SonarQube for IDE köprü araçları (dosya analizi, otomatik analiz geçişi) — şu anda `analysis` içinde de yer alır | | **Sorunlar** | `issues` | SonarQube sorunlarını arama ve yönetme | | **Güvenlik Açıkları** | `security-hotspots` | Güvenlik Açıklarını arama ve inceleme | | **Projeler** | `projects` | SonarQube projelerine göz atma ve projeleri arama | | **Kalite Kapıları** | `quality-gates` | Kalite kapılarına ve durumlarına erişme | | **Kurallar** | `rules` | SonarQube kurallarına göz atma ve kuralları arama | | **Kaynaklar** | `sources` | Kaynak koduna ve SCM bilgilerine erişme | | **Yinelenenler** | `duplications` | Projeler arasındaki kod tekrarlarını bulma | | **Ölçümler** | `measures` | Metrikleri ve ölçümleri alma (hem ölçüm hem de metrik araçlarını içerir) | | **Diller** | `languages` | Desteklenen programlama dillerini listeleme | | **Portföyler** | `portfolios` | Portföyleri ve kuruluşları yönetme (Cloud ve Server) | | **Sistem** | `system` | Sistem yönetimi araçları (yalnızca Server) | | **Web kancaları** | `webhooks` | Web kancalarını yönetme | | **Bağımlılık Riskleri** | `dependency-risks` | Bağımlılık risklerini ve güvenlik sorunlarını analiz etme (SCA) | | **Kapsama** | `coverage` | Test kapsamı analizi ve iyileştirme araçları | | **Vortex Bağlamı** | `cag` | Vortex bağlam araçları — yalnızca stdio. `vortex` lehine **kullanımdan kaldırılmıştır** (eski adı: Context Augmentation/CAG) | | **Vortex** | `vortex` | Vortex bağlamı ve Vortex analiz araçlarını tek bir ad altında sunan birleşik, **önerilen** araç kümesi (yalnızca stdio; Cloud için birleşik kuruluş yetkisi gerekir; Server için her iki hub'a da yetki verilmiş olmalıdır) | | **Aracı Hazır Olma Durumu** | `agentic-readiness` | Aracı Hazır Olma Değerlendirmesi araçları (SonarQube Cloud, kuruluş yetkisi gerektirir) | | **Mimari** | `architecture` | Mimarinin okunması, amaçlanan modellerin değiştirilmesi ve proje yönergelerinin yönetilmesi (varsayılan olarak etkin değildir) |

Örnekler

Analiz, sorunlar ve kalite kapıları araç kümelerini 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ç kümesi her zaman otomatik olarak etkinleştirilir; bu nedenle SONARQUBE_TOOLSETS içine eklemeniz 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

stdio için aşağıdaki ortam değişkenlerini yapılandırın:

Ortam değişkeniAçıklamaGerekli
SONARQUBE_TOKENSonarQube Cloud token'ınızEvet
SONARQUBE_ORGİsteğe bağlı sabit SonarQube Cloud kuruluş anahtarıHayır
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 gereklidir. Ayarlandığında SONARQUBE_ORG kuruluşu sabitler.
  • SonarQube Cloud US: SONARQUBE_TOKEN ve SONARQUBE_URL=https://sonarqube.us değerlerini ayarlayın; SONARQUBE_ORG isteğe bağlıdır.

SonarQube Server

Ortam değişkeniAçıklamaGerekli
SONARQUBE_TOKENSonarQube Server USER token'ınızEvet
SONARQUBE_URLSonarQube Server URL'nizEvet

Sürüm gereksinimi: SonarQube Server 2025.1 (SQS) veya 25.1 (SonarQube Community Build) ya da daha yeni bir sürüm gereklidir. Başlangıçta MCP sunucusu bağlı örneğin sürümünü okur ve sürüm çok eskiyse hata vererek çıkar (örneğin, eski 9.x/10.x Server sürümleri ve Community Build 24.x desteklenmez). SonarQube Cloud bu denetime tabi değildir.

⚠️ SonarQube Server'a bağlanmak için USER türünde bir token gerekir; proje token'ları veya genel token'lar kullanılırsa düzgün çalışmaz.

💡 Yapılandırma İpucu (stdio modu): URL belirtilmeyen bir token varsayılan olarak SonarQube Cloud'u kullanır. SonarQube Server veya farklı bir Cloud bölgesi için SONARQUBE_URL değerini ayarlayın. Ayarlandığında SONARQUBE_ORG Cloud kuruluşunu sabitler.

stdio'da SONARQUBE_ORG ayarlanması Cloud kuruluşunu sabitler. organization arayüzleri şemalardan çıkarılır ve SONARQUBE_PROJECT_KEY ayarlandığında projectKey gibi reddedilir.

SONARQUBE_ORG ayarlanmamışsa aracılar, kullanıcı hesabınızın erişebildiği kuruluş anahtarlarını, adlarını, kimliklerini ve UUID'lerini bulmak için list_organizations çağrısını yapabilir; ardından kuruluşu dikkate alan araçlarda isteğe bağlı organization bağımsız değişkeni olarak bir anahtar iletebilir. stdio, benzersiz olarak algılanan bir kuruluşu varsayılan olarak kullanmaya devam eder; hiç kuruluş bulunamazsa veya birden fazla kuruluş bulunursa kuruluş çözümlenmemiş kalır. Bir araç bağımsız değişkeni yalnızca o çağrı için geçerlidir ve algılanan varsayılanı hiçbir zaman değiştirmez. Parçacık profili ve kural aramaları, o çağrı için seçilen kuruluşu kullanır.

HTTP/HTTPS token isteklerinde sunucu düzeyindeki SONARQUBE_ORG geriye dönük uyumluluk için desteklenmeye devam eder, ancak kullanımdan kaldırılmıştır ve başlangıç uyarısı kaydeder. Bu ayar her istek için kuruluşu sabitler ve istemci kuruluş başlıklarını ve organization araç bağımsız değişkenlerini reddeder. Sunucu düzeyinde kuruluş yapılandırılmadığında, isteğe bağlı bir istemci SONARQUBE_ORG başlığı o istek için kuruluşu sabitler ve organization araç bağımsız değişkenlerine izin vermez. Başlık yoksa araç bağımsız değişkenini kullanın. Kuruluş gerektiren araçlar, tümü eksik olduğunda kuruluş keşfiyle ilgili yönergeler sunar. Kuruluş keşfi ve API'leri yalnızca kaynak tanımlayıcılarını kullanan araçlar kuruluş bağımsız değişkeni gerektirmez. Kuruluşu dikkate alan sorun araması ve bağımlılık riski yetki denetimleri seçilen kuruluşu kullanır. OAuth yapılandırıldığında sunucu düzeyindeki SONARQUBE_ORG reddedilir. OAuth isteklerinde kuruluş başlıkları da reddedilir; kuruluşları araç bağımsız değişkenleriyle seçin.

Vortex bağlam araçları, yapılandırılmış veya başlangıçta benzersiz olarak algılanan kuruluşu kullanır. Çalışma zamanı kuruluş bağımsız değişkenleri, vekil bağlam altyapısını yeniden yapılandırmaz; başlangıçta kuruluş çözümlenmemişse bu vekil atlanır. Yerleşik run_advanced_code_analysis aracı, her çağrıda seçilen kuruluş için birleşik Vortex yetkisini denetler.

Taşıma Modları

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

MCP taşımasıSunucu moduTipik kullanım
StdioVarsayılan (SONARQUBE_TRANSPORT yok)Sunucuyu alt süreç 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 HTTP(S) üzerinden /mcp adresine bağlanır (ör. kendi sunucusunda barındırılan sunucu URL'siyle Windsurf)

Not: Streamable HTTP, güncel MCP ağ taşımasıdır. Eski MCP sürümlerindeki yalnızca SSE kullanan 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, çoğu MCP istemcisinin kullandığı moddur.

Ö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, ç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ınAyarlanmamış (stdio)
SONARQUBE_HTTP_PORTBağlantı noktası numarası (1024-65535) veya işletim sisteminin atadığı bir bağlantı noktası için 08080
SONARQUBE_HTTP_HOSTBağlanılacak ana makine (güvenlik için varsayılan olarak localhost)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSCORS için izin verilen tarayıcı kaynaklarının virgülle ayrılmış listesi (ör. https://my-app.example.com)Ayarlanmamış
SONARQUBE_MCP_IN_CONTAINERBir kapsayıcı içinde çalışırken true olarak ayarlayın. Resmî Docker imajı bunu otomatik olarak ayarlar; diğer OCI çalışma zamanlarını (Podman, Kubernetes, Nomad vb.) kullanırken kendiniz ayarlayın.false
Not: HTTP/HTTPS, kullanıcının SonarQube belirtecini Authorization: Bearer <token> üzerinden kabul eder. Sonar'ın barındırılan Cloud hizmeti ayrıca OAuth desteği sunar. SonarQube Cloud belirteci isteklerinde kuruluş şu şekilde belirlenir:
  • SONARQUBE_ORG, bu istek için kuruluşu sabitleyen isteğe bağlı bir istek başlığıdır. Kullanımdan kaldırılmış sunucu düzeyindeki yapılandırma, kuruluşu tüm istekler için sabitler ve istemciden gelen kuruluş başlıklarını ve araç kuruluşu bağımsız değişkenlerini reddeder.
  • Kuruluşu dikkate alan araçlar, sunucu yapılandırması veya istek başlığı kuruluşu sabitlemediğinde isteğe bağlı bir organization bağımsız değişkenini kabul eder. Kuruluş sabitlenmişken bu bağımsız değişkenin sağlanması reddedilir.
  • Varsayılan kuruluş yoksa aracı sistemler yalnızca belirteçlerini kullanarak list_organizations çağrısı yapabilir, ardından seçilen anahtarı sonraki araçlara iletebilir.

İ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ırmaya ek filtreleme uygular — kapsamı yalnızca daraltabilir, asla genişletemez. İstekler arasında oturum durumu tutulmaz.

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

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

TLS şifrelemesi kullanan 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. Güvenlik amacıyla sunucu 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ınAyarlanmamış (stdio)
SONARQUBE_HTTP_PORTBağlantı noktası numarası (HTTPS için genellikle 8443) veya işletim sisteminin atadığı bir bağlantı noktası için 08080
SONARQUBE_HTTP_HOSTBağlanılacak ana bilgisayar (güvenlik amacıyla 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)Ayarlanmamış
SONARQUBE_MCP_IN_CONTAINERBir kapsayıcı içinde çalışırken true olarak ayarlayın. Resmî Docker imajı bunu otomatik olarak ayarlar; diğer OCI çalışma ortamlarını (Podman, Kubernetes, Nomad vb.) kullanırken kendiniz ayarlayın.false

SSL Sertifikası 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ıştırırken, kapsayıcının tüm arabirimleri dinlemesi ve çalışma ortamının bağlantı noktası eşlemesinin çalışması için SONARQUBE_HTTP_HOST=0.0.0.0 ayarlayın; sunucuya bir kapsayıcının içinde olduğunu bildirmek için de SONARQUBE_MCP_IN_CONTAINER=true ayarlayın. Resmî Docker imajı ikinci değişkeni otomatik olarak ayarlar; diğer OCI çalışma ortamlarını (Podman, Kubernetes, Nomad vb.) kullanırken kendiniz ayarlayın. Ana bilgisayar tarafındaki bağlantı noktası bayrağı, kapsayıcının dışından sunucuya kimlerin erişebileceğini belirler. SONARQUBE_HTTP_HOST=0.0.0.0 yalnızca sunucunun kapsayıcı içinde nerede dinleyeceğini belirler — tarayıcı CORS'u varsayılan olarak localhost kaynaklarına yine izin verir.

Makinenizde yerel olarak çalışan (yalnızca localhost üzerinden erişilebilen) bir sunucu için:

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 \
  sonarsource/sonarqube-mcp

Ağ üzerinden 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 \
  sonarsource/sonarqube-mcp

İstemci Yapılandırması (SonarQube Cloud):

SonarQube belirteci isteklerinde, isteğin kuruluşunu sabitlemek için istemci başlıklarında isteğe bağlı olarak SONARQUBE_ORG ayarlayın veya kuruluşları araç bağımsız değişkenleriyle seçmek için bu başlığı kullanmayın.

{
  "mcpServers": {
    "sonarqube-https": {
      "url": "https://your-server:8443/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>",
        "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, sunucu düzeyindeki araç kümesini belirli bir istek için daraltan isteğe bağlı istek başlıklarıdır. Kapsamı yalnızca daraltabilirler — sunucunun başlatıldığı yapılandırmanın ötesinde araç kümelerini etkinleştiremez veya kısıtlamaları kaldıramazlar.

Not: Yerel geliştirme için bunun yerine Stdio aktarımını (varsayılan) kullanın. HTTPS Streamable HTTP, uygun SSL sertifikalarıyla çok kullanıcılı üretim dağıtımları için tasarlanmıştır.

Barındırılan SonarQube Cloud OAuth

OAuth desteği, Sonar'ın barındırılan SonarQube Cloud MCP hizmetini hedefler. OAuth destekli bir MCP istemcisi kullanın ve istendiğinde oturum açın; istemci yapılandırmanızda OAuth sunucusu ayarlarına gerek yoktur. Mevcut SonarQube belirteci istemcileri desteklenmeye devam eder.

mcp:tools:read ve mcp:tools:write kapsamları, Cloud izinlerinize tabi olarak okuma ve yazma araçlarına erişimi birbirinden bağımsız biçimde denetler. Kuruluş seçmek için list_organizations ve araçtaki organization bağımsız değişkenlerini kullanın.

Kendi barındırdığınız dağıtımlar SonarQube belirteçlerini kullanmaya devam eder; SonarQube Server için OAuth henüz desteklenmemektedir.

Hizmet Uç Noktaları

Streamable HTTP modunda (http veya https) çalışırken sunucu, /mcp adresindeki MCP uç noktasına ek olarak kimlik doğrulaması gerektirmeyen birkaç hizmet uç noktası sunar. Bunlar hizmetler arası kullanım (izleme, düzenleme, istemci uyumluluğu denetimleri) için tasarlanmıştır ve bir Authorization başlığı gerektirmez.

Uç noktaYöntemAçıklamaÖrnek yanıt
/healthGETCanlılık denetimi. Sunucu istekleri kabul etmeye başladığında boş gövdeyle 200 OK döndürür.(boş gövde)
/infoGETMCP sunucusu 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ıyla ç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, kapsayıcıya otomatik olarak yüklenecek özel sertifikalar ekleyebilirsiniz.

Configuration

Bir Birim Bağlama Kullanımı

Kapsayıcıyı ç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 Biçimleri

Kapsayıcı aşağıdaki sertifika biçimlerini destekler:

  • .crt dosyaları (PEM veya DER kodlamalı)
  • .pem dosyaları (PEM kodlamalı)

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 dosyasından 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 bu deponun kullanılmadığı Windows'ta — JVM'yi CA sertifikasını içeren 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>. Bu depo, varsayılan güvenilir sertifikalara eklenir.

Proxy

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

Configuration

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

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 (dikey çizgiyle 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)

SonarQube Server'ınız istemcilerin TLS el sıkışması sırasında sertifika sunmasını gerektiriyorsa (karşılıklı TLS), kapsayıcıya bir PKCS12 anahtar deposu bağlayıp konumunu JAVA_OPTS üzerinden iletebilirsiniz.

Configuration

PKCS12 anahtar deposu kullanma

.p12 veya .pfx dosyanızı kapsayıcıya bağlayın ve anahtar deposu özelliklerini içeren 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 denetleyip düzeltin:

ls -la /path/to/client.p12       # -rw-r--r-- (644) veya daha geniş izinleri arayın
chmod 644 /path/to/client.p12    # kapsayıcı kullanıcısına okuma izni verin

Anahtar deposunun parolası yoksa -Djavax.net.ssl.keyStorePassword değişkenini kullanmayın. Burada kullanılan parolanın docker inspect veya işlem listesi üzerinden görülebileceğini unutmayın.

İstemci Sertifikasıyla 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 bir JAR ile PKCS12 anahtar deposu kullanma

Sunucuyu bir JAR dosyasından çalıştırırken, anahtar deposu özelliklerini -jar öncesinde 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 deposunun parolası yoksa -Djavax.net.ssl.keyStorePassword değişkenini kullanmayın.

İstemci Sertifikasıyla 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 dosya içeriğini SonarQube analizörleriyle analiz eder. Doğruluk için her zaman dosyanın tamamını analiz eder. İsteğe bağlı olarak sonuçları belirli bir kod parçacığıyla 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'ye bağlanın veya run_advanced_code_analysis kullanmak için kuruluşunuzda Vortex analizini etkinleştirin (aşağıya bakın).

    Kullanım:

    • Çalışma alanı bağlandığında (önerilir): filePath (proje göreli) değerini iletin — sunucu dosyayı doğrudan okur ve dosya içeriğinin aracının bağlam penceresine girmesini önler
    • Çalışma alanı bağlanmadığında: dosyanın tamamını analiz etmek için eksiksiz fileContent değerini iletin (tüm sorunları raporlar)
    • Sonuçları filtrelemek için isteğe bağlı codeSnippet ekleyin; yalnızca kod parçacığının içindeki sorunlar raporlanır (kod parçacığının konumu otomatik olarak algılanır)

    Parametreler:

    • organization - SonarQube Cloud kuruluş anahtarı - İsteğe bağlı String, yalnızca Cloud
    • projectKey - SonarQube proje anahtarı - Gerekli String (SONARQUBE_PROJECT_KEY tanımlıysa yok sayılır)
    • filePath - Analiz edilecek dosyanın proje göreli yolu (ör. src/main/java/MyClass.java). Çalışma alanı /app/mcp-workspace konumuna bağlandığında kullanılır - String
    • fileContent - Dize olarak dosyanın eksiksiz içeriği. Çalışma alanı bağlı değilse gereklidir - String
    • codeSnippet - Sorunları filtrelemek için kod parçacığı (fileContent içeriğiyle eşleşmelidir) - String
    • language - Kodun dili (ör. '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, Secrets detection

SonarQube for IDE ile entegrasyon etkin olduğunda: (bu iki araç hem analysis hem de ide araç kümelerinde etiketlenmiştir)

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

    • file_absolute_paths - Analiz edilecek mutlak dosya yollarının listesi - Gerekli String[]
  • 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ştirilen 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 - Gerekli Boolean

SonarQube Server'da, hem CAG hem de A3S hub'ları için yetki verildiğinde stdio, Vortex bağlam araçlarını ve run_advanced_code_analysis aracını listeler.

Vortex analizi kullanılabilir olduğunda:

Çalışma alanının /app/mcp-workspace konumuna bağlanmış olması gerekir

  • run_advanced_code_analysis - Tek bir dosyada Vortex analizi çalıştırın. SonarQube Server, nil UUID yer tutucusunu kullanır.
    • organization - SonarQube Cloud kuruluş anahtarı - İsteğe bağlı String, yalnızca Cloud
    • projectKey - Projenin anahtarı - Gerekli String (SONARQUBE_PROJECT_KEY tanımlıysa yok sayılır)
    • branch - En son analiz bağlamını almak için kullanılan dal adı - Gerekli String
    • filePath - Analiz edilecek dosyanın proje göreli yolu (ör. src/main/java/MyClass.java). - Gerekli String
    • fileScope - Dosyanın hangi kapsamdan geldiğini belirtir: 'MAIN' veya 'TEST' (varsayılan: MAIN) - String

Kapsam

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

    • projectKey - Arama yapılacak proje anahtarı - Gerekli String (SONARQUBE_PROJECT_KEY tanımlıysa yok sayılır)
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları bulmak için list_branches kullanın - String
    • pullRequest - İsteğe bağlı çekme isteği anahtarı/kimliği. Geçerli anahtarları bulmak için list_pull_requests kullanın - String
    • maxCoverage - En yüksek kapsama eşiği (0-100). Yalnızca kapsama oranı bu değere eşit veya daha düşük olan dosyaları döndürür - Number
    • pageIndex - Sayfa dizini (1 tabanlı, varsayılan: 1) - Number
    • pageSize - Sayfa boyutu (varsayılan: 100, en fazla: 500) - Number
  • get_file_coverage_details - Belirli bir dosyanın satır satır kapsama bilgilerini alın; kapsanmayan satırları ve kısmen kapsanan dalları tam olarak gösterir. Bu araç, test kapsamının tam olarak nerede eklenmesi gerektiğini belirlemeye yardımcı olur. search_files_by_coverage ile kapsamı düşük dosyaları belirledikten sonra kullanın.

    • key - Dosya anahtarı (ör. my_project:src/foo/Bar.java) - Gerekli String
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları bulmak için list_branches kullanın - String
    • pullRequest - İsteğe bağlı çekme isteği 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 için SonarQube Advanced Security gerekir. SonarQube Server'da 2025.4 Enterprise veya üzeri bir sürüm gereklidir.

  • search_dependency_risks - SonarQube projesindeki yazılım bileşimi analizi sorunlarını (bağımlılık risklerini), analiz edilen projede, uygulamada veya portföyde bulunan sürümlerle eşleştirerek arayın.
    • organization - SonarQube Cloud kuruluş anahtarı - İsteğe bağlı String, yalnızca Cloud
    • projectKey - Proje anahtarı - Gerekli String (SONARQUBE_PROJECT_KEY tanımlıysa yok sayılır)
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları bulmak için list_branches kullanın - String
    • pullRequest - İsteğe bağlı çekme isteği anahtarı/kimliği. Geçerli anahtarları bulmak için list_pull_requests kullanın - String
    • pageIndex - İsteğe bağlı sayfa dizini (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ıldığında kullanılabilir.

  • list_enterprises - SonarQube Cloud'da erişiminiz olan kuruluşları listeleyin. Diğer araçlarda kullanılabilecek kuruluş kimliklerini bulmak 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" veya "reopen" olarak değiştirin.

    • key - Sorun anahtarı - Gerekli String
    • status - Sorunun yeni durumu - Gerekli Enum {"accept", "falsepositive", "reopen"}
    • comment - Durum değişikliğini açıklayan isteğe bağlı yorum - String
  • search_sonar_issues_in_projects - Kuruluşumun projelerindeki SonarQube sorunlarını arayın.

    • organization - SonarQube Cloud kuruluş anahtarı - İsteğe bağlı String, yalnızca Cloud
    • projectKeys - İsteğe bağlı SonarQube proje anahtarları listesi - String[]
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları bulmak için list_branches kullanın - String
    • pullRequest - İsteğe bağlı çekme isteği 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 kaliteleri 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[]
    • tags - Filtrelenecek isteğe bağlı sorun etiketleri listesi. Etiketler küçük harfle yazılır - String[]
    • inNewCodePeriod - Yalnızca yeni kod dönemindeki sorunları döndürür. projectKeys ve files arasında tam olarak bir giriş gerektirir - Boolean
    • issueKey - Belirli bir sorunu getirmek için isteğe bağlı sorun anahtarı - String
    • 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

Güvenlik Odak Noktaları

  • search_security_hotspots - Bir SonarQube projesindeki Güvenlik Odak Noktalarını arayın.

    • projectKey - Proje veya uygulama anahtarı - Gerekli String (SONARQUBE_PROJECT_KEY tanımlıysa yok sayılır)
    • hotspotKeys - Alınacak belirli Güvenlik Odak Noktası anahtarlarının virgülle ayrılmış listesi - String[]
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları bulmak için list_branches kullanın - String
    • pullRequest - İsteğe bağlı çekme isteği 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 (yeni kod) bu yana oluşturulan odak noktalarını filtreler - Boolean
    • onlyMine - Yalnızca bana atanmış odak noktalarını gösterir - Boolean
    • 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
  • show_security_hotspot - Kural ayrıntıları, kod bağlamı, akışlar ve yorumlar dahil olmak üzere belirli bir Güvenlik Odak Noktası hakkında ayrıntılı bilgi alın.

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

    • hotspotKey - Güvenlik Odak Noktası anahtarı - Gerekli String
    • status - Yeni durum - Gerekli 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ı/adlarıyla eşleştirilecek 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 gerekli String
    • branch - Dal tabanlı analiz için isteğe bağlı dal adı. Geçerli adları bulmak için list_branches kullanın - String
    • metricKeys - Alınacak isteğe bağlı ölçüm anahtarları (ör. ncloc, complexity, violations, coverage) - String[]
    • pullRequest - İsteğe bağlı çekme isteği anahtarı/kimliği. Geçerli anahtarları bulmak için list_pull_requests kullanın - String

Metrikler

  • search_metrics - SonarQube metriklerini arayın.
    • 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'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, en fazla 500 (varsayılan: 100) - Integer

    SonarQube Cloud için:

    • enterpriseId - Enterprise 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ı gerekir. True ise yalnızca oturum açmış kullanıcının favorilerine eklediği 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ı dizini (varsayılan: 1) - Integer
    • pageSize - Getirilecek sayfanın isteğe bağlı boyutu (varsayılan: 50) - Integer

Projeler

  • list_organizations - Kullanıcının üyesi olduğu SonarQube Cloud kuruluşlarını anahtarlar, adlar, kimlikler ve UUID'ler dahil listeleyin. Döndürülen bir anahtarı sonraki araçlarda organization olarak kullanın.

  • search_my_sonarqube_projects - SonarQube projelerini bulun. Yanıt sayfalandırılır.

    • organization - SonarQube Cloud kuruluş anahtarı - İsteğe bağlı String, yalnızca Cloud
    • 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 edilmiş dalları listeleyin.

    • 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 edilmiş 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. Çekme isteği analizi için bunun yerine list_pull_requests kullanın.
    • projectKey - Proje anahtarı (ör. my_project) - Gerekli String ( SONARQUBE_PROJECT_KEY tanımlandığında yoksayı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 çekme isteklerini listeleyin. PR dekorasyonlu analiz (kapsam, sorunlar, kalite kapısı) için çekme isteklerini keşfetmek üzere bu aracı kullanın. Diğer araçlarla kullanılabilecek çekme isteği anahtarını/kimliğini döndürür. Çekme isteği içermeyen dal tabanlı analiz için bunun yerine list_branches kullanın.

    • projectKey - Proje anahtarı (ör. my_project) - Gerekli String ( SONARQUBE_PROJECT_KEY tanımlandığında yoksayılır)

Kalite Kapıları

  • get_project_quality_gate_status - SonarQube projesinin Kalite Kapısı Durumunu alın.

    • analysisId - İsteğe bağlı analiz kimliği - 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 kimliği - String
    • projectKey - İsteğe bağlı proje anahtarı - String
    • pullRequest - İsteğe bağlı çekme isteği anahtarı/kimliği. Geçerli anahtarları keşfetmek için list_pull_requests kullanın - String
  • list_quality_gates - SonarQube'umdaki tüm kalite kapılarını listeleyin.

    • organization - SonarQube Cloud kuruluş anahtarı - İsteğe bağlı String, yalnızca Cloud

Kurallar

  • show_rule - Bir SonarQube kuralı hakkında ayrıntılı bilgi gösterir.
    • organization - SonarQube Cloud kuruluş anahtarı - İsteğe bağlı String, yalnızca Cloud
    • key - Kural anahtarı - Gerekli String

Kod Tekrarları

  • search_duplicated_files - Bir SonarQube projesinde kod tekrarı bulunan dosyaları arayın. Varsayılan olarak tüm sayfalardaki yinelenen dosyaları otomatik olarak getirir (en fazla 10.000 dosya). Yalnızca kod tekrarı bulunan dosyaları döndürür.

    • projectKey - Proje anahtarı - Gerekli String ( SONARQUBE_PROJECT_KEY tanımlandığında yoksayı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ı çekme isteği anahtarı/kimliği. Geçerli anahtarları keşfetmek için list_pull_requests kullanın - String
    • pageSize - Elle sayfalandırma için sayfa başına isteğe bağlı sonuç sayısı (en fazla: 500). Belirtilmezse yinelenen tüm dosyalar otomatik olarak getirilir - Integer
    • pageIndex - Elle sayfalandırma için isteğe bağlı sayfa numarası (1'den başlar). Belirtilmezse yinelenen tüm dosyalar otomatik olarak getirilir - Integer
  • get_duplications - Bir dosyanın kod tekrarlarını alın. Dosyanın projesinde Browse izni gerekir.

    • key - Dosya anahtarı - Gerekli 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ı çekme isteği anahtarı/kimliği. Geçerli anahtarları keşfetmek için list_pull_requests kullanın - String

Kaynaklar

  • get_raw_source - SonarQube'dan kaynak kodunu ham metin olarak alın. Dosyada 'See Source Code' izni gerekir.

    • key - Dosya anahtarı - Gerekli 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ı çekme isteği anahtarı/kimliği. Geçerli anahtarları keşfetmek için list_pull_requests kullanın - String
  • get_scm_info - SonarQube kaynak dosyalarının SCM bilgilerini alın. Projenin dosyasında See Source Code izni gerekir.

    • key - Dosya anahtarı - Gerekli String
    • commits_by_line - Değer false ise satırları SCM commit'ine göre gruplandırır, aksi hâlde her satır için commit'leri gösterir - 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ıldığında kullanılabilir.

  • get_system_health - SonarQube Server örneğinin sağlık durumunu alın. GREEN (tamamen çalışır durumda), YELLOW (kullanılabilir ancak ilgilenilmesi gerekiyor) 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ın. 'Administer' izinleri gerekir.

  • get_system_logs - SonarQube Server sistem günlüklerini düz metin biçiminde alın. Sistem yönetimi izni gerekir.

    • 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 - Çalışır durumda olup olmadığını kontrol etmek için SonarQube Server sistemine ping gönderin. Düz metin olarak 'pong' döndürür.

  • get_system_status - SonarQube Server hakkında durum bilgilerini alın. Durumu (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), sürümü ve kimliği döndürür.

Web kancaları

  • create_webhook - SonarQube kuruluşu veya projesi için yeni bir web kancası oluşturun. Belirtilen projede 'Administer' izni veya genel 'Administer' izni gerekir.

    • organization - SonarQube Cloud kuruluş anahtarı - İsteğe bağlı String, yalnızca Cloud
    • name - Web kancası adı - Gerekli String
    • url - Web kancası URL'si - Gerekli String
    • projectKey - Projeye özel web kancası için isteğe bağlı proje anahtarı - String
    • secret - Web kancası yükünü güvenceye almak için isteğe bağlı web kancası gizli anahtarı - String
  • list_webhooks - SonarQube kuruluşu veya projesi için tüm web kancalarını listeleyin. Belirtilen projede 'Administer' izni veya genel 'Administer' izni gerekir.

    • organization - SonarQube Cloud kuruluş anahtarı - İsteğe bağlı String, yalnızca Cloud
    • projectKey - Projeye özel web kancalarını listelemek için isteğe bağlı proje anahtarı - String

Bağlam Zenginleştirme

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

    • include_code_regex_list - İmzalarla eşleştirilecek regex kalıplarının listesi - Gerekli String[]
    • exclude_code_regex_list - Sonuçlardan hariç tutulacak regex kalıplarının listesi - String[]
    • include_glob - Dosya filtresi glob kalıbı (ör. *.java) - String
    • exclude_glob - Dosya hariç tutma glob kalıbı - String
    • fields - Yanıta dahil edilecek alanların virgülle ayrılmış listesi - String
    • limit - Döndürülecek en fazla sonuç sayısı (varsayılan: 10) - Integer
    • regex_lists_operator - Birden fazla kalıbın nasıl birleştirileceği: OR (varsayılan) veya AND - String
  • search_by_body_patterns - Regex kalıpları kullanarak uygulama gövdelerine göre kod öğelerini bulun. API'lerin veya kalıpların gerçekte nerede kullanıldığını bulmak için kullanışlıdır.

    • include_code_regex_list - Kod gövdelerinde eşleştirilecek regex kalıplarının listesi - Gerekli String[]
    • exclude_code_regex_list - Sonuçlardan hariç tutulacak regex kalıplarının listesi - String[]
    • include_glob - Dosya filtresi glob kalıbı - String
    • exclude_glob - Dosya hariç tutma glob kalıbı - String
    • fields - Yanıta dahil edilecek alanların virgülle ayrılmış listesi - String
    • limit - Döndürülecek en fazla sonuç sayısı (varsayılan: 10) - Integer
    • regex_lists_operator - Birden fazla kalıbın 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ı izleyin. Tüm çağıranları ve giriş noktalarını bulmak, ayrıca imza değişikliğinin neleri bozacağını anlamak için kullanışlıdır.

    • fqn - İşlevin tam nitelikli adı - Gerekli String
    • depth - Çağrı zinciri derinliği (0=yalnızca işlev, 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 işlevin hangi işlevleri çağırdığını izleyin. Etki analizinde ve yürütme akışını anlamada kullanışlıdır.

    • fqn - İşlevin tam nitelikli adı - Gerekli 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 alanların virgülle ayrılmış listesi - String
  • get_source_code - Tam nitelikli adına göre bir kod öğesinin eksiksiz kaynak kodunu (imza ve gövde) alın.

    • fqn - Öğenin tam nitelikli adı - Gerekli String
    • fields - Yanıta dahil edilecek alanların virgülle ayrılmış listesi - String
  • get_type_hierarchy - Sınıf benzeri bir yapının (sınıf, arayüz, enum, record, exception, struct) tam kalıtım hiyerarşisini alın. 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ı - Gerekli 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ın. 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ı - Gerekli 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ın. 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.) - Gerekli Integer
    • path_prefix - Düğümleri filtrelemek için isteğe bağlı yol öneki (ör. com.example.service) - String
    • ecosystem - Filtrelenecek isteğe bağlı ekosistem (java, cs, py, js, ts) - String
  • get_intended_architecture - Hangi modüllerin diğer modüllere bağımlı olabileceğini belirten, kullanıcı tanımlı mimari kısıtlamaları alın.

Kılavuz Araçları
  • get_guidelines - SonarQube proje sorunlarına, katalog kategorilerine veya her ikisinin birleşimine dayalı kodlama kılavuzlarını alın.
    • mode - Kılavuzları alma modu: project_based, category_based veya combined - Gerekli String
    • categories - Kategori adlarının listesi (category_based ve combined modları için gereklidir) - String[]
    • languages - SonarQube depo anahtarı biçimindeki 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 - Üçüncü taraf bir bağımlılığı 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 denetleyin.
    • purl - Sürümü içeren Paket URL'si (purl), purl-spec uyarınca. Biçim: pkg:<type>/<namespace>/<name>@<version> (ör. pkg:npm/lodash@4.17.21, pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1, pkg:pypi/django@3.2.0) - Gerekli String
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_ORGBulut kuruluşu; başlangıç yapılandırmasından veya benzersiz algılamayla proxy'ye aktarılırHayırYok
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ük kaydı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)

Önce, projeniz için geçerli bir Kişisel Erişim Belirteci (PAT) içeren SONARQUBE_TOKEN ortam değişkenini dışa aktarın.

# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"

Ardından, Bağlam Zenginleştirme sunucusunun kaynak dosyalarınıza doğrudan erişebilmesi 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 öğesini env bloğuna koymayın. Bunu bir ortam değişkeni olarak dışa aktarın (export SONARQUBE_TOKEN=...). Docker, bunu -e SONARQUBE_TOKEN aracılığıyla kapsayıcıya aktarır.

Agentic Readiness

Not: Agentic Readiness araçları yalnızca SonarQube Cloud'da kullanılabilir ve kuruluşunuz için özelliğin etkinleştirilmesini gerektirir.

Özellik bayrağı, stdio modunda başlangıçta denetlenir. HTTP/HTTPS üzerinden araçları etkinleştirmek için sunucunun SONARQUBE_TOOLSETS öğesine agentic-readiness ekleyin.

  • start_agentic_readiness_assessment - Bir proje için agentic readiness değerlendirmesi başlatın. PENDING durumuyla ve bir assessmentId ile hemen yanıt verir. Sonuçları sorgulamak için get_agentic_readiness_assessment kullanın.

    • projectKey - Proje anahtarı - Gerekli String (SONARQUBE_PROJECT_KEY tanımlıysa yok sayılır)
    • branch - Değerlendirilecek dal. Projenin varsayılan dalını kullanmak için belirtmeyin - String
  • 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 ile kanıtları içeren, her sütuna göre ayrıntılı dökümü döndürür.

    • assessmentId - start_agentic_readiness_assessment tarafından döndürülen değerlendirme kimliği - Gerekli String
  • list_agentic_readiness_assessments - Bir projenin tüm değerlendirmelerini en yeniden en eskiye doğru listeleyin. Sütunların tamamına göre ayrıntılı sonuçlar için get_agentic_readiness_assessment kullanın.

    • projectKey - Değerlendirmelerin listeleneceği proje anahtarı - Gerekli String (SONARQUBE_PROJECT_KEY tanımlıysa yok sayılır)
    • branch - Değerlendirmeleri dal adına göre filtreleyin. Tüm dallardaki değerlendirmeleri listelemek için belirtmeyin - String
    • pageIndex - 1 tabanlı sayfa dizini (varsayılan: 1) - Number
    • pageSize - Sayfa başına öğe sayısı, en fazla 100 (varsayılan: 50) - Number

Mimari

Not: Bu araçları stdio veya HTTP/HTTPS modunda SONARQUBE_TOOLSETS=architecture ile etkinleştirin. SonarQube Cloud için Team veya Enterprise planı gerekir. SonarQube Server için 2026.6 veya üzeri sürüm ve Developer sürümü ya da üzeri gerekir; araçlar eski sürümlerde veya Community Build'de kullanılamaz. Mimari iş akışları ve kurtarma bölümüne bakın.

  • architecture_get - Geçerli bağımlılıkları, amaçlanan mimariyi, proje yönergelerini veya bulguları (sapmalar, kusurlar ve kod kokuları) okuyun.

    • target - current, intended, directives veya findings; kullanılabilirlik MCP ve Server derlemesine bağlıdır - Gerekli Enum
    • projectKey - Proje anahtarı - Gerekli String (SONARQUBE_PROJECT_KEY tanımlıysa yok sayılır)
    • organization - Yapılandırılmamışsa SonarQube Cloud kuruluş anahtarı - İsteğe bağlı String, yalnızca Cloud
    • component - Tam geçerli düğüm anahtarı veya amaçlanan grup yolu; belirtilmezse en üst düzey - String
    • depth - Yalnızca geçerli/amaçlanan: başlangıç düzeyinin altındaki düzeyler; geçerli için varsayılan 1, amaçlanan için tümü - Number
    • language - Yalnızca geçerli/amaçlanan/bulgular: java, cs, js, ts veya py - Enum
    • directiveId - UUID'ye göre açıklama dahil tam yönerge; sayfalama yerine kullanın - String
    • category / type - Yalnızca bulgular: sapmaları, kusurları veya kod kokularını bildirilen türlerine göre filtreleyin - Enum
    • pageIndex - Yönergeler/Bulgular: 1 tabanlı sayfa dizini (varsayılan: 1) - Number
    • pageSize - Yönergeler: özetler, varsayılan/en fazla 50. Bulgular: varsayılan 50, en fazla 1000; 0 yalnızca sayım yapar - Number
  • architecture_set - Amaçlanan mimarinin tamamını değiştirin veya proje yönergeleri oluşturun, güncelleyin ve silin. Yazma işlemlerinin etkin olduğu desteklenen Cloud ve Server derlemelerinde kullanılabilir.

    • target - intended veya directives - Gerekli Enum
    • projectKey - Proje anahtarı - Gerekli String (SONARQUBE_PROJECT_KEY tanımlıysa yok sayılır)
    • organization - Yapılandırılmamışsa SonarQube Cloud kuruluş anahtarı - İsteğe bağlı String, yalnızca Cloud
    • model - JSON dizesi: amaçlanan mimarinin tam dışa aktarımı veya models dizisi (içeriği çıkarılan öğeler kaldırılır) ya da create, update ve delete dizilerini içeren yönerge değişiklikleri - Gerekli String
    • dryRun - Önizleme için true, uygulamak için false - Gerekli Boolean
    • revision - Yalnızca amaçlanan mimari: architecture_get öğesinden alınan revizyon; varsayılan olarak tam dışa aktarımın revizyonu kullanılır. Temizleme uygulanırken gereklidir - String

Örnek İstemler

SonarQube MCP Server'ı kurduktan sonra, yaygın gerçek dünya senaryolarına yönelik bazı örnek istemler aşağıda verilmiştir:

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?
Sürüm Öncesi ve Birleştirme Öncesi Denetimler
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 İncelemesine 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ığını İ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ı imajını tercih edin.

Sunucuyu Docker olmadan bağımsız bir JAR olarak çalıştırmak için önceden derlenmiş bir sürümü SonarSource ikili dosyalar deposundan indirin. Yayımlanan her sürüm burada sonarqube-mcp-server-<version>.jar olarak yayımlanı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 MCP istemcinizi Java 21 veya üzeriyle çalıştıracak ş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>"
    }
  }
}
Kaynak koddan derleme

SonarQube MCP Server'ı derlemek için Java Development Kit (JDK) 21 veya üzeri gerekir.

Projeyi temizleyip uygulamayı derlemek için aşağıdaki Gradle komutunu çalıştırın:

./gradlew clean build -x test

JAR dosyası build/libs/ konumunda oluşturulur.

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/ konumundaki JAR dosyasını gösterecek şekilde ayarlayın.

Sorun Giderme

Uygulama günlükleri varsayılan olarak STORAGE_PATH/logs/mcp.log dosyasına yazılır. Dosyaya günlük kaydını tamamen devre dışı bırakmak için SONARQUBE_LOG_TO_FILE_DISABLED=true ayarını yapın.

Yaygın Sorunlar

"SonarQube server version is not supported"

MCP sunucusu, başlangıç sırasında bağlı SonarQube Server sürümünü denetler. Ö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 denetim yalnızca SonarQube Server'a bağlanırken (SONARQUBE_URL, SONARQUBE_ORG olmadan) uygulanır; SonarQube Cloud için uygulanmaz.

"Feature is not working" veya "Missing tools/functionality"

Eski bir Docker imajı kullanı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, en son sürümü her zaman denetleyip ç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

"I want to pin to a specific version"

Kullanılabilir etiketlere sonarsource/sonarqube-mcp adresinden göz atın ve istediğiniz sürümü belirtin:

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 anonim kullanım verilerini toplar ve ürünü iyileştirmeye yardımcı olması için SonarSource'a gönderir. 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şkeniyle devre dışı bırakılabilir: TELEMETRY_DISABLED=true. Toplanan verilere ilişkin bir örnek 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 Server'ı bu belgelere uygun şekilde kullanmak Rekabet Dışı Amaç kapsamındadır ve bu nedenle SSAL kapsamında izin verilir.

MCP aracılığıyla SonarQube kullanımınız, Sonuç Verilerinin yalnızca kurum içi yazılım geliştirme amaçlarınız için kullanılması da dahil olmak üzere, SonarQube Cloud Hizmet Koşulları veya SonarQube Server Hüküm ve Koşulları tarafından yönetilir.