SonarQube
resmiMenyediakan 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
analyze_code_snippetpada contoh kode untuk mendapatkan temuan kualitas dan keamanan secara instan. - Mengelola isu — Gunakan perangkat
issuesuntuk mencari, memfilter, dan memperbarui isu SonarQube berdasarkan tingkat keparahan, status, atau proyek. - Meninjau hotspot keamanan — Kueri perangkat
security-hotspotsuntuk mencantumkan hotspot yang perlu ditinjau dan memahami risikonya. - Memeriksa gerbang kualitas — Minta status
quality-gatesdari sebuah proyek untuk melihat apakah proyek tersebut memenuhi standar kualitasnya. - Mengambil metrik proyek — Ambil
measuresseperti cakupan dan duplikasi, atau jelajahi proyek melalui perangkatprojects.
Dokumentasi
SonarQube MCP Server
SonarQube MCP Server 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 potongan 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 menuliskan token secara hardcode dalam argumen baris perintah – token tersebut tersimpan di riwayat shell
- Gunakan variabel lingkungan – atur token dalam variabel lingkungan sebelum menjalankan perintah
Saat menggunakan file konfigurasi:
- Jangan pernah melakukan commit token ke kontrol versi
- Gunakan substitusi variabel lingkungan di file konfigurasi jika memungkinkan
🚀 Buat konfigurasi Anda
Cara tercepat untuk memulai adalah Generator Konfigurasi SonarQube MCP Server – alat interaktif yang menghasilkan konfigurasi siap pakai untuk klien agen AI pilihan Anda.
Pengaturan manual
Jika Anda lebih suka mengonfigurasi sendiri, cara paling sederhana adalah menggunakan image container kami di sonarsource/sonarqube-mcp. Gunakan sonarsource/sonarqube-mcp untuk pembaruan otomatis (dengan --pull=always), atau gunakan tag versi tertentu (misalnya, sonarsource/sonarqube-mcp:1.19.0.2785) untuk deployment yang dapat direproduksi. Baca di bawah ini jika Anda ingin membangunnya secara lokal.
Catatan: Meskipun contoh di bawah menggunakan
docker, runtime container apa pun yang kompatibel dengan OCI dapat digunakan (misalnya, Podman, nerdctl). Cukup gantidockerdengan alat pilihan Anda.
Antigravity
SonarQube MCP Server tersedia di Antigravity MCP Store. Ikuti petunjuk berikut:
- Buka Panel Sisi Agen
- Klik tiga titik (...) di kanan atas dan pilih MCP Servers
- Cari
SonarQubedan pilih Install - 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 (...) -> MCP Store -> Manage MCP Servers -> View raw config, lalu 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:
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:
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 AndaSONARQUBE_ORG- Kunci organisasi AndaSONARQUBE_URL- (Opsional) Atur kehttps://sonarqube.usuntuk SonarQube Cloud US
-
Untuk SonarQube Server:
SONARQUBE_TOKEN- Token USER SonarQube Server AndaSONARQUBE_URL- URL SonarQube Server Anda
Setelah terinstal, ekstensi akan terinstal 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 berbagai informasi tentang server MCP, Anda dapat menggunakan tab untuk berpindah antar kolom.
- 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 Arguments dan SONARQUBE_URL=https://sonarqube.us ke Environment Variables.
- 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.
GitHub Copilot coding agent
Agen pengkodean GitHub Copilot dapat memanfaatkan server MCP SonarQube secara langsung di CI/CD Anda.
Untuk menambahkan secret ke lingkungan Copilot Anda, ikuti dokumentasi Copilot. Hanya secret dengan nama berawalan COPILOT_MCP_ yang akan tersedia untuk konfigurasi MCP Anda.
Di repositori GitHub Anda, navigasikan ke Settings -> Copilot -> Coding agent, 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 secret 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.
Untuk SonarQube Cloud US, tambahkan "SONARQUBE_URL": "https://sonarqube.us" secara manual ke bagian env dalam konfigurasi MCP Anda setelah instalasi.
Windsurf
SonarQube MCP Server tersedia sebagai plugin Windsurf. Ikuti petunjuk berikut:
- Buka Windsurf Settings > Cascade > MCP Servers dan pilih Open MCP Marketplace
- Cari
sonarqubedi Cascade MCP Marketplace - Pilih SonarQube MCP Server dan pilih Install
- 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 Extensions di Zed dan cari SonarQube MCP Server. 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 untuk menarik image terbaru secara rutin 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 for IDE
SonarQube MCP Server dapat terintegrasi dengan SonarQube for 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 for IDE, variabel lingkungan SONARQUBE_IDE_PORT harus diatur dengan nomor port yang benar. SonarQube for VS Code menyertakan tombol Quick Install, 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 container di Linux, container tidak dapat mengakses server tertanam SonarQube for IDE yang berjalan di localhost. Untuk mengizinkan container terhubung ke server SonarQube for IDE, tambahkan opsi
--network=hostke perintah run container Anda.
Konfigurasi
Tergantung pada lingkungan Anda, Anda harus memberikan variabel lingkungan tertentu.
Dasar
Anda harus menambahkan variabel berikut saat menjalankan MCP Server:
| Variabel lingkungan | Deskripsi |
|---|---|
STORAGE_PATH | Jalur absolut wajib ke direktori yang dapat ditulis tempat SonarQube MCP Server akan menyimpan file-nya (misalnya, untuk pembuatan, pembaruan, dan persistensi), otomatis disediakan saat menggunakan image container |
SONARQUBE_PROJECT_KEY | Kunci proyek default opsional. Saat diatur, semua alat yang memerlukan kunci proyek akan menggunakan nilai ini secara otomatis — parameter projectKey dihapus sepenuhnya dari skema mereka. Berguna saat bekerja pada satu proyek. |
SONARQUBE_IDE_PORT | Nomor port opsional antara 64120 dan 64130 yang digunakan untuk menghubungkan SonarQube MCP Server dengan SonarQube for IDE. |
SONARQUBE_DEBUG_ENABLED | Saat diatur ke true, mengaktifkan pencatatan log debug. Log debug ditulis ke file log dan STDERR. Berguna untuk memecahkan masalah konektivitas atau konfigurasi. Default: false. |
SONARQUBE_LOG_TO_FILE_DISABLED | Saat diatur ke true, menonaktifkan penulisan log ke disk sepenuhnya. Tidak ada file log yang akan dibuat di bawah STORAGE_PATH/logs/. Berguna di lingkungan container atau ephemeral di mana pencatatan log file tidak diinginkan. Default: false. |
Workspace Mount (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, hal ini secara signifikan meningkatkan penggunaan jendela konteks dan biaya.
Solusi: pasang direktori proyek Anda ke dalam container di /app/mcp-workspace. Ketika mount ini terdeteksi, server membaca file secara 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 mount aktif:
run_advanced_code_analysismenjadi tersedia jika organisasi Anda memiliki hak untuk menggunakannyaanalyze_code_snippet:filePathdiperlukan danfileContenttidak 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 lingkungan | Deskripsi |
|---|---|
SONARQUBE_TOOLSETS | Daftar 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. Tool konteks Vortex (nama usang: Context Augmentation/CAG) dan tool analisis Vortex (nama usang: 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. Mengaksesnya melalui kunci toolset cag atau analysis sudah usang dan digantikan oleh kunci toolset terpadu vortex; kunci lama masih berfungsi untuk kompatibilitas mundur, tetapi peringatan saat startup dan catatan penghentian dalam instruksi server akan dikeluarkan setiap kali kunci tersebut 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 digunakan saat server diluncurkan (lihat Streamable HTTP transport di bawah). |
SONARQUBE_READ_ONLY | Jika diatur ke true, mengaktifkan mode hanya-baca yang menonaktifkan semua operasi tulis (misalnya mengubah status issue). 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 membatasi permintaan individual menjadi hanya-baca, tetapi tidak dapat mencabut pembatasan hanya-baca di tingkat server (lihat Streamable HTTP transport di bawah). |
Toolset yang Tersedia
| Toolset | Kunci | Deskripsi |
|---|---|---|
| Analisis | analysis | Tool analisis kode (analisis lokal melalui analyze_code_snippet, usang dan digantikan oleh analyze_file_list/analisis Vortex) |
| IDE | ide | Tool jembatan SonarQube for IDE (analisis file, pengalihan analisis otomatis) — saat ini juga termasuk dalam analysis |
| Issues | issues | Cari dan kelola issue SonarQube |
| Security Hotspots | security-hotspots | Cari dan tinjau Security Hotspots |
| Proyek | projects | Jelajahi dan cari proyek SonarQube |
| Quality Gates | quality-gates | Akses quality gates dan statusnya |
| Rules | rules | Jelajahi dan cari aturan SonarQube |
| Sumber | sources | Akses kode sumber dan informasi SCM |
| Duplikasi | duplications | Temukan duplikasi kode di seluruh proyek |
| Measures | measures | Ambil metrik dan pengukuran (termasuk tool measures dan metrics) |
| Bahasa | languages | Daftarkan bahasa pemrograman yang didukung |
| Portofolio | portfolios | Kelola portofolio dan enterprise (Cloud dan Server) |
| Sistem | system | Tool administrasi sistem (khusus Server) |
| Webhooks | webhooks | Kelola webhooks |
| Risiko Ketergantungan | dependency-risks | Analisis risiko ketergantungan dan masalah keamanan (SCA) |
| Cakupan | coverage | Tool analisis dan peningkatan cakupan pengujian |
| Konteks Vortex | cag | Tool konteks Vortex — khusus stdio. Usang dan digantikan oleh vortex (nama lama: Context Augmentation/CAG) |
| Vortex | vortex | Toolset terpadu yang direkomendasikan dan menampilkan tool konteks Vortex serta analisis Vortex dalam satu nama (khusus stdio, memerlukan hak organisasi gabungan) |
| Kesiapan Agenic | agentic-readiness | Tool Penilaian Kesiapan Agenik (SonarQube Cloud, memerlukan hak organisasi) |
Contoh
Aktifkan toolset analisis, issues, 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 lingkungan | Deskripsi | Diperlukan |
|---|---|---|
SONARQUBE_TOKEN | Token SonarQube Cloud Anda | Ya |
SONARQUBE_ORG | Kunci organisasi SonarQube Cloud Anda | Ya |
SONARQUBE_URL | URL SonarQube Cloud kustom (default ke https://sonarcloud.io). Gunakan ini untuk SonarQube Cloud US: https://sonarqube.us | Tidak |
Contoh:
- SonarQube Cloud: Hanya
SONARQUBE_TOKENdanSONARQUBE_ORGyang diperlukan - SonarQube Cloud US: Atur
SONARQUBE_TOKEN,SONARQUBE_ORG, danSONARQUBE_URL=https://sonarqube.us
SonarQube Server
| Variabel lingkungan | Deskripsi | Diperlukan |
|---|---|---|
SONARQUBE_TOKEN | Token USER SonarQube Server Anda | Ya |
SONARQUBE_URL | URL SonarQube Server Anda | Ya |
⚠️ 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_ORGmenentukan apakah Anda terhubung ke SonarQube Cloud atau Server. JikaSONARQUBE_ORGdisetel, SonarQube Cloud yang digunakan; jika tidak, SonarQube Server yang digunakan.
Mode Transport
Spesifikasi MCP mendefinisikan dua mekanisme transport: Stdio dan Streamable HTTP. SonarQube MCP Server mendukung keduanya:
| Transport MCP | Mode server | Penggunaan umum |
|---|---|---|
| Stdio | Default (tanpa SONARQUBE_TRANSPORT) | Klien MCP lokal yang meluncurkan server sebagai subproses (Cursor, Claude Code, VS Code, dll.) |
| Streamable HTTP | SONARQUBE_TRANSPORT=http atau https | Penerapan jarak jauh atau multi-pengguna; klien terhubung ke /mcp melalui HTTP(S) (misalnya Windsurf dengan URL server yang dihosting sendiri) |
Catatan: Streamable HTTP adalah transport jaringan MCP saat ini. Transport HTTP khusus SSE yang lebih lama dari versi MCP sebelumnya sudah usang (deprecated) 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 untuk penerapan multi-pengguna.
⚠️ Tidak Disarankan: Gunakan Stdio untuk pengembangan lokal atau HTTPS (Streamable HTTP) untuk penerapan produksi multi-pengguna.
| Variabel lingkungan | Deskripsi | Default |
|---|---|---|
SONARQUBE_TRANSPORT | Disetel ke http untuk mengaktifkan transport Streamable HTTP | Tidak disetel (stdio) |
SONARQUBE_HTTP_PORT | Nomor port (1024-65535) | 8080 |
SONARQUBE_HTTP_HOST | Host untuk diikat (default ke localhost demi keamanan) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Asal browser yang diizinkan untuk CORS, dipisahkan koma (misalnya https://my-app.example.com) | Tidak disetel |
SONARQUBE_MCP_IN_CONTAINER | Disetel ke true saat berjalan di dalam kontainer. Image Docker resmi menyetelnya 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 itu sendiri. Untuk SonarQube Cloud, organisasi diselesaikan sebagai berikut:
- Jika
SONARQUBE_ORGdisetel saat server dimulai, semua permintaan dirutekan ke organisasi tersebut. Klien tidak boleh mengirim headerSONARQUBE_ORG— melakukannya akan mengakibatkan kesalahan. - Jika
SONARQUBE_ORGtidak disetel saat server dimulai, setiap klien harus menyediakan headerSONARQUBE_ORGpada setiap permintaan. Klien juga dapat mempersempit alat yang terlihat per-permintaan dengan menyediakan headerSONARQUBE_TOOLSETSdan/atauSONARQUBE_READ_ONLY; ini menerapkan pemfilteran tambahan di atas konfigurasi tingkat server — hanya dapat mengurangi cakupan, tidak pernah memperluasnya. Tidak ada status sesi yang dipertahankan antar permintaan.
Usang (Deprecated): Header permintaan
SONARQUBE_TOKENmasih diterima untuk kompatibilitas mundur tetapi akan dihapus di versi mendatang. Bermigrasilah keAuthorization: Bearer <token>.
3. HTTPS (Streamable HTTP melalui TLS) (Direkomendasikan untuk Penerapan Produksi Multi-Pengguna)
Transport Streamable HTTP yang aman dengan enkripsi TLS. Memerlukan sertifikat SSL.
✅ Direkomendasikan untuk Produksi: Gunakan HTTPS saat menerapkan server MCP untuk banyak pengguna melalui Streamable HTTP. Server terikat ke
127.0.0.1(localhost) secara default demi keamanan.
| Variabel lingkungan | Deskripsi | Default |
|---|---|---|
SONARQUBE_TRANSPORT | Disetel ke https untuk mengaktifkan transport Streamable HTTP melalui TLS | Tidak disetel (stdio) |
SONARQUBE_HTTP_PORT | Nomor port (biasanya 8443 untuk HTTPS) | 8080 |
SONARQUBE_HTTP_HOST | Host untuk diikat (default ke localhost demi keamanan) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Asal browser yang diizinkan untuk CORS, dipisahkan koma (misalnya https://my-app.example.com) | Tidak disetel |
SONARQUBE_MCP_IN_CONTAINER | Disetel ke true saat berjalan di dalam kontainer. Image Docker resmi menyetelnya secara otomatis; setel sendiri saat menggunakan runtime OCI lain (Podman, Kubernetes, Nomad, dll.). | false |
Konfigurasi Sertifikat SSL (Opsional):
| Variabel lingkungan | Deskripsi | Default |
|---|---|---|
SONARQUBE_HTTPS_KEYSTORE_PATH | Jalur ke file keystore (.p12 atau .jks) | /etc/ssl/mcp/keystore.p12 |
SONARQUBE_HTTPS_KEYSTORE_PASSWORD | Kata sandi keystore | sonarlint |
SONARQUBE_HTTPS_KEYSTORE_TYPE | Jenis keystore (PKCS12 atau JKS) | PKCS12 |
Contoh - Docker dengan SonarQube Cloud:
Catatan: Saat berjalan di dalam kontainer, setel
SONARQUBE_HTTP_HOST=0.0.0.0sehingga kontainer mendengarkan di semua antarmuka dan pemetaan port runtime berfungsi, dan setelSONARQUBE_MCP_IN_CONTAINER=trueuntuk 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.0hanya mengontrol di mana server mendengarkan di dalam kontainer — CORS browser tetap mengizinkan asal 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 (penerapan 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_TOOLSETSdanSONARQUBE_READ_ONLYadalah header per-permintaan opsional yang mempersempit kumpulan alat tingkat server untuk permintaan tertentu tersebut. Keduanya hanya dapat mengurangi cakupan — tidak dapat mengaktifkan kumpulan alat atau melonggarkan batasan di luar yang ditentukan saat server diluncurkan.
Catatan: Untuk pengembangan lokal, gunakan transport Stdio sebagai gantinya (default). HTTPS Streamable HTTP ditujukan untuk penerapan produksi multi-pengguna dengan sertifikat SSL yang tepat.
Titik Akhir Layanan
Saat berjalan dalam mode Streamable HTTP (http atau https), server mengekspos beberapa titik akhir layanan tanpa autentikasi selain titik akhir MCP di /mcp. Ini dimaksudkan untuk penggunaan layanan-ke-layanan (pemantauan, orkestrasi, pemeriksaan kompatibilitas klien) dan tidak memerlukan header Authorization.
| Titik akhir | Metode | Deskripsi | Contoh respons |
|---|---|---|---|
/health | GET | Probe liveness. Mengembalikan 200 OK dengan badan kosong setelah server menerima permintaan. | (badan kosong) |
/info | GET | Mengembalikan versi server MCP sebagai JSON. Berguna untuk memverifikasi versi server yang diterapkan. | {"version":"1.16.0"} |
Titik akhir ini tidak tersedia saat berjalan dengan transport Stdio.
Sertifikat Kustom
Jika SonarQube Server Anda menggunakan sertifikat yang ditandatangani sendiri (self-signed) atau sertifikat dari Otoritas Sertifikat (CA) privat, Anda dapat menambahkan sertifikat kustom ke kontainer yang akan diinstal secara otomatis.
Configuration
Menggunakan Volume Mount
Pasang 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 memasang 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 penyimpanan kepercayaan OS kontainer, yang juga dibaca oleh server. Jika Anda tidak dapat menggunakan penyimpanan kepercayaan OS — terutama di Windows, yang tidak dikonsultasikan — arahkan JVM ke Java truststore 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
SonarQube MCP Server mendukung proxy HTTP dan SOCKS5 melalui properti sistem Java standar.
Configuration
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:
| Properti | Deskripsi | Contoh |
|---|---|---|
http.proxyHost | Nama host proxy HTTP | proxy.example.com |
http.proxyPort | Port proxy HTTP | 8080 |
https.proxyHost | Nama host proxy HTTPS | proxy.example.com |
https.proxyPort | Port proxy HTTPS | 8443 |
http.nonProxyHosts | Host yang melewati proxy (dipisahkan pipa) | localhost|127.0.0.1|*.internal.com |
Autentikasi Proxy HTTP/HTTPS:
| Properti | Deskripsi | Contoh |
|---|---|---|
http.proxyUser | Nama pengguna proxy HTTP | myuser |
http.proxyPassword | Kata sandi proxy HTTP | mypassword |
https.proxyUser | Nama pengguna proxy HTTPS | myuser |
https.proxyPassword | Kata sandi proxy HTTPS | mypassword |
Proxy SOCKS5
Proxy SOCKS5 didukung.
| Properti | Deskripsi | Default | Contoh |
|---|---|---|---|
socksProxyHost | Nama host proxy SOCKS5 | — | localhost |
socksProxyPort | Port proxy SOCKS5 | 1080 | 1080 |
java.net.socks.username | Nama pengguna SOCKS5 (jika autentikasi diperlukan) | — | myuser |
java.net.socks.password | Kata sandi SOCKS5 (jika autentikasi diperlukan) | — | mypassword |
Sertifikat Klien (Mutual TLS)
Jika SonarQube Server Anda mengharuskan klien untuk menyajikan sertifikat selama jabat tangan TLS (mutual TLS), Anda dapat menyediakan keystore PKCS12 dengan memasangnya ke dalam kontainer dan meneruskan lokasinya melalui JAVA_OPTS.
Konfigurasi
Menggunakan keystore PKCS12
Mount file .p12 atau .pfx Anda ke dalam container dan atur variabel lingkungan JAVA_OPTS dengan properti keystore:
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 container. Periksa dan perbaiki izin jika diperlukan:
ls -la /path/to/client.p12 # look for -rw-r--r-- (644) or wider chmod 644 /path/to/client.p12 # grant read access to the container user
Hilangkan -Djavax.net.ssl.keyStorePassword jika keystore tidak memiliki passphrase. Perhatikan bahwa passphrase 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 keystore PKCS12 dengan JAR mandiri
Saat menjalankan server dari JAR, teruskan properti keystore 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 keystore tidak memiliki passphrase.
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/.keyterpisah) harus dikonversi ke format PKCS12 terlebih dahulu. Gunakanopenssl pkcs12 -export -in client.crt -inkey client.key -out client.p12untuk mengonversinya.
Alat
Analisis
-
analyze_code_snippet - Analisis konten file dengan penganalisis SonarQube untuk mengidentifikasi masalah kualitas kode dan keamanan. Selalu menganalisis konten file secara lengkap untuk akurasi. Secara opsional, filter hasil ke cuplikan kode tertentu.
Tidak digunakan lagi:
analyze_code_snippetakan dihapus pada rilis mendatang. Hubungkan SonarQube for IDE untuk menggunakananalyze_file_list, atau aktifkan analisis Vortex untuk organisasi Anda agar dapat menggunakanrun_advanced_code_analysis(lihat di bawah).Penggunaan:
- Dengan workspace ter-mount (disarankan): teruskan
filePath(relatif terhadap proyek) — server membaca file secara langsung, menjaga konten file tetap di luar jendela konteks agen - Tanpa mount workspace: teruskan
fileContentlengkap untuk analisis file penuh (melaporkan semua masalah) - Tambahkan
codeSnippetopsional untuk memfilter hasil - hanya masalah dalam cuplikan yang akan dilaporkan (lokasi cuplikan terdeteksi otomatis)
Parameter:
projectKey- Kunci proyek SonarQube - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYditentukan)filePath- Jalur relatif proyek dari file yang akan dianalisis (misalnya,src/main/java/MyClass.java). Digunakan saat workspace di-mount di/app/mcp-workspace- StringfileContent- Konten file lengkap sebagai string. Diperlukan saat workspace tidak di-mount - StringcodeSnippet- Cuplikan kode untuk memfilter masalah (harus cocok dengan konten di fileContent) - Stringlanguage- Bahasa kode (misalnya, 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Stringscope- 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 - Dengan workspace ter-mount (disarankan): teruskan
Saat integrasi dengan SonarQube for IDE diaktifkan: (kedua alat ini diberi tag di bawah toolset analysis dan ide)
-
analyze_file_list - Analisis 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 - Aktifkan atau nonaktifkan 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- Aktifkan atau nonaktifkan analisis otomatis - Boolean Wajib
Saat analisis Vortex diaktifkan untuk organisasi SonarQube Cloud Anda:
Memerlukan workspace yang di-mount di
/app/mcp-workspace
- run_advanced_code_analysis - Jalankan analisis Vortex di SonarQube Cloud untuk satu file. Organisasi disimpulkan dari konfigurasi MCP.
projectKey- Kunci proyek - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYditentukan)branch- Nama cabang yang digunakan untuk mengambil konteks analisis terbaru - String WajibfilePath- Jalur relatif proyek dari file yang akan dianalisis (misalnya,src/main/java/MyClass.java). - String WajibfileScope- Menentukan dari cakupan mana file berasal: 'MAIN' atau 'TEST' (default: MAIN) - String
Cakupan
-
search_files_by_coverage - Cari file dalam proyek yang diurutkan berdasarkan cakupan (menaik - cakupan terburuk terlebih dahulu). Alat ini membantu mengidentifikasi file yang memerlukan peningkatan cakupan pengujian.
projectKey- Kunci proyek untuk dicari - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYditentukan)branch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID pull request opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - StringmaxCoverage- Ambang batas cakupan maksimum (0-100). Hanya kembalikan file dengan cakupan <= nilai ini - NumberpageIndex- Indeks halaman (berbasis 1, default: 1) - NumberpageSize- Ukuran halaman (default: 100, maks: 500) - Number
-
get_file_coverage_details - Dapatkan informasi cakupan baris demi baris untuk file tertentu, termasuk baris mana yang tidak tercakup dan mana yang memiliki cabang yang 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 (misalnya my_project:src/foo/Bar.java) - String Wajibbranch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID pull request opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - Stringfrom- Baris pertama yang dianalisis (berbasis 1, default: 1) - Numberto- Baris terakhir yang dianalisis (inklusif). Jika tidak ditentukan, semua baris akan dikembalikan - Number
Risiko Dependensi
Catatan: Risiko dependensi hanya tersedia saat terhubung ke SonarQube Server 2025.4 Enterprise atau lebih tinggi dengan SonarQube Advanced Security diaktifkan.
- search_dependency_risks - Cari masalah analisis komposisi perangkat lunak (risiko dependensi) dari proyek SonarQube, dipasangkan dengan rilis yang muncul di proyek, aplikasi, atau portofolio yang dianalisis.
projectKey- Kunci proyek - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYditentukan)branch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID pull request opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - StringpageIndex- Indeks halaman opsional (berbasis 1, default: 1) - IntegerpageSize- 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 - Daftarkan perusahaan yang tersedia di SonarQube Cloud yang dapat Anda akses. 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 - Ubah status masalah SonarQube menjadi "accept", "falsepositive", atau "reopen" sebuah masalah.
key- Kunci masalah - String Wajibstatus- Status masalah baru - Enum Wajib {"accept", "falsepositive", "reopen"}
-
search_sonar_issues_in_projects - Cari masalah SonarQube di proyek organisasi saya.
projectKeys- Daftar opsional kunci proyek SonarQube - String[]branch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID pull request opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - Stringseverities- 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[]issueKey- Kunci masalah opsional untuk mengambil masalah tertentu - StringpageIndex- Indeks halaman opsional berbasis 1 (default: 1) - IntegerpageSize- Ukuran halaman opsional. Harus lebih besar dari 0 dan kurang dari atau sama dengan 500 (default: 100) - Integer
Security Hotspots
-
search_security_hotspots - Cari Security Hotspots dalam proyek SonarQube.
projectKey- Kunci proyek atau aplikasi - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYditentukan)hotspotKeys- Daftar kunci Security Hotspot tertentu yang dipisahkan koma untuk diambil - String[]branch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID pull request opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - Stringfiles- Daftar opsional jalur file untuk memfilter - String[]status- Filter status opsional: TO_REVIEW, REVIEWED - Stringresolution- Filter resolusi opsional: FIXED, SAFE, ACKNOWLEDGED - StringsinceLeakPeriod- Filter hotspot yang dibuat sejak periode kebocoran (kode baru) - BooleanonlyMine- Tampilkan hanya hotspot yang ditugaskan kepada saya - BooleanpageIndex- Indeks halaman opsional berbasis 1 (default: 1) - IntegerpageSize- Ukuran halaman opsional. Harus lebih besar dari 0 dan kurang dari atau sama dengan 500 (default: 100) - Integer
-
show_security_hotspot - Dapatkan informasi terperinci tentang Security Hotspot tertentu, termasuk detail aturan, konteks kode, alur, dan komentar.
hotspotKey- Kunci Security Hotspot - String Wajib
-
change_security_hotspot_status - Tinjau Security Hotspot dengan mengubah statusnya. Saat menandai sebagai REVIEWED, Anda harus menentukan resolusi (FIXED, SAFE, atau ACKNOWLEDGED).
hotspotKey- Kunci Security Hotspot - String Wajibstatus- Status baru - Enum Wajib {"TO_REVIEW", "REVIEWED"}resolution- Resolusi saat status REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}comment- Komentar tinjauan opsional - String
Bahasa
- list_languages - Daftarkan 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 komponen (proyek, direktori, file).
projectKey- Kunci proyek - String Wajib saatSONARQUBE_PROJECT_KEYtidak dikonfigurasibranch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringmetricKeys- Kunci metrik opsional untuk diambil (misalnya ncloc, complexity, violations, coverage) - String[]pullRequest- Kunci/ID pull request opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - String
Metrik
- search_metrics - Cari metrik SonarQube.
pageIndex- Indeks halaman opsional berbasis 1 (default: 1) - IntegerpageSize- Ukuran halaman opsional. Harus lebih besar dari 0 dan kurang dari atau sama dengan 500 (default: 100) - Integer
Portofolio
-
list_portfolios - Daftarkan 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 - Stringfavorite- Jika true, hanya mengembalikan portofolio favorit - BooleanpageIndex- Nomor halaman opsional berbasis 1 (default: 1) - IntegerpageSize- Ukuran halaman opsional, maksimal 500 (default: 100) - Integer
Untuk SonarQube Cloud:
enterpriseId- uuid Enterprise. Dapat dihilangkan hanya jika parameter 'favorite' diberikan dengan nilai true - Stringq- Kueri pencarian opsional untuk memfilter portofolio berdasarkan nama - Stringfavorite- Wajib bernilai true jika parameter 'enterpriseId' dihilangkan. Jika true, hanya mengembalikan portofolio yang difavoritkan oleh pengguna yang masuk. Tidak boleh true ketika 'draft' bernilai true - Booleandraft- Jika true, hanya mengembalikan draf yang dibuat oleh pengguna yang masuk. Tidak boleh true ketika 'favorite' bernilai true - BooleanpageIndex- Indeks halaman opsional yang akan diambil (default: 1) - IntegerpageSize- 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) - IntegerpageSize- Ukuran halaman opsional. Harus lebih besar dari 0 dan kurang dari atau sama dengan 500 (default: 500) - Integerq- Kueri pencarian opsional untuk memfilter proyek berdasarkan nama (kecocokan parsial) atau kunci (kecocokan tepat) - String
-
list_branches - Daftarkan cabang yang dianalisis untuk sebuah proyek.
- SonarQube Cloud: mengembalikan cabang berumur panjang (
LONG) dan berumur pendek (SHORT) dengan kolomtypedanmergeBranch. FilterbranchTypesopsional:ALL(default),LONG, atauSHORT. - SonarQube Server: mengembalikan semua cabang yang dianalisis (nama, quality gate, tanggal analisis). Tidak ada filter
type,mergeBranch, ataubranchTypes. - Gunakan nama cabang yang dikembalikan sebagai parameter
branchpada alat lain. Untuk analisis pull request, gunakanlist_pull_requestssebagai gantinya. projectKey- Kunci proyek (mis. my_project) - String Wajib (Diabaikan ketikaSONARQUBE_PROJECT_KEYditentukan)branchTypes- (Hanya SonarQube Cloud) Filter opsional:ALL(default),LONG, atauSHORT- Enum {"ALL", "LONG", "SHORT"}
- SonarQube Cloud: mengembalikan cabang berumur panjang (
-
list_pull_requests - Daftarkan 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_branchessebagai gantinya.projectKey- Kunci proyek (mis. my_project) - String Wajib (Diabaikan ketikaSONARQUBE_PROJECT_KEYditentukan)
Quality Gates
-
get_project_quality_gate_status - Dapatkan Status Quality Gate untuk proyek SonarQube.
analysisId- ID analisis opsional - Stringbranch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringprojectId- ID proyek opsional - StringprojectKey- Kunci proyek opsional - StringpullRequest- Kunci/ID pull request opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - String
-
list_quality_gates - Daftarkan 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 dalam proyek SonarQube. Secara default, otomatis mengambil semua file yang terduplikasi di semua halaman (maksimal 10.000 file). Hanya mengembalikan file dengan duplikasi.
projectKey- Kunci proyek - String Wajib (Diabaikan ketikaSONARQUBE_PROJECT_KEYditentukan)branch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID pull request opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - StringpageSize- Jumlah hasil opsional per halaman untuk paginasi manual (maks: 500). Jika tidak ditentukan, otomatis mengambil semua file yang terduplikasi - IntegerpageIndex- 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 Wajibbranch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID pull request opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - String
Sumber
-
get_raw_source - Dapatkan kode sumber sebagai teks mentah dari SonarQube. Memerlukan izin 'See Source Code' pada file.
key- Kunci file - String Wajibbranch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID pull request opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - String
-
get_scm_info - Dapatkan informasi SCM dari file sumber SonarQube. Memerlukan izin See Source Code pada proyek file.
key- Kunci file - String Wajibcommits_by_line- Kelompokkan baris berdasarkan commit SCM jika nilainya false, jika tidak, tampilkan commit untuk setiap baris - Stringfrom- Baris pertama yang dikembalikan. Dimulai dari 1 - Numberto- Baris terakhir yang 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 Wajiburl- URL webhook - String WajibprojectKey- Kunci proyek opsional untuk webhook khusus proyek - Stringsecret- Rahasia webhook opsional untuk mengamankan payload webhook - String
-
list_webhooks - Daftarkan semua webhook untuk organisasi atau proyek SonarQube. Memerlukan izin 'Administer' pada proyek yang ditentukan, atau izin 'Administer' global.
projectKey- Kunci proyek opsional untuk mendaftarkan 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[] Wajibexclude_code_regex_list- Daftar pola regex untuk dikecualikan dari hasil - String[]include_glob- Pola glob filter file (mis.,*.java) - Stringexclude_glob- Pola glob pengecualian file - Stringfields- Daftar kolom yang dipisahkan koma untuk disertakan dalam respons - Stringlimit- Jumlah maksimum hasil yang dikembalikan (default: 10) - Integerregex_lists_operator- Cara menggabungkan beberapa pola:OR(default) atauAND- 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[] Wajibexclude_code_regex_list- Daftar pola regex untuk dikecualikan dari hasil - String[]include_glob- Pola glob filter file - Stringexclude_glob- Pola glob pengecualian file - Stringfields- Daftar kolom yang dipisahkan koma untuk disertakan dalam respons - Stringlimit- Jumlah maksimum hasil yang dikembalikan (default: 10) - Integerregex_lists_operator- Cara menggabungkan beberapa pola:OR(default) atauAND- 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 lengkap fungsi - String Wajibdepth- Kedalaman rantai panggilan (0=hanya fungsi, 1=pemanggil langsung, dst.) - Integerfields- Daftar kolom 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 lengkap fungsi - String Wajibdepth- Kedalaman rantai panggilan (0=hanya fungsi, 1=yang dipanggil langsung, dst.) - Integerfields- Daftar kolom yang dipisahkan koma untuk disertakan dalam respons - String
-
get_source_code - Dapatkan kode sumber lengkap (tanda tangan dan badan) untuk elemen kode berdasarkan nama lengkapnya.
fqn- Nama lengkap elemen - String Wajibfields- Daftar kolom yang dipisahkan koma untuk disertakan dalam respons - String
-
get_type_hierarchy - Dapatkan hierarki pewarisan lengkap untuk struktur mirip kelas (class, interface, enum, record, exception, struct). Penting untuk memahami pohon pewarisan dan refactoring.
fqn- Nama lengkap struktur mirip kelas - String Wajibfields- Daftar kolom yang dipisahkan koma untuk disertakan dalam respons - String
-
get_references - Dapatkan referensi kode masuk dan keluar langsung untuk kelas atau modul. Hanya mengembalikan referensi langsung (non-transitif).
fqn- Nama lengkap kelas atau modul - String Wajibfields- Daftar kolom yang dipisahkan koma untuk disertakan dalam respons - String
-
get_current_architecture - Dapatkan 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 Wajibpath_prefix- Prefiks jalur opsional untuk memfilter node (mis.,com.example.service) - Stringecosystem- Ekosistem opsional untuk memfilter (java,cs,py,js,ts) - String
-
get_intended_architecture - Dapatkan batasan arsitektur yang ditentukan pengguna yang menentukan modul mana yang diizinkan untuk bergantung pada modul lain.
Alat Pedoman
- **get_guidelines** - Dapatkan pedoman pengkodean berdasarkan isu proyek SonarQube, kategori katalog, atau kombinasi keduanya. - `mode` - Mode pengambilan pedoman: `project_based`, `category_based`, atau `combined` - _String Wajib_ - `categories` - Daftar nama kategori (diperlukan untuk mode `category_based` dan `combined`) - _String[]_ - `languages` - Daftar bahasa target dalam format kunci repositori SonarQube (diperlukan saat `categories` diberikan) - _String[]_ - `file_paths` - Daftar opsional jalur file untuk memfilter pedoman - _String[]_Alat Dependensi Pihak Ketiga
- check_dependency - Periksa dependensi pihak ketiga untuk kerentanan keamanan, malware rantai pasokan, dan kepatuhan lisensi sebelum menambahkan atau memperbaruinya.
purl- URL paket (purl) dengan versi, sesuai purl-spec. Format:pkg:<type>/<namespace>/<name>@<version>(mis.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
| Variabel | Deskripsi | Diperlukan | Default |
|---|---|---|---|
SONARQUBE_URL | URL SonarQube Cloud | Ya | https://sonarcloud.io |
SONARQUBE_TOKEN | Token autentikasi | Ya | Tidak ada |
SONARQUBE_ORG | Kunci organisasi di SonarQube Cloud | Ya | Tidak ada |
SONARQUBE_PROJECT_KEY | Kunci proyek di SonarQube Cloud | Ya | Tidak ada |
SONAR_SQ_BRANCH | Penimpaan cabang SonarQube eksplisit * | Tidak | Tidak ada |
SONARQUBE_DEBUG_ENABLED | Aktifkan pencatatan debug (untuk pemecahan masalah) | Tidak | False |
SONAR_LOG_LEVEL | Tingkat verbositas pencatatan (TRACE, DEBUG, INFO, WARNING, ERROR) | Tidak | INFO |
- Harus 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 ruang kerja proyek untuk memberikan akses langsung ke file sumber Anda kepada server Context Augmentation:
{
"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 kontainer 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 - Mulai penilaian kesiapan agenik untuk sebuah proyek. Mengembalikan status
PENDINGdanassessmentIdsecara langsung. Gunakanget_agentic_readiness_assessmentuntuk memeriksa hasil.projectKey- Kunci proyek - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYditentukan)branch- Cabang yang akan dinilai. Kosongkan untuk menggunakan cabang default proyek - String
-
get_agentic_readiness_assessment - Ambil hasil penilaian. Panggil ulang dengan
assessmentIdyang sama hingga statusnyaCOMPLETED,FAILED, atauINTERRUPTED. Setelah selesai, mengembalikan tingkat keseluruhan dan rincian per pilar dengan tindakan dan bukti yang direkomendasikan.assessmentId- ID penilaian yang dikembalikan olehstart_agentic_readiness_assessment- String Wajib
-
list_agentic_readiness_assessments - Daftarkan semua penilaian untuk sebuah proyek, yang terbaru terlebih dahulu. Gunakan
get_agentic_readiness_assessmentuntuk hasil tingkat pilar lengkap.projectKey- Kunci proyek untuk mendaftarkan penilaian - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYditentukan)branch- Filter penilaian berdasarkan nama cabang. Kosongkan untuk mendaftarkan penilaian untuk semua cabang - StringpageIndex- Indeks halaman berbasis 1 (default: 1) - NumberpageSize- Jumlah item per halaman, maks 100 (default: 50) - Number
Contoh Prompt
Setelah Anda menyiapkan SonarQube MCP Server, 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 Isu
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?
Keamanan dan Manajemen 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?
Membangun
Utamakan image kontainer sonarsource/sonarqube-mcp.
Untuk menjalankan server sebagai JAR mandiri tanpa Docker, unduh rilis yang telah dibuat 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>"
}
}
}
Membangun dari sumber
SonarQube MCP Server 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 pencatatan file sepenuhnya, atur SONARQUBE_LOG_TO_FILE_DISABLED=true.
Masalah Umum
"Fitur tidak berfungsi" atau "Alat/fungsionalitas hilang"
Anda mungkin menjalankan image Docker yang usang. Docker menyimpan cache image secara lokal, jadi Anda tidak akan menerima pembaruan secara otomatis.
Solusi: Perbarui ke versi terbaru:
docker pull sonarsource/sonarqube-mcp
Setelah menarik image terbaru, mulai ulang klien MCP Anda untuk menggunakan versi yang diperbarui.
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 mengunci 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 meningkatkan image secara diam-diam.
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 SONAR Source-Available License v1.0. Menggunakan SonarQube MCP Server 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.