SonarQube

resmi

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

Apa yang bisa Anda lakukan dengan SonarQube MCP?

  • Menganalisis cuplikan kode — Minta asisten Anda untuk menjalankan analyze_code_snippet pada contoh kode untuk mendapatkan temuan kualitas dan keamanan secara instan.
  • Mengelola isu — Gunakan perangkat issues untuk mencari, memfilter, dan memperbarui isu SonarQube berdasarkan tingkat keparahan, status, atau proyek.
  • Meninjau hotspot keamanan — Kueri perangkat security-hotspots untuk mencantumkan hotspot yang perlu ditinjau dan memahami risikonya.
  • Memeriksa gerbang kualitas — Minta status quality-gates dari sebuah proyek untuk melihat apakah proyek tersebut memenuhi standar kualitasnya.
  • Mengambil metrik proyek — Ambil measures seperti cakupan dan duplikasi, atau jelajahi proyek melalui perangkat projects.

Dokumentasi

SonarQube MCP Server

Build Quality Gate Status

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

Pengaturan cepat

Praktik terbaik keamanan

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

Saat menggunakan perintah CLI:

  • Hindari menuliskan token secara hardcode dalam argumen baris perintah – token tersebut tersimpan di riwayat shell
  • Gunakan variabel lingkungan – atur token dalam variabel lingkungan sebelum menjalankan perintah

Saat menggunakan file konfigurasi:

  • Jangan pernah melakukan commit token ke kontrol versi
  • Gunakan substitusi variabel lingkungan di file konfigurasi jika memungkinkan

🚀 Buat konfigurasi Anda

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

Pengaturan manual

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

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

Antigravity

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

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

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

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

  • Untuk terhubung dengan SonarQube Cloud:

Di Panel Sisi Agen, klik tiga titik (...) -> MCP Store -> Manage MCP Servers -> View raw config, lalu tambahkan berikut ini:

{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_TOKEN>",
        "SONARQUBE_ORG": "<YOUR_ORG>"
      }
    }
  }
}

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

  • Untuk terhubung dengan SonarQube Server:
{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
        "SONARQUBE_URL": "<YOUR_SERVER_URL>"
      }
    }
  }
}
Claude Code
  • Untuk terhubung dengan SonarQube Cloud:
claude mcp add sonarqube \
  --env SONARQUBE_TOKEN=$SONAR_TOKEN \
  --env SONARQUBE_ORG=$SONAR_ORG \
  -- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp

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

  • Untuk terhubung dengan SonarQube Server:
claude mcp add sonarqube \
  --env SONARQUBE_TOKEN=$SONAR_USER_TOKEN \
  --env SONARQUBE_URL=$SONAR_URL \
  -- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_URL sonarsource/sonarqube-mcp
Codex CLI

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

  • Untuk terhubung dengan SonarQube Cloud:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_USER_TOKEN>", "SONARQUBE_ORG" = "<YOUR_ORG>" }

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

  • Untuk terhubung dengan SonarQube Server:
[mcp_servers.sonarqube]
command = "docker"
args = ["run", "--init", "--pull=always", "--rm", "-i", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"]
env = { "SONARQUBE_TOKEN" = "<YOUR_TOKEN>", "SONARQUBE_URL" = "<YOUR_SERVER_URL>" }
Cursor
  • Untuk terhubung dengan SonarQube Cloud:

Install for SonarQube Cloud

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

  • Untuk terhubung dengan SonarQube Server:

Install for SonarQube Server

Gemini CLI

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

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

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

Anda perlu mengatur variabel lingkungan yang diperlukan sebelum memulai Gemini:

Variabel Lingkungan yang Diperlukan:

  • Untuk SonarQube Cloud:

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

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

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

GitHub Copilot CLI

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

/mcp add

Anda harus memberikan berbagai informasi tentang server MCP, Anda dapat menggunakan tab untuk berpindah antar kolom.

  • Untuk terhubung dengan SonarQube Cloud:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_ORG, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_TOKEN>,SONARQUBE_ORG=<YOUR_ORG>
Tools: *

Untuk SonarQube Cloud US, tambahkan -e, SONARQUBE_URL ke Arguments dan SONARQUBE_URL=https://sonarqube.us ke Environment Variables.

  • Untuk terhubung dengan SonarQube Server:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_URL, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_USER_TOKEN>,SONARQUBE_URL=<YOUR_SERVER_URL>
Tools: *

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

GitHub Copilot coding agent

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

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

Di repositori GitHub Anda, navigasikan ke Settings -> Copilot -> Coding agent, dan tambahkan konfigurasi berikut di bagian konfigurasi MCP:

  • Untuk terhubung dengan SonarQube Cloud:
{
  "mcpServers": {
    "sonarqube": {
      "type": "local",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "--rm",
        "-i",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_TOKEN",
        "SONARQUBE_ORG": "COPILOT_MCP_SONARQUBE_ORG"
      },
      "tools": ["*"]
    }
  }
}

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

  • Untuk terhubung dengan SonarQube Server:
{
  "mcpServers": {
    "sonarqube": {
      "type": "local",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "--rm",
        "-i",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_URL",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_USER_TOKEN",
        "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL"
      },
      "tools": ["*"]
    }
  }
}
Kiro

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

  • Untuk terhubung dengan SonarQube Cloud:
{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e", 
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_TOKEN>",
        "SONARQUBE_ORG": "<YOUR_ORG>"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

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

  • Untuk terhubung dengan SonarQube Server:
{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e", 
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_URL",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
        "SONARQUBE_URL": "<YOUR_SERVER_URL>"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
VS Code

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

Install for SonarQube Cloud

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

Install for SonarQube Server

Windsurf

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

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

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

Zed

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

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

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

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

docker_path adalah jalur ke executable docker. Contoh:

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

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

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

Instalasi manual

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

  • Untuk terhubung dengan SonarQube Cloud:
{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_ORG",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_ORG": "<org>"
    }
  }
}
  • Untuk terhubung dengan SonarQube Server:
{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_URL",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

Integrasi dengan SonarQube for IDE

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

Konfigurasi

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

Misalnya, dengan SonarQube Cloud:

{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_ORG",
      "-e",
      "SONARQUBE_IDE_PORT",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_ORG": "<org>",
      "SONARQUBE_IDE_PORT": "<64120-64130>"
    }
  }
}

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

Konfigurasi

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

Dasar

Anda harus menambahkan variabel berikut saat menjalankan MCP Server:

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

Workspace Mount (Mengurangi Pembengkakan Konteks)

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

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

Ketika mount aktif:

  • run_advanced_code_analysis menjadi tersedia jika organisasi Anda memiliki hak untuk menggunakannya
  • analyze_code_snippet: filePath diperlukan dan fileContent tidak digunakan — server menyelesaikan file dengan cara yang sama

Pengaktifan Toolset Selektif

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

Variabel lingkunganDeskripsi
SONARQUBE_TOOLSETSDaftar toolset yang dipisahkan koma untuk diaktifkan. Jika diatur, hanya toolset ini yang akan tersedia. Jika tidak diatur, toolset penting default diaktifkan (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Catatan: Toolset projects selalu diaktifkan karena diperlukan untuk menemukan kunci proyek untuk operasi lainnya. Tool konteks Vortex (nama usang: Context Augmentation/CAG) dan tool analisis Vortex (nama usang: Advanced Analysis/A3S) hanya tersedia dalam mode stdio dan berbagi satu hak organisasi gabungan — sebuah organisasi harus memiliki hak untuk keduanya agar dapat menggunakan salah satunya. Mengaksesnya melalui kunci toolset cag atau analysis sudah usang dan digantikan oleh kunci toolset terpadu vortex; kunci lama masih berfungsi untuk kompatibilitas mundur, tetapi peringatan saat startup dan catatan penghentian dalam instruksi server akan dikeluarkan setiap kali kunci tersebut digunakan tanpa vortex. Dalam mode Streamable HTTP, klien dapat mengirim header HTTP SONARQUBE_TOOLSETS untuk mempersempit ini lebih lanjut per permintaan, tetapi tidak dapat mengaktifkan toolset di luar yang digunakan saat server diluncurkan (lihat Streamable HTTP transport di bawah).
SONARQUBE_READ_ONLYJika diatur ke true, mengaktifkan mode hanya-baca yang menonaktifkan semua operasi tulis (misalnya mengubah status issue). Filter ini bersifat kumulatif dengan SONARQUBE_TOOLSETS jika keduanya diatur. Default: false. Dalam mode Streamable HTTP, klien dapat mengirim header HTTP SONARQUBE_READ_ONLY untuk membatasi permintaan individual menjadi hanya-baca, tetapi tidak dapat mencabut pembatasan hanya-baca di tingkat server (lihat Streamable HTTP transport di bawah).
Toolset yang Tersedia
ToolsetKunciDeskripsi
AnalisisanalysisTool analisis kode (analisis lokal melalui analyze_code_snippet, usang dan digantikan oleh analyze_file_list/analisis Vortex)
IDEideTool jembatan SonarQube for IDE (analisis file, pengalihan analisis otomatis) — saat ini juga termasuk dalam analysis
IssuesissuesCari dan kelola issue SonarQube
Security Hotspotssecurity-hotspotsCari dan tinjau Security Hotspots
ProyekprojectsJelajahi dan cari proyek SonarQube
Quality Gatesquality-gatesAkses quality gates dan statusnya
RulesrulesJelajahi dan cari aturan SonarQube
SumbersourcesAkses kode sumber dan informasi SCM
DuplikasiduplicationsTemukan duplikasi kode di seluruh proyek
MeasuresmeasuresAmbil metrik dan pengukuran (termasuk tool measures dan metrics)
BahasalanguagesDaftarkan bahasa pemrograman yang didukung
PortofolioportfoliosKelola portofolio dan enterprise (Cloud dan Server)
SistemsystemTool administrasi sistem (khusus Server)
WebhookswebhooksKelola webhooks
Risiko Ketergantungandependency-risksAnalisis risiko ketergantungan dan masalah keamanan (SCA)
CakupancoverageTool analisis dan peningkatan cakupan pengujian
Konteks VortexcagTool konteks Vortex — khusus stdio. Usang dan digantikan oleh vortex (nama lama: Context Augmentation/CAG)
VortexvortexToolset terpadu yang direkomendasikan dan menampilkan tool konteks Vortex serta analisis Vortex dalam satu nama (khusus stdio, memerlukan hak organisasi gabungan)
Kesiapan Agenicagentic-readinessTool Penilaian Kesiapan Agenik (SonarQube Cloud, memerlukan hak organisasi)

Contoh

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

docker run --init --pull=always -i --rm \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_ORG="<org>" \
  -e SONARQUBE_TOOLSETS="analysis,issues,quality-gates" \
  sonarsource/sonarqube-mcp

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

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

docker run --init --pull=always -i --rm \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_ORG="<org>" \
  -e SONARQUBE_READ_ONLY="true" \
  sonarsource/sonarqube-mcp

SonarQube Cloud

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

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

Contoh:

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

SonarQube Server

Variabel lingkunganDeskripsiDiperlukan
SONARQUBE_TOKENToken USER SonarQube Server AndaYa
SONARQUBE_URLURL SonarQube Server AndaYa

⚠️ Koneksi ke SonarQube Server memerlukan token bertipe USER dan tidak akan berfungsi dengan baik jika token proyek atau token global digunakan. 💡 Tips Konfigurasi (mode stdio): Kehadiran SONARQUBE_ORG menentukan apakah Anda terhubung ke SonarQube Cloud atau Server. Jika SONARQUBE_ORG disetel, SonarQube Cloud yang digunakan; jika tidak, SonarQube Server yang digunakan.

Mode Transport

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

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

Catatan: Streamable HTTP adalah transport jaringan MCP saat ini. Transport HTTP khusus SSE yang lebih lama dari versi MCP sebelumnya sudah usang (deprecated) dan tidak didukung.

1. Stdio (Default - Direkomendasikan untuk Pengembangan Lokal)

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

Contoh - Docker dengan SonarQube Cloud:

{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_ORG", "sonarsource/sonarqube-mcp"],
      "env": {
        "SONARQUBE_TOKEN": "<your-token>",
        "SONARQUBE_ORG": "<your-org>"
      }
    }
  }
}

2. HTTP (Streamable HTTP)

Transport Streamable HTTP tanpa enkripsi. Gunakan HTTPS untuk penerapan multi-pengguna.

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

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

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

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

Usang (Deprecated): Header permintaan SONARQUBE_TOKEN masih diterima untuk kompatibilitas mundur tetapi akan dihapus di versi mendatang. Bermigrasilah ke Authorization: Bearer <token>.

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

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

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

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

Konfigurasi Sertifikat SSL (Opsional):

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

Contoh - Docker dengan SonarQube Cloud:

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

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

docker run --init --pull=always -p 127.0.0.1:8443:8443 \
  -v $(pwd)/keystore.p12:/etc/ssl/mcp/keystore.p12:ro \
  -e SONARQUBE_TRANSPORT=https \
  -e SONARQUBE_HTTP_HOST=0.0.0.0 \
  -e SONARQUBE_HTTP_PORT=8443 \
  -e SONARQUBE_TOKEN="<init-token>" \
  -e SONARQUBE_ORG="<your-org>" \
  sonarsource/sonarqube-mcp

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

docker run --init --pull=always -p 8443:8443 \
  -v $(pwd)/keystore.p12:/etc/ssl/mcp/keystore.p12:ro \
  -e SONARQUBE_TRANSPORT=https \
  -e SONARQUBE_HTTP_HOST=0.0.0.0 \
  -e SONARQUBE_HTTP_PORT=8443 \
  -e SONARQUBE_TOKEN="<init-token>" \
  -e SONARQUBE_ORG="<your-org>" \
  sonarsource/sonarqube-mcp

Konfigurasi Klien (SonarQube Cloud):

{
  "mcpServers": {
    "sonarqube-https": {
      "url": "https://your-server:8443/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>",
        "SONARQUBE_ORG": "<your-org>",
        "SONARQUBE_TOOLSETS": "issues,quality-gates",
        "SONARQUBE_READ_ONLY": "true"
      }
    }
  }
}

Konfigurasi Klien (SonarQube Server):

{
  "mcpServers": {
    "sonarqube-https": {
      "url": "https://your-server:8443/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>",
        "SONARQUBE_TOOLSETS": "issues,quality-gates",
        "SONARQUBE_READ_ONLY": "true"
      }
    }
  }
}

Catatan: SONARQUBE_TOOLSETS dan SONARQUBE_READ_ONLY adalah header per-permintaan opsional yang mempersempit kumpulan alat tingkat server untuk permintaan tertentu tersebut. Keduanya hanya dapat mengurangi cakupan — tidak dapat mengaktifkan kumpulan alat atau melonggarkan batasan di luar yang ditentukan saat server diluncurkan.

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

Titik Akhir Layanan

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

Titik akhirMetodeDeskripsiContoh respons
/healthGETProbe liveness. Mengembalikan 200 OK dengan badan kosong setelah server menerima permintaan.(badan kosong)
/infoGETMengembalikan versi server MCP sebagai JSON. Berguna untuk memverifikasi versi server yang diterapkan.{"version":"1.16.0"}

Titik akhir ini tidak tersedia saat berjalan dengan transport Stdio.

Sertifikat Kustom

Jika SonarQube Server Anda menggunakan sertifikat yang ditandatangani sendiri (self-signed) atau sertifikat dari Otoritas Sertifikat (CA) privat, Anda dapat menambahkan sertifikat kustom ke kontainer yang akan diinstal secara otomatis.

Configuration

Menggunakan Volume Mount

Pasang direktori yang berisi sertifikat Anda saat menjalankan kontainer:

docker run --init --pull=always -i --rm \
  -v /path/to/your/certificates/:/usr/local/share/ca-certificates/:ro \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_URL="<url>" \
  sonarsource/sonarqube-mcp

Format Sertifikat yang Didukung

Kontainer mendukung format sertifikat berikut:

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

Konfigurasi MCP dengan Sertifikat

Saat menggunakan sertifikat kustom, Anda dapat memodifikasi konfigurasi MCP untuk memasang sertifikat:

{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-v",
      "/path/to/your/certificates/:/usr/local/share/ca-certificates/:ro",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_URL",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

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

Proxy

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

Configuration

Proxy HTTP/HTTPS

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

Properti Proxy Umum:

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

Autentikasi Proxy HTTP/HTTPS:

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

Proxy SOCKS5

Proxy SOCKS5 didukung.

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

Sertifikat Klien (Mutual TLS)

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

Konfigurasi

Menggunakan keystore PKCS12

Mount file .p12 atau .pfx Anda ke dalam container dan atur variabel lingkungan JAVA_OPTS dengan properti keystore:

docker run --init --pull=always -i --rm \
  -v /path/to/client.p12:/etc/ssl/mcp/client.p12:ro \
  -e JAVA_OPTS="-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>" \
  -e SONARQUBE_TOKEN="<token>" \
  -e SONARQUBE_URL="<url>" \
  sonarsource/sonarqube-mcp

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

ls -la /path/to/client.p12       # look for -rw-r--r-- (644) or wider
chmod 644 /path/to/client.p12    # grant read access to the container user

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

Konfigurasi MCP dengan Sertifikat Klien

{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run", "--init", "--pull=always", "-i", "--rm",
      "-v", "/path/to/client.p12:/etc/ssl/mcp/client.p12:ro",
      "-e", "JAVA_OPTS",
      "-e", "SONARQUBE_TOKEN",
      "-e", "SONARQUBE_URL",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "JAVA_OPTS": "-Djavax.net.ssl.keyStore=/etc/ssl/mcp/client.p12 -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=<passphrase>",
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

Menggunakan keystore PKCS12 dengan JAR mandiri

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

java \
  -Djavax.net.ssl.keyStore=/path/to/client.p12 \
  -Djavax.net.ssl.keyStoreType=PKCS12 \
  -Djavax.net.ssl.keyStorePassword=<passphrase> \
  -jar <path_to_sonarqube_mcp_server_jar>

Hilangkan -Djavax.net.ssl.keyStorePassword jika keystore tidak memiliki passphrase.

Konfigurasi MCP dengan Sertifikat Klien (JAR)

{
  "sonarqube": {
    "command": "java",
    "args": [
      "-Djavax.net.ssl.keyStore=/path/to/client.p12",
      "-Djavax.net.ssl.keyStoreType=PKCS12",
      "-Djavax.net.ssl.keyStorePassword=<passphrase>",
      "-jar",
      "<path_to_sonarqube_mcp_server_jar>"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

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

Alat

Analisis

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

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

    Penggunaan:

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

    Parameter:

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

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

Saat integrasi dengan SonarQube for IDE diaktifkan: (kedua alat ini diberi tag di bawah toolset analysis dan ide)

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

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

    • enabled - Aktifkan atau nonaktifkan analisis otomatis - Boolean Wajib

Saat analisis Vortex diaktifkan untuk organisasi SonarQube Cloud Anda:

Memerlukan workspace yang di-mount di /app/mcp-workspace

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

Cakupan

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

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

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

Risiko Dependensi

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

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

Perusahaan

Catatan: Perusahaan hanya tersedia saat terhubung ke SonarQube Cloud.

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

Masalah

  • change_sonar_issue_status - Ubah status masalah SonarQube menjadi "accept", "falsepositive", atau "reopen" sebuah masalah.

    • key - Kunci masalah - String Wajib
    • status - Status masalah baru - Enum Wajib {"accept", "falsepositive", "reopen"}
  • search_sonar_issues_in_projects - Cari masalah SonarQube di proyek organisasi saya.

    • projectKeys - Daftar opsional kunci proyek SonarQube - String[]
    • branch - Nama cabang opsional untuk analisis berbasis cabang. Gunakan list_branches untuk menemukan nama yang valid - String
    • pullRequest - Kunci/ID pull request opsional. Gunakan list_pull_requests untuk menemukan kunci yang valid - String
    • severities - Daftar opsional tingkat keparahan untuk memfilter. Nilai yang mungkin: INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]
    • impactSoftwareQualities - Daftar opsional kualitas perangkat lunak untuk memfilter. Nilai yang mungkin: MAINTAINABILITY, RELIABILITY, SECURITY - String[]
    • issueStatuses - Daftar opsional status masalah untuk memfilter. Nilai yang mungkin: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]
    • issueKey - Kunci masalah opsional untuk mengambil masalah tertentu - String
    • pageIndex - Indeks halaman opsional berbasis 1 (default: 1) - Integer
    • pageSize - Ukuran halaman opsional. Harus lebih besar dari 0 dan kurang dari atau sama dengan 500 (default: 100) - Integer

Security Hotspots

  • search_security_hotspots - Cari Security Hotspots dalam proyek SonarQube.

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

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

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

Bahasa

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

Pengukuran

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

Metrik

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

Portofolio

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

    Untuk SonarQube Server:

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

    Untuk SonarQube Cloud:

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

Proyek

  • search_my_sonarqube_projects - Temukan proyek SonarQube. Responsnya dipaginasi.

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

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

    • projectKey - Kunci proyek (mis. my_project) - String Wajib (Diabaikan ketika SONARQUBE_PROJECT_KEY ditentukan)

Quality Gates

  • get_project_quality_gate_status - Dapatkan Status Quality Gate untuk proyek SonarQube.

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

Aturan

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

Duplikasi

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

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

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

Sumber

  • get_raw_source - Dapatkan kode sumber sebagai teks mentah dari SonarQube. Memerlukan izin 'See Source Code' pada file.

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

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

Sistem

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

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

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

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

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

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

Webhooks

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

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

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

Augmentasi Konteks

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

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

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

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

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

    • fqn - Nama lengkap elemen - String Wajib
    • fields - Daftar kolom yang dipisahkan koma untuk disertakan dalam respons - String
  • get_type_hierarchy - Dapatkan hierarki pewarisan lengkap untuk struktur mirip kelas (class, interface, enum, record, exception, struct). Penting untuk memahami pohon pewarisan dan refactoring.

    • fqn - Nama lengkap struktur mirip kelas - String Wajib
    • fields - Daftar kolom yang dipisahkan koma untuk disertakan dalam respons - String
  • get_references - Dapatkan referensi kode masuk dan keluar langsung untuk kelas atau modul. Hanya mengembalikan referensi langsung (non-transitif).

    • fqn - Nama lengkap kelas atau modul - String Wajib
    • fields - Daftar kolom yang dipisahkan koma untuk disertakan dalam respons - String
  • get_current_architecture - Dapatkan grafik arsitektur hierarkis yang difilter berdasarkan prefiks jalur dan kedalaman. Berguna untuk menjelajahi struktur modul dan dependensi tingkat tinggi.

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

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

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

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

Kemudian, pasang ruang kerja proyek untuk memberikan akses langsung ke file sumber Anda kepada server Context Augmentation:

{
  "mcpServers": {
    "sonarqube-mcp-server": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", "--pull=always",
        "-e", "SONARQUBE_URL",
        "-e", "SONARQUBE_TOKEN",
        "-e", "SONARQUBE_ORG",
        "-e", "SONARQUBE_PROJECT_KEY",
        "-e", "SONARQUBE_TOOLSETS",
        "-v", "/ABSOLUTE/PATH/TO/YOUR/PROJECT:/app/mcp-workspace:rw",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_URL": "https://sonarcloud.io",
        "SONARQUBE_ORG": "<YourOrganizationKey>",
        "SONARQUBE_PROJECT_KEY": "<YourProjectKey>",
        "SONARQUBE_TOOLSETS": "cag"
      }
    }
  }
}

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

Kesiapan Agenik

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

  • start_agentic_readiness_assessment - Mulai penilaian kesiapan agenik untuk sebuah proyek. Mengembalikan status PENDING dan assessmentId secara langsung. Gunakan get_agentic_readiness_assessment untuk memeriksa hasil.

    • projectKey - Kunci proyek - String Wajib (Diabaikan saat SONARQUBE_PROJECT_KEY ditentukan)
    • branch - Cabang yang akan dinilai. Kosongkan untuk menggunakan cabang default proyek - String
  • get_agentic_readiness_assessment - Ambil hasil penilaian. Panggil ulang dengan assessmentId yang sama hingga statusnya COMPLETED, FAILED, atau INTERRUPTED. Setelah selesai, mengembalikan tingkat keseluruhan dan rincian per pilar dengan tindakan dan bukti yang direkomendasikan.

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

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

Contoh Prompt

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

Memperbaiki Quality Gate yang Gagal
My quality gate is failing for my project. Can you help me understand why and fix the most critical issues?
The quality gate on my feature branch is red. What do I need to fix to get it passing before I can merge to main?
Pemeriksaan Pra-Rilis dan Pra-Gabung
I'm about to merge my pull request <#247> for the <web-app> project. Can you check if there are any quality issues I should address first?
We're deploying to production tomorrow. Can you check the quality gate status and alert me to any critical issues in this branch?
Meningkatkan Kualitas Kode
I want to reduce technical debt in my project. What are the top issues I should prioritize?
Our code coverage dropped below 70%. Can you identify which files have the lowest coverage and help me improve it?
Memahami dan Memperbaiki Isu
I have 15 new code smells in my latest commit. Can you explain what they are and help me fix them?
SonarQube flagged a critical security vulnerability in <AuthController.java>. What's the issue and how do I fix it?
Keamanan dan Manajemen Dependensi
We need to pass a security audit. Can you check all our projects for security vulnerabilities and create a prioritized list of what needs to be fixed?
Are there any known vulnerabilities in our dependencies? Check this project for dependency risks.
Bantuan Peninjauan Kode
I just wrote this authentication function. Can you analyze it for security issues and code quality problems before I commit?
Review the changes in <src/database/migrations> for any potential bugs or security issues.
Pemantauan Kesehatan Proyek
Give me a health report for my project: quality gate status, number of bugs, Security Hotspots, and code coverage.
Compare code quality between our main branch and the develop branch. Are we introducing new issues?
Kolaborasi Tim
What are the most common rule violations across all our projects? We might need to update our coding standards.
Show me all the issues that were marked as false positives in the last month. Are we seeing patterns that suggest our rules need adjustment?

Membangun

Utamakan image kontainer sonarsource/sonarqube-mcp.

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

Jalankan dari JAR

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

  • Untuk terhubung dengan SonarQube Cloud:
{
  "sonarqube": {
    "command": "java",
    "args": [
      "-jar",
      "<path_to_sonarqube_mcp_server_jar>"
    ],
    "env": {
      "STORAGE_PATH": "<path_to_your_mcp_storage>",
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_ORG": "<org>"
    }
  }
}
  • Untuk terhubung dengan SonarQube Server:
{
  "sonarqube": {
    "command": "java",
    "args": [
      "-jar",
      "<path_to_sonarqube_mcp_server_jar>"
    ],
    "env": {
      "STORAGE_PATH": "<path_to_your_mcp_storage>",
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}
Membangun dari sumber

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

Jalankan perintah Gradle berikut untuk membersihkan proyek dan membangun aplikasi:

./gradlew clean build -x test

File JAR akan dibuat di build/libs/.

Setelah menambahkan atau memperbarui dependensi, buat ulang file kunci:

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

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

Pemecahan Masalah

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

Masalah Umum

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

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

Solusi: Perbarui ke versi terbaru:

docker pull sonarsource/sonarqube-mcp

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

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

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

"Saya ingin mengunci ke versi tertentu"

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

docker pull sonarsource/sonarqube-mcp:1.19.0.2785

docker run --init -i --rm \
  -e SONARQUBE_TOKEN -e SONARQUBE_ORG \
  sonarsource/sonarqube-mcp:1.19.0.2785

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

Data dan telemetri

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

Lisensi

Hak Cipta 2025 SonarSource.

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

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