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 analisis kode lokal pada cuplikan atau file melalui
analyze_code_snippet, dengan opsi pemasangan workspace untuk menghindari pembengkakan konteks. - Mencari dan mengelola isu — Minta asisten untuk menemukan, meninjau, dan memperbarui isu SonarQube, termasuk mengubah statusnya saat tidak dalam mode baca-saja.
- Memeriksa gerbang kualitas dan pengukuran — Minta status gerbang kualitas, metrik proyek, cakupan, dan risiko dependensi di seluruh proyek SonarQube Anda.
- Meninjau hotspot keamanan — Biarkan asisten mencari dan memandu melalui hotspot keamanan yang ditandai di basis kode Anda.
- Menjelajahi proyek dan aturan — Gunakan asisten untuk menjelajahi proyek, mencantumkan bahasa yang didukung, dan mencari aturan pengkodean langsung dari SonarQube.
Dokumentasi
Server MCP SonarQube
Server MCP SonarQube adalah server Model Context Protocol (MCP) yang memungkinkan integrasi tanpa hambatan dengan SonarQube Server atau Cloud untuk kualitas kode dan keamanan. Server ini juga mendukung analisis cuplikan kode secara langsung dalam konteks agen.
Pengaturan cepat
Praktik terbaik keamanan
🔒 Penting: Token SonarQube Anda adalah kredensial sensitif. Ikuti praktik keamanan berikut:
Saat menggunakan perintah CLI:
- Hindari hardcoding token dalam argumen baris perintah – token akan tersimpan di riwayat shell
- Gunakan variabel lingkungan – atur token dalam variabel lingkungan sebelum menjalankan perintah
Saat menggunakan file konfigurasi:
- Jangan pernah mengirim token ke kontrol versi
- Gunakan substitusi variabel lingkungan dalam file konfigurasi jika memungkinkan
🚀 Buat konfigurasi Anda
Cara tercepat untuk memulai adalah Generator Konfigurasi Server MCP SonarQube – alat interaktif yang menghasilkan konfigurasi siap pakai untuk klien agen AI pilihan Anda.
Pengaturan manual
Jika Anda lebih suka mengonfigurasi sendiri, metode paling sederhana adalah menggunakan image kontainer kami di sonarsource/sonarqube-mcp. Gunakan sonarsource/sonarqube-mcp untuk pembaruan otomatis (dengan --pull=always), atau sematkan ke tag versi (misalnya, sonarsource/sonarqube-mcp:1.19.0.2785) untuk deployment yang dapat direproduksi. Baca di bawah jika Anda ingin membangunnya secara lokal.
Catatan: Meskipun contoh di bawah menggunakan
docker, runtime kontainer apa pun yang kompatibel dengan OCI dapat digunakan (misalnya, Podman, nerdctl). Cukup gantidockerdengan alat pilihan Anda.
Antigravity
Server MCP SonarQube tersedia di Toko MCP Antigravity. Ikuti petunjuk berikut:
- 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.
Alternatifnya, Anda dapat mengonfigurasi server secara manual melalui mcp_config.json:
- Untuk terhubung dengan SonarQube Cloud:
Di Panel Sisi Agen, klik tiga titik (...) -> Toko MCP -> Kelola Server MCP -> Lihat konfigurasi mentah, dan tambahkan berikut ini:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<YOUR_TOKEN>",
"SONARQUBE_ORG": "<YOUR_ORG>"
}
}
}
}
Untuk SonarQube Cloud US, tambahkan "SONARQUBE_URL": "https://sonarqube.us" secara manual ke bagian env dan "-e", "SONARQUBE_URL" ke array args.
- Untuk terhubung dengan SonarQube Server:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
"SONARQUBE_URL": "<YOUR_SERVER_URL>"
}
}
}
}
Claude Code
- Untuk terhubung dengan SonarQube Cloud:
claude mcp add sonarqube \
--env SONARQUBE_TOKEN=$SONAR_TOKEN \
--env SONARQUBE_ORG=$SONAR_ORG \
-- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp
Untuk SonarQube Cloud US, tambahkan --env SONARQUBE_URL=https://sonarqube.us ke perintah.
- Untuk terhubung dengan SonarQube Server:
claude mcp add sonarqube \
--env SONARQUBE_TOKEN=$SONAR_USER_TOKEN \
--env SONARQUBE_URL=$SONAR_URL \
-- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_URL sonarsource/sonarqube-mcp
Codex CLI
Edit file konfigurasi secara manual di ~/.codex/config.toml dan tambahkan konfigurasi berikut:
- Untuk terhubung dengan SonarQube Cloud:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_USER_TOKEN>", "SONARQUBE_ORG" = "<YOUR_ORG>" }
Untuk SonarQube Cloud US, tambahkan "SONARQUBE_URL" = "https://sonarqube.us" ke bagian env dan "-e", "SONARQUBE_URL" ke array args.
- Untuk terhubung dengan SonarQube Server:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_TOKEN>", "SONARQUBE_URL" = "<YOUR_SERVER_URL>" }
Cursor
- Untuk terhubung dengan SonarQube Cloud:
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 diinstal, ekstensi akan diinstal di bawah <home>/.gemini/extensions/sonarqube/gemini-extension.json.
GitHub Copilot CLI
Setelah memulai Copilot CLI, jalankan perintah berikut untuk menambahkan server MCP SonarQube:
/mcp add
Anda harus memberikan informasi yang berbeda tentang server MCP, Anda dapat menggunakan tab untuk berpindah antar bidang.
- Untuk terhubung dengan SonarQube Cloud:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_ORG, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_TOKEN>,SONARQUBE_ORG=<YOUR_ORG>
Tools: *
Untuk SonarQube Cloud US, tambahkan -e, SONARQUBE_URL ke Argumen dan SONARQUBE_URL=https://sonarqube.us ke Variabel Lingkungan.
- Untuk terhubung dengan SonarQube Server:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_URL, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_USER_TOKEN>,SONARQUBE_URL=<YOUR_SERVER_URL>
Tools: *
File konfigurasi terletak di ~/.copilot/mcp-config.json.
Agen pengkodean GitHub Copilot
Agen pengkodean GitHub Copilot dapat memanfaatkan server MCP SonarQube secara langsung di CI/CD Anda.
Untuk menambahkan rahasia ke lingkungan Copilot Anda, ikuti dokumentasi Copilot. Hanya rahasia dengan nama yang diawali COPILOT_MCP_ yang akan tersedia untuk konfigurasi MCP Anda.
Di repositori GitHub Anda, navigasikan ke Pengaturan -> Copilot -> Agen pengkodean, dan tambahkan konfigurasi berikut di bagian konfigurasi MCP:
- Untuk terhubung dengan SonarQube Cloud:
{
"mcpServers": {
"sonarqube": {
"type": "local",
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"--rm",
"-i",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_TOKEN",
"SONARQUBE_ORG": "COPILOT_MCP_SONARQUBE_ORG"
},
"tools": ["*"]
}
}
}
Untuk SonarQube Cloud US, tambahkan "-e", "SONARQUBE_URL" ke array args dan "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" ke bagian env, lalu atur rahasia COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us.
- Untuk terhubung dengan SonarQube Server:
{
"mcpServers": {
"sonarqube": {
"type": "local",
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"--rm",
"-i",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_USER_TOKEN",
"SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL"
},
"tools": ["*"]
}
}
}
Kiro
Buat file .kiro/settings/mcp.json di direktori workspace Anda (atau edit jika sudah ada), tambahkan konfigurasi berikut:
- Untuk terhubung dengan SonarQube Cloud:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<YOUR_TOKEN>",
"SONARQUBE_ORG": "<YOUR_ORG>"
},
"disabled": false,
"autoApprove": []
}
}
}
Untuk SonarQube Cloud US, tambahkan "-e", "SONARQUBE_URL" ke array args dan "SONARQUBE_URL": "https://sonarqube.us" ke bagian env.
- Untuk terhubung dengan SonarQube Server:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
"SONARQUBE_URL": "<YOUR_SERVER_URL>"
},
"disabled": false,
"autoApprove": []
}
}
}
VS Code
Anda dapat menggunakan tombol berikut untuk menyederhanakan proses instalasi di dalam VS Code.
Untuk SonarQube Cloud US, tambahkan "SONARQUBE_URL": "https://sonarqube.us" secara manual ke bagian env dalam konfigurasi MCP Anda setelah instalasi.
Windsurf
Server MCP SonarQube tersedia sebagai plugin Windsurf. Ikuti petunjuk berikut:
- Buka Pengaturan Windsurf > Cascade > Server MCP dan pilih Buka Marketplace MCP
- Cari
sonarqubedi Marketplace MCP Cascade - 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 Ekstensi di Zed dan cari Server MCP SonarQube. Saat menginstal ekstensi, Anda akan diminta untuk memberikan variabel lingkungan yang diperlukan:
- Saat menggunakan SonarQube Cloud:
{
"sonarqube_token": "YOUR_SONARQUBE_TOKEN",
"sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
"docker_path": "DOCKER_PATH"
}
Untuk SonarQube Cloud US, tambahkan "sonarqube_url": "https://sonarqube.us" ke konfigurasi.
- Saat menggunakan SonarQube Server:
{
"sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
"sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
"docker_path": "DOCKER_PATH"
}
docker_path adalah jalur ke executable docker. Contoh:
Linux/macOS: /usr/bin/docker atau /usr/local/bin/docker
Windows: C:\Program Files\Docker\Docker\resources\bin\docker.exe
💡 Tips: Kami merekomendasikan menarik image terbaru secara teratur atau sebelum melaporkan masalah untuk memastikan Anda memiliki fitur dan perbaikan terbaru.
Instalasi manual
Anda dapat menginstal server MCP SonarQube secara manual dengan menyalin cuplikan berikut di file konfigurasi server MCP:
- Untuk terhubung dengan SonarQube Cloud:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>"
}
}
}
- Untuk terhubung dengan SonarQube Server:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Integrasi dengan SonarQube untuk IDE
Server MCP SonarQube dapat terintegrasi dengan SonarQube untuk IDE untuk lebih meningkatkan alur kerja pengembangan Anda, memberikan analisis kode dan wawasan yang lebih baik langsung di dalam IDE Anda.
Konfigurasi
Saat menggunakan SonarQube untuk IDE, variabel lingkungan SONARQUBE_IDE_PORT harus diatur dengan nomor port yang benar. SonarQube untuk VS Code menyertakan tombol Instal Cepat, yang secara otomatis mengatur konfigurasi port yang benar.
Misalnya, dengan SonarQube Cloud:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_ORG",
"-e",
"SONARQUBE_IDE_PORT",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>",
"SONARQUBE_IDE_PORT": "<64120-64130>"
}
}
}
Saat menjalankan server MCP dalam kontainer di Linux, kontainer tidak dapat mengakses server tertanam SonarQube untuk IDE yang berjalan di localhost. Untuk mengizinkan kontainer terhubung ke server SonarQube untuk IDE, tambahkan opsi
--network=hostke perintah run kontainer Anda.
Konfigurasi
Tergantung pada lingkungan Anda, Anda harus memberikan variabel lingkungan tertentu.
Dasar
Anda harus menambahkan variabel berikut saat menjalankan Server MCP:
| Variabel lingkungan | Deskripsi |
|---|---|
STORAGE_PATH | Jalur absolut wajib ke direktori yang dapat ditulis tempat Server MCP SonarQube akan menyimpan file-nya (misalnya, untuk pembuatan, pembaruan, dan persistensi), secara otomatis disediakan saat menggunakan image kontainer |
SONARQUBE_PROJECT_KEY | Kunci proyek default opsional. Saat diatur, semua alat yang memerlukan kunci proyek akan menggunakan nilai ini secara otomatis — parameter projectKey dihapus dari skema mereka sepenuhnya. Berguna saat mengerjakan satu proyek. |
SONARQUBE_IDE_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 logging 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 kontainer atau sementara di mana logging file tidak diinginkan. Default: false. |
Mount Workspace (Mengurangi Pembengkakan Konteks)
Secara default, alat analisis analyze_code_snippet mengharuskan agen untuk meneruskan konten file lengkap sebagai argumen fileContent. Untuk file besar atau saat menganalisis banyak file dalam satu sesi, ini secara signifikan meningkatkan penggunaan jendela konteks dan biaya.
Solusi: pasang direktori proyek Anda ke dalam kontainer di /app/mcp-workspace. Ketika pemasangan ini terdeteksi, server membaca file langsung dari disk menggunakan argumen filePath yang relatif terhadap proyek — konten file tidak pernah melewati konteks agen.
{
"args": [
"run", "-i", "--rm", "--init", "--pull=always",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_ORG",
"-v", "/path/to/your/project:/app/mcp-workspace",
"sonarsource/sonarqube-mcp"
]
}
Ketika pemasangan aktif:
run_advanced_code_analysistersedia jika organisasi Anda berhak atasnyaanalyze_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. Toolset konteks Vortex (nama lama: Context Augmentation/CAG) dan toolset analisis Vortex (nama lama: Advanced Analysis/A3S) hanya tersedia dalam mode stdio dan berbagi satu hak organisasi gabungan — sebuah organisasi harus memiliki hak untuk keduanya agar dapat menggunakan salah satunya. Di SonarQube Server, stdio mencantumkan konteks Vortex dan run_advanced_code_analysis ketika kedua hub CAG dan A3S memiliki hak. Utamakan kunci toolset terpadu vortex. Kunci lama yang tidak digunakan lagi cag dan analysis masih berfungsi; peringatan saat startup dan catatan penghentian dalam instruksi server dikeluarkan ketika keduanya digunakan tanpa vortex. Dalam mode Streamable HTTP, klien dapat mengirim header HTTP SONARQUBE_TOOLSETS untuk mempersempit ini lebih lanjut per permintaan, tetapi tidak dapat mengaktifkan toolset di luar yang diluncurkan server (lihat Streamable HTTP transport di bawah). |
SONARQUBE_READ_ONLY | Ketika diatur ke true, mengaktifkan mode hanya-baca yang menonaktifkan semua operasi tulis (misalnya mengubah status masalah). Filter ini bersifat kumulatif dengan SONARQUBE_TOOLSETS jika keduanya diatur. Default: false. Dalam mode Streamable HTTP, klien dapat mengirim header HTTP SONARQUBE_READ_ONLY untuk lebih membatasi permintaan individual menjadi hanya-baca, tetapi tidak dapat mengangkat pembatasan hanya-baca tingkat server (lihat Streamable HTTP transport di bawah). |
Toolset yang Tersedia
| Toolset | Kunci | Deskripsi |
|---|---|---|
| Analisis | analysis | Alat analisis kode (analisis lokal melalui analyze_code_snippet, tidak digunakan lagi demi analyze_file_list/analisis Vortex) |
| IDE | ide | Alat jembatan SonarQube for IDE (analisis file, sakelar analisis otomatis) — saat ini juga disertakan dalam analysis |
| Masalah | issues | Cari dan kelola masalah 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 |
| 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 (termasuk 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 (khusus Server) |
| Webhooks | webhooks | Kelola webhooks |
| Risiko Ketergantungan | dependency-risks | Analisis risiko ketergantungan dan masalah keamanan (SCA) |
| Cakupan | coverage | Alat analisis dan peningkatan cakupan pengujian |
| Konteks Vortex | cag | Alat konteks Vortex — khusus stdio. Tidak digunakan lagi demi vortex (nama lama: Context Augmentation/CAG) |
| Vortex | vortex | Toolset terpadu, disarankan yang menampilkan alat konteks Vortex dan analisis Vortex di bawah satu nama (khusus stdio; Cloud memerlukan hak organisasi gabungan; Server memerlukan kedua hub memiliki hak) |
| Kesiapan Agenik | agentic-readiness | Alat Penilaian Kesiapan Agenik (SonarQube Cloud, memerlukan hak organisasi) |
Contoh
Aktifkan toolset analisis, masalah, dan quality gates (menggunakan Docker dengan SonarQube Cloud):
docker run --init --pull=always -i --rm \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_ORG="<org>" \
-e SONARQUBE_TOOLSETS="analysis,issues,quality-gates" \
sonarsource/sonarqube-mcp
Catatan: Toolset projects selalu diaktifkan secara otomatis, jadi Anda tidak perlu menyertakannya dalam SONARQUBE_TOOLSETS.
Aktifkan mode hanya-baca (menggunakan Docker dengan SonarQube Cloud):
docker run --init --pull=always -i --rm \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_ORG="<org>" \
-e SONARQUBE_READ_ONLY="true" \
sonarsource/sonarqube-mcp
SonarQube Cloud
Untuk mengaktifkan fungsionalitas penuh, variabel lingkungan berikut harus diatur sebelum memulai server:
| Variabel 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 |
Persyaratan Versi: SonarQube Server 2025.1 (SQS) atau 25.1 (SonarQube Community Build) atau yang lebih baru diperlukan. Saat startup, server MCP membaca versi instance yang terhubung dan keluar dengan error jika versinya terlalu lama (misalnya, rilis Server 9.x/10.x lama dan Community Build 24.x tidak didukung). SonarQube Cloud tidak tunduk pada pemeriksaan ini.
⚠️ Koneksi ke SonarQube Server memerlukan token bertipe USER dan tidak akan berfungsi dengan baik jika token proyek atau token global digunakan.
💡 Tips Konfigurasi (mode stdio): Kehadiran
SONARQUBE_ORGmenentukan apakah Anda terhubung ke SonarQube Cloud atau Server. JikaSONARQUBE_ORGdisetel, SonarQube Cloud digunakan; jika tidak, SonarQube Server digunakan.
Mode Transport
Spesifikasi MCP mendefinisikan dua mekanisme transport: Stdio dan Streamable HTTP. Server MCP SonarQube mendukung keduanya:
| Transport 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 | Deployment jarak jauh atau multi-pengguna; klien terhubung ke /mcp melalui HTTP(S) (misalnya Windsurf dengan URL server yang di-host sendiri) |
Catatan: Streamable HTTP adalah transport jaringan MCP saat ini. Transport HTTP khusus SSE yang lebih lama dari versi MCP sebelumnya tidak digunakan lagi dan tidak didukung.
1. Stdio (Default - Direkomendasikan untuk Pengembangan Lokal)
Mode yang direkomendasikan untuk pengembangan lokal dan pengaturan pengguna tunggal, digunakan oleh sebagian besar klien MCP.
Contoh - Docker dengan SonarQube Cloud:
{
"mcpServers": {
"sonarqube": {
"command": "docker",
"args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
"env": {
"SONARQUBE_TOKEN": "<your-token>",
"SONARQUBE_ORG": "<your-org>"
}
}
}
}
2. HTTP (Streamable HTTP)
Transport Streamable HTTP tanpa enkripsi. Gunakan HTTPS sebagai gantinya untuk deployment multi-pengguna.
⚠️ Tidak Direkomendasikan: Gunakan Stdio untuk pengembangan lokal atau HTTPS (Streamable HTTP) untuk deployment produksi multi-pengguna.
| Variabel lingkungan | Deskripsi | Default |
|---|---|---|
SONARQUBE_TRANSPORT | Setel 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 | Origin browser yang dipisahkan koma yang diizinkan untuk CORS (mis. https://my-app.example.com) | Tidak disetel |
SONARQUBE_MCP_IN_CONTAINER | Setel ke true saat berjalan di dalam kontainer. Image Docker resmi menyetel ini secara otomatis; setel sendiri saat menggunakan runtime OCI lain (Podman, Kubernetes, Nomad, dll.). | false |
Catatan: Dalam mode Streamable HTTP (HTTP atau HTTPS), server bersifat stateless — setiap permintaan klien harus menyertakan header Authorization: Bearer <token> yang membawa token SonarQube milik pengguna. Untuk SonarQube Cloud, organisasi diselesaikan sebagai berikut:
- Jika
SONARQUBE_ORGdisetel saat server dimulai, semua permintaan dirutekan ke organisasi tersebut. Klien tidak boleh mengirim headerSONARQUBE_ORG— melakukannya akan mengakibatkan error. - 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 — mereka hanya dapat mengurangi cakupan, tidak pernah memperluasnya. Tidak ada status sesi yang dipertahankan antar permintaan.
Tidak digunakan lagi: 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 demi keamanan.
| Variabel lingkungan | Deskripsi | Default |
|---|---|---|
SONARQUBE_TRANSPORT | Setel 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 | Origin browser yang dipisahkan koma yang diizinkan untuk CORS (mis. https://my-app.example.com) | Tidak disetel |
SONARQUBE_MCP_IN_CONTAINER | Setel ke true saat berjalan di dalam kontainer. Image Docker resmi menyetel ini secara otomatis; setel sendiri saat menggunakan runtime OCI lain (Podman, Kubernetes, Nomad, dll.). | false |
Konfigurasi Sertifikat SSL (Opsional):
| Variabel 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 masih mengizinkan origin localhost secara default.
Untuk server yang berjalan secara lokal di mesin Anda (hanya dapat diakses dari localhost):
docker run --init --pull=always -p 127.0.0.1:8443:8443 \
-v $(pwd)/keystore.p12:/etc/ssl/mcp/keystore.p12:ro \
-e SONARQUBE_TRANSPORT=https \
-e SONARQUBE_HTTP_HOST=0.0.0.0 \
-e SONARQUBE_HTTP_PORT=8443 \
-e SONARQUBE_TOKEN="<init-token>" \
-e SONARQUBE_ORG="<your-org>" \
sonarsource/sonarqube-mcp
Untuk server yang dapat diakses dari jaringan (deployment jarak jauh):
docker run --init --pull=always -p 8443:8443 \
-v $(pwd)/keystore.p12:/etc/ssl/mcp/keystore.p12:ro \
-e SONARQUBE_TRANSPORT=https \
-e SONARQUBE_HTTP_HOST=0.0.0.0 \
-e SONARQUBE_HTTP_PORT=8443 \
-e SONARQUBE_TOKEN="<init-token>" \
-e SONARQUBE_ORG="<your-org>" \
sonarsource/sonarqube-mcp
Konfigurasi Klien (SonarQube Cloud):
{
"mcpServers": {
"sonarqube-https": {
"url": "https://your-server:8443/mcp",
"headers": {
"Authorization": "Bearer <your-token>",
"SONARQUBE_ORG": "<your-org>",
"SONARQUBE_TOOLSETS": "issues,quality-gates",
"SONARQUBE_READ_ONLY": "true"
}
}
}
}
Konfigurasi Klien (SonarQube Server):
{
"mcpServers": {
"sonarqube-https": {
"url": "https://your-server:8443/mcp",
"headers": {
"Authorization": "Bearer <your-token>",
"SONARQUBE_TOOLSETS": "issues,quality-gates",
"SONARQUBE_READ_ONLY": "true"
}
}
}
}
Catatan:
SONARQUBE_TOOLSETSdanSONARQUBE_READ_ONLYadalah header per-permintaan opsional yang mempersempit set alat tingkat server untuk permintaan tertentu tersebut. Mereka hanya dapat mengurangi cakupan — mereka tidak dapat mengaktifkan set alat atau mencabut pembatasan di luar apa yang diluncurkan server.
Catatan: Untuk pengembangan lokal, gunakan transport Stdio sebagai gantinya (default). HTTPS Streamable HTTP ditujukan untuk deployment produksi multi-pengguna dengan sertifikat SSL yang tepat.
Endpoint Layanan
Saat berjalan dalam mode Streamable HTTP (http atau https), server mengekspos beberapa endpoint layanan tanpa autentikasi selain endpoint MCP di /mcp. Ini dimaksudkan untuk penggunaan layanan-ke-layanan (pemantauan, orkestrasi, pemeriksaan kompatibilitas klien) dan tidak memerlukan header Authorization.
| Endpoint | Metode | Deskripsi | Contoh respons |
|---|---|---|---|
/health | GET | Probe liveness. 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 Certificate Authority (CA) privat, Anda dapat menambahkan sertifikat kustom ke kontainer yang akan diinstal secara otomatis.
Konfigurasi
Menggunakan Volume Mount
Mount direktori yang berisi sertifikat Anda saat menjalankan kontainer:
docker run --init --pull=always -i --rm \
-v /path/to/your/certificates/:/usr/local/share/ca-certificates/:ro \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_URL="<url>" \
sonarsource/sonarqube-mcp
Format Sertifikat yang Didukung
Kontainer mendukung format sertifikat berikut:
- File
.crt(dikodekan PEM atau DER) - File
.pem(dikodekan PEM)
Konfigurasi MCP dengan Sertifikat
Saat menggunakan sertifikat kustom, Anda dapat memodifikasi konfigurasi MCP untuk me-mount sertifikat:
{
"sonarqube": {
"command": "docker",
"args": [
"run",
"--init",
"--pull=always",
"-i",
"--rm",
"-v",
"/path/to/your/certificates/:/usr/local/share/ca-certificates/:ro",
"-e",
"SONARQUBE_TOKEN",
"-e",
"SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Catatan: Menjalankan server dari JAR alih-alih kontainer? Volume mount di atas menginstal sertifikat ke trust store OS kontainer, yang juga dibaca server. Jika Anda tidak dapat menggunakan trust store OS — terutama di Windows, yang tidak dikonsultasikan — arahkan JVM ke truststore Java yang menyimpan sertifikat CA:
-Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>. Ini ditambahkan di atas sertifikat tepercaya default.
Proxy
Server MCP SonarQube mendukung proxy HTTP dan SOCKS5 melalui properti sistem proxy Java standar.
Konfigurasi
Proxy HTTP/HTTPS
Anda dapat mengonfigurasi pengaturan proxy menggunakan properti sistem Java. Ini dapat disetel sebagai variabel lingkungan atau diteruskan sebagai argumen JVM.
Properti Proxy Umum:
| 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 Server SonarQube Anda mengharuskan klien untuk menyajikan sertifikat selama jabat tangan TLS (mutual TLS), Anda dapat menyediakan penyimpanan kunci PKCS12 dengan memasangnya ke dalam kontainer dan meneruskan lokasinya melalui JAVA_OPTS.
Konfigurasi
Menggunakan penyimpanan kunci PKCS12
Pasang file .p12 atau .pfx Anda ke dalam kontainer dan atur variabel lingkungan JAVA_OPTS dengan properti penyimpanan kunci:
docker run --init --pull=always -i --rm \
-v /path/to/client.p12:/etc/ssl/mcp/client.p12:ro \
-e JAVA_OPTS="-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>" \
-e SONARQUBE_TOKEN="<token>" \
-e SONARQUBE_URL="<url>" \
sonarsource/sonarqube-mcp
Catatan: File sertifikat harus dapat dibaca oleh proses kontainer. Periksa dan perbaiki izin jika diperlukan:
ls -la /path/to/client.p12 # cari -rw-r--r-- (644) atau lebih luas chmod 644 /path/to/client.p12 # berikan izin baca kepada pengguna kontainer
Hilangkan -Djavax.net.ssl.keyStorePassword jika penyimpanan kunci tidak memiliki frasa sandi. Perhatikan bahwa frasa sandi yang digunakan di sini akan terlihat melalui docker inspect atau daftar proses.
Konfigurasi MCP dengan Sertifikat Klien
{
"sonarqube": {
"command": "docker",
"args": [
"run", "--init", "--pull=always", "-i", "--rm",
"-v", "/path/to/client.p12:/etc/ssl/mcp/client.p12:ro",
"-e", "JAVA_OPTS",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_URL",
"sonarsource/sonarqube-mcp"
],
"env": {
"JAVA_OPTS": "-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Menggunakan penyimpanan kunci PKCS12 dengan JAR mandiri
Saat menjalankan server dari JAR, teruskan properti penyimpanan kunci sebagai argumen JVM sebelum -jar:
java \
-Djavax.net.ssl.keyStore=/path/to/client.p12 \
-Djavax.net.ssl.keyStoreType=PKCS12 \
-Djavax.net.ssl.keyStorePassword=<passphrase> \
-jar <path_to_sonarqube_mcp_server_jar>
Hilangkan -Djavax.net.ssl.keyStorePassword jika penyimpanan kunci tidak memiliki frasa sandi.
Konfigurasi MCP dengan Sertifikat Klien (JAR)
{
"sonarqube": {
"command": "java",
"args": [
"-Djavax.net.ssl.keyStore=/path/to/client.p12",
"-Djavax.net.ssl.keyStoreType=PKCS12",
"-Djavax.net.ssl.keyStorePassword=<passphrase>",
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Catatan: File sertifikat dan kunci PEM (file
.crt/.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 - Menganalisis konten file dengan penganalisis SonarQube untuk mengidentifikasi masalah kualitas kode dan keamanan. Selalu menganalisis konten file lengkap untuk akurasi. Secara opsional memfilter hasil ke cuplikan kode tertentu.
Tidak digunakan lagi:
analyze_code_snippetakan dihapus dalam rilis mendatang. Hubungkan SonarQube for IDE untuk menggunakananalyze_file_list, atau aktifkan analisis Vortex untuk organisasi Anda untuk menggunakanrun_advanced_code_analysis(lihat di bawah).Penggunaan:
- Dengan workspace terpasang (disarankan): teruskan
filePath(relatif terhadap proyek) — server membaca file secara langsung, menjaga konten file di luar konteks agen - Tanpa pemasangan workspace: teruskan
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 (mis.,src/main/java/MyClass.java). Digunakan saat workspace dipasang di/app/mcp-workspace- StringfileContent- Konten file lengkap sebagai string. Diperlukan saat workspace tidak dipasang - StringcodeSnippet- Cuplikan 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 terpasang (disarankan): teruskan
Saat integrasi dengan SonarQube for IDE diaktifkan: (dua alat ini ditandai di bawah set alat analysis dan ide)
-
analyze_file_list - Menganalisis file di direktori kerja saat ini menggunakan SonarQube for IDE. Alat ini terhubung ke instance SonarQube for IDE yang berjalan untuk melakukan analisis kualitas kode pada daftar file.
file_absolute_paths- Daftar jalur file absolut untuk dianalisis - String[] Wajib
-
toggle_automatic_analysis - Mengaktifkan atau menonaktifkan analisis otomatis SonarQube for IDE. Saat diaktifkan, SonarQube for IDE akan secara otomatis menganalisis file saat dimodifikasi di direktori kerja. Saat dinonaktifkan, analisis otomatis dimatikan.
enabled- Mengaktifkan atau menonaktifkan analisis otomatis - Boolean Wajib
Di SonarQube Server, stdio mencantumkan alat konteks Vortex dan run_advanced_code_analysis saat hub CAG dan A3S keduanya berhak.
Saat analisis Vortex diaktifkan:
Memerlukan workspace dipasang di
/app/mcp-workspace
- run_advanced_code_analysis - Menjalankan analisis Vortex pada satu file. Organisasi disimpulkan dari konfigurasi MCP (SonarQube Server menggunakan placeholder UUID nil).
projectKey- Kunci proyek - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYditentukan)branch- Nama cabang yang digunakan untuk mengambil konteks analisis terbaru - String WajibfilePath- Jalur relatif proyek dari file yang akan dianalisis (mis.,src/main/java/MyClass.java). - String WajibfileScope- Menentukan dari cakupan mana file berasal: 'MAIN' atau 'TEST' (default: MAIN) - String
Cakupan
-
search_files_by_coverage - Mencari file dalam proyek yang diurutkan berdasarkan cakupan (menaik - cakupan terburuk terlebih dahulu). Alat ini membantu mengidentifikasi file yang memerlukan perbaikan cakupan pengujian.
projectKey- Kunci proyek untuk dicari - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYditentukan)branch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID permintaan tarik opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - StringmaxCoverage- Ambang 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 - Mendapatkan informasi cakupan baris demi baris untuk file tertentu, termasuk baris mana yang tidak tercakup dan mana yang memiliki cabang tercakup sebagian. Alat ini membantu mengidentifikasi secara tepat di mana menambahkan cakupan pengujian. Gunakan setelah mengidentifikasi file dengan cakupan rendah melalui search_files_by_coverage.
key- Kunci file (mis. my_project:src/foo/Bar.java) - String Wajibbranch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID permintaan tarik opsional. Gunakanlist_pull_requestsuntuk menemukan kunci yang valid - Stringfrom- Baris pertama untuk dianalisis (berbasis 1, default: 1) - Numberto- Baris terakhir untuk dianalisis (inklusif). Jika tidak ditentukan, semua baris dikembalikan - Number
Risiko Ketergantungan
Catatan: Risiko ketergantungan hanya tersedia saat terhubung ke SonarQube Server 2025.4 Enterprise atau lebih tinggi dengan SonarQube Advanced Security diaktifkan.
- search_dependency_risks - Mencari masalah analisis komposisi perangkat lunak (risiko ketergantungan) dari proyek SonarQube, dipasangkan dengan rilis yang muncul dalam proyek, aplikasi, atau portofolio yang dianalisis.
projectKey- Kunci proyek - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYditentukan)branch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID permintaan tarik 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 - Mencantumkan perusahaan yang tersedia di SonarQube Cloud yang Anda miliki aksesnya. Gunakan alat ini untuk menemukan ID perusahaan yang dapat digunakan dengan alat lain.
enterpriseKey- Kunci perusahaan opsional untuk memfilter hasil - String
Masalah
-
change_sonar_issue_status - Mengubah status masalah SonarQube menjadi "accept", "falsepositive" atau untuk "reopen" masalah.
key- Kunci masalah - String Wajibstatus- Status masalah baru - Enum Wajib {"accept", "falsepositive", "reopen"}comment- Komentar opsional yang menjelaskan perubahan status - String
-
search_sonar_issues_in_projects - Mencari masalah SonarQube di proyek organisasi saya.
projectKeys- Daftar opsional kunci proyek SonarQube - String[]branch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID permintaan tarik 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[]tags- Daftar opsional tag masalah untuk memfilter. Tag menggunakan huruf kecil - String[]inNewCodePeriod- Hanya kembalikan masalah dalam periode kode baru. Memerlukan tepat satu entri diprojectKeysdanfiles- BooleanissueKey- 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
Titik Panas Keamanan
-
search_security_hotspots - Mencari Titik Panas Keamanan dalam proyek SonarQube.
projectKey- Kunci proyek atau aplikasi - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYditentukan)hotspotKeys- Daftar yang dipisahkan koma dari kunci Titik Panas Keamanan tertentu untuk diambil - String[]branch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringpullRequest- Kunci/ID permintaan tarik 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 titik panas yang dibuat sejak periode kebocoran (kode baru) - BooleanonlyMine- Tampilkan hanya titik panas 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 - Mendapatkan informasi terperinci tentang Titik Panas Keamanan tertentu, termasuk detail aturan, konteks kode, alur, dan komentar.
hotspotKey- Kunci Titik Panas Keamanan - String Wajib
-
change_security_hotspot_status - Meninjau Security Hotspot dengan mengubah statusnya. Saat menandai sebagai REVIEWED, Anda harus menentukan resolusi (FIXED, SAFE, atau ACKNOWLEDGED).
hotspotKey- Kunci Security Hotspot - String Wajibstatus- Status baru - Enum Wajib {"TO_REVIEW", "REVIEWED"}resolution- Resolusi saat status adalah REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}comment- Komentar tinjauan opsional - String
Bahasa
- list_languages - Daftar semua bahasa pemrograman yang didukung di instance SonarQube ini.
q- Pola opsional untuk mencocokkan kunci/nama bahasa - String
Pengukuran
- get_component_measures - Dapatkan pengukuran SonarQube untuk sebuah komponen (proyek, direktori, file).
projectKey- Kunci proyek - String Wajib saatSONARQUBE_PROJECT_KEYtidak dikonfigurasibranch- Nama cabang opsional untuk analisis berbasis cabang. Gunakanlist_branchesuntuk menemukan nama yang valid - StringmetricKeys- Kunci metrik opsional yang akan 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 - Daftar portofolio enterprise yang tersedia di SonarQube dengan opsi pemfilteran dan paginasi.
Untuk SonarQube Server:
q- Kueri pencarian opsional untuk memfilter portofolio berdasarkan nama atau kunci - Stringfavorite- Jika true, hanya mengembalikan portofolio favorit - BooleanpageIndex- Nomor halaman opsional berbasis 1 (default: 1) - IntegerpageSize- Ukuran halaman opsional, maks 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 true jika parameter 'enterpriseId' dihilangkan. Jika true, hanya mengembalikan portofolio yang difavoritkan oleh pengguna yang masuk. Tidak boleh true saat 'draft' true - Booleandraft- Jika true, hanya mengembalikan draf yang dibuat oleh pengguna yang masuk. Tidak boleh true saat 'favorite' 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 (cocok sebagian) atau kunci (cocok persis) - String
-
list_branches - Daftar cabang yang dianalisis untuk sebuah proyek.
- SonarQube Cloud: mengembalikan cabang berumur panjang (
LONG) dan berumur pendek (SHORT) dengan bidangtypedanmergeBranch. Filter opsionalbranchTypes: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 (misalnya my_project) - String Wajib (Diabaikan saatSONARQUBE_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 - Daftar semua pull request untuk sebuah proyek. Gunakan alat ini untuk menemukan pull request untuk analisis berdekorasi PR (coverage, issues, quality gate). Mengembalikan kunci/ID pull request yang dapat digunakan dengan alat lain. Untuk analisis berbasis cabang tanpa pull request, gunakan
list_branchessebagai gantinya.projectKey- Kunci proyek (misalnya my_project) - String Wajib (Diabaikan saatSONARQUBE_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 - Daftar semua quality gate di SonarQube saya.
Aturan
- show_rule - Menampilkan informasi terperinci tentang aturan SonarQube.
key- Kunci aturan - String Wajib
Duplikasi
-
search_duplicated_files - Cari file dengan duplikasi kode di proyek SonarQube. Secara default, otomatis mengambil semua file yang terduplikasi di semua halaman (maks 10.000 file). Hanya mengembalikan file dengan duplikasi.
projectKey- Kunci proyek - String Wajib (Diabaikan 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 - 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 'Lihat Kode Sumber' 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 Lihat Kode Sumber pada proyek file tersebut.
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 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 - Daftar semua webhook untuk organisasi atau proyek SonarQube. Memerlukan izin 'Administer' pada proyek yang ditentukan, atau izin 'Administer' global.
projectKey- Kunci proyek opsional untuk mendaftar webhook khusus proyek - String
Augmentasi Konteks
Alat Arsitektur
-
search_by_signature_patterns - Temukan elemen kode (kelas, metode, antarmuka, ...) berdasarkan tanda tangan deklarasinya menggunakan pola regex.
include_code_regex_list- Daftar pola regex untuk dicocokkan dengan tanda tangan - String[] Wajibexclude_code_regex_list- Daftar pola regex untuk dikecualikan dari hasil - String[]include_glob- Pola glob filter file (misalnya,*.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 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 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, dst.) - 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, dst.) - 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 - Mendapatkan hierarki pewarisan lengkap untuk struktur mirip kelas (kelas, antarmuka, enum, record, exception, struct). Penting untuk memahami pohon pewarisan dan refactoring.
fqn- Nama yang sepenuhnya memenuhi syarat dari struktur mirip kelas - String Wajibfields- Daftar bidang yang dipisahkan koma untuk disertakan dalam respons - String
-
get_references - Mendapatkan referensi kode masuk dan keluar langsung untuk kelas atau modul. Mengembalikan hanya referensi langsung (non-transitif).
fqn- Nama yang sepenuhnya memenuhi syarat dari kelas atau modul - String Wajibfields- Daftar bidang yang dipisahkan koma untuk disertakan dalam respons - String
-
get_current_architecture - Mendapatkan grafik arsitektur hierarkis yang difilter berdasarkan prefiks jalur dan kedalaman. Berguna untuk menjelajahi struktur modul dan dependensi tingkat tinggi.
depth- Kedalaman hierarki (0=hanya root, 1=root + anak, dst.) - Integer Wajibpath_prefix- Prefiks jalur opsional untuk memfilter node (misalnya,com.example.service) - Stringecosystem- Ekosistem opsional untuk memfilter (java,cs,py,js,ts) - String
-
get_intended_architecture - Mendapatkan batasan arsitektur yang ditentukan pengguna yang menentukan modul mana yang diizinkan untuk bergantung pada modul lain.
Alat Pedoman
- get_guidelines - Mendapatkan pedoman pengkodean berdasarkan masalah proyek SonarQube, kategori katalog, atau kombinasi keduanya.
mode- Mode pengambilan pedoman:project_based,category_based, ataucombined- String Wajibcategories- Daftar nama kategori (wajib untuk modecategory_baseddancombined) - String[]languages- Daftar bahasa target dalam format kunci repositori SonarQube (wajib saatcategoriesdiberikan) - String[]file_paths- Daftar opsional jalur file untuk memfilter pedoman - String[]
Alat Dependensi Pihak Ketiga
- check_dependency - Memeriksa dependensi pihak ketiga untuk kerentanan keamanan, malware rantai pasokan, dan kepatuhan lisensi sebelum menambahkan atau memperbaruinya.
purl- URL Paket (purl) dengan versi, sesuai spesifikasi purl. Format:pkg:<type>/<namespace>/<name>@<version>(misalnyapkg: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 | 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 diberikan saat tidak menggunakan git, atau saat nama cabang git tidak cocok dengan nama cabang di SonarQube.
Konfigurasi Khusus Proyek (Disarankan)
Pertama, ekspor variabel lingkungan SONARQUBE_TOKEN dengan Personal Access Token (PAT) yang valid untuk proyek Anda.
# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"
Kemudian, pasang workspace proyek untuk memberikan akses langsung server Augmentasi Konteks ke file sumber Anda:
{
"mcpServers": {
"sonarqube-mcp-server": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--pull=always",
"-e", "SONARQUBE_URL",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_ORG",
"-e", "SONARQUBE_PROJECT_KEY",
"-e", "SONARQUBE_TOOLSETS",
"-v", "/ABSOLUTE/PATH/TO/YOUR/PROJECT:/app/mcp-workspace:rw",
"sonarsource/sonarqube-mcp"
],
"env": {
"SONARQUBE_URL": "https://sonarcloud.io",
"SONARQUBE_ORG": "<YourOrganizationKey>",
"SONARQUBE_PROJECT_KEY": "<YourProjectKey>",
"SONARQUBE_TOOLSETS": "cag"
}
}
}
}
Penting: Dalam konfigurasi lingkup proyek, jangan letakkan SONARQUBE_TOKEN di blok env. Ekspor sebagai variabel lingkungan (export SONARQUBE_TOKEN=...). Docker akan meneruskannya ke dalam container melalui -e SONARQUBE_TOKEN.
Kesiapan Agenik
Catatan: Alat Kesiapan Agenik hanya tersedia di SonarQube Cloud dan memerlukan fitur tersebut diaktifkan untuk organisasi Anda.
-
start_agentic_readiness_assessment - Memulai penilaian kesiapan agenik untuk sebuah proyek. Mengembalikan segera dengan status
PENDINGdanassessmentId. Gunakanget_agentic_readiness_assessmentuntuk memeriksa hasil.projectKey- Kunci proyek - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYdidefinisikan)branch- Cabang untuk dinilai. Lewati untuk menggunakan cabang default proyek - String
-
get_agentic_readiness_assessment - Mengambil hasil penilaian. Panggil ulang dengan
assessmentIdyang sama hingga status menjadiCOMPLETED,FAILED, atauINTERRUPTED. Saat selesai, mengembalikan tingkat 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 - Mencantumkan semua penilaian untuk sebuah proyek, yang terbaru terlebih dahulu. Gunakan
get_agentic_readiness_assessmentuntuk hasil tingkat pilar lengkap.projectKey- Kunci proyek untuk mencantumkan penilaian - String Wajib (Diabaikan saatSONARQUBE_PROJECT_KEYdidefinisikan)branch- Filter penilaian berdasarkan nama cabang. Lewati untuk mencantumkan 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 Server MCP SonarQube, berikut adalah beberapa contoh prompt untuk skenario dunia nyata yang umum:
Memperbaiki Quality Gate yang Gagal
My quality gate is failing for my project. Can you help me understand why and fix the most critical issues?
The quality gate on my feature branch is red. What do I need to fix to get it passing before I can merge to main?
Pemeriksaan Pra-Rilis dan Pra-Gabung
I'm about to merge my pull request <#247> for the <web-app> project. Can you check if there are any quality issues I should address first?
We're deploying to production tomorrow. Can you check the quality gate status and alert me to any critical issues in this branch?
Meningkatkan Kualitas Kode
I want to reduce technical debt in my project. What are the top issues I should prioritize?
Our code coverage dropped below 70%. Can you identify which files have the lowest coverage and help me improve it?
Memahami dan Memperbaiki Masalah
I have 15 new code smells in my latest commit. Can you explain what they are and help me fix them?
SonarQube flagged a critical security vulnerability in <AuthController.java>. What's the issue and how do I fix it?
Manajemen Keamanan dan Dependensi
We need to pass a security audit. Can you check all our projects for security vulnerabilities and create a prioritized list of what needs to be fixed?
Are there any known vulnerabilities in our dependencies? Check this project for dependency risks.
Bantuan Peninjauan Kode
I just wrote this authentication function. Can you analyze it for security issues and code quality problems before I commit?
Review the changes in <src/database/migrations> for any potential bugs or security issues.
Pemantauan Kesehatan Proyek
Give me a health report for my project: quality gate status, number of bugs, Security Hotspots, and code coverage.
Compare code quality between our main branch and the develop branch. Are we introducing new issues?
Kolaborasi Tim
What are the most common rule violations across all our projects? We might need to update our coding standards.
Show me all the issues that were marked as false positives in the last month. Are we seeing patterns that suggest our rules need adjustment?
Build
Utamakan gambar container sonarsource/sonarqube-mcp.
Untuk menjalankan server sebagai JAR mandiri tanpa Docker, unduh rilis yang telah dibuat sebelumnya dari repositori biner SonarSource. Setiap versi yang dirilis dipublikasikan di sana sebagai sonarqube-mcp-server-<version>.jar (misalnya, sonarqube-mcp-server-1.19.0.2785.jar).
Jalankan dari JAR
Unduh JAR untuk versi yang Anda inginkan dari repositori biner, lalu konfigurasikan klien MCP Anda untuk menjalankannya dengan Java 21 atau lebih baru:
- Untuk terhubung dengan SonarQube Cloud:
{
"sonarqube": {
"command": "java",
"args": [
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"STORAGE_PATH": "<path_to_your_mcp_storage>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_ORG": "<org>"
}
}
}
- Untuk terhubung dengan SonarQube Server:
{
"sonarqube": {
"command": "java",
"args": [
"-jar",
"<path_to_sonarqube_mcp_server_jar>"
],
"env": {
"STORAGE_PATH": "<path_to_your_mcp_storage>",
"SONARQUBE_TOKEN": "<token>",
"SONARQUBE_URL": "<url>"
}
}
}
Build dari sumber
Server MCP SonarQube memerlukan Java Development Kit (JDK) versi 21 atau lebih baru untuk dibangun.
Jalankan perintah Gradle berikut untuk membersihkan proyek dan membangun aplikasi:
./gradlew clean build -x test
File JAR akan dibuat di build/libs/.
Setelah menambahkan atau memperbarui dependensi, buat ulang file kunci:
./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks
Gunakan konfigurasi Jalankan dari JAR di atas, arahkan <path_to_sonarqube_mcp_server_jar> ke JAR di build/libs/.
Pemecahan Masalah
Log aplikasi ditulis ke file STORAGE_PATH/logs/mcp.log secara default. Untuk menonaktifkan logging file sepenuhnya, atur SONARQUBE_LOG_TO_FILE_DISABLED=true.
Masalah Umum
"Versi server SonarQube tidak didukung"
Server MCP memeriksa versi SonarQube Server yang terhubung selama startup. Jika instance lebih lama dari 2025.1 (SQS) atau 25.1 (SQCB), startup gagal dengan:
SonarQube server version is not supported, minimal version is SQS 2025.1 or SQCB 25.1
Solusi: Tingkatkan SonarQube Server ke rilis yang didukung. Pemeriksaan ini hanya berlaku saat terhubung ke SonarQube Server (SONARQUBE_URL tanpa SONARQUBE_ORG), bukan ke SonarQube Cloud.
"Fitur tidak berfungsi" atau "Alat/fungsionalitas hilang"
Anda mungkin menjalankan gambar Docker yang sudah usang. Docker menyimpan gambar secara lokal, jadi Anda tidak akan menerima pembaruan secara otomatis.
Solusi: Perbarui ke versi terbaru:
docker pull sonarsource/sonarqube-mcp
Setelah menarik gambar terbaru, mulai ulang klien MCP Anda untuk menggunakan versi yang diperbarui.
Secara opsional, tambahkan flag --pull=always ke perintah docker run Anda untuk selalu memeriksa dan menarik versi terbaru:
docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp
"Saya ingin menyematkan ke versi tertentu"
Jelajahi tag yang tersedia di sonarsource/sonarqube-mcp dan rujuk versi yang Anda inginkan:
docker pull sonarsource/sonarqube-mcp:1.19.0.2785
docker run --init -i --rm \
-e SONARQUBE_TOKEN -e SONARQUBE_ORG \
sonarsource/sonarqube-mcp:1.19.0.2785
Dalam konfigurasi klien MCP Anda, gunakan sonarsource/sonarqube-mcp:<version> alih-alih sonarsource/sonarqube-mcp dan hapus --pull=always agar Docker tidak diam-diam meningkatkan gambar.
Data dan telemetri
Server ini mengumpulkan data penggunaan anonim dan mengirimkannya ke SonarSource untuk membantu meningkatkan produk. Tidak ada kode sumber atau alamat IP yang dikumpulkan, dan SonarSource tidak membagikan data tersebut kepada siapa pun. Pengumpulan telemetri dapat dinonaktifkan dengan properti sistem atau variabel lingkungan berikut: TELEMETRY_DISABLED=true. Klik di sini untuk melihat contoh data yang dikumpulkan.
Lisensi
Hak Cipta 2025 SonarSource.
Dilisensikan di bawah Lisensi Sumber-Tersedia SONAR v1.0. Menggunakan Server MCP SonarQube sesuai dengan dokumentasi ini adalah Tujuan Non-Kompetitif dan karenanya diizinkan di bawah SSAL.
Penggunaan SonarQube Anda melalui MCP diatur oleh Ketentuan Layanan SonarQube Cloud atau Syarat dan Ketentuan SonarQube Server, termasuk penggunaan Data Hasil semata-mata untuk tujuan pengembangan perangkat lunak internal Anda.