SonarQube

resmi

Menyediakan integrasi yang mulus dengan SonarQube Server atau Cloud, dan memungkinkan analisis potongan kode secara langsung dalam konteks agen

Apa yang bisa Anda lakukan dengan SonarQube MCP?

  • Menganalisis cuplikan kode — Minta asisten Anda untuk menjalankan analisis kode lokal pada cuplikan atau file melalui analyze_code_snippet, dengan opsi pemasangan workspace untuk menghindari pembengkakan konteks.
  • Mencari dan mengelola isu — Minta asisten untuk menemukan, meninjau, dan memperbarui isu SonarQube, termasuk mengubah statusnya saat tidak dalam mode baca-saja.
  • Memeriksa gerbang kualitas dan pengukuran — Minta status gerbang kualitas, metrik proyek, cakupan, dan risiko dependensi di seluruh proyek SonarQube Anda.
  • Meninjau hotspot keamanan — Biarkan asisten mencari dan memandu melalui hotspot keamanan yang ditandai di basis kode Anda.
  • Menjelajahi proyek dan aturan — Gunakan asisten untuk menjelajahi proyek, mencantumkan bahasa yang didukung, dan mencari aturan pengkodean langsung dari SonarQube.

Dokumentasi

Server MCP SonarQube

Build Quality Gate Status

Server MCP SonarQube adalah server Model Context Protocol (MCP) yang memungkinkan integrasi tanpa hambatan dengan SonarQube Server atau Cloud untuk kualitas kode dan keamanan. Server ini juga mendukung analisis cuplikan kode secara langsung dalam konteks agen.

Pengaturan cepat

Praktik terbaik keamanan

🔒 Penting: Token SonarQube Anda adalah kredensial sensitif. Ikuti praktik keamanan berikut:

Saat menggunakan perintah CLI:

  • Hindari hardcoding token dalam argumen baris perintah – token akan tersimpan di riwayat shell
  • Gunakan variabel lingkungan – atur token dalam variabel lingkungan sebelum menjalankan perintah

Saat menggunakan file konfigurasi:

  • Jangan pernah mengirim token ke kontrol versi
  • Gunakan substitusi variabel lingkungan dalam file konfigurasi jika memungkinkan

🚀 Buat konfigurasi Anda

Cara tercepat untuk memulai adalah Generator Konfigurasi Server MCP SonarQube – alat interaktif yang menghasilkan konfigurasi siap pakai untuk klien agen AI pilihan Anda.

Pengaturan manual

Jika Anda lebih suka mengonfigurasi sendiri, metode paling sederhana adalah menggunakan image kontainer kami di sonarsource/sonarqube-mcp. Gunakan sonarsource/sonarqube-mcp untuk pembaruan otomatis (dengan --pull=always), atau sematkan ke tag versi (misalnya, sonarsource/sonarqube-mcp:1.19.0.2785) untuk deployment yang dapat direproduksi. Baca di bawah jika Anda ingin membangunnya secara lokal.

Catatan: Meskipun contoh di bawah menggunakan docker, runtime kontainer apa pun yang kompatibel dengan OCI dapat digunakan (misalnya, Podman, nerdctl). Cukup ganti docker dengan alat pilihan Anda.

Antigravity

Server MCP SonarQube tersedia di Toko MCP Antigravity. Ikuti petunjuk berikut:

  1. Buka Panel Sisi Agen
  2. Klik tiga titik (...) di kanan atas dan pilih Server MCP
  3. Cari SonarQube dan pilih Instal
  4. Berikan token Pengguna SonarQube yang diperlukan. Anda juga dapat memberikan kunci organisasi untuk SonarQube Cloud atau URL SonarQube jika terhubung ke SonarQube Server.

Untuk SonarQube Cloud US, atur URL ke https://sonarqube.us.

Alternatifnya, Anda dapat mengonfigurasi server secara manual melalui mcp_config.json:

  • Untuk terhubung dengan SonarQube Cloud:

Di Panel Sisi Agen, klik tiga titik (...) -> Toko MCP -> Kelola Server MCP -> Lihat konfigurasi mentah, dan tambahkan berikut ini:

{
  "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>"
      }
    }
  }
}

Untuk SonarQube Cloud US, tambahkan "SONARQUBE_URL": "https://sonarqube.us" secara manual ke bagian env dan "-e", "SONARQUBE_URL" ke array args.

  • Untuk terhubung dengan SonarQube Server:
{
  "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
  • Untuk terhubung dengan SonarQube Cloud:
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

Untuk SonarQube Cloud US, tambahkan --env SONARQUBE_URL=https://sonarqube.us ke perintah.

  • Untuk terhubung dengan SonarQube Server:
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

Edit file konfigurasi secara manual di ~/.codex/config.toml dan tambahkan konfigurasi berikut:

  • Untuk terhubung dengan SonarQube Cloud:
[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>" }

Untuk SonarQube Cloud US, tambahkan "SONARQUBE_URL" = "https://sonarqube.us" ke bagian env dan "-e", "SONARQUBE_URL" ke array args.

  • Untuk terhubung dengan SonarQube Server:
[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
  • Untuk terhubung dengan SonarQube Cloud:

Install for SonarQube Cloud

Untuk SonarQube Cloud US, tambahkan "SONARQUBE_URL": "https://sonarqube.us" secara manual ke bagian env dalam konfigurasi MCP Anda setelah instalasi.

  • Untuk terhubung dengan SonarQube Server:

Install for SonarQube Server

Gemini CLI

Catatan: Ekstensi Gemini CLI telah dipindahkan ke repositori sonarqube-agent-plugins. Silakan instal dari sana mulai sekarang.

Anda dapat menginstal ekstensi server MCP kami dengan menggunakan perintah berikut:

gemini extensions install https://github.com/SonarSource/sonarqube-agent-plugins

Anda perlu mengatur variabel lingkungan yang diperlukan sebelum memulai Gemini:

Variabel Lingkungan yang Diperlukan:

  • Untuk SonarQube Cloud:

    • SONARQUBE_TOKEN - Token SonarQube Cloud Anda
    • SONARQUBE_ORG - Kunci organisasi Anda
    • SONARQUBE_URL - (Opsional) Atur ke https://sonarqube.us untuk SonarQube Cloud US
  • Untuk SonarQube Server:

    • SONARQUBE_TOKEN - Token USER SonarQube Server Anda
    • SONARQUBE_URL - URL SonarQube Server Anda

Setelah diinstal, ekstensi akan diinstal di bawah <home>/.gemini/extensions/sonarqube/gemini-extension.json.

GitHub Copilot CLI

Setelah memulai Copilot CLI, jalankan perintah berikut untuk menambahkan server MCP SonarQube:

/mcp add

Anda harus memberikan informasi yang berbeda tentang server MCP, Anda dapat menggunakan tab untuk berpindah antar bidang.

  • Untuk terhubung dengan SonarQube Cloud:
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: *

Untuk SonarQube Cloud US, tambahkan -e, SONARQUBE_URL ke Argumen dan SONARQUBE_URL=https://sonarqube.us ke Variabel Lingkungan.

  • Untuk terhubung dengan SonarQube Server:
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: *

File konfigurasi terletak di ~/.copilot/mcp-config.json.

Agen pengkodean GitHub Copilot

Agen pengkodean GitHub Copilot dapat memanfaatkan server MCP SonarQube secara langsung di CI/CD Anda.

Untuk menambahkan rahasia ke lingkungan Copilot Anda, ikuti dokumentasi Copilot. Hanya rahasia dengan nama yang diawali COPILOT_MCP_ yang akan tersedia untuk konfigurasi MCP Anda.

Di repositori GitHub Anda, navigasikan ke Pengaturan -> Copilot -> Agen pengkodean, dan tambahkan konfigurasi berikut di bagian konfigurasi MCP:

  • Untuk terhubung dengan SonarQube Cloud:
{
  "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": ["*"]
    }
  }
}

Untuk SonarQube Cloud US, tambahkan "-e", "SONARQUBE_URL" ke array args dan "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" ke bagian env, lalu atur rahasia COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us.

  • Untuk terhubung dengan SonarQube Server:
{
  "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

Buat file .kiro/settings/mcp.json di direktori workspace Anda (atau edit jika sudah ada), tambahkan konfigurasi berikut:

  • Untuk terhubung dengan SonarQube Cloud:
{
  "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": []
    }
  }
}

Untuk SonarQube Cloud US, tambahkan "-e", "SONARQUBE_URL" ke array args dan "SONARQUBE_URL": "https://sonarqube.us" ke bagian env.

  • Untuk terhubung dengan SonarQube Server:
{
  "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

Anda dapat menggunakan tombol berikut untuk menyederhanakan proses instalasi di dalam VS Code.

Install for SonarQube Cloud

Untuk SonarQube Cloud US, tambahkan "SONARQUBE_URL": "https://sonarqube.us" secara manual ke bagian env dalam konfigurasi MCP Anda setelah instalasi.

Install for SonarQube Server

Windsurf

Server MCP SonarQube tersedia sebagai plugin Windsurf. Ikuti petunjuk berikut:

  1. Buka Pengaturan Windsurf > Cascade > Server MCP dan pilih Buka Marketplace MCP
  2. Cari sonarqube di Marketplace MCP Cascade
  3. Pilih Server MCP SonarQube dan pilih Instal
  4. Tambahkan token Pengguna SonarQube yang diperlukan. Kemudian tambahkan kunci organisasi jika Anda ingin terhubung dengan SonarQube Cloud, atau URL SonarQube jika Anda ingin terhubung ke SonarQube Server atau Community Build.

Untuk SonarQube Cloud US, atur URL ke https://sonarqube.us.

Zed

Navigasikan ke tampilan Ekstensi di Zed dan cari Server MCP SonarQube. Saat menginstal ekstensi, Anda akan diminta untuk memberikan variabel lingkungan yang diperlukan:

  • Saat menggunakan SonarQube Cloud:
{
  "sonarqube_token": "YOUR_SONARQUBE_TOKEN",
  "sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
  "docker_path": "DOCKER_PATH"
}

Untuk SonarQube Cloud US, tambahkan "sonarqube_url": "https://sonarqube.us" ke konfigurasi.

  • Saat menggunakan SonarQube Server:
{
  "sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
  "sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
  "docker_path": "DOCKER_PATH"
}

docker_path adalah jalur ke executable docker. Contoh:

Linux/macOS: /usr/bin/docker atau /usr/local/bin/docker

Windows: C:\Program Files\Docker\Docker\resources\bin\docker.exe

💡 Tips: Kami merekomendasikan menarik image terbaru secara teratur atau sebelum melaporkan masalah untuk memastikan Anda memiliki fitur dan perbaikan terbaru.

Instalasi manual

Anda dapat menginstal server MCP SonarQube secara manual dengan menyalin cuplikan berikut di file konfigurasi server MCP:

  • Untuk terhubung dengan SonarQube Cloud:
{
  "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>"
    }
  }
}
  • Untuk terhubung dengan SonarQube Server:
{
  "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>"
    }
  }
}

Integrasi dengan SonarQube untuk IDE

Server MCP SonarQube dapat terintegrasi dengan SonarQube untuk IDE untuk lebih meningkatkan alur kerja pengembangan Anda, memberikan analisis kode dan wawasan yang lebih baik langsung di dalam IDE Anda.

Konfigurasi

Saat menggunakan SonarQube untuk IDE, variabel lingkungan SONARQUBE_IDE_PORT harus diatur dengan nomor port yang benar. SonarQube untuk VS Code menyertakan tombol Instal Cepat, yang secara otomatis mengatur konfigurasi port yang benar.

Misalnya, dengan SonarQube Cloud:

{
  "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>"
    }
  }
}

Saat menjalankan server MCP dalam kontainer di Linux, kontainer tidak dapat mengakses server tertanam SonarQube untuk IDE yang berjalan di localhost. Untuk mengizinkan kontainer terhubung ke server SonarQube untuk IDE, tambahkan opsi --network=host ke perintah run kontainer Anda.

Konfigurasi

Tergantung pada lingkungan Anda, Anda harus memberikan variabel lingkungan tertentu.

Dasar

Anda harus menambahkan variabel berikut saat menjalankan Server MCP:

Variabel lingkunganDeskripsi
STORAGE_PATHJalur absolut wajib ke direktori yang dapat ditulis tempat Server MCP SonarQube akan menyimpan file-nya (misalnya, untuk pembuatan, pembaruan, dan persistensi), secara otomatis disediakan saat menggunakan image kontainer
SONARQUBE_PROJECT_KEYKunci proyek default opsional. Saat diatur, semua alat yang memerlukan kunci proyek akan menggunakan nilai ini secara otomatis — parameter projectKey dihapus dari skema mereka sepenuhnya. Berguna saat mengerjakan satu proyek.
SONARQUBE_IDE_PORTNomor port opsional antara 64120 dan 64130 yang digunakan untuk menghubungkan Server MCP SonarQube dengan SonarQube untuk IDE.
SONARQUBE_DEBUG_ENABLEDSaat diatur ke true, mengaktifkan logging debug. Log debug ditulis ke file log dan STDERR. Berguna untuk memecahkan masalah konektivitas atau konfigurasi. Default: false.
SONARQUBE_LOG_TO_FILE_DISABLEDSaat diatur ke true, menonaktifkan penulisan log ke disk sepenuhnya. Tidak ada file log yang akan dibuat di bawah STORAGE_PATH/logs/. Berguna di lingkungan kontainer atau sementara di mana logging file tidak diinginkan. Default: false.

Mount Workspace (Mengurangi Pembengkakan Konteks)

Secara default, alat analisis analyze_code_snippet mengharuskan agen untuk meneruskan konten file lengkap sebagai argumen fileContent. Untuk file besar atau saat menganalisis banyak file dalam satu sesi, ini secara signifikan meningkatkan penggunaan jendela konteks dan biaya. Solusi: pasang direktori proyek Anda ke dalam kontainer di /app/mcp-workspace. Ketika pemasangan ini terdeteksi, server membaca file langsung dari disk menggunakan argumen filePath yang relatif terhadap proyek — konten file tidak pernah melewati konteks agen.

{
  "args": [
    "run", "-i", "--rm", "--init", "--pull=always",
    "-e", "SONARQUBE_TOKEN",
    "-e", "SONARQUBE_ORG",
    "-v", "/path/to/your/project:/app/mcp-workspace",
    "sonarsource/sonarqube-mcp"
  ]
}

Ketika pemasangan aktif:

  • run_advanced_code_analysis tersedia jika organisasi Anda berhak atasnya
  • analyze_code_snippet: filePath diperlukan dan fileContent tidak digunakan — server menyelesaikan file dengan cara yang sama

Pengaktifan Toolset Selektif

Secara default, hanya toolset penting yang diaktifkan untuk mengurangi overhead konteks. Anda dapat mengaktifkan toolset tambahan sesuai kebutuhan.

Variabel lingkunganDeskripsi
SONARQUBE_TOOLSETSDaftar toolset yang dipisahkan koma untuk diaktifkan. Jika diatur, hanya toolset ini yang akan tersedia. Jika tidak diatur, toolset penting default diaktifkan (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Catatan: Toolset projects selalu diaktifkan karena diperlukan untuk menemukan kunci proyek untuk operasi lainnya. Toolset konteks Vortex (nama lama: Context Augmentation/CAG) dan toolset analisis Vortex (nama lama: Advanced Analysis/A3S) hanya tersedia dalam mode stdio dan berbagi satu hak organisasi gabungan — sebuah organisasi harus memiliki hak untuk keduanya agar dapat menggunakan salah satunya. Di SonarQube Server, stdio mencantumkan konteks Vortex dan run_advanced_code_analysis ketika kedua hub CAG dan A3S memiliki hak. Utamakan kunci toolset terpadu vortex. Kunci lama yang tidak digunakan lagi cag dan analysis masih berfungsi; peringatan saat startup dan catatan penghentian dalam instruksi server dikeluarkan ketika keduanya digunakan tanpa vortex. Dalam mode Streamable HTTP, klien dapat mengirim header HTTP SONARQUBE_TOOLSETS untuk mempersempit ini lebih lanjut per permintaan, tetapi tidak dapat mengaktifkan toolset di luar yang diluncurkan server (lihat Streamable HTTP transport di bawah).
SONARQUBE_READ_ONLYKetika diatur ke true, mengaktifkan mode hanya-baca yang menonaktifkan semua operasi tulis (misalnya mengubah status masalah). Filter ini bersifat kumulatif dengan SONARQUBE_TOOLSETS jika keduanya diatur. Default: false. Dalam mode Streamable HTTP, klien dapat mengirim header HTTP SONARQUBE_READ_ONLY untuk lebih membatasi permintaan individual menjadi hanya-baca, tetapi tidak dapat mengangkat pembatasan hanya-baca tingkat server (lihat Streamable HTTP transport di bawah).
Toolset yang Tersedia
ToolsetKunciDeskripsi
AnalisisanalysisAlat analisis kode (analisis lokal melalui analyze_code_snippet, tidak digunakan lagi demi analyze_file_list/analisis Vortex)
IDEideAlat jembatan SonarQube for IDE (analisis file, sakelar analisis otomatis) — saat ini juga disertakan dalam analysis
MasalahissuesCari dan kelola masalah SonarQube
Security Hotspotssecurity-hotspotsCari dan tinjau Security Hotspots
ProyekprojectsJelajahi dan cari proyek SonarQube
Quality Gatesquality-gatesAkses quality gates dan statusnya
AturanrulesJelajahi dan cari aturan SonarQube
SumbersourcesAkses kode sumber dan informasi SCM
DuplikasiduplicationsTemukan duplikasi kode di seluruh proyek
UkuranmeasuresAmbil metrik dan ukuran (termasuk alat ukuran dan metrik)
BahasalanguagesDaftar bahasa pemrograman yang didukung
PortofolioportfoliosKelola portofolio dan perusahaan (Cloud dan Server)
SistemsystemAlat administrasi sistem (khusus Server)
WebhookswebhooksKelola webhooks
Risiko Ketergantungandependency-risksAnalisis risiko ketergantungan dan masalah keamanan (SCA)
CakupancoverageAlat analisis dan peningkatan cakupan pengujian
Konteks VortexcagAlat konteks Vortex — khusus stdio. Tidak digunakan lagi demi vortex (nama lama: Context Augmentation/CAG)
VortexvortexToolset terpadu, disarankan yang menampilkan alat konteks Vortex dan analisis Vortex di bawah satu nama (khusus stdio; Cloud memerlukan hak organisasi gabungan; Server memerlukan kedua hub memiliki hak)
Kesiapan Agenikagentic-readinessAlat Penilaian Kesiapan Agenik (SonarQube Cloud, memerlukan hak organisasi)

Contoh

Aktifkan toolset analisis, masalah, dan quality gates (menggunakan Docker dengan SonarQube Cloud):

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

Catatan: Toolset projects selalu diaktifkan secara otomatis, jadi Anda tidak perlu menyertakannya dalam SONARQUBE_TOOLSETS.

Aktifkan mode hanya-baca (menggunakan Docker dengan SonarQube Cloud):

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

Untuk mengaktifkan fungsionalitas penuh, variabel lingkungan berikut harus diatur sebelum memulai server:

Variabel lingkunganDeskripsiDiperlukan
SONARQUBE_TOKENtoken SonarQube Cloud AndaYa
SONARQUBE_ORGkunci organisasi SonarQube Cloud AndaYa
SONARQUBE_URLURL SonarQube Cloud kustom (default ke https://sonarcloud.io). Gunakan ini untuk SonarQube Cloud US: https://sonarqube.usTidak

Contoh:

  • SonarQube Cloud: Hanya SONARQUBE_TOKEN dan SONARQUBE_ORG yang diperlukan
  • SonarQube Cloud US: Atur SONARQUBE_TOKEN, SONARQUBE_ORG, dan SONARQUBE_URL=https://sonarqube.us

SonarQube Server

Variabel lingkunganDeskripsiDiperlukan
SONARQUBE_TOKENtoken USER SonarQube Server AndaYa
SONARQUBE_URLURL SonarQube Server AndaYa

Persyaratan Versi: SonarQube Server 2025.1 (SQS) atau 25.1 (SonarQube Community Build) atau yang lebih baru diperlukan. Saat startup, server MCP membaca versi instance yang terhubung dan keluar dengan error jika versinya terlalu lama (misalnya, rilis Server 9.x/10.x lama dan Community Build 24.x tidak didukung). SonarQube Cloud tidak tunduk pada pemeriksaan ini.

⚠️ Koneksi ke SonarQube Server memerlukan token bertipe USER dan tidak akan berfungsi dengan baik jika token proyek atau token global digunakan.

💡 Tips Konfigurasi (mode stdio): Kehadiran SONARQUBE_ORG menentukan apakah Anda terhubung ke SonarQube Cloud atau Server. Jika SONARQUBE_ORG disetel, SonarQube Cloud digunakan; jika tidak, SonarQube Server digunakan.

Mode Transport

Spesifikasi MCP mendefinisikan dua mekanisme transport: Stdio dan Streamable HTTP. Server MCP SonarQube mendukung keduanya:

Transport MCPMode ServerPenggunaan Umum
StdioDefault (tanpa SONARQUBE_TRANSPORT)Klien MCP lokal yang meluncurkan server sebagai subproses (Cursor, Claude Code, VS Code, dll.)
Streamable HTTPSONARQUBE_TRANSPORT=http atau httpsDeployment jarak jauh atau multi-pengguna; klien terhubung ke /mcp melalui HTTP(S) (misalnya Windsurf dengan URL server yang di-host sendiri)

Catatan: Streamable HTTP adalah transport jaringan MCP saat ini. Transport HTTP khusus SSE yang lebih lama dari versi MCP sebelumnya tidak digunakan lagi dan tidak didukung.

1. Stdio (Default - Direkomendasikan untuk Pengembangan Lokal)

Mode yang direkomendasikan untuk pengembangan lokal dan pengaturan pengguna tunggal, digunakan oleh sebagian besar klien MCP.

Contoh - Docker dengan SonarQube Cloud:

{
  "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)

Transport Streamable HTTP tanpa enkripsi. Gunakan HTTPS sebagai gantinya untuk deployment multi-pengguna.

⚠️ Tidak Direkomendasikan: Gunakan Stdio untuk pengembangan lokal atau HTTPS (Streamable HTTP) untuk deployment produksi multi-pengguna.

Variabel lingkunganDeskripsiDefault
SONARQUBE_TRANSPORTSetel ke http untuk mengaktifkan transport Streamable HTTPTidak disetel (stdio)
SONARQUBE_HTTP_PORTNomor port (1024-65535)8080
SONARQUBE_HTTP_HOSTHost untuk diikat (default ke localhost demi keamanan)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSOrigin browser yang dipisahkan koma yang diizinkan untuk CORS (mis. https://my-app.example.com)Tidak disetel
SONARQUBE_MCP_IN_CONTAINERSetel ke true saat berjalan di dalam kontainer. Image Docker resmi menyetel ini secara otomatis; setel sendiri saat menggunakan runtime OCI lain (Podman, Kubernetes, Nomad, dll.).false

Catatan: Dalam mode Streamable HTTP (HTTP atau HTTPS), server bersifat stateless — setiap permintaan klien harus menyertakan header Authorization: Bearer <token> yang membawa token SonarQube milik pengguna. Untuk SonarQube Cloud, organisasi diselesaikan sebagai berikut:

  • Jika SONARQUBE_ORG disetel saat server dimulai, semua permintaan dirutekan ke organisasi tersebut. Klien tidak boleh mengirim header SONARQUBE_ORG — melakukannya akan mengakibatkan error.
  • Jika SONARQUBE_ORG tidak disetel saat server dimulai, setiap klien harus menyediakan header SONARQUBE_ORG pada setiap permintaan. Klien juga dapat mempersempit alat yang terlihat per-permintaan dengan menyediakan header SONARQUBE_TOOLSETS dan/atau SONARQUBE_READ_ONLY; ini menerapkan pemfilteran tambahan di atas konfigurasi tingkat server — mereka hanya dapat mengurangi cakupan, tidak pernah memperluasnya. Tidak ada status sesi yang dipertahankan antar permintaan.

Tidak digunakan lagi: Header permintaan SONARQUBE_TOKEN masih diterima untuk kompatibilitas mundur tetapi akan dihapus di versi mendatang. Migrasikan ke Authorization: Bearer <token>.

3. HTTPS (Streamable HTTP melalui TLS) (Direkomendasikan untuk Deployment Produksi Multi-Pengguna)

Transport Streamable HTTP yang aman dengan enkripsi TLS. Memerlukan sertifikat SSL.

✅ Direkomendasikan untuk Produksi: Gunakan HTTPS saat men-deploy server MCP untuk banyak pengguna melalui Streamable HTTP. Server terikat ke 127.0.0.1 (localhost) secara default demi keamanan.

Variabel lingkunganDeskripsiDefault
SONARQUBE_TRANSPORTSetel ke https untuk mengaktifkan transport Streamable HTTP melalui TLSTidak disetel (stdio)
SONARQUBE_HTTP_PORTNomor port (biasanya 8443 untuk HTTPS)8080
SONARQUBE_HTTP_HOSTHost untuk diikat (default ke localhost demi keamanan)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSOrigin browser yang dipisahkan koma yang diizinkan untuk CORS (mis. https://my-app.example.com)Tidak disetel
SONARQUBE_MCP_IN_CONTAINERSetel ke true saat berjalan di dalam kontainer. Image Docker resmi menyetel ini secara otomatis; setel sendiri saat menggunakan runtime OCI lain (Podman, Kubernetes, Nomad, dll.).false

Konfigurasi Sertifikat SSL (Opsional):

Variabel lingkunganDeskripsiDefault
SONARQUBE_HTTPS_KEYSTORE_PATHJalur ke file keystore (.p12 atau .jks)/etc/ssl/mcp/keystore.p12
SONARQUBE_HTTPS_KEYSTORE_PASSWORDKata sandi keystoresonarlint
SONARQUBE_HTTPS_KEYSTORE_TYPEJenis keystore (PKCS12 atau JKS)PKCS12

Contoh - Docker dengan SonarQube Cloud:

Catatan: Saat berjalan di dalam kontainer, setel SONARQUBE_HTTP_HOST=0.0.0.0 sehingga kontainer mendengarkan di semua antarmuka dan pemetaan port runtime berfungsi, dan setel SONARQUBE_MCP_IN_CONTAINER=true untuk memberi tahu server bahwa ia berada di dalam kontainer. Image Docker resmi menyetel yang terakhir secara otomatis; setel sendiri saat menggunakan runtime OCI lain (Podman, Kubernetes, Nomad, dll.). Flag port sisi host mengontrol siapa yang dapat menjangkau server dari luar kontainer. SONARQUBE_HTTP_HOST=0.0.0.0 hanya mengontrol di mana server mendengarkan di dalam kontainer — CORS browser masih mengizinkan origin localhost secara default.

Untuk server yang berjalan secara lokal di mesin Anda (hanya dapat diakses dari localhost):

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

Untuk server yang dapat diakses dari jaringan (deployment jarak jauh):

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

Konfigurasi Klien (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"
      }
    }
  }
}

Konfigurasi Klien (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"
      }
    }
  }
}

Catatan: SONARQUBE_TOOLSETS dan SONARQUBE_READ_ONLY adalah header per-permintaan opsional yang mempersempit set alat tingkat server untuk permintaan tertentu tersebut. Mereka hanya dapat mengurangi cakupan — mereka tidak dapat mengaktifkan set alat atau mencabut pembatasan di luar apa yang diluncurkan server.

Catatan: Untuk pengembangan lokal, gunakan transport Stdio sebagai gantinya (default). HTTPS Streamable HTTP ditujukan untuk deployment produksi multi-pengguna dengan sertifikat SSL yang tepat.

Endpoint Layanan

Saat berjalan dalam mode Streamable HTTP (http atau https), server mengekspos beberapa endpoint layanan tanpa autentikasi selain endpoint MCP di /mcp. Ini dimaksudkan untuk penggunaan layanan-ke-layanan (pemantauan, orkestrasi, pemeriksaan kompatibilitas klien) dan tidak memerlukan header Authorization.

EndpointMetodeDeskripsiContoh respons
/healthGETProbe liveness. Mengembalikan 200 OK dengan body kosong setelah server menerima permintaan.(body kosong)
/infoGETMengembalikan versi server MCP sebagai JSON. Berguna untuk memverifikasi versi server yang di-deploy.{"version":"1.16.0"}

Endpoint ini tidak tersedia saat berjalan dengan transport Stdio.

Sertifikat Kustom

Jika SonarQube Server Anda menggunakan sertifikat yang ditandatangani sendiri atau sertifikat dari Certificate Authority (CA) privat, Anda dapat menambahkan sertifikat kustom ke kontainer yang akan diinstal secara otomatis.

Konfigurasi

Menggunakan Volume Mount

Mount direktori yang berisi sertifikat Anda saat menjalankan kontainer:

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

Format Sertifikat yang Didukung

Kontainer mendukung format sertifikat berikut:

  • File .crt (dikodekan PEM atau DER)
  • File .pem (dikodekan PEM)

Konfigurasi MCP dengan Sertifikat

Saat menggunakan sertifikat kustom, Anda dapat memodifikasi konfigurasi MCP untuk me-mount sertifikat:

{
  "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>"
    }
  }
}

Catatan: Menjalankan server dari JAR alih-alih kontainer? Volume mount di atas menginstal sertifikat ke trust store OS kontainer, yang juga dibaca server. Jika Anda tidak dapat menggunakan trust store OS — terutama di Windows, yang tidak dikonsultasikan — arahkan JVM ke truststore Java yang menyimpan sertifikat CA: -Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>. Ini ditambahkan di atas sertifikat tepercaya default.

Proxy

Server MCP SonarQube mendukung proxy HTTP dan SOCKS5 melalui properti sistem proxy Java standar.

Konfigurasi

Proxy HTTP/HTTPS

Anda dapat mengonfigurasi pengaturan proxy menggunakan properti sistem Java. Ini dapat disetel sebagai variabel lingkungan atau diteruskan sebagai argumen JVM.

Properti Proxy Umum:

PropertiDeskripsiContoh
http.proxyHostNama host proxy HTTPproxy.example.com
http.proxyPortPort proxy HTTP8080
https.proxyHostNama host proxy HTTPSproxy.example.com
https.proxyPortPort proxy HTTPS8443
http.nonProxyHostsHost yang melewati proxy (dipisahkan pipa)localhost|127.0.0.1|*.internal.com

Autentikasi Proxy HTTP/HTTPS:

PropertiDeskripsiContoh
http.proxyUserNama pengguna proxy HTTPmyuser
http.proxyPasswordKata sandi proxy HTTPmypassword
https.proxyUserNama pengguna proxy HTTPSmyuser
https.proxyPasswordKata sandi proxy HTTPSmypassword

Proxy SOCKS5

Proxy SOCKS5 didukung.

PropertiDeskripsiDefaultContoh
socksProxyHostNama host proxy SOCKS5—localhost
socksProxyPortPort proxy SOCKS510801080
java.net.socks.usernameNama pengguna SOCKS5 (jika autentikasi diperlukan)—myuser
java.net.socks.passwordKata sandi SOCKS5 (jika autentikasi diperlukan)—mypassword

Sertifikat Klien (Mutual TLS)

Jika Server SonarQube Anda mengharuskan klien untuk menyajikan sertifikat selama jabat tangan TLS (mutual TLS), Anda dapat menyediakan penyimpanan kunci PKCS12 dengan memasangnya ke dalam kontainer dan meneruskan lokasinya melalui JAVA_OPTS.

Konfigurasi

Menggunakan penyimpanan kunci PKCS12

Pasang file .p12 atau .pfx Anda ke dalam kontainer dan atur variabel lingkungan JAVA_OPTS dengan properti penyimpanan kunci:

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

Catatan: File sertifikat harus dapat dibaca oleh proses kontainer. Periksa dan perbaiki izin jika diperlukan:

ls -la /path/to/client.p12       # cari -rw-r--r-- (644) atau lebih luas
chmod 644 /path/to/client.p12    # berikan izin baca kepada pengguna kontainer

Hilangkan -Djavax.net.ssl.keyStorePassword jika penyimpanan kunci tidak memiliki frasa sandi. Perhatikan bahwa frasa sandi yang digunakan di sini akan terlihat melalui docker inspect atau daftar proses.

Konfigurasi MCP dengan Sertifikat Klien

{
  "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>"
    }
  }
}

Menggunakan penyimpanan kunci PKCS12 dengan JAR mandiri

Saat menjalankan server dari JAR, teruskan properti penyimpanan kunci sebagai argumen JVM sebelum -jar:

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>

Hilangkan -Djavax.net.ssl.keyStorePassword jika penyimpanan kunci tidak memiliki frasa sandi.

Konfigurasi MCP dengan Sertifikat Klien (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>"
    }
  }
}

Catatan: File sertifikat dan kunci PEM (file .crt/.key terpisah) harus dikonversi ke format PKCS12 terlebih dahulu. Gunakan openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 untuk mengonversinya.

Alat

Analisis

  • analyze_code_snippet - Menganalisis konten file dengan penganalisis SonarQube untuk mengidentifikasi masalah kualitas kode dan keamanan. Selalu menganalisis konten file lengkap untuk akurasi. Secara opsional memfilter hasil ke cuplikan kode tertentu.

    Tidak digunakan lagi: analyze_code_snippet akan dihapus dalam rilis mendatang. Hubungkan SonarQube for IDE untuk menggunakan analyze_file_list, atau aktifkan analisis Vortex untuk organisasi Anda untuk menggunakan run_advanced_code_analysis (lihat di bawah).

    Penggunaan:

    • Dengan workspace terpasang (disarankan): teruskan filePath (relatif terhadap proyek) — server membaca file secara langsung, menjaga konten file di luar konteks agen
    • Tanpa pemasangan workspace: teruskan fileContent lengkap untuk analisis file penuh (melaporkan semua masalah)
    • Tambahkan codeSnippet opsional untuk memfilter hasil - hanya masalah dalam cuplikan yang akan dilaporkan (lokasi cuplikan terdeteksi otomatis)

    Parameter:

    • projectKey - Kunci proyek SonarQube - String Wajib (Diabaikan saat SONARQUBE_PROJECT_KEY ditentukan)
    • filePath - Jalur relatif proyek dari file yang akan dianalisis (mis., src/main/java/MyClass.java). Digunakan saat workspace dipasang di /app/mcp-workspace - String
    • fileContent - Konten file lengkap sebagai string. Diperlukan saat workspace tidak dipasang - String
    • codeSnippet - Cuplikan kode untuk memfilter masalah (harus cocok dengan konten di fileContent) - String
    • language - Bahasa kode (mis., 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - String
    • scope - Cakupan file: MAIN atau TEST (default: MAIN) - String

    Bahasa yang Didukung: Java, Kotlin, Python, Ruby, Go, JavaScript (js, jsx), TypeScript (ts, tsx), JSP, PHP, XML, HTML, CSS, CloudFormation, Kubernetes, Terraform, Azure Resource Manager, Ansible, Docker, Deteksi rahasia

Saat integrasi dengan SonarQube for IDE diaktifkan: (dua alat ini ditandai di bawah set alat analysis dan ide)

  • analyze_file_list - Menganalisis file di direktori kerja saat ini menggunakan SonarQube for IDE. Alat ini terhubung ke instance SonarQube for IDE yang berjalan untuk melakukan analisis kualitas kode pada daftar file.

    • file_absolute_paths - Daftar jalur file absolut untuk dianalisis - String[] Wajib
  • toggle_automatic_analysis - Mengaktifkan atau menonaktifkan analisis otomatis SonarQube for IDE. Saat diaktifkan, SonarQube for IDE akan secara otomatis menganalisis file saat dimodifikasi di direktori kerja. Saat dinonaktifkan, analisis otomatis dimatikan.

    • enabled - Mengaktifkan atau menonaktifkan analisis otomatis - Boolean Wajib

Di SonarQube Server, stdio mencantumkan alat konteks Vortex dan run_advanced_code_analysis saat hub CAG dan A3S keduanya berhak.

Saat analisis Vortex diaktifkan:

Memerlukan workspace dipasang di /app/mcp-workspace

  • run_advanced_code_analysis - Menjalankan analisis Vortex pada satu file. Organisasi disimpulkan dari konfigurasi MCP (SonarQube Server menggunakan placeholder UUID nil).
    • projectKey - Kunci proyek - String Wajib (Diabaikan saat SONARQUBE_PROJECT_KEY ditentukan)
    • branch - Nama cabang yang digunakan untuk mengambil konteks analisis terbaru - String Wajib
    • filePath - Jalur relatif proyek dari file yang akan dianalisis (mis., src/main/java/MyClass.java). - String Wajib
    • fileScope - Menentukan dari cakupan mana file berasal: 'MAIN' atau 'TEST' (default: MAIN) - String

Cakupan

  • search_files_by_coverage - Mencari file dalam proyek yang diurutkan berdasarkan cakupan (menaik - cakupan terburuk terlebih dahulu). Alat ini membantu mengidentifikasi file yang memerlukan perbaikan cakupan pengujian.

    • projectKey - Kunci proyek untuk dicari - String Wajib (Diabaikan saat SONARQUBE_PROJECT_KEY ditentukan)
    • branch - Nama cabang opsional untuk analisis berbasis cabang. Gunakan list_branches untuk menemukan nama yang valid - String
    • pullRequest - Kunci/ID permintaan tarik opsional. Gunakan list_pull_requests untuk menemukan kunci yang valid - String
    • maxCoverage - Ambang cakupan maksimum (0-100). Hanya kembalikan file dengan cakupan <= nilai ini - Number
    • pageIndex - Indeks halaman (berbasis 1, default: 1) - Number
    • pageSize - Ukuran halaman (default: 100, maks: 500) - Number
  • get_file_coverage_details - Mendapatkan informasi cakupan baris demi baris untuk file tertentu, termasuk baris mana yang tidak tercakup dan mana yang memiliki cabang tercakup sebagian. Alat ini membantu mengidentifikasi secara tepat di mana menambahkan cakupan pengujian. Gunakan setelah mengidentifikasi file dengan cakupan rendah melalui search_files_by_coverage.

    • key - Kunci file (mis. my_project:src/foo/Bar.java) - String Wajib
    • branch - Nama cabang opsional untuk analisis berbasis cabang. Gunakan list_branches untuk menemukan nama yang valid - String
    • pullRequest - Kunci/ID permintaan tarik opsional. Gunakan list_pull_requests untuk menemukan kunci yang valid - String
    • from - Baris pertama untuk dianalisis (berbasis 1, default: 1) - Number
    • to - Baris terakhir untuk dianalisis (inklusif). Jika tidak ditentukan, semua baris dikembalikan - Number

Risiko Ketergantungan

Catatan: Risiko ketergantungan hanya tersedia saat terhubung ke SonarQube Server 2025.4 Enterprise atau lebih tinggi dengan SonarQube Advanced Security diaktifkan.

  • search_dependency_risks - Mencari masalah analisis komposisi perangkat lunak (risiko ketergantungan) dari proyek SonarQube, dipasangkan dengan rilis yang muncul dalam proyek, aplikasi, atau portofolio yang dianalisis.
    • projectKey - Kunci proyek - String Wajib (Diabaikan saat SONARQUBE_PROJECT_KEY ditentukan)
    • branch - Nama cabang opsional untuk analisis berbasis cabang. Gunakan list_branches untuk menemukan nama yang valid - String
    • pullRequest - Kunci/ID permintaan tarik opsional. Gunakan list_pull_requests untuk menemukan kunci yang valid - String
    • pageIndex - Indeks halaman opsional (berbasis 1, default: 1) - Integer
    • pageSize - Ukuran halaman opsional. Harus lebih besar dari 0 dan kurang dari atau sama dengan 500 (default: 100) - Integer

Perusahaan

Catatan: Perusahaan hanya tersedia saat terhubung ke SonarQube Cloud.

  • list_enterprises - Mencantumkan perusahaan yang tersedia di SonarQube Cloud yang Anda miliki aksesnya. Gunakan alat ini untuk menemukan ID perusahaan yang dapat digunakan dengan alat lain.
    • enterpriseKey - Kunci perusahaan opsional untuk memfilter hasil - String

Masalah

  • change_sonar_issue_status - Mengubah status masalah SonarQube menjadi "accept", "falsepositive" atau untuk "reopen" masalah.

    • key - Kunci masalah - String Wajib
    • status - Status masalah baru - Enum Wajib {"accept", "falsepositive", "reopen"}
    • comment - Komentar opsional yang menjelaskan perubahan status - String
  • search_sonar_issues_in_projects - Mencari masalah SonarQube di proyek organisasi saya.

    • projectKeys - Daftar opsional kunci proyek SonarQube - String[]
    • branch - Nama cabang opsional untuk analisis berbasis cabang. Gunakan list_branches untuk menemukan nama yang valid - String
    • pullRequest - Kunci/ID permintaan tarik opsional. Gunakan list_pull_requests untuk menemukan kunci yang valid - String
    • severities - Daftar opsional tingkat keparahan untuk memfilter. Nilai yang mungkin: INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]
    • impactSoftwareQualities - Daftar opsional kualitas perangkat lunak untuk memfilter. Nilai yang mungkin: MAINTAINABILITY, RELIABILITY, SECURITY - String[]
    • issueStatuses - Daftar opsional status masalah untuk memfilter. Nilai yang mungkin: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]
    • tags - Daftar opsional tag masalah untuk memfilter. Tag menggunakan huruf kecil - String[]
    • inNewCodePeriod - Hanya kembalikan masalah dalam periode kode baru. Memerlukan tepat satu entri di projectKeys dan files - Boolean
    • issueKey - Kunci masalah opsional untuk mengambil masalah tertentu - String
    • pageIndex - Indeks halaman opsional berbasis 1 (default: 1) - Integer
    • pageSize - Ukuran halaman opsional. Harus lebih besar dari 0 dan kurang dari atau sama dengan 500 (default: 100) - Integer

Titik Panas Keamanan

  • search_security_hotspots - Mencari Titik Panas Keamanan dalam proyek SonarQube.

    • projectKey - Kunci proyek atau aplikasi - String Wajib (Diabaikan saat SONARQUBE_PROJECT_KEY ditentukan)
    • hotspotKeys - Daftar yang dipisahkan koma dari kunci Titik Panas Keamanan tertentu untuk diambil - String[]
    • branch - Nama cabang opsional untuk analisis berbasis cabang. Gunakan list_branches untuk menemukan nama yang valid - String
    • pullRequest - Kunci/ID permintaan tarik opsional. Gunakan list_pull_requests untuk menemukan kunci yang valid - String
    • files - Daftar opsional jalur file untuk memfilter - String[]
    • status - Filter status opsional: TO_REVIEW, REVIEWED - String
    • resolution - Filter resolusi opsional: FIXED, SAFE, ACKNOWLEDGED - String
    • sinceLeakPeriod - Filter titik panas yang dibuat sejak periode kebocoran (kode baru) - Boolean
    • onlyMine - Tampilkan hanya titik panas yang ditugaskan kepada saya - Boolean
    • pageIndex - Indeks halaman opsional berbasis 1 (default: 1) - Integer
    • pageSize - Ukuran halaman opsional. Harus lebih besar dari 0 dan kurang dari atau sama dengan 500 (default: 100) - Integer
  • show_security_hotspot - Mendapatkan informasi terperinci tentang Titik Panas Keamanan tertentu, termasuk detail aturan, konteks kode, alur, dan komentar.

    • hotspotKey - Kunci Titik Panas Keamanan - String Wajib
  • change_security_hotspot_status - Meninjau Security Hotspot dengan mengubah statusnya. Saat menandai sebagai REVIEWED, Anda harus menentukan resolusi (FIXED, SAFE, atau ACKNOWLEDGED).

    • hotspotKey - Kunci Security Hotspot - String Wajib
    • status - Status baru - Enum Wajib {"TO_REVIEW", "REVIEWED"}
    • resolution - Resolusi saat status adalah REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}
    • comment - Komentar tinjauan opsional - String

Bahasa

  • list_languages - Daftar semua bahasa pemrograman yang didukung di instance SonarQube ini.
    • q - Pola opsional untuk mencocokkan kunci/nama bahasa - String

Pengukuran

  • get_component_measures - Dapatkan pengukuran SonarQube untuk sebuah komponen (proyek, direktori, file).
    • projectKey - Kunci proyek - String Wajib saat SONARQUBE_PROJECT_KEY tidak dikonfigurasi
    • branch - Nama cabang opsional untuk analisis berbasis cabang. Gunakan list_branches untuk menemukan nama yang valid - String
    • metricKeys - Kunci metrik opsional yang akan diambil (misalnya ncloc, complexity, violations, coverage) - String[]
    • pullRequest - Kunci/ID pull request opsional. Gunakan list_pull_requests untuk menemukan kunci yang valid - String

Metrik

  • search_metrics - Cari metrik SonarQube.
    • pageIndex - Indeks halaman opsional berbasis 1 (default: 1) - Integer
    • pageSize - Ukuran halaman opsional. Harus lebih besar dari 0 dan kurang dari atau sama dengan 500 (default: 100) - Integer

Portofolio

  • list_portfolios - Daftar portofolio enterprise yang tersedia di SonarQube dengan opsi pemfilteran dan paginasi.

    Untuk SonarQube Server:

    • q - Kueri pencarian opsional untuk memfilter portofolio berdasarkan nama atau kunci - String
    • favorite - Jika true, hanya mengembalikan portofolio favorit - Boolean
    • pageIndex - Nomor halaman opsional berbasis 1 (default: 1) - Integer
    • pageSize - Ukuran halaman opsional, maks 500 (default: 100) - Integer

    Untuk SonarQube Cloud:

    • enterpriseId - uuid enterprise. Dapat dihilangkan hanya jika parameter 'favorite' diberikan dengan nilai true - String
    • q - Kueri pencarian opsional untuk memfilter portofolio berdasarkan nama - String
    • favorite - Wajib true jika parameter 'enterpriseId' dihilangkan. Jika true, hanya mengembalikan portofolio yang difavoritkan oleh pengguna yang masuk. Tidak boleh true saat 'draft' true - Boolean
    • draft - Jika true, hanya mengembalikan draf yang dibuat oleh pengguna yang masuk. Tidak boleh true saat 'favorite' true - Boolean
    • pageIndex - Indeks halaman opsional yang akan diambil (default: 1) - Integer
    • pageSize - Ukuran halaman opsional yang akan diambil (default: 50) - Integer

Proyek

  • search_my_sonarqube_projects - Temukan proyek SonarQube. Responsnya dipaginasi.

    • pageIndex - Indeks halaman opsional berbasis 1 (default: 1) - Integer
    • pageSize - Ukuran halaman opsional. Harus lebih besar dari 0 dan kurang dari atau sama dengan 500 (default: 500) - Integer
    • q - Kueri pencarian opsional untuk memfilter proyek berdasarkan nama (cocok sebagian) atau kunci (cocok persis) - String
  • list_branches - Daftar cabang yang dianalisis untuk sebuah proyek.

    • SonarQube Cloud: mengembalikan cabang berumur panjang (LONG) dan berumur pendek (SHORT) dengan bidang type dan mergeBranch. Filter opsional branchTypes: ALL (default), LONG, atau SHORT.
    • SonarQube Server: mengembalikan semua cabang yang dianalisis (nama, quality gate, tanggal analisis). Tidak ada filter type, mergeBranch, atau branchTypes.
    • Gunakan nama cabang yang dikembalikan sebagai parameter branch pada alat lain. Untuk analisis pull request, gunakan list_pull_requests sebagai gantinya.
    • projectKey - Kunci proyek (misalnya my_project) - String Wajib (Diabaikan saat SONARQUBE_PROJECT_KEY ditentukan)
    • branchTypes - (Hanya SonarQube Cloud) Filter opsional: ALL (default), LONG, atau SHORT - Enum {"ALL", "LONG", "SHORT"}
  • list_pull_requests - Daftar semua pull request untuk sebuah proyek. Gunakan alat ini untuk menemukan pull request untuk analisis berdekorasi PR (coverage, issues, quality gate). Mengembalikan kunci/ID pull request yang dapat digunakan dengan alat lain. Untuk analisis berbasis cabang tanpa pull request, gunakan list_branches sebagai gantinya.

    • projectKey - Kunci proyek (misalnya my_project) - String Wajib (Diabaikan saat SONARQUBE_PROJECT_KEY ditentukan)

Quality Gates

  • get_project_quality_gate_status - Dapatkan Status Quality Gate untuk proyek SonarQube.

    • analysisId - ID analisis opsional - String
    • branch - Nama cabang opsional untuk analisis berbasis cabang. Gunakan list_branches untuk menemukan nama yang valid - String
    • projectId - ID proyek opsional - String
    • projectKey - Kunci proyek opsional - String
    • pullRequest - Kunci/ID pull request opsional. Gunakan list_pull_requests untuk menemukan kunci yang valid - String
  • list_quality_gates - Daftar semua quality gate di SonarQube saya.

Aturan

  • show_rule - Menampilkan informasi terperinci tentang aturan SonarQube.
    • key - Kunci aturan - String Wajib

Duplikasi

  • search_duplicated_files - Cari file dengan duplikasi kode di proyek SonarQube. Secara default, otomatis mengambil semua file yang terduplikasi di semua halaman (maks 10.000 file). Hanya mengembalikan file dengan duplikasi.

    • projectKey - Kunci proyek - String Wajib (Diabaikan saat SONARQUBE_PROJECT_KEY ditentukan)
    • branch - Nama cabang opsional untuk analisis berbasis cabang. Gunakan list_branches untuk menemukan nama yang valid - String
    • pullRequest - Kunci/ID pull request opsional. Gunakan list_pull_requests untuk menemukan kunci yang valid - String
    • pageSize - Jumlah hasil opsional per halaman untuk paginasi manual (maks: 500). Jika tidak ditentukan, otomatis mengambil semua file yang terduplikasi - Integer
    • pageIndex - Nomor halaman opsional untuk paginasi manual (dimulai dari 1). Jika tidak ditentukan, otomatis mengambil semua file yang terduplikasi - Integer
  • get_duplications - Dapatkan duplikasi untuk sebuah file. Memerlukan izin Browse pada proyek file tersebut.

    • key - Kunci file - String Wajib
    • branch - Nama cabang opsional untuk analisis berbasis cabang. Gunakan list_branches untuk menemukan nama yang valid - String
    • pullRequest - Kunci/ID pull request opsional. Gunakan list_pull_requests untuk menemukan kunci yang valid - String

Sumber

  • get_raw_source - Dapatkan kode sumber sebagai teks mentah dari SonarQube. Memerlukan izin 'Lihat Kode Sumber' pada file.

    • key - Kunci file - String Wajib
    • branch - Nama cabang opsional untuk analisis berbasis cabang. Gunakan list_branches untuk menemukan nama yang valid - String
    • pullRequest - Kunci/ID pull request opsional. Gunakan list_pull_requests untuk menemukan kunci yang valid - String
  • get_scm_info - Dapatkan informasi SCM dari file sumber SonarQube. Memerlukan izin Lihat Kode Sumber pada proyek file tersebut.

    • key - Kunci file - String Wajib
    • commits_by_line - Kelompokkan baris berdasarkan komit SCM jika nilainya false, jika tidak tampilkan komit untuk setiap baris - String
    • from - Baris pertama yang akan dikembalikan. Dimulai dari 1 - Number
    • to - Baris terakhir yang akan dikembalikan (inklusif) - Number

Sistem

Catatan: Alat sistem hanya tersedia saat terhubung ke SonarQube Server.

  • get_system_health - Dapatkan status kesehatan instance SonarQube Server. Mengembalikan GREEN (beroperasi penuh), YELLOW (dapat digunakan tetapi perlu perhatian), atau RED (tidak beroperasi).

  • get_system_info - Dapatkan informasi terperinci tentang konfigurasi sistem SonarQube Server termasuk status JVM, database, indeks pencarian, dan pengaturan. Memerlukan izin 'Administer'.

  • get_system_logs - Dapatkan log sistem SonarQube Server dalam format teks biasa. Memerlukan izin administrasi sistem.

    • name - Nama log opsional yang akan diambil. Nilai yang mungkin: access, app, ce, deprecation, es, web. Default: app - String
  • ping_system - Ping sistem SonarQube Server untuk memeriksa apakah aktif. Mengembalikan 'pong' sebagai teks biasa.

  • get_system_status - Dapatkan informasi status tentang SonarQube Server. Mengembalikan status (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), versi, dan id.

Webhooks

  • create_webhook - Buat webhook baru untuk organisasi atau proyek SonarQube. Memerlukan izin 'Administer' pada proyek yang ditentukan, atau izin 'Administer' global.

    • name - Nama webhook - String Wajib
    • url - URL webhook - String Wajib
    • projectKey - Kunci proyek opsional untuk webhook khusus proyek - String
    • secret - Rahasia webhook opsional untuk mengamankan payload webhook - String
  • list_webhooks - Daftar semua webhook untuk organisasi atau proyek SonarQube. Memerlukan izin 'Administer' pada proyek yang ditentukan, atau izin 'Administer' global.

    • projectKey - Kunci proyek opsional untuk mendaftar webhook khusus proyek - String

Augmentasi Konteks

Alat Arsitektur
  • search_by_signature_patterns - Temukan elemen kode (kelas, metode, antarmuka, ...) berdasarkan tanda tangan deklarasinya menggunakan pola regex.

    • include_code_regex_list - Daftar pola regex untuk dicocokkan dengan tanda tangan - String[] Wajib
    • exclude_code_regex_list - Daftar pola regex untuk dikecualikan dari hasil - String[]
    • include_glob - Pola glob filter file (misalnya, *.java) - String
    • exclude_glob - Pola glob pengecualian file - String
    • fields - Daftar bidang yang dipisahkan koma untuk disertakan dalam respons - String
    • limit - Jumlah maksimum hasil yang akan dikembalikan (default: 10) - Integer
    • regex_lists_operator - Cara menggabungkan beberapa pola: OR (default) atau AND - String
  • search_by_body_patterns - Temukan elemen kode berdasarkan badan implementasinya menggunakan pola regex. Berguna untuk menemukan di mana API atau pola sebenarnya digunakan.

    • include_code_regex_list - Daftar pola regex untuk dicocokkan dalam badan kode - String[] Wajib
    • exclude_code_regex_list - Daftar pola regex untuk dikecualikan dari hasil - String[]
    • include_glob - Pola glob filter file - String
    • exclude_glob - Pola glob pengecualian file - String
    • fields - Daftar bidang yang dipisahkan koma untuk disertakan dalam respons - String
    • limit - Jumlah maksimum hasil yang akan dikembalikan (default: 10) - Integer
    • regex_lists_operator - Cara menggabungkan beberapa pola: OR (default) atau AND - String
  • get_upstream_call_flow - Lacak fungsi apa yang memanggil fungsi tertentu. Berguna untuk menemukan semua pemanggil dan titik masuk, serta memahami apa yang rusak jika tanda tangan berubah.

    • fqn - Nama fungsi yang sepenuhnya memenuhi syarat - String Wajib
    • depth - Kedalaman rantai panggilan (0=hanya fungsi, 1=pemanggil langsung, dst.) - Integer
    • fields - Daftar bidang yang dipisahkan koma untuk disertakan dalam respons - String
  • get_downstream_call_flow - Lacak fungsi apa yang dipanggil oleh fungsi tertentu. Berguna untuk analisis dampak dan memahami alur eksekusi.

    • fqn - Nama fungsi yang sepenuhnya memenuhi syarat - String Wajib
    • depth - Kedalaman rantai panggilan (0=hanya fungsi, 1=yang dipanggil langsung, dst.) - Integer
    • fields - Daftar bidang yang dipisahkan koma untuk disertakan dalam respons - String
  • get_source_code - Dapatkan kode sumber lengkap (tanda tangan dan badan) untuk elemen kode berdasarkan nama yang sepenuhnya memenuhi syarat.

    • fqn - Nama elemen yang sepenuhnya memenuhi syarat - String Wajib
    • fields - Daftar bidang yang dipisahkan koma untuk disertakan dalam respons - String
  • get_type_hierarchy - Mendapatkan hierarki pewarisan lengkap untuk struktur mirip kelas (kelas, antarmuka, enum, record, exception, struct). Penting untuk memahami pohon pewarisan dan refactoring.

    • fqn - Nama yang sepenuhnya memenuhi syarat dari struktur mirip kelas - String Wajib
    • fields - Daftar bidang yang dipisahkan koma untuk disertakan dalam respons - String
  • get_references - Mendapatkan referensi kode masuk dan keluar langsung untuk kelas atau modul. Mengembalikan hanya referensi langsung (non-transitif).

    • fqn - Nama yang sepenuhnya memenuhi syarat dari kelas atau modul - String Wajib
    • fields - Daftar bidang yang dipisahkan koma untuk disertakan dalam respons - String
  • get_current_architecture - Mendapatkan grafik arsitektur hierarkis yang difilter berdasarkan prefiks jalur dan kedalaman. Berguna untuk menjelajahi struktur modul dan dependensi tingkat tinggi.

    • depth - Kedalaman hierarki (0=hanya root, 1=root + anak, dst.) - Integer Wajib
    • path_prefix - Prefiks jalur opsional untuk memfilter node (misalnya, com.example.service) - String
    • ecosystem - Ekosistem opsional untuk memfilter (java, cs, py, js, ts) - String
  • get_intended_architecture - Mendapatkan batasan arsitektur yang ditentukan pengguna yang menentukan modul mana yang diizinkan untuk bergantung pada modul lain.

Alat Pedoman
  • get_guidelines - Mendapatkan pedoman pengkodean berdasarkan masalah proyek SonarQube, kategori katalog, atau kombinasi keduanya.
    • mode - Mode pengambilan pedoman: project_based, category_based, atau combined - String Wajib
    • categories - Daftar nama kategori (wajib untuk mode category_based dan combined) - String[]
    • languages - Daftar bahasa target dalam format kunci repositori SonarQube (wajib saat categories diberikan) - String[]
    • file_paths - Daftar opsional jalur file untuk memfilter pedoman - String[]
Alat Dependensi Pihak Ketiga
  • check_dependency - Memeriksa dependensi pihak ketiga untuk kerentanan keamanan, malware rantai pasokan, dan kepatuhan lisensi sebelum menambahkan atau memperbaruinya.
    • purl - URL Paket (purl) dengan versi, sesuai spesifikasi purl. Format: pkg:<type>/<namespace>/<name>@<version> (misalnya pkg:npm/lodash@4.17.21, pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1, pkg:pypi/django@3.2.0) - String Wajib
Variabel Lingkungan Augmentasi Konteks
VariabelDeskripsiWajibDefault
SONARQUBE_URLURL SonarQube CloudYahttps://sonarcloud.io
SONARQUBE_TOKENToken autentikasiYaTidak ada
SONARQUBE_ORGKunci organisasi di SonarQube CloudYaTidak ada
SONARQUBE_PROJECT_KEYKunci proyek di SonarQube CloudYaTidak ada
SONAR_SQ_BRANCHOverride cabang SonarQube eksplisit *TidakTidak ada
SONARQUBE_DEBUG_ENABLEDAktifkan logging debug (untuk pemecahan masalah)TidakFalse
SONAR_LOG_LEVELVerbositas logging (TRACE, DEBUG, INFO, WARNING, ERROR)TidakINFO
  • Untuk diberikan saat tidak menggunakan git, atau saat nama cabang git tidak cocok dengan nama cabang di SonarQube.
Konfigurasi Khusus Proyek (Disarankan)

Pertama, ekspor variabel lingkungan SONARQUBE_TOKEN dengan Personal Access Token (PAT) yang valid untuk proyek Anda.

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

Kemudian, pasang workspace proyek untuk memberikan akses langsung server Augmentasi Konteks ke file sumber Anda:

{
  "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"
      }
    }
  }
}

Penting: Dalam konfigurasi lingkup proyek, jangan letakkan SONARQUBE_TOKEN di blok env. Ekspor sebagai variabel lingkungan (export SONARQUBE_TOKEN=...). Docker akan meneruskannya ke dalam container melalui -e SONARQUBE_TOKEN.

Kesiapan Agenik

Catatan: Alat Kesiapan Agenik hanya tersedia di SonarQube Cloud dan memerlukan fitur tersebut diaktifkan untuk organisasi Anda.

  • start_agentic_readiness_assessment - Memulai penilaian kesiapan agenik untuk sebuah proyek. Mengembalikan segera dengan status PENDING dan assessmentId. Gunakan get_agentic_readiness_assessment untuk memeriksa hasil.

    • projectKey - Kunci proyek - String Wajib (Diabaikan saat SONARQUBE_PROJECT_KEY didefinisikan)
    • branch - Cabang untuk dinilai. Lewati untuk menggunakan cabang default proyek - String
  • get_agentic_readiness_assessment - Mengambil hasil penilaian. Panggil ulang dengan assessmentId yang sama hingga status menjadi COMPLETED, FAILED, atau INTERRUPTED. Saat selesai, mengembalikan tingkat keseluruhan dan rincian per-pilar dengan tindakan yang direkomendasikan dan bukti.

    • assessmentId - ID penilaian yang dikembalikan oleh start_agentic_readiness_assessment - String Wajib
  • list_agentic_readiness_assessments - Mencantumkan semua penilaian untuk sebuah proyek, yang terbaru terlebih dahulu. Gunakan get_agentic_readiness_assessment untuk hasil tingkat pilar lengkap.

    • projectKey - Kunci proyek untuk mencantumkan penilaian - String Wajib (Diabaikan saat SONARQUBE_PROJECT_KEY didefinisikan)
    • branch - Filter penilaian berdasarkan nama cabang. Lewati untuk mencantumkan penilaian untuk semua cabang - String
    • pageIndex - Indeks halaman berbasis 1 (default: 1) - Number
    • pageSize - Jumlah item per halaman, maks 100 (default: 50) - Number

Contoh Prompt

Setelah Anda menyiapkan Server MCP SonarQube, berikut adalah beberapa contoh prompt untuk skenario dunia nyata yang umum:

Memperbaiki Quality Gate yang Gagal
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?
Pemeriksaan Pra-Rilis dan Pra-Gabung
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?
Meningkatkan Kualitas Kode
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?
Memahami dan Memperbaiki Masalah
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?
Manajemen Keamanan dan Dependensi
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.
Bantuan Peninjauan Kode
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.
Pemantauan Kesehatan Proyek
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?
Kolaborasi Tim
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?

Build

Utamakan gambar container sonarsource/sonarqube-mcp.

Untuk menjalankan server sebagai JAR mandiri tanpa Docker, unduh rilis yang telah dibuat sebelumnya dari repositori biner SonarSource. Setiap versi yang dirilis dipublikasikan di sana sebagai sonarqube-mcp-server-<version>.jar (misalnya, sonarqube-mcp-server-1.19.0.2785.jar).

Jalankan dari JAR

Unduh JAR untuk versi yang Anda inginkan dari repositori biner, lalu konfigurasikan klien MCP Anda untuk menjalankannya dengan Java 21 atau lebih baru:

  • Untuk terhubung dengan SonarQube Cloud:
{
  "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>"
    }
  }
}
  • Untuk terhubung dengan SonarQube Server:
{
  "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>"
    }
  }
}
Build dari sumber

Server MCP SonarQube memerlukan Java Development Kit (JDK) versi 21 atau lebih baru untuk dibangun.

Jalankan perintah Gradle berikut untuk membersihkan proyek dan membangun aplikasi:

./gradlew clean build -x test

File JAR akan dibuat di build/libs/.

Setelah menambahkan atau memperbarui dependensi, buat ulang file kunci:

./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks

Gunakan konfigurasi Jalankan dari JAR di atas, arahkan <path_to_sonarqube_mcp_server_jar> ke JAR di build/libs/.

Pemecahan Masalah

Log aplikasi ditulis ke file STORAGE_PATH/logs/mcp.log secara default. Untuk menonaktifkan logging file sepenuhnya, atur SONARQUBE_LOG_TO_FILE_DISABLED=true.

Masalah Umum

"Versi server SonarQube tidak didukung"

Server MCP memeriksa versi SonarQube Server yang terhubung selama startup. Jika instance lebih lama dari 2025.1 (SQS) atau 25.1 (SQCB), startup gagal dengan:

SonarQube server version is not supported, minimal version is SQS 2025.1 or SQCB 25.1

Solusi: Tingkatkan SonarQube Server ke rilis yang didukung. Pemeriksaan ini hanya berlaku saat terhubung ke SonarQube Server (SONARQUBE_URL tanpa SONARQUBE_ORG), bukan ke SonarQube Cloud.

"Fitur tidak berfungsi" atau "Alat/fungsionalitas hilang"

Anda mungkin menjalankan gambar Docker yang sudah usang. Docker menyimpan gambar secara lokal, jadi Anda tidak akan menerima pembaruan secara otomatis.

Solusi: Perbarui ke versi terbaru:

docker pull sonarsource/sonarqube-mcp

Setelah menarik gambar terbaru, mulai ulang klien MCP Anda untuk menggunakan versi yang diperbarui.

Secara opsional, tambahkan flag --pull=always ke perintah docker run Anda untuk selalu memeriksa dan menarik versi terbaru:

docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp

"Saya ingin menyematkan ke versi tertentu"

Jelajahi tag yang tersedia di sonarsource/sonarqube-mcp dan rujuk versi yang Anda inginkan:

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

Dalam konfigurasi klien MCP Anda, gunakan sonarsource/sonarqube-mcp:<version> alih-alih sonarsource/sonarqube-mcp dan hapus --pull=always agar Docker tidak diam-diam meningkatkan gambar.

Data dan telemetri

Server ini mengumpulkan data penggunaan anonim dan mengirimkannya ke SonarSource untuk membantu meningkatkan produk. Tidak ada kode sumber atau alamat IP yang dikumpulkan, dan SonarSource tidak membagikan data tersebut kepada siapa pun. Pengumpulan telemetri dapat dinonaktifkan dengan properti sistem atau variabel lingkungan berikut: TELEMETRY_DISABLED=true. Klik di sini untuk melihat contoh data yang dikumpulkan.

Lisensi

Hak Cipta 2025 SonarSource.

Dilisensikan di bawah Lisensi Sumber-Tersedia SONAR v1.0. Menggunakan Server MCP SonarQube sesuai dengan dokumentasi ini adalah Tujuan Non-Kompetitif dan karenanya diizinkan di bawah SSAL.

Penggunaan SonarQube Anda melalui MCP diatur oleh Ketentuan Layanan SonarQube Cloud atau Syarat dan Ketentuan SonarQube Server, termasuk penggunaan Data Hasil semata-mata untuk tujuan pengembangan perangkat lunak internal Anda.