SonarQube MCP Server
resmiMenyediakan integrasi yang mulus dengan SonarQube Server atau Cloud, dan memungkinkan analisis potongan kode secara langsung dalam konteks agen
Dokumentasi
Server MCP SonarQube
Server MCP SonarQube adalah server Model Context Protocol (MCP) yang memungkinkan integrasi tanpa hambatan dengan SonarQube Server atau Cloud untuk kualitas dan keamanan kode. 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 ini:
Saat menggunakan perintah CLI:
- Hindari token hardcode dalam argumen baris perintah – token tersebut akan tersimpan di riwayat shell
- Gunakan variabel lingkungan – atur token dalam variabel lingkungan sebelum menjalankan perintah
Saat menggunakan file konfigurasi:
- Jangan pernah commit token ke version control
- Gunakan substitusi variabel lingkungan di file konfigurasi jika memungkinkan
🚀 Hasilkan 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 (mis., 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 (mis., Podman, nerdctl). Cukup gantidockerdengan alat pilihan Anda.
Antigravity
Server MCP SonarQube tersedia di Toko MCP Antigravity. Ikuti petunjuk ini:
- Buka Panel Sisi Agen
- Klik tiga titik (...) di kanan atas dan pilih Server MCP
- Cari
SonarQubedan pilih Instal - 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.
Atau, 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 yang berikut:
{
"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 di 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 untuk selanjutnya.
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 PENGGUNA SonarQube Server AndaSONARQUBE_URL- URL SonarQube Server Anda
Setelah terinstal, ekstensi akan terpasang 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 bernavigasi 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 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.
Agen pengkodean GitHub Copilot
Agen pengkodean GitHub Copilot dapat memanfaatkan server MCP SonarQube langsung di CI/CD Anda.
Untuk menambahkan secret ke lingkungan Copilot Anda, ikuti dokumentasi Copilot. Hanya secret dengan nama yang diawali 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 ruang kerja 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 di konfigurasi MCP Anda setelah instalasi.
Windsurf
Server MCP SonarQube tersedia sebagai plugin Windsurf. Ikuti petunjuk ini:
- Buka Settings > Cascade > MCP Servers di Windsurf dan pilih Open MCP Marketplace
- Cari
sonarqubedi Cascade MCP Marketplace - Pilih Server MCP SonarQube dan pilih Instal
- 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 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 path 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 berkala atau sebelum melaporkan masalah untuk memastikan Anda memiliki fitur dan perbaikan terkini.
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 berintegrasi 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=hostke perintah run kontainer Anda.
Konfigurasi
Tergantung pada lingkungan Anda, Anda harus menyediakan variabel lingkungan tertentu.
Dasar
Anda harus menambahkan variabel berikut saat menjalankan Server MCP:
| Variabel lingkungan | Deskripsi |
|---|---|
STORAGE_PATH | Path absolut wajib ke direktori yang dapat ditulisi di mana Server MCP SonarQube akan menyimpan file-nya (mis., untuk pembuatan, pembaruan, dan persistensi), ini disediakan secara otomatis saat menggunakan image kontainer |
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 mengerjakan satu proyek. |
SONARQUBE_IDE_PORT | Nomor port opsional antara 64120 dan 64130 yang digunakan untuk menghubungkan Server MCP SonarQube dengan SonarQube untuk IDE. |
SONARQUBE_DEBUG_ENABLED | Saat diatur ke true, mengaktifkan pencatatan 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 terkontainerisasi atau sementara di mana pencatatan file tidak diinginkan. Default: false. |
Mount Ruang Kerja (Mengurangi Pembengkakan Konteks)
Secara default, alat analisis analyze_code_snippet mengharuskan agen untuk mengirimkan 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 berkas langsung dari disk menggunakan argumen filePath yang relatif terhadap proyek — konten berkas 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_analysismenjadi tersedia jika organisasi Anda berhak menggunakannyaanalyze_code_snippet:filePathdiperlukan danfileContenttidak digunakan — server menyelesaikan berkas dengan cara yang sama
Pengaktifan Alat Secara Selektif
Secara bawaan, hanya kumpulan alat penting yang diaktifkan untuk mengurangi beban konteks. Anda dapat mengaktifkan kumpulan alat tambahan sesuai kebutuhan.
| Variabel lingkungan | Deskripsi |
|---|---|
SONARQUBE_TOOLSETS | Daftar kumpulan alat yang dipisahkan koma untuk diaktifkan. Ketika diatur, hanya kumpulan alat ini yang akan tersedia. Jika tidak diatur, kumpulan alat penting bawaan diaktifkan (analysis, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Catatan: Kumpulan alat projects selalu diaktifkan karena diperlukan untuk menemukan kunci proyek untuk operasi lainnya. Alat Augmentasi Konteks hanya tersedia dalam mode stdio dan memerlukan hak organisasi. Dalam mode HTTP Streamable, klien dapat mengirim header HTTP SONARQUBE_TOOLSETS untuk mempersempit lebih lanjut per permintaan, tetapi tidak dapat mengaktifkan kumpulan alat di luar yang digunakan saat server diluncurkan (lihat Transport HTTP Streamable di bawah). |
SONARQUBE_READ_ONLY | Ketika diatur ke true, mengaktifkan mode hanya-baca yang menonaktifkan semua operasi tulis (misalnya mengubah status isu). Filter ini bersifat kumulatif dengan SONARQUBE_TOOLSETS jika keduanya diatur. Bawaan: false. Dalam mode HTTP Streamable, klien dapat mengirim header HTTP SONARQUBE_READ_ONLY untuk lebih membatasi permintaan individu menjadi hanya-baca, tetapi tidak dapat mengangkat pembatasan hanya-baca di tingkat server (lihat Transport HTTP Streamable di bawah). |
Kumpulan Alat yang Tersedia
| Kumpulan Alat | Kunci | Deskripsi |
|---|---|---|
| Analisis | analysis | Alat analisis kode (analisis lokal dan analisis jarak jauh lanjutan) |
| Isu | issues | Cari dan kelola isu SonarQube |
| Titik Panas Keamanan | security-hotspots | Cari dan tinjau Titik Panas Keamanan |
| Proyek | projects | Jelajahi dan cari proyek SonarQube |
| Gerbang Kualitas | quality-gates | Akses gerbang kualitas dan statusnya |
| Aturan | rules | Jelajahi dan cari aturan SonarQube |
| Sumber | sources | Akses kode sumber dan informasi SCM |
| Duplikasi | duplications | Temukan duplikasi kode di seluruh proyek |
| Ukuran | measures | Ambil metrik dan ukuran (mencakup alat ukuran dan metrik) |
| Bahasa | languages | Daftar bahasa pemrograman yang didukung |
| Portofolio | portfolios | Kelola portofolio dan perusahaan (Cloud dan Server) |
| Sistem | system | Alat administrasi sistem (hanya Server) |
| Webhook | webhooks | Kelola webhook |
| Risiko Dependensi | dependency-risks | Analisis risiko dependensi dan isu keamanan (SCA) |
| Cakupan | coverage | Alat analisis dan peningkatan cakupan pengujian |
| Augmentasi Konteks | cag | Alat Augmentasi Konteks (hanya mode stdio, memerlukan hak organisasi) |
| Kesiapan Agentik | agentic-readiness | Alat Penilaian Kesiapan Agentik (SonarQube Cloud, memerlukan hak organisasi) |
Contoh
Aktifkan kumpulan alat analisis, isu, dan gerbang kualitas (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: Kumpulan alat 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 (bawaan 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 PENGGUNA SonarQube Server Anda | Ya |
SONARQUBE_URL | URL SonarQube Server Anda | Ya |
⚠️ Koneksi ke SonarQube Server memerlukan token bertipe PENGGUNA dan tidak akan berfungsi dengan baik jika token proyek atau token global digunakan.
💡 Tips Konfigurasi (mode stdio): Keberadaan
SONARQUBE_ORGmenentukan apakah Anda terhubung ke SonarQube Cloud atau Server. JikaSONARQUBE_ORGdiatur, SonarQube Cloud digunakan; jika tidak, SonarQube Server digunakan.
Mode Transport
Spesifikasi MCP mendefinisikan dua mekanisme transport: Stdio dan HTTP Streamable. SonarQube MCP Server mendukung keduanya:
| Transport MCP | Mode server | Penggunaan umum |
|---|---|---|
| Stdio | Bawaan (tanpa SONARQUBE_TRANSPORT) | Klien MCP lokal yang meluncurkan server sebagai subproses (Cursor, Claude Code, VS Code, dll.) |
| HTTP Streamable | SONARQUBE_TRANSPORT=http atau https | Penerapan jarak jauh atau multi-pengguna; klien terhubung ke /mcp melalui HTTP(S) (mis. Windsurf dengan URL server yang dihosting sendiri) |
Catatan: HTTP Streamable adalah transport jaringan MCP saat ini. Transport HTTP khusus SSE yang lebih lama dari versi MCP sebelumnya sudah usang dan tidak didukung.
1. Stdio (Bawaan - 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 (HTTP Streamable)
Transport HTTP Streamable tidak terenkripsi. Gunakan HTTPS sebagai gantinya untuk penerapan multi-pengguna.
⚠️ Tidak Direkomendasikan: Gunakan Stdio untuk pengembangan lokal atau HTTPS (HTTP Streamable) untuk penerapan produksi multi-pengguna.
| Variabel lingkungan | Deskripsi | Bawaan |
|---|---|---|
SONARQUBE_TRANSPORT | Atur ke http untuk mengaktifkan transport HTTP Streamable | Tidak diatur (stdio) |
SONARQUBE_HTTP_PORT | Nomor port (1024-65535) | 8080 |
SONARQUBE_HTTP_HOST | Host untuk diikat (bawaan ke localhost demi keamanan) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Asal browser yang diizinkan untuk CORS, dipisahkan koma (mis. https://my-app.example.com) | Tidak diatur |
SONARQUBE_MCP_IN_CONTAINER | Atur ke true saat berjalan di dalam kontainer. Image Docker resmi mengatur ini secara otomatis; atur sendiri saat menggunakan runtime OCI lainnya (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_ORGdiatur saat startup server, semua permintaan dirutekan ke organisasi tersebut. Klien tidak boleh mengirim headerSONARQUBE_ORG— melakukannya akan menghasilkan kesalahan. - Jika
SONARQUBE_ORGtidak diatur saat startup server, 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 — mereka hanya dapat mengurangi cakupan, tidak pernah memperluasnya. Tidak ada status sesi yang dipertahankan di antara permintaan.
Usang: Header permintaan
SONARQUBE_TOKENmasih diterima untuk kompatibilitas mundur tetapi akan dihapus di versi mendatang. Migrasikan keAuthorization: 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 untuk keamanan.
| Variabel lingkungan | Deskripsi | Default |
|---|---|---|
SONARQUBE_TRANSPORT | Atur ke https untuk mengaktifkan transport Streamable HTTP melalui TLS | Tidak diatur (stdio) |
SONARQUBE_HTTP_PORT | Nomor port (biasanya 8443 untuk HTTPS) | 8080 |
SONARQUBE_HTTP_HOST | Host untuk mengikat (default ke localhost untuk keamanan) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Asal browser yang diizinkan untuk CORS, dipisahkan koma (mis. https://my-app.example.com) | Tidak diatur |
SONARQUBE_MCP_IN_CONTAINER | Atur ke true saat berjalan di dalam kontainer. Image Docker resmi mengatur ini secara otomatis; atur sendiri saat menggunakan runtime OCI lain (Podman, Kubernetes, Nomad, dll.). | false |
Konfigurasi Sertifikat SSL (Opsional):
| Variabel lingkungan | Deskripsi | Default |
|---|---|---|
SONARQUBE_HTTPS_KEYSTORE_PATH | Path ke file keystore (.p12 atau .jks) | /etc/ssl/mcp/keystore.p12 |
SONARQUBE_HTTPS_KEYSTORE_PASSWORD | Kata sandi keystore | sonarlint |
SONARQUBE_HTTPS_KEYSTORE_TYPE | Tipe keystore (PKCS12 atau JKS) | PKCS12 |
Contoh - Docker dengan SonarQube Cloud:
Catatan: Saat berjalan di dalam kontainer, atur
SONARQUBE_HTTP_HOST=0.0.0.0agar kontainer mendengarkan di semua antarmuka dan pemetaan port runtime berfungsi, dan aturSONARQUBE_MCP_IN_CONTAINER=trueuntuk memberi tahu server bahwa ia berada di dalam kontainer. Image Docker resmi mengatur yang terakhir secara otomatis; atur sendiri saat menggunakan runtime OCI lain (Podman, Kubernetes, Nomad, dll.). Flag port sisi host mengontrol siapa yang dapat mencapai server dari luar kontainer.SONARQUBE_HTTP_HOST=0.0.0.0hanya mengontrol di mana server mendengarkan di dalam kontainer — CORS browser masih 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 (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_TOOLSETSdanSONARQUBE_READ_ONLYadalah header opsional per permintaan yang mempersempit set alat tingkat server untuk permintaan spesifik tersebut. Mereka hanya dapat mengurangi cakupan — mereka tidak dapat mengaktifkan set alat atau mencabut pembatasan di luar apa yang diluncurkan dengan 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 yang tidak terautentikasi selain endpoint MCP di /mcp. Ini ditujukan untuk penggunaan layanan-ke-layanan (pemantauan, orkestrasi, pemeriksaan kompatibilitas klien) dan tidak memerlukan header Authorization.
| Endpoint | Metode | Deskripsi | Contoh respons |
|---|---|---|---|
/health | GET | Probe keaktifan. Mengembalikan 200 OK dengan body kosong setelah server menerima permintaan. | (body kosong) |
/info | GET | Mengembalikan 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 Otoritas Sertifikat (CA) pribadi, 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(berkode PEM atau DER) - File
.pem(berkode PEM)
Konfigurasi MCP dengan Sertifikat
Saat menggunakan sertifikat kustom, Anda dapat memodifikasi konfigurasi MCP Anda 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>"
}
}
}
Proxy
SonarQube MCP Server mendukung proxy HTTP dan SOCKS5 melalui properti sistem Java standar.
Konfigurasi
Proxy HTTP/HTTPS
Anda dapat mengonfigurasi pengaturan proxy menggunakan properti sistem Java. Ini dapat diatur 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 |
Otentikasi 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 diperlukan otentikasi) | — | myuser |
java.net.socks.password | Kata sandi SOCKS5 (jika diperlukan otentikasi) | — | mypassword |
Alat
Analisis
-
analyze_code_snippet - Menganalisis konten file dengan penganalisis SonarQube untuk mengidentifikasi masalah kualitas dan keamanan kode. Selalu menganalisis konten file lengkap untuk akurasi. Secara opsional memfilter hasil ke potongan kode tertentu.
Penggunaan:
- Dengan workspace ter-mount (direkomendasikan): berikan
filePath(relatif terhadap proyek) — server membaca file secara langsung, menjaga konten file keluar dari jendela konteks agen - Tanpa mount workspace: berikan
fileContentlengkap untuk analisis file penuh (melaporkan semua masalah) - Tambahkan
codeSnippetopsional untuk memfilter hasil - hanya masalah dalam potongan yang akan dilaporkan (lokasi potongan terdeteksi otomatis)
Parameter:
projectKey- Kunci proyek SonarQube - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYdidefinisikan)filePath- Path relatif proyek dari file yang akan dianalisis (mis.,src/main/java/MyClass.java). Digunakan saat workspace di-mount di/app/mcp-workspace- StringfileContent- Konten file lengkap sebagai string. Wajib saat workspace tidak di-mount - StringcodeSnippet- Potongan kode untuk memfilter masalah (harus cocok dengan konten di fileContent) - Stringlanguage- Bahasa kode (mis., '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 (direkomendasikan): berikan
Saat integrasi dengan SonarQube for IDE diaktifkan:
-
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 path 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
Saat analisis lanjutan diaktifkan untuk organisasi SonarQube Cloud Anda:
Memerlukan workspace ter-mount di
/app/mcp-workspace
- run_advanced_code_analysis - Menjalankan analisis kode lanjutan di SonarQube Cloud untuk satu file. Organisasi disimpulkan dari konfigurasi MCP.
projectKey- Kunci proyek - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYdidefinisikan)branchName- Nama cabang yang digunakan untuk mengambil konteks analisis terbaru - String WajibfilePath- Path relatif proyek dari file yang akan dianalisis (mis.,src/main/java/MyClass.java). - String WajibfileScope- Mendefinisikan dari cakupan mana file berasal: 'MAIN' atau 'TEST' (default: MAIN) - String
Cakupan
-
search_files_by_coverage - Cari file dalam proyek yang diurutkan berdasarkan cakupan (naik - cakupan terburuk terlebih dahulu). Alat ini membantu mengidentifikasi file yang perlu peningkatan cakupan pengujian.
projectKey- Kunci proyek untuk pencarian - String Wajib (Diabaikan jikaSONARQUBE_PROJECT_KEYditentukan)branch- Nama cabang berumur panjang opsional (mis. main, develop). 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 - AngkapageIndex- Indeks halaman (berbasis 1, default: 1) - AngkapageSize- Ukuran halaman (default: 100, maks: 500) - Angka
-
get_file_coverage_details - Dapatkan informasi cakupan baris per 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 harus 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 Wajibbranch- Nama cabang berumur panjang opsional (mis. main, develop). Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID pull request opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - Stringfrom- Baris pertama untuk dianalisis (berbasis 1, default: 1) - Angkato- Baris terakhir untuk dianalisis (inklusif). Jika tidak ditentukan, semua baris dikembalikan - Angka
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 isu analisis komposisi perangkat lunak (risiko dependensi) dari proyek SonarQube, dipasangkan dengan rilis yang muncul dalam proyek, aplikasi, atau portofolio yang dianalisis.
projectKey- Kunci proyek - String Wajib (Diabaikan jikaSONARQUBE_PROJECT_KEYditentukan)branch- Nama cabang berumur panjang opsional (mis. main, develop). 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 - Daftar 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
Isu
-
change_sonar_issue_status - Ubah status isu SonarQube menjadi "accept", "falsepositive" atau untuk "reopen" sebuah isu.
key- Kunci isu - String Wajibstatus- Status isu baru - Enum Wajib {"accept", "falsepositive", "reopen"}
-
search_sonar_issues_in_projects - Cari isu SonarQube di proyek organisasi saya.
projects- Daftar opsional proyek Sonar - String[]branch- Nama cabang berumur panjang opsional (mis. main, develop). 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 difilter. Nilai yang mungkin: INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]impactSoftwareQualities- Daftar opsional kualitas perangkat lunak untuk difilter. Nilai yang mungkin: MAINTAINABILITY, RELIABILITY, SECURITY - String[]issueStatuses- Daftar opsional status isu untuk difilter. Nilai yang mungkin: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]issueKey- Kunci isu opsional untuk mengambil isu tertentu - Stringp- Nomor halaman opsional (default: 1) - Integerps- Ukuran halaman opsional. Harus lebih besar dari 0 dan kurang dari atau sama dengan 500 (default: 100) - Integer
Titik Rawan Keamanan
-
search_security_hotspots - Cari Titik Rawan Keamanan di proyek SonarQube.
projectKey- Kunci proyek atau aplikasi - String Wajib (Diabaikan jikaSONARQUBE_PROJECT_KEYditentukan)hotspotKeys- Daftar kunci Titik Rawan Keamanan spesifik yang dipisahkan koma untuk diambil - String[]branch- Nama cabang berumur panjang opsional (mis. main, develop). 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 difilter - String[]status- Filter status opsional: TO_REVIEW, REVIEWED - Stringresolution- Filter resolusi opsional: FIXED, SAFE, ACKNOWLEDGED - StringsinceLeakPeriod- Filter titik rawan yang dibuat sejak periode kebocoran (kode baru) - BooleanonlyMine- Hanya tampilkan titik rawan yang ditugaskan kepada saya - Booleanp- Nomor halaman opsional (default: 1) - Integerps- Ukuran halaman opsional. Harus lebih besar dari 0 dan kurang dari atau sama dengan 500 (default: 100) - Integer
-
show_security_hotspot - Dapatkan informasi detail tentang Titik Rawan Keamanan tertentu, termasuk detail aturan, konteks kode, aliran, dan komentar.
hotspotKey- Kunci Titik Rawan Keamanan - String Wajib
-
change_security_hotspot_status - Tinjau Titik Rawan Keamanan dengan mengubah statusnya. Saat menandai sebagai REVIEWED, Anda harus menentukan resolusi (FIXED, SAFE, atau ACKNOWLEDGED).
hotspotKey- Kunci Titik Rawan Keamanan - 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 - Daftar semua bahasa pemrograman yang didukung di instansi SonarQube ini.
q- Pola opsional untuk mencocokkan kunci/nama bahasa - String
Ukuran
- get_component_measures - Dapatkan ukuran SonarQube untuk komponen (proyek, direktori, file).
projectKey- Kunci proyek - String Wajib saatSONARQUBE_PROJECT_KEYtidak dikonfigurasibranch- Nama cabang berumur panjang opsional (mis. main, develop). Gunakanlist_branchesuntuk menemukan nama yang valid - StringmetricKeys- Kunci metrik opsional untuk diambil (mis. 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.
p- Nomor halaman opsional (default: 1) - Integerps- Ukuran halaman opsional. Harus lebih besar dari 0 dan kurang dari atau sama dengan 500 (default: 100) - Integer
Portofolio
-
list_portfolios - Daftar portofolio perusahaan yang tersedia di SonarQube dengan opsi pemfilteran dan penomoran halaman.
Untuk SonarQube Server:
q- Kueri pencarian opsional untuk memfilter portofolio berdasarkan nama atau kunci - Stringfavorite- Jika true, hanya mengembalikan portofolio favorit - BooleanpageIndex- Nomor halaman berbasis 1 opsional (default: 1) - IntegerpageSize- Ukuran halaman opsional, maks 500 (default: 100) - Integer
Untuk SonarQube Cloud:
enterpriseId- UUID perusahaan. Dapat dihilangkan hanya jika parameter 'favorite' disertakan dengan nilai true - Stringq- Kueri pencarian opsional untuk memfilter portofolio berdasarkan nama - Stringfavorite- Harus true jika parameter 'enterpriseId' dihilangkan. Jika true, hanya mengembalikan portofolio yang difavoritkan oleh pengguna yang masuk. Tidak bisa true saat 'draft' true - Booleandraft- Jika true, hanya mengembalikan draf yang dibuat oleh pengguna yang masuk. Tidak bisa true saat 'favorite' true - BooleanpageIndex- Indeks opsional halaman yang akan diambil (default: 1) - IntegerpageSize- Ukuran opsional halaman yang akan diambil (default: 50) - Integer
Proyek
-
search_my_sonarqube_projects - Temukan proyek SonarQube. Responsnya menggunakan penomoran halaman.
page- Nomor halaman opsional - String
-
list_branches - Daftar cabang berumur panjang untuk proyek (mis. main, develop, master). Hanya mengembalikan cabang
LONGdi SonarQube Cloud dan entriBRANCHdi SonarQube Server — nama yang aman untuk parameterbranchdi alat lain. Untuk pull request, gunakanlist_pull_requestssebagai gantinya.projectKey- Kunci proyek (mis. my_project) - String Wajib (Diabaikan jikaSONARQUBE_PROJECT_KEYditentukan)
-
list_pull_requests - Daftar semua pull request untuk proyek. Gunakan alat ini untuk menemukan pull request yang tersedia sebelum menganalisis cakupan, isu, atau kualitasnya. Mengembalikan kunci/ID pull request yang dapat digunakan dengan alat lain (mis., search_files_by_coverage, get_file_coverage_details). Untuk cabang berumur panjang, gunakan
list_branchessebagai gantinya.projectKey- Kunci proyek (mis. my_project) - String Wajib (Diabaikan jikaSONARQUBE_PROJECT_KEYditentukan)
Gerbang Kualitas
-
get_project_quality_gate_status - Dapatkan Status Gerbang Kualitas untuk proyek SonarQube.
analysisId- ID analisis opsional - Stringbranch- Nama cabang berumur panjang opsional (mis. main, develop). 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 - Daftar semua gerbang kualitas di SonarQube saya.
Aturan
- show_rule - Menampilkan informasi detail tentang aturan SonarQube.
key- Kunci aturan - String Wajib
Duplikasi
-
search_duplicated_files - Cari file dengan duplikasi kode di proyek SonarQube. Secara default, secara otomatis mengambil semua file yang terduplikasi di semua halaman (maks 10.000 file). Hanya mengembalikan file dengan duplikasi.
projectKey- Kunci proyek - String Wajib (Diabaikan jikaSONARQUBE_PROJECT_KEYditentukan)branch- Nama cabang berumur panjang opsional (mis. main, develop). Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID pull request opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - StringpageSize- Jumlah hasil per halaman opsional untuk penomoran halaman manual (maks: 500). Jika tidak ditentukan, otomatis mengambil semua file yang terduplikasi - IntegerpageIndex- Nomor halaman opsional untuk penomoran halaman manual (dimulai dari 1). Jika tidak ditentukan, otomatis mengambil semua file yang terduplikasi - Integer
-
get_duplications - Dapatkan duplikasi untuk file. Memerlukan izin Browse pada proyek file.
key- Kunci file - String Wajibbranch- Nama cabang berumur panjang opsional (mis. main, develop). 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 berumur panjang opsional (mis. main, develop). 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 komit SCM jika nilainya false, jika tidak tampilkan komit untuk setiap baris - Stringfrom- Baris pertama yang akan dikembalikan. Dimulai dari 1 - Numberto- Baris terakhir yang akan dikembalikan (inklusif) - Number
Sistem
Catatan: Alat sistem hanya tersedia saat terhubung ke SonarQube Server.
-
get_system_health - Dapatkan status kesehatan instans SonarQube Server. Mengembalikan GREEN (beroperasi penuh), YELLOW (dapat digunakan tetapi perlu perhatian), atau RED (tidak beroperasi).
-
get_system_info - Dapatkan informasi rinci tentang konfigurasi sistem SonarQube Server termasuk status JVM, basis data, 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 opsional dari log yang akan diambil. Nilai yang mungkin: access, app, ce, deprecation, es, web. Default: app - String
-
ping_system - Ping sistem SonarQube Server untuk memeriksa apakah masih 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 spesifik 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 spesifik 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 bidang yang dipisahkan koma untuk disertakan dalam respons - Stringlimit- Jumlah maksimum hasil yang akan 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 benar-benar 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 bidang yang dipisahkan koma untuk disertakan dalam respons - Stringlimit- Jumlah maksimum hasil yang akan 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 fungsi yang sepenuhnya memenuhi syarat - String Wajibdepth- Kedalaman rantai panggilan (0=hanya fungsi, 1=pemanggil langsung, dll.) - Integerfields- 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 Wajibdepth- Kedalaman rantai panggilan (0=hanya fungsi, 1=yang dipanggil langsung, dll.) - Integerfields- 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 Wajibfields- Daftar bidang yang dipisahkan koma untuk disertakan dalam respons - String
-
get_type_hierarchy - Dapatkan hierarki pewarisan penuh untuk struktur seperti kelas (kelas, antarmuka, enum, record, exception, struct). Penting untuk memahami pohon pewarisan dan refactoring.
fqn- Nama struktur seperti kelas yang sepenuhnya memenuhi syarat - String Wajibfields- Daftar bidang 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 kelas atau modul yang sepenuhnya memenuhi syarat - String Wajibfields- Daftar bidang yang dipisahkan koma untuk disertakan dalam respons - String
-
get_current_architecture - Dapatkan grafik arsitektur hierarkis yang difilter berdasarkan awalan jalur dan kedalaman. Berguna untuk menjelajahi struktur modul dan dependensi tingkat tinggi.
depth- Kedalaman hierarki (0=hanya root, 1=root + anak, dll.) - Integer Wajibpath_prefix- Awalan jalur opsional untuk memfilter node (mis.,com.example.service) - Stringecosystem- Ekosistem opsional untuk difilter berdasarkan (java,cs,py,js,ts) - String
-
get_intended_architecture - Dapatkan batasan arsitektur yang ditentukan pengguna yang menentukan modul mana yang diizinkan untuk bergantung pada yang lain.
Alat Pedoman
- get_guidelines - Dapatkan pedoman pengkodean berdasarkan masalah proyek SonarQube, kategori katalog, atau kombinasi keduanya.
mode- Mode pengambilan pedoman:project_based,category_based, ataucombined- String Wajibcategories- Daftar nama kategori (wajib untuk modecategory_baseddancombined) - String[]languages- Daftar bahasa target dalam format kunci repositori SonarQube (wajib saatcategoriesdisediakan) - 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/[email protected],pkg:maven/org.apache.logging.log4j/[email protected],pkg:pypi/[email protected]) - String Wajib
Variabel Lingkungan Augmentasi Konteks
| Variabel | Deskripsi | Wajib | 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 | Override cabang SonarQube eksplisit * | Tidak | Tidak ada |
SONARQUBE_DEBUG_ENABLED | Aktifkan logging debug (untuk pemecahan masalah) | Tidak | False |
SONAR_LOG_LEVEL | Verbositas logging (TRACE, DEBUG, INFO, WARNING, ERROR) | Tidak | INFO |
- Untuk disediakan saat tidak menggunakan git, atau saat nama cabang git tidak cocok dengan nama cabang di SonarQube.
Konfigurasi Spesifik Proyek (Direkomendasikan)
Pertama, ekspor variabel lingkungan SONARQUBE_TOKEN environment variable 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 server Augmentasi Konteks akses langsung 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 kontainer melalui -e SONARQUBE_TOKEN.
Kesiapan Agentic
Catatan: Alat Kesiapan Agentic hanya tersedia di SonarQube Cloud dan memerlukan fitur untuk diaktifkan untuk organisasi Anda.
-
start_agentic_readiness_assessment - Mulai penilaian kesiapan agentic untuk sebuah proyek. Segera kembali dengan status
PENDINGdanassessmentId. Gunakanget_agentic_readiness_assessmentuntuk melakukan polling hasil.projectKey- Kunci proyek - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYditentukan)branch- Cabang yang akan dinilai. Abaikan untuk menggunakan cabang default proyek - String
-
get_agentic_readiness_assessment - Ambil hasil penilaian. Panggil ulang dengan
assessmentIdyang sama hingga statusnyaCOMPLETED,FAILED, atauINTERRUPTED. Saat selesai, mengembalikan level keseluruhan dan rincian per pilar dengan tindakan yang direkomendasikan dan bukti.assessmentId- ID penilaian yang dikembalikan olehstart_agentic_readiness_assessment- String Wajib
-
list_agentic_readiness_assessments - Daftarkan semua penilaian untuk sebuah proyek, terbaru terlebih dahulu. Gunakan
get_agentic_readiness_assessmentuntuk hasil tingkat pilar penuh.projectKey- Kunci proyek untuk mendaftarkan penilaian - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYditentukan)branch- Filter penilaian berdasarkan nama cabang. Abaikan 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-Penggabungan
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 Tinjauan 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
Disarankan menggunakan citra kontainer sonarsource/sonarqube-mcp.
Untuk menjalankan server sebagai JAR mandiri tanpa Docker, unduh rilis yang sudah dibangun 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 yang 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>"
}
}
}
Bangun dari sumber
SonarQube MCP Server memerlukan Java Development Kit (JDK) versi 21 atau yang lebih baru untuk membangun.
Jalankan perintah Gradle berikut untuk membersihkan proyek dan membangun aplikasi:
./gradlew clean build -x test
Berkas JAR akan dibuat di build/libs/.
Setelah menambahkan atau memperbarui dependensi, regenerasi berkas 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 berkas STORAGE_PATH/logs/mcp.log secara default. Untuk menonaktifkan pencatatan berkas sepenuhnya, atur SONARQUBE_LOG_TO_FILE_DISABLED=true.
Masalah Umum
"Fitur tidak berfungsi" atau "Alat/fungsionalitas hilang"
Anda mungkin menjalankan citra Docker yang sudah usang. Docker menyimpan citra secara lokal, sehingga Anda tidak akan menerima pembaruan secara otomatis.
Solusi: Perbarui ke versi terbaru:
docker pull sonarsource/sonarqube-mcp
Setelah menarik citra 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 meningkatkan citra 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 pihak lain. 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 merupakan Tujuan Non-Kompetitif dan oleh karena itu diizinkan di bawah SSAL.
Penggunaan SonarQube melalui MCP Anda 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.