SonarQube
ทางการให้การผสานรวมกับ SonarQube Server หรือ Cloud อย่างราบรื่น และช่วยให้สามารถวิเคราะห์โค้ดชิ้นส่วนต่างๆ ได้โดยตรงภายในบริบทของเอเจนต์
คุณทำอะไรได้บ้างด้วย SonarQube MCP?
- วิเคราะห์โค้ดสnippets — ให้ผู้ช่วยของคุณรันการวิเคราะห์โค้ดในเครื่องสำหรับ snippet หรือไฟล์ผ่าน
analyze_code_snippetโดยสามารถ mount workspace ได้ตามต้องการเพื่อหลีกเลี่ยง context bloat - ค้นหาและจัดการ issues — ให้ผู้ช่วยค้นหา ตรวจสอบ และอัปเดต issues ใน SonarQube รวมถึงการเปลี่ยนสถานะเมื่อไม่ได้อยู่ในโหมดอ่านอย่างเดียว
- ตรวจสอบ quality gates และ measures — ขอสถานะ quality gate, metrics ของโปรเจกต์, ความครอบคลุม และความเสี่ยงด้าน dependencies ในโปรเจกต์ SonarQube ของคุณ
- ตรวจสอบ security hotspots — ให้ผู้ช่วยค้นหาและอธิบาย security hotspots ที่ถูกflagged ใน codebase ของคุณ
- เรียกดูโปรเจกต์และ rules — ใช้ผู้ช่วยเพื่อสำรวจโปรเจกต์ ดูรายการภาษาที่รองรับ และค้นหา coding rules โดยตรงจาก SonarQube
เอกสาร
เซิร์ฟเวอร์ SonarQube MCP
เซิร์ฟเวอร์ SonarQube MCP เป็นเซิร์ฟเวอร์ Model Context Protocol (MCP) ที่ช่วยให้สามารถเชื่อมต่อกับ SonarQube Server หรือ Cloud ได้อย่างราบรื่นสำหรับคุณภาพโค้ดและความปลอดภัย นอกจากนี้ยังรองรับการวิเคราะห์โค้ดบางส่วนโดยตรงภายในบริบทของเอเจนต์
การตั้งค่าอย่างรวดเร็ว
แนวทางปฏิบัติด้านความปลอดภัย
🔒 สำคัญ: โทเค็น SonarQube ของคุณเป็นข้อมูลประจำตัวที่ละเอียดอ่อน ปฏิบัติตามแนวทางด้านความปลอดภัยเหล่านี้:
เมื่อใช้คำสั่ง CLI:
- หลีกเลี่ยงการเขียนโทเค็นแบบฮาร์ดโค้ด ในอาร์กิวเมนต์ของคำสั่ง – โทเค็นเหล่านั้นจะถูกบันทึกไว้ในประวัติเชลล์
- ใช้ตัวแปรสภาพแวดล้อม – ตั้งค่าโทเค็นในตัวแปรสภาพแวดล้อมก่อนรันคำสั่ง
เมื่อใช้ไฟล์คอนฟิกูเรชัน:
- ห้ามคอมมิตโทเค็น ลงในระบบควบคุมเวอร์ชัน
- ใช้การแทนที่ตัวแปรสภาพแวดล้อม ในไฟล์คอนฟิกูเรชันเมื่อเป็นไปได้
🚀 สร้างคอนฟิกูเรชันของคุณ
วิธีที่เร็วที่สุดในการเริ่มต้นคือ ตัวสร้างคอนฟิกูเรชันเซิร์ฟเวอร์ SonarQube MCP – เครื่องมือแบบโต้ตอบที่สร้างคอนฟิกูเรชันที่พร้อมใช้งานสำหรับไคลเอนต์เอเจนต์ AI ที่คุณต้องการ
การตั้งค่าด้วยตนเอง
หากคุณต้องการกำหนดค่าด้วยตัวเอง วิธีที่ง่ายที่สุดคือใช้อิมเมจคอนเทนเนอร์ของเราที่ sonarsource/sonarqube-mcp ใช้ sonarsource/sonarqube-mcp สำหรับการอัปเดตอัตโนมัติ (ด้วย --pull=always) หรือกำหนดเวอร์ชันแท็ก (เช่น sonarsource/sonarqube-mcp:1.19.0.2785) สำหรับการปรับใช้ที่ทำซ้ำได้ อ่านด้านล่างหากคุณต้องการสร้างในเครื่อง
หมายเหตุ: แม้ว่าตัวอย่างด้านล่างจะใช้
dockerแต่รันไทม์คอนเทนเนอร์ที่เข้ากันได้กับ OCI ใดๆ ก็ใช้งานได้ (เช่น Podman, nerdctl) เพียงแทนที่dockerด้วยเครื่องมือที่คุณต้องการ
Antigravity
เซิร์ฟเวอร์ SonarQube MCP พร้อมใช้งานในร้านค้า MCP ของ Antigravity ทำตามขั้นตอนเหล่านี้:
- เปิด แผงด้านข้างเอเจนต์
- คลิกจุดสามจุด (...) ที่มุมขวาบนและเลือก MCP Servers
- ค้นหา
SonarQubeและเลือก ติดตั้ง - ระบุโทเค็นผู้ใช้ SonarQube ที่จำเป็น คุณยังสามารถระบุคีย์องค์กรของคุณสำหรับ SonarQube Cloud หรือ URL ของ SonarQube หากเชื่อมต่อกับ SonarQube Server
สำหรับ SonarQube Cloud US ให้ตั้งค่า URL เป็น https://sonarqube.us
หรือคุณสามารถกำหนดค่าเซิร์ฟเวอร์ด้วยตนเองผ่าน mcp_config.json:
- เพื่อเชื่อมต่อกับ SonarQube Cloud:
ในแผงด้านข้างเอเจนต์ คลิกจุดสามจุด (...) -> MCP Store -> จัดการ MCP Servers -> ดูคอนฟิกดิบ และเพิ่มต่อไปนี้:
{
"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>"
}
}
}
}
สำหรับ SonarQube Cloud US ให้เพิ่ม "SONARQUBE_URL": "https://sonarqube.us" ด้วยตนเองในส่วน env และ "-e", "SONARQUBE_URL" ในอาร์เรย์ args
- เพื่อเชื่อมต่อกับ 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
- เพื่อเชื่อมต่อกับ 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
สำหรับ SonarQube Cloud US ให้เพิ่ม --env SONARQUBE_URL=https://sonarqube.us ในคำสั่ง
- เพื่อเชื่อมต่อกับ 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
แก้ไขไฟล์คอนฟิกูเรชันด้วยตนเองที่ ~/.codex/config.toml และเพิ่มคอนฟิกูเรชันต่อไปนี้:
- เพื่อเชื่อมต่อกับ 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>" }
สำหรับ SonarQube Cloud US ให้เพิ่ม "SONARQUBE_URL" = "https://sonarqube.us" ในส่วน env และ "-e", "SONARQUBE_URL" ในอาร์เรย์ args
- เพื่อเชื่อมต่อกับ 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
- เพื่อเชื่อมต่อกับ SonarQube Cloud:
สำหรับ SonarQube Cloud US ให้เพิ่ม "SONARQUBE_URL": "https://sonarqube.us" ด้วยตนเองในส่วน env ในคอนฟิกูเรชัน MCP ของคุณหลังการติดตั้ง
- เพื่อเชื่อมต่อกับ SonarQube Server:
Gemini CLI
หมายเหตุ: ส่วนขยาย Gemini CLI ได้ย้ายไปยังพื้นที่เก็บ sonarqube-agent-plugins แล้ว โปรดติดตั้งจากที่นั่นต่อไป
คุณสามารถติดตั้งส่วนขยายเซิร์ฟเวอร์ MCP ของเราได้โดยใช้คำสั่งต่อไปนี้:
gemini extensions install https://github.com/SonarSource/sonarqube-agent-plugins
คุณจะต้องตั้งค่าตัวแปรสภาพแวดล้อมที่จำเป็นก่อนเริ่ม Gemini:
ตัวแปรสภาพแวดล้อมที่จำเป็น:
-
สำหรับ SonarQube Cloud:
SONARQUBE_TOKEN- โทเค็น SonarQube Cloud ของคุณSONARQUBE_ORG- คีย์องค์กรของคุณSONARQUBE_URL- (ไม่บังคับ) ตั้งค่าเป็นhttps://sonarqube.usสำหรับ SonarQube Cloud US
-
สำหรับ SonarQube Server:
SONARQUBE_TOKEN- โทเค็นผู้ใช้ SonarQube Server ของคุณSONARQUBE_URL- URL ของ SonarQube Server ของคุณ
เมื่อติดตั้งแล้ว ส่วนขยายจะถูกติดตั้งภายใต้ <home>/.gemini/extensions/sonarqube/gemini-extension.json
GitHub Copilot CLI
หลังจากเริ่ม Copilot CLI ให้รันคำสั่งต่อไปนี้เพื่อเพิ่มเซิร์ฟเวอร์ SonarQube MCP:
/mcp add
คุณจะต้องระบุข้อมูลต่างๆ เกี่ยวกับเซิร์ฟเวอร์ MCP คุณสามารถใช้แท็บเพื่อนำทางระหว่างฟิลด์ต่างๆ ได้
- เพื่อเชื่อมต่อกับ 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: *
สำหรับ SonarQube Cloud US ให้เพิ่ม -e, SONARQUBE_URL ในอาร์กิวเมนต์และ SONARQUBE_URL=https://sonarqube.us ในตัวแปรสภาพแวดล้อม
- เพื่อเชื่อมต่อกับ 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: *
ไฟล์คอนฟิกูเรชันอยู่ที่ ~/.copilot/mcp-config.json
เอเจนต์การเขียนโค้ด GitHub Copilot
เอเจนต์การเขียนโค้ด GitHub Copilot สามารถใช้เซิร์ฟเวอร์ SonarQube MCP ได้โดยตรงใน CI/CD ของคุณ
หากต้องการเพิ่มความลับในสภาพแวดล้อม Copilot ของคุณ ให้ทำตาม เอกสารประกอบ ของ Copilot เฉพาะความลับที่มีชื่อนำหน้าด้วย COPILOT_MCP_ เท่านั้นที่จะพร้อมใช้งานในคอนฟิกูเรชัน MCP ของคุณ
ในพื้นที่เก็บ GitHub ของคุณ ไปที่ การตั้งค่า -> Copilot -> เอเจนต์การเขียนโค้ด และเพิ่มคอนฟิกูเรชันต่อไปนี้ในส่วนคอนฟิกูเรชัน MCP:
- เพื่อเชื่อมต่อกับ 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": ["*"]
}
}
}
สำหรับ SonarQube Cloud US ให้เพิ่ม "-e", "SONARQUBE_URL" ในอาร์เรย์ args และ "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" ในส่วน env จากนั้นตั้งค่าความลับ COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us
- เพื่อเชื่อมต่อกับ 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
สร้างไฟล์ .kiro/settings/mcp.json ในไดเรกทอรีพื้นที่ทำงานของคุณ (หรือแก้ไขหากมีอยู่แล้ว) เพิ่มคอนฟิกูเรชันต่อไปนี้:
- เพื่อเชื่อมต่อกับ 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": []
}
}
}
สำหรับ SonarQube Cloud US ให้เพิ่ม "-e", "SONARQUBE_URL" ในอาร์เรย์ args และ "SONARQUBE_URL": "https://sonarqube.us" ในส่วน env
- เพื่อเชื่อมต่อกับ 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
คุณสามารถใช้ปุ่มต่อไปนี้เพื่อทำให้กระบวนการติดตั้งภายใน VS Code ง่ายขึ้น
สำหรับ SonarQube Cloud US ให้เพิ่ม "SONARQUBE_URL": "https://sonarqube.us" ด้วยตนเองในส่วน env ในคอนฟิกูเรชัน MCP ของคุณหลังการติดตั้ง
Windsurf
เซิร์ฟเวอร์ SonarQube MCP พร้อมใช้งานเป็นปลั๊กอิน Windsurf ทำตามขั้นตอนเหล่านี้:
- เปิด การตั้งค่า ของ Windsurf > Cascade > MCP Servers และเลือก เปิด MCP Marketplace
- ค้นหา
sonarqubeใน Cascade MCP Marketplace - เลือก SonarQube MCP Server และเลือก ติดตั้ง
- เพิ่มโทเค็นผู้ใช้ SonarQube ที่จำเป็น จากนั้นเพิ่มคีย์องค์กรหากคุณต้องการเชื่อมต่อกับ SonarQube Cloud หรือ URL ของ SonarQube หากคุณต้องการเชื่อมต่อกับ SonarQube Server หรือ Community Build
สำหรับ SonarQube Cloud US ให้ตั้งค่า URL เป็น https://sonarqube.us
Zed
ไปที่มุมมอง ส่วนขยาย ใน Zed และค้นหา SonarQube MCP Server เมื่อติดตั้งส่วนขยาย คุณจะได้รับแจ้งให้ระบุตัวแปรสภาพแวดล้อมที่จำเป็น:
- เมื่อใช้ SonarQube Cloud:
{
"sonarqube_token": "YOUR_SONARQUBE_TOKEN",
"sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
"docker_path": "DOCKER_PATH"
}
สำหรับ SonarQube Cloud US ให้เพิ่ม "sonarqube_url": "https://sonarqube.us" ในคอนฟิกูเรชัน
- เมื่อใช้ SonarQube Server:
{
"sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
"sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
"docker_path": "DOCKER_PATH"
}
docker_path คือพาธไปยังไฟล์ปฏิบัติการ docker ตัวอย่าง:
Linux/macOS: /usr/bin/docker หรือ /usr/local/bin/docker
Windows: C:\Program Files\Docker\Docker\resources\bin\docker.exe
💡 เคล็ดลับ: เราขอแนะนำให้ดึงอิมเมจล่าสุดเป็นประจำหรือก่อนรายงานปัญหาเพื่อให้แน่ใจว่าคุณมีฟีเจอร์และการแก้ไขล่าสุด
การติดตั้งด้วยตนเอง
คุณสามารถติดตั้งเซิร์ฟเวอร์ SonarQube MCP ด้วยตนเองโดยคัดลอกข้อมูลต่อไปนี้ในไฟล์คอนฟิกูเรชันเซิร์ฟเวอร์ MCP:
- เพื่อเชื่อมต่อกับ 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>"
}
}
}
- เพื่อเชื่อมต่อกับ 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>"
}
}
}
การผสานรวมกับ SonarQube สำหรับ IDE
เซิร์ฟเวอร์ SonarQube MCP สามารถผสานรวมกับ SonarQube สำหรับ IDE เพื่อเพิ่มประสิทธิภาพขั้นตอนการทำงานการพัฒนาของคุณ ให้การวิเคราะห์โค้ดและข้อมูลเชิงลึกที่ดีขึ้นโดยตรงภายใน IDE ของคุณ
คอนฟิกูเรชัน
เมื่อใช้ SonarQube สำหรับ IDE ควรตั้งค่าตัวแปรสภาพแวดล้อม SONARQUBE_IDE_PORT ด้วยหมายเลขพอร์ตที่ถูกต้อง SonarQube สำหรับ VS Code มีปุ่มติดตั้งด่วนซึ่งจะตั้งค่าคอนฟิกูเรชันพอร์ตที่ถูกต้องโดยอัตโนมัติ
ตัวอย่างเช่น ด้วย 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>"
}
}
}
เมื่อรันเซิร์ฟเวอร์ MCP ในคอนเทนเนอร์บน Linux คอนเทนเนอร์ไม่สามารถเข้าถึงเซิร์ฟเวอร์ฝังตัว SonarQube สำหรับ IDE ที่ทำงานบน localhost ได้ เพื่อให้คอนเทนเนอร์เชื่อมต่อกับเซิร์ฟเวอร์ SonarQube สำหรับ IDE ได้ ให้เพิ่มตัวเลือก
--network=hostในคำสั่งรันคอนเทนเนอร์ของคุณ
คอนฟิกูเรชัน
ขึ้นอยู่กับสภาพแวดล้อมของคุณ คุณควรระบุตัวแปรสภาพแวดล้อมเฉพาะ
พื้นฐาน
คุณควรเพิ่มตัวแปรต่อไปนี้เมื่อรันเซิร์ฟเวอร์ MCP:
| ตัวแปรสภาพแวดล้อม | คำอธิบาย |
|---|---|
STORAGE_PATH | พาธสัมบูรณ์ที่จำเป็นไปยังไดเรกทอรีที่เขียนได้ซึ่งเซิร์ฟเวอร์ SonarQube MCP จะเก็บไฟล์ของตน (เช่น สำหรับการสร้าง การอัปเดต และการคงอยู่) โดยจะระบุให้โดยอัตโนมัติเมื่อใช้อิมเมจคอนเทนเนอร์ |
SONARQUBE_PROJECT_KEY | คีย์โครงการเริ่มต้นที่ไม่บังคับ เมื่อตั้งค่าแล้ว เครื่องมือทั้งหมดที่ต้องใช้คีย์โครงการจะใช้ค่านี้โดยอัตโนมัติ — พารามิเตอร์ projectKey จะถูกลบออกจากสคีมาทั้งหมด มีประโยชน์เมื่อทำงานในโครงการเดียว |
SONARQUBE_IDE_PORT | หมายเลขพอร์ตที่ไม่บังคับระหว่าง 64120 ถึง 64130 ที่ใช้เชื่อมต่อเซิร์ฟเวอร์ SonarQube MCP กับ SonarQube สำหรับ IDE |
SONARQUBE_DEBUG_ENABLED | เมื่อตั้งค่าเป็น true จะเปิดใช้งานการบันทึกดีบัก บันทึกดีบักจะถูกเขียนไปยังทั้งไฟล์บันทึกและ STDERR มีประโยชน์สำหรับการแก้ไขปัญหาการเชื่อมต่อหรือคอนฟิกูเรชัน ค่าเริ่มต้น: false |
SONARQUBE_LOG_TO_FILE_DISABLED | เมื่อตั้งค่าเป็น true จะปิดการเขียนบันทึกลงดิสก์ทั้งหมด จะไม่มีการสร้างไฟล์บันทึกภายใต้ STORAGE_PATH/logs/ มีประโยชน์ในสภาพแวดล้อมคอนเทนเนอร์หรือสภาพแวดล้อมชั่วคราวที่ไม่ต้องการการบันทึกไฟล์ ค่าเริ่มต้น: false |
การเมานต์พื้นที่ทำงาน (การลดการใช้บริบท)
โดยค่าเริ่มต้น เครื่องมือวิเคราะห์ analyze_code_snippet กำหนดให้เอเจนต์ส่งเนื้อหาไฟล์ทั้งหมดเป็นอาร์กิวเมนต์ fileContent สำหรับไฟล์ขนาดใหญ่หรือเมื่อวิเคราะห์หลายไฟล์ในเซสชันเดียว สิ่งนี้จะเพิ่มการใช้หน้าต่างบริบทและต้นทุนอย่างมีนัยสำคัญ
วิธีแก้ไข: เมานต์ไดเรกทอรีโปรเจกต์ของคุณลงในคอนเทนเนอร์ที่ /app/mcp-workspace เมื่อตรวจพบการเมานต์นี้ เซิร์ฟเวอร์จะอ่านไฟล์โดยตรงจากดิสก์โดยใช้อาร์กิวเมนต์ filePath ที่สัมพันธ์กับโปรเจกต์ — เนื้อหาไฟล์จะไม่ผ่านบริบทของเอเจนต์
{
"args": [
"run", "-i", "--rm", "--init", "--pull=always",
"-e", "SONARQUBE_TOKEN",
"-e", "SONARQUBE_ORG",
"-v", "/path/to/your/project:/app/mcp-workspace",
"sonarsource/sonarqube-mcp"
]
}
เมื่อการเมานต์ทำงานอยู่:
run_advanced_code_analysisจะพร้อมใช้งานหากองค์กรของคุณมีสิทธิ์analyze_code_snippet: ต้องใช้filePathและไม่ใช้fileContent— เซิร์ฟเวอร์จะแก้ไขไฟล์ในลักษณะเดียวกัน
การเปิดใช้งานชุดเครื่องมือแบบเลือก
โดยค่าเริ่มต้น เฉพาะชุดเครื่องมือที่สำคัญเท่านั้นที่จะถูกเปิดใช้งานเพื่อลดภาระบริบท คุณสามารถเปิดใช้งานชุดเครื่องมือเพิ่มเติมได้ตามต้องการ
| ตัวแปรสภาพแวดล้อม | คำอธิบาย |
|---|---|
SONARQUBE_TOOLSETS | รายการชุดเครื่องมือที่คั่นด้วยเครื่องหมายจุลภาคเพื่อเปิดใช้งาน เมื่อตั้งค่าแล้ว เฉพาะชุดเครื่องมือเหล่านี้เท่านั้นที่จะพร้อมใช้งาน หากไม่ได้ตั้งค่า ชุดเครื่องมือสำคัญเริ่มต้นจะถูกเปิดใช้งาน (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag) หมายเหตุ: ชุดเครื่องมือ projects ถูกเปิดใช้งานเสมอโดยอัตโนมัติเนื่องจากจำเป็นสำหรับการค้นหาคีย์โปรเจกต์สำหรับการดำเนินการอื่นๆ เครื่องมือบริบท Vortex (ชื่อเดิม: Context Augmentation/CAG) และเครื่องมือวิเคราะห์ Vortex (ชื่อเดิม: Advanced Analysis/A3S) พร้อมใช้งานเฉพาะในโหมด stdio และใช้สิทธิ์องค์กรร่วมกันเพียงสิทธิ์เดียว — องค์กรต้องมีสิทธิ์ทั้งสองอย่างจึงจะใช้อย่างใดอย่างหนึ่งได้ บน SonarQube Server, stdio จะแสดงรายการบริบท Vortex และ run_advanced_code_analysis เมื่อทั้ง CAG และ A3S hubs มีสิทธิ์ ควรใช้คีย์ชุดเครื่องมือแบบรวม vortex คีย์ที่เลิกใช้งานแล้ว cag และ analysis ยังคงทำงานอยู่ คำเตือนเมื่อเริ่มต้นและหมายเหตุการเลิกใช้งานในคำแนะนำเซิร์ฟเวอร์จะถูกแสดงเมื่อใช้โดยไม่มี vortex ในโหมด Streamable HTTP ไคลเอนต์สามารถส่งส่วนหัว HTTP SONARQUBE_TOOLSETS เพื่อจำกัดขอบเขตเพิ่มเติมต่อคำขอ แต่ไม่สามารถเปิดใช้งานชุดเครื่องมือที่เกินกว่าที่เซิร์ฟเวอร์เริ่มต้นไว้ได้ (ดู Streamable HTTP transport ด้านล่าง) |
SONARQUBE_READ_ONLY | เมื่อตั้งค่าเป็น true จะเปิดใช้งานโหมดอ่านอย่างเดียวซึ่งปิดการดำเนินการเขียนทั้งหมด (เช่น การเปลี่ยนสถานะ issue) ตัวกรองนี้จะรวมกับ SONARQUBE_TOOLSETS หากตั้งค่าทั้งสอง ค่าเริ่มต้น: false ในโหมด Streamable HTTP ไคลเอนต์สามารถส่งส่วนหัว HTTP SONARQUBE_READ_ONLY เพื่อจำกัดคำขอแต่ละรายการให้เป็นอ่านอย่างเดียวเพิ่มเติม แต่ไม่สามารถยกเลิกข้อจำกัดการอ่านอย่างเดียวระดับเซิร์ฟเวอร์ได้ (ดู Streamable HTTP transport ด้านล่าง) |
ชุดเครื่องมือที่พร้อมใช้งาน
| ชุดเครื่องมือ | คีย์ | คำอธิบาย |
|---|---|---|
| Analysis | analysis | เครื่องมือวิเคราะห์โค้ด (การวิเคราะห์ในเครื่องผ่าน analyze_code_snippet, เลิกใช้งานแล้ว แนะนำให้ใช้ analyze_file_list/การวิเคราะห์ Vortex) |
| IDE | ide | เครื่องมือบริดจ์ SonarQube สำหรับ IDE (การวิเคราะห์ไฟล์, การสลับการวิเคราะห์อัตโนมัติ) — ปัจจุบันรวมอยู่ใน analysis ด้วย |
| Issues | issues | ค้นหาและจัดการ issues ของ SonarQube |
| Security Hotspots | security-hotspots | ค้นหาและตรวจสอบ Security Hotspots |
| Projects | projects | เรียกดูและค้นหาโปรเจกต์ของ SonarQube |
| Quality Gates | quality-gates | เข้าถึง quality gates และสถานะของมัน |
| Rules | rules | เรียกดูและค้นหากฎของ SonarQube |
| Sources | sources | เข้าถึงซอร์สโค้ดและข้อมูล SCM |
| Duplications | duplications | ค้นหาการซ้ำซ้อนของโค้ดในโปรเจกต์ต่างๆ |
| Measures | measures | ดึงข้อมูลเมตริกและการวัด (รวมทั้งเครื่องมือ measures และ metrics) |
| Languages | languages | แสดงรายการภาษาการเขียนโปรแกรมที่รองรับ |
| Portfolios | portfolios | จัดการ portfolios และองค์กร (Cloud และ Server) |
| System | system | เครื่องมือการดูแลระบบ (เฉพาะ Server) |
| Webhooks | webhooks | จัดการ webhooks |
| Dependency Risks | dependency-risks | วิเคราะห์ความเสี่ยงด้าน dependencies และปัญหาความปลอดภัย (SCA) |
| Coverage | coverage | เครื่องมือวิเคราะห์และปรับปรุงความครอบคลุมการทดสอบ |
| Vortex Context | cag | เครื่องมือบริบท Vortex — เฉพาะ stdio เลิกใช้งานแล้ว แนะนำให้ใช้ vortex (ชื่อเดิม: Context Augmentation/CAG) |
| Vortex | vortex | ชุดเครื่องมือแบบรวม แนะนำ ที่แสดงทั้งเครื่องมือบริบท Vortex และเครื่องมือวิเคราะห์ Vortex ภายใต้ชื่อเดียว (เฉพาะ stdio; Cloud ต้องมีสิทธิ์องค์กรรวม; Server ต้องมีสิทธิ์ทั้งสอง hubs) |
| Agentic Readiness | agentic-readiness | เครื่องมือประเมินความพร้อมแบบ Agentic (SonarQube Cloud, ต้องมีสิทธิ์องค์กร) |
ตัวอย่าง
เปิดใช้งานชุดเครื่องมือ analysis, issues และ quality gates (ใช้ Docker กับ 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
หมายเหตุ: ชุดเครื่องมือ projects ถูกเปิดใช้งานโดยอัตโนมัติเสมอ ดังนั้นคุณไม่จำเป็นต้องรวมไว้ใน SONARQUBE_TOOLSETS
เปิดใช้งานโหมดอ่านอย่างเดียว (ใช้ Docker กับ 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
เพื่อเปิดใช้งานฟังก์ชันทั้งหมด ต้องตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้ก่อนเริ่มเซิร์ฟเวอร์:
| ตัวแปรสภาพแวดล้อม | คำอธิบาย | จำเป็น |
|---|---|---|
SONARQUBE_TOKEN | โทเค็น SonarQube Cloud ของคุณ | ใช่ |
SONARQUBE_ORG | คีย์ องค์กร SonarQube Cloud ของคุณ | ใช่ |
SONARQUBE_URL | URL SonarQube Cloud ที่กำหนดเอง (ค่าเริ่มต้นคือ https://sonarcloud.io) ใช้สำหรับ SonarQube Cloud US: https://sonarqube.us | ไม่ |
ตัวอย่าง:
- SonarQube Cloud: ต้องใช้เฉพาะ
SONARQUBE_TOKENและSONARQUBE_ORGเท่านั้น - SonarQube Cloud US: ตั้งค่า
SONARQUBE_TOKEN,SONARQUBE_ORGและSONARQUBE_URL=https://sonarqube.us
SonarQube Server
| ตัวแปรสภาพแวดล้อม | คำอธิบาย | จำเป็น |
|---|---|---|
SONARQUBE_TOKEN | โทเค็น USER ของ SonarQube Server ของคุณ | ใช่ |
SONARQUBE_URL | URL ของ SonarQube Server ของคุณ | ใช่ |
ข้อกำหนดเวอร์ชัน: ต้องใช้ SonarQube Server 2025.1 (SQS) หรือ 25.1 (SonarQube Community Build) หรือใหม่กว่า ในระหว่างการเริ่มต้น MCP server จะอ่านเวอร์ชันของอินสแตนซ์ที่เชื่อมต่อและออกจากระบบพร้อมแสดงข้อผิดพลาดหากเวอร์ชันเก่าเกินไป (ตัวอย่างเช่น legacy 9.x/10.x Server releases และ Community Build 24.x ไม่ได้รับการสนับสนุน) SonarQube Cloud ไม่ต้องอยู่ภายใต้การตรวจสอบนี้
⚠️ การเชื่อมต่อกับ SonarQube Server ต้องใช้โทเค็นประเภท USER และจะไม่ทำงานอย่างถูกต้องหากใช้ project tokens หรือ global tokens
💡 เคล็ดลับการกำหนดค่า (โหมด stdio): การมีอยู่ของ
SONARQUBE_ORGจะกำหนดว่าคุณกำลังเชื่อมต่อกับ SonarQube Cloud หรือ Server หากตั้งค่าSONARQUBE_ORGจะใช้ SonarQube Cloud มิฉะนั้นจะใช้ SonarQube Server
โหมดการขนส่ง (Transport Modes)
ข้อกำหนด MCP กำหนดกลไกการขนส่งสองแบบ: Stdio และ Streamable HTTP SonarQube MCP Server รองรับทั้งสองแบบ:
| MCP transport | โหมดเซิร์ฟเวอร์ | การใช้งานทั่วไป |
|---|---|---|
| Stdio | ค่าเริ่มต้น (ไม่มี SONARQUBE_TRANSPORT) | MCP clients ในเครื่องที่เปิดใช้เซิร์ฟเวอร์เป็น subprocess (Cursor, Claude Code, VS Code, ฯลฯ) |
| Streamable HTTP | SONARQUBE_TRANSPORT=http หรือ https | การติดตั้งระยะไกลหรือผู้ใช้หลายคน; clients เชื่อมต่อกับ /mcp ผ่าน HTTP(S) (เช่น Windsurf พร้อม URL เซิร์ฟเวอร์ที่โฮสต์เอง) |
หมายเหตุ: Streamable HTTP คือ MCP network transport ปัจจุบัน การขนส่ง HTTP แบบ SSE-only ที่เก่ากว่าจาก MCP เวอร์ชันก่อนหน้าถูกเลิกใช้และไม่ได้รับการสนับสนุน
1. Stdio (ค่าเริ่มต้น - แนะนำสำหรับการพัฒนาท้องถิ่น)
โหมดที่แนะนำสำหรับการพัฒนาท้องถิ่นและการตั้งค่าผู้ใช้คนเดียว ใช้โดย MCP clients ส่วนใหญ่
ตัวอย่าง - Docker กับ 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)
การขนส่ง Streamable HTTP ที่ไม่เข้ารหัส ใช้ HTTPS แทนสำหรับการติดตั้งผู้ใช้หลายคน
⚠️ ไม่แนะนำ: ใช้ Stdio สำหรับการพัฒนาท้องถิ่นหรือ HTTPS (Streamable HTTP) สำหรับการติดตั้งการผลิตผู้ใช้หลายคน
| ตัวแปรสภาพแวดล้อม | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
SONARQUBE_TRANSPORT | ตั้งค่าเป็น http เพื่อเปิดใช้งานการขนส่ง Streamable HTTP | ไม่ได้ตั้งค่า (stdio) |
SONARQUBE_HTTP_PORT | หมายเลขพอร์ต (1024-65535) | 8080 |
SONARQUBE_HTTP_HOST | โฮสต์ที่จะผูก (ค่าเริ่มต้นคือ localhost เพื่อความปลอดภัย) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | ต้นทางเบราว์เซอร์ที่คั่นด้วยเครื่องหมายจุลภาคที่อนุญาตสำหรับ CORS (เช่น https://my-app.example.com) | ไม่ได้ตั้งค่า |
SONARQUBE_MCP_IN_CONTAINER | ตั้งค่าเป็น true เมื่อรันภายในคอนเทนเนอร์ อิมเมจ Docker อย่างเป็นทางการตั้งค่านี้โดยอัตโนมัติ; ตั้งค่าด้วยตัวเองเมื่อใช้ OCI runtimes อื่นๆ (Podman, Kubernetes, Nomad, ฯลฯ) | false |
หมายเหตุ: ในโหมด Streamable HTTP (HTTP หรือ HTTPS) เซิร์ฟเวอร์ไม่มีสถานะ — คำขอของ client แต่ละรายการต้องรวมส่วนหัว Authorization: Bearer <token> ที่มีโทเค็น SonarQube ของผู้ใช้เอง สำหรับ SonarQube Cloud องค์กรจะถูกแก้ไขดังนี้:
- หากตั้งค่า
SONARQUBE_ORGที่การเริ่มต้นเซิร์ฟเวอร์ คำขอทั้งหมดจะถูกส่งไปยังองค์กรนั้น Clients ต้องไม่ ส่งส่วนหัวSONARQUBE_ORG— การทำเช่นนั้นจะส่งผลให้เกิดข้อผิดพลาด - หากไม่ได้ตั้งค่า
SONARQUBE_ORGที่การเริ่มต้นเซิร์ฟเวอร์ client แต่ละรายการ ต้อง จัดหาส่วนหัวSONARQUBE_ORGในทุกคำขอ Clients ยังสามารถจำกัดเครื่องมือที่มองเห็นได้ต่อคำขอโดยการจัดหาส่วนหัวSONARQUBE_TOOLSETSและ/หรือSONARQUBE_READ_ONLY; สิ่งเหล่านี้ใช้การกรองเพิ่มเติมเหนือการกำหนดค่าระดับเซิร์ฟเวอร์ — สามารถลดขอบเขตได้เท่านั้น ไม่สามารถขยายได้ ไม่มีการรักษาสถานะเซสชันระหว่างคำขอ
เลิกใช้แล้ว: ส่วนหัวคำขอ
SONARQUBE_TOKENยังคงได้รับการยอมรับสำหรับความเข้ากันได้ย้อนหลัง แต่จะถูกลบออกในเวอร์ชันอนาคต ย้ายไปใช้Authorization: Bearer <token>
3. HTTPS (Streamable HTTP ผ่าน TLS) (แนะนำสำหรับการติดตั้งการผลิตผู้ใช้หลายคน)
การขนส่ง Streamable HTTP ที่ปลอดภัยด้วยการเข้ารหัส TLS ต้องใช้ใบรับรอง SSL
✅ แนะนำสำหรับการผลิต: ใช้ HTTPS เมื่อติดตั้ง MCP server สำหรับผู้ใช้หลายคนผ่าน Streamable HTTP เซิร์ฟเวอร์ผูกกับ
127.0.0.1(localhost) โดยค่าเริ่มต้นเพื่อความปลอดภัย
| ตัวแปรสภาพแวดล้อม | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
SONARQUBE_TRANSPORT | ตั้งค่าเป็น https เพื่อเปิดใช้งานการขนส่ง Streamable HTTP ผ่าน TLS | ไม่ได้ตั้งค่า (stdio) |
SONARQUBE_HTTP_PORT | หมายเลขพอร์ต (โดยทั่วไปคือ 8443 สำหรับ HTTPS) | 8080 |
SONARQUBE_HTTP_HOST | โฮสต์ที่จะผูก (ค่าเริ่มต้นคือ localhost เพื่อความปลอดภัย) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | ต้นทางเบราว์เซอร์ที่คั่นด้วยเครื่องหมายจุลภาคที่อนุญาตสำหรับ CORS (เช่น https://my-app.example.com) | ไม่ได้ตั้งค่า |
SONARQUBE_MCP_IN_CONTAINER | ตั้งค่าเป็น true เมื่อรันภายในคอนเทนเนอร์ อิมเมจ Docker อย่างเป็นทางการตั้งค่านี้โดยอัตโนมัติ; ตั้งค่าด้วยตัวเองเมื่อใช้ OCI runtimes อื่นๆ (Podman, Kubernetes, Nomad, ฯลฯ) | false |
การกำหนดค่าใบรับรอง SSL (ไม่บังคับ):
| ตัวแปรสภาพแวดล้อม | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
SONARQUBE_HTTPS_KEYSTORE_PATH | เส้นทางไปยังไฟล์ keystore (.p12 หรือ .jks) | /etc/ssl/mcp/keystore.p12 |
SONARQUBE_HTTPS_KEYSTORE_PASSWORD | รหัสผ่าน keystore | sonarlint |
SONARQUBE_HTTPS_KEYSTORE_TYPE | ประเภท keystore (PKCS12 หรือ JKS) | PKCS12 |
ตัวอย่าง - Docker กับ SonarQube Cloud:
หมายเหตุ: เมื่อรันในคอนเทนเนอร์ ให้ตั้งค่า
SONARQUBE_HTTP_HOST=0.0.0.0เพื่อให้คอนเทนเนอร์ฟังบนอินเทอร์เฟซทั้งหมดและการแมปพอร์ตของ runtime ทำงาน และตั้งค่าSONARQUBE_MCP_IN_CONTAINER=trueเพื่อบอกเซิร์ฟเวอร์ว่าอยู่ภายในคอนเทนเนอร์ อิมเมจ Docker อย่างเป็นทางการตั้งค่าอย่างหลังโดยอัตโนมัติ; ตั้งค่าด้วยตัวเองเมื่อใช้ OCI runtimes อื่นๆ (Podman, Kubernetes, Nomad, ฯลฯ) แฟล็กพอร์ตฝั่งโฮสต์ควบคุมว่าใครสามารถเข้าถึงเซิร์ฟเวอร์จากภายนอกคอนเทนเนอร์ได้SONARQUBE_HTTP_HOST=0.0.0.0ควบคุมเฉพาะตำแหน่งที่เซิร์ฟเวอร์ฟังภายในคอนเทนเนอร์ — CORS ของเบราว์เซอร์ยังอนุญาตต้นทาง localhost โดยค่าเริ่มต้น
สำหรับเซิร์ฟเวอร์ที่รัน บนเครื่องของคุณเอง (เข้าถึงได้จาก 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
สำหรับเซิร์ฟเวอร์ที่ เข้าถึงได้จากเครือข่าย (การติดตั้งระยะไกล):
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
การกำหนดค่า Client (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"
}
}
}
}
การกำหนดค่า Client (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"
}
}
}
}
หมายเหตุ:
SONARQUBE_TOOLSETSและSONARQUBE_READ_ONLYเป็นส่วนหัวต่อคำขอที่ไม่บังคับซึ่งจำกัดชุดเครื่องมือระดับเซิร์ฟเวอร์สำหรับคำขอนั้นๆ โดยเฉพาะ สามารถลดขอบเขตได้เท่านั้น — ไม่สามารถเปิดใช้งานชุดเครื่องมือหรือยกข้อจำกัดเกินกว่าที่เซิร์ฟเวอร์เปิดใช้ได้
หมายเหตุ: สำหรับการพัฒนาท้องถิ่น ให้ใช้การขนส่ง Stdio แทน (ค่าเริ่มต้น) HTTPS Streamable HTTP มีไว้สำหรับการติดตั้งการผลิตผู้ใช้หลายคนพร้อมใบรับรอง SSL ที่เหมาะสม
Service Endpoints
เมื่อรันในโหมด Streamable HTTP (http หรือ https) เซิร์ฟเวอร์จะเปิดเผย service endpoints ที่ไม่ต้องรับรองความถูกต้องสองสามรายการนอกเหนือจาก MCP endpoint ที่ /mcp สิ่งเหล่านี้มีไว้สำหรับการใช้งานระหว่างบริการ (การตรวจสอบ การจัดระเบียบ การตรวจสอบความเข้ากันได้ของ client) และไม่ต้องใช้ส่วนหัว Authorization
| Endpoint | Method | คำอธิบาย | ตัวอย่างการตอบสนอง |
|---|---|---|---|
/health | GET | Liveness probe ส่งคืน 200 OK พร้อมเนื้อหาว่างเมื่อเซิร์ฟเวอร์พร้อมรับคำขอ | (เนื้อหาว่าง) |
/info | GET | ส่งคืนเวอร์ชัน MCP server เป็น JSON มีประโยชน์สำหรับการตรวจสอบเวอร์ชันเซิร์ฟเวอร์ที่ติดตั้ง | {"version":"1.16.0"} |
Endpoints เหล่านี้ไม่พร้อมใช้งานเมื่อรันด้วยการขนส่ง Stdio
ใบรับรองที่กำหนดเอง
หาก SonarQube Server ของคุณใช้ใบรับรองที่ลงนามด้วยตนเองหรือใบรับรองจาก Certificate Authority (CA) ส่วนตัว คุณสามารถเพิ่มใบรับรองที่กำหนดเองลงในคอนเทนเนอร์ที่จะถูกติดตั้งโดยอัตโนมัติ
การกำหนดค่า
การใช้ Volume Mount
เมานต์ไดเรกทอรีที่มีใบรับรองของคุณเมื่อรันคอนเทนเนอร์:
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
รูปแบบใบรับรองที่รองรับ
คอนเทนเนอร์รองรับรูปแบบใบรับรองต่อไปนี้:
- ไฟล์
.crt(เข้ารหัส PEM หรือ DER) - ไฟล์
.pem(เข้ารหัส PEM)
การกำหนดค่า MCP พร้อมใบรับรอง
เมื่อใช้ใบรับรองที่กำหนดเอง คุณสามารถแก้ไขการกำหนดค่า MCP ของคุณเพื่อเมานต์ใบรับรอง:
{
"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>"
}
}
}
หมายเหตุ: รันเซิร์ฟเวอร์ จาก JAR แทนคอนเทนเนอร์หรือไม่? การเมานต์โวลุ่มด้านบนติดตั้งใบรับรองลงใน trust store ของ OS ในคอนเทนเนอร์ ซึ่งเซิร์ฟเวอร์ก็อ่านเช่นกัน หากคุณไม่สามารถใช้ trust store ของ OS — โดยเฉพาะบน Windows ซึ่งไม่มีการปรึกษา — ชี้ JVM ไปที่ Java truststore ที่เก็บใบรับรอง CA:
-Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>มันถูกเพิ่มเหนือใบรับรองที่เชื่อถือได้เริ่มต้น
พร็อกซี
SonarQube MCP Server รองรับพร็อกซี HTTP และ SOCKS5 ผ่านคุณสมบัติระบบ Java มาตรฐาน
การกำหนดค่า
พร็อกซี HTTP/HTTPS
คุณสามารถกำหนดค่าการตั้งค่าพร็อกซีโดยใช้คุณสมบัติระบบ Java สิ่งเหล่านี้สามารถตั้งค่าเป็นตัวแปรสภาพแวดล้อมหรือส่งผ่านเป็นอาร์กิวเมนต์ JVM
คุณสมบัติพร็อกซีทั่วไป:
| คุณสมบัติ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
http.proxyHost | ชื่อโฮสต์พร็อกซี HTTP | proxy.example.com |
http.proxyPort | พอร์ตพร็อกซี HTTP | 8080 |
https.proxyHost | ชื่อโฮสต์พร็อกซี HTTPS | proxy.example.com |
https.proxyPort | พอร์ตพร็อกซี HTTPS | 8443 |
http.nonProxyHosts | โฮสต์ที่ข้ามพร็อกซี (คั่นด้วยไปป์) | localhost|127.0.0.1|*.internal.com |
การรับรองความถูกต้องพร็อกซี HTTP/HTTPS:
| คุณสมบัติ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
http.proxyUser | ชื่อผู้ใช้พร็อกซี HTTP | myuser |
http.proxyPassword | รหัสผ่านพร็อกซี HTTP | mypassword |
https.proxyUser | ชื่อผู้ใช้พร็อกซี HTTPS | myuser |
https.proxyPassword | รหัสผ่านพร็อกซี HTTPS | mypassword |
พร็อกซี SOCKS5
รองรับพร็อกซี SOCKS5
| คุณสมบัติ | คำอธิบาย | ค่าเริ่มต้น | ตัวอย่าง |
|---|---|---|---|
socksProxyHost | ชื่อโฮสต์ของพร็อกซี SOCKS5 | — | localhost |
socksProxyPort | พอร์ตของพร็อกซี SOCKS5 | 1080 | 1080 |
java.net.socks.username | ชื่อผู้ใช้ SOCKS5 (หากต้องมีการยืนยันตัวตน) | — | myuser |
java.net.socks.password | รหัสผ่าน SOCKS5 (หากต้องมีการยืนยันตัวตน) | — | mypassword |
ใบรับรองไคลเอ็นต์ (Mutual TLS)
หากเซิร์ฟเวอร์ SonarQube ของคุณกำหนดให้ไคลเอ็นต์ต้องแสดงใบรับรองระหว่างการจับมือ TLS (mutual TLS) คุณสามารถระบุคีย์สโตร์ PKCS12 ได้โดยการเมานต์ลงในคอนเทนเนอร์และส่งตำแหน่งผ่าน JAVA_OPTS
การกำหนดค่า
การใช้คีย์สโตร์ PKCS12
เมานต์ไฟล์ .p12 หรือ .pfx ของคุณลงในคอนเทนเนอร์และตั้งค่าตัวแปรสภาพแวดล้อม JAVA_OPTS พร้อมคุณสมบัติของคีย์สโตร์:
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
หมายเหตุ: ไฟล์ใบรับรองต้องสามารถอ่านได้โดยกระบวนการในคอนเทนเนอร์ ตรวจสอบและแก้ไขสิทธิ์หากจำเป็น:
ls -la /path/to/client.p12 # ดูหา -rw-r--r-- (644) หรือกว้างกว่า chmod 644 /path/to/client.p12 # ให้สิทธิ์อ่านแก่ผู้ใช้ในคอนเทนเนอร์
ละเว้น -Djavax.net.ssl.keyStorePassword หากคีย์สโตร์ไม่มีรหัสผ่าน โปรดทราบว่ารหัสผ่านที่ใช้ที่นี่จะมองเห็นได้ผ่าน docker inspect หรือรายการกระบวนการ
การกำหนดค่า MCP พร้อมใบรับรองไคลเอ็นต์
{
"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>"
}
}
}
การใช้คีย์สโตร์ PKCS12 กับ JAR แบบสแตนด์อโลน
เมื่อรันเซิร์ฟเวอร์ จาก JAR ให้ส่งคุณสมบัติคีย์สโตร์เป็นอาร์กิวเมนต์ JVM ก่อน -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>
ละเว้น -Djavax.net.ssl.keyStorePassword หากคีย์สโตร์ไม่มีรหัสผ่าน
การกำหนดค่า MCP พร้อมใบรับรองไคลเอ็นต์ (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>"
}
}
}
หมายเหตุ: ไฟล์ใบรับรองและคีย์ PEM (ไฟล์
.crt/.keyแยกกัน) ต้องแปลงเป็นรูปแบบ PKCS12 ก่อน ใช้openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12เพื่อแปลงไฟล์เหล่านั้น
เครื่องมือ
การวิเคราะห์
-
analyze_code_snippet - วิเคราะห์เนื้อหาไฟล์ด้วยตัววิเคราะห์ SonarQube เพื่อระบุปัญหาคุณภาพโค้ดและความปลอดภัย วิเคราะห์เนื้อหาไฟล์ทั้งหมดเสมอเพื่อความแม่นยำ สามารถกรองผลลัพธ์เป็นโค้ดสั้นๆ ที่ระบุได้
เลิกใช้งาน:
analyze_code_snippetจะถูกลบออกในเวอร์ชันอนาคต เชื่อมต่อ SonarQube for IDE เพื่อใช้analyze_file_listหรือเปิดใช้งานการวิเคราะห์ Vortex สำหรับองค์กรของคุณเพื่อใช้run_advanced_code_analysis(ดูด้านล่าง)การใช้งาน:
- เมื่อเมานต์เวิร์กสเปซ (แนะนำ): ส่ง
filePath(สัมพันธ์กับโปรเจกต์) — เซิร์ฟเวอร์อ่านไฟล์โดยตรง ทำให้เนื้อหาไฟล์ไม่อยู่ในบริบทของเอเจนต์ - เมื่อไม่ได้เมานต์เวิร์กสเปซ: ส่ง
fileContentที่สมบูรณ์สำหรับการวิเคราะห์ไฟล์ทั้งหมด (รายงานปัญหาทั้งหมด) - เพิ่ม
codeSnippetที่ไม่บังคับเพื่อกรองผลลัพธ์ - เฉพาะปัญหาภายในโค้ดสั้นๆ จะถูกรายงาน (ตำแหน่งโค้ดสั้นๆ ถูกตรวจจับอัตโนมัติ)
พารามิเตอร์:
projectKey- คีย์โปรเจกต์ SonarQube - สตริงที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)filePath- เส้นทางสัมพันธ์กับโปรเจกต์ของไฟล์ที่จะวิเคราะห์ (เช่นsrc/main/java/MyClass.java) ใช้เมื่อเมานต์เวิร์กสเปซที่/app/mcp-workspace- สตริงfileContent- เนื้อหาไฟล์ที่สมบูรณ์เป็นสตริง จำเป็นเมื่อไม่ได้เมานต์เวิร์กสเปซ - สตริงcodeSnippet- โค้ดสั้นๆ เพื่อกรองปัญหา (ต้องตรงกับเนื้อหาใน fileContent) - สตริงlanguage- ภาษาของโค้ด (เช่น 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - สตริงscope- ขอบเขตของไฟล์: MAIN หรือ TEST (ค่าเริ่มต้น: MAIN) - สตริง
ภาษาที่รองรับ: Java, Kotlin, Python, Ruby, Go, JavaScript (
js,jsx), TypeScript (ts,tsx), JSP, PHP, XML, HTML, CSS, CloudFormation, Kubernetes, Terraform, Azure Resource Manager, Ansible, Docker, การตรวจจับความลับ - เมื่อเมานต์เวิร์กสเปซ (แนะนำ): ส่ง
เมื่อเปิดใช้งานการรวมกับ SonarQube for IDE: (เครื่องมือสองตัวนี้ถูกแท็กภายใต้ชุดเครื่องมือ analysis และ ide)
-
analyze_file_list - วิเคราะห์ไฟล์ในไดเรกทอรีทำงานปัจจุบันโดยใช้ SonarQube for IDE เครื่องมือนี้เชื่อมต่อกับอินสแตนซ์ SonarQube for IDE ที่รันอยู่เพื่อวิเคราะห์คุณภาพโค้ดบนรายการไฟล์
file_absolute_paths- รายการเส้นทางไฟล์สัมบูรณ์ที่จะวิเคราะห์ - String[] ที่จำเป็น
-
toggle_automatic_analysis - เปิดหรือปิดการวิเคราะห์อัตโนมัติของ SonarQube for IDE เมื่อเปิดใช้งาน SonarQube for IDE จะวิเคราะห์ไฟล์โดยอัตโนมัติเมื่อมีการแก้ไขในไดเรกทอรีทำงาน เมื่อปิดใช้งาน การวิเคราะห์อัตโนมัติจะถูกปิด
enabled- เปิดหรือปิดการวิเคราะห์อัตโนมัติ - บูลีนที่จำเป็น
บน SonarQube Server, stdio แสดงรายการเครื่องมือบริบท Vortex และ run_advanced_code_analysis เมื่อทั้งฮับ CAG และ A3S ได้รับสิทธิ์
เมื่อเปิดใช้งานการวิเคราะห์ Vortex:
ต้องเมานต์เวิร์กสเปซที่
/app/mcp-workspace
- run_advanced_code_analysis - รันการวิเคราะห์ Vortex บนไฟล์เดียว องค์กรถูกอนุมานจากการกำหนดค่า MCP (SonarQube Server ใช้ตัวยึดตำแหน่ง UUID nil)
projectKey- คีย์ของโปรเจกต์ - สตริงที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- ชื่อสาขาที่ใช้ดึงบริบทการวิเคราะห์ล่าสุด - สตริงที่จำเป็นfilePath- เส้นทางสัมพันธ์กับโปรเจกต์ของไฟล์ที่จะวิเคราะห์ (เช่นsrc/main/java/MyClass.java) - สตริงที่จำเป็นfileScope- กำหนดขอบเขตที่ไฟล์มาจาก: 'MAIN' หรือ 'TEST' (ค่าเริ่มต้น: MAIN) - สตริง
ความครอบคลุม
-
search_files_by_coverage - ค้นหาไฟล์ในโปรเจกต์ที่เรียงตามความครอบคลุม (จากน้อยไปมาก - ความครอบคลุมแย่ที่สุดก่อน) เครื่องมือนี้ช่วยระบุไฟล์ที่ต้องปรับปรุงความครอบคลุมของการทดสอบ
projectKey- คีย์โปรเจกต์ที่จะค้นหา - สตริงที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- ชื่อสาขาที่ไม่บังคับสำหรับการวิเคราะห์ตามสาขา ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงpullRequest- คีย์/ID คำขอดึงที่ไม่บังคับ ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - สตริงmaxCoverage- เกณฑ์ความครอบคลุมสูงสุด (0-100) คืนค่าเฉพาะไฟล์ที่มีความครอบคลุม <= ค่านี้ - ตัวเลขpageIndex- ดัชนีหน้า (เริ่มที่ 1, ค่าเริ่มต้น: 1) - ตัวเลขpageSize- ขนาดหน้า (ค่าเริ่มต้น: 100, สูงสุด: 500) - ตัวเลข
-
get_file_coverage_details - รับข้อมูลความครอบคลุมทีละบรรทัดสำหรับไฟล์เฉพาะ รวมถึงบรรทัดที่ไม่ได้ครอบคลุมและบรรทัดที่มีสาขาครอบคลุมบางส่วน เครื่องมือนี้ช่วยระบุตำแหน่งที่แน่นอนในการเพิ่มความครอบคลุมของการทดสอบ ใช้หลังจากระบุไฟล์ที่มีความครอบคลุมต่ำผ่าน search_files_by_coverage
key- คีย์ไฟล์ (เช่น my_project:src/foo/Bar.java) - สตริงที่จำเป็นbranch- ชื่อสาขาที่ไม่บังคับสำหรับการวิเคราะห์ตามสาขา ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงpullRequest- คีย์/ID คำขอดึงที่ไม่บังคับ ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - สตริงfrom- บรรทัดแรกที่จะวิเคราะห์ (เริ่มที่ 1, ค่าเริ่มต้น: 1) - ตัวเลขto- บรรทัดสุดท้ายที่จะวิเคราะห์ (รวม) หากไม่ระบุ จะคืนค่าทุกบรรทัด - ตัวเลข
ความเสี่ยงด้าน dependencies
หมายเหตุ: ความเสี่ยงด้าน dependencies มีเฉพาะเมื่อเชื่อมต่อกับ SonarQube Server 2025.4 Enterprise หรือสูงกว่าที่เปิดใช้งาน SonarQube Advanced Security
- search_dependency_risks - ค้นหาปัญหาการวิเคราะห์องค์ประกอบซอฟต์แวร์ (ความเสี่ยงด้าน dependencies) ของโปรเจกต์ SonarQube พร้อมกับเวอร์ชันที่ปรากฏในโปรเจกต์ แอปพลิเคชัน หรือพอร์ตโฟลิโอที่วิเคราะห์
projectKey- คีย์โปรเจกต์ - สตริงที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- ชื่อสาขาที่ไม่บังคับสำหรับการวิเคราะห์ตามสาขา ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงpullRequest- คีย์/ID คำขอดึงที่ไม่บังคับ ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - สตริงpageIndex- ดัชนีหน้าที่ไม่บังคับ (เริ่มที่ 1, ค่าเริ่มต้น: 1) - จำนวนเต็มpageSize- ขนาดหน้าที่ไม่บังคับ ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - จำนวนเต็ม
องค์กร
หมายเหตุ: องค์กรมีเฉพาะเมื่อเชื่อมต่อกับ SonarQube Cloud
- list_enterprises - แสดงรายการองค์กรที่พร้อมใช้งานใน SonarQube Cloud ที่คุณมีสิทธิ์เข้าถึง ใช้เครื่องมือนี้เพื่อค้นหา ID องค์กรที่สามารถใช้กับเครื่องมืออื่นๆ ได้
enterpriseKey- คีย์องค์กรที่ไม่บังคับเพื่อกรองผลลัพธ์ - สตริง
ปัญหา
-
change_sonar_issue_status - เปลี่ยนสถานะของปัญหา SonarQube เป็น "accept", "falsepositive" หรือ "reopen" ปัญหา
key- คีย์ปัญหา - สตริงที่จำเป็นstatus- สถานะใหม่ของปัญหา - Enum ที่จำเป็น {"accept", "falsepositive", "reopen"}comment- ความคิดเห็นที่ไม่บังคับอธิบายการเปลี่ยนสถานะ - สตริง
-
search_sonar_issues_in_projects - ค้นหาปัญหา SonarQube ในโปรเจกต์ขององค์กรของฉัน
projectKeys- รายการคีย์โปรเจกต์ SonarQube ที่ไม่บังคับ - String[]branch- ชื่อสาขาที่ไม่บังคับสำหรับการวิเคราะห์ตามสาขา ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงpullRequest- คีย์/ID คำขอดึงที่ไม่บังคับ ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - สตริงseverities- รายการระดับความรุนแรงที่ไม่บังคับเพื่อกรอง ค่าที่เป็นไปได้: INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]impactSoftwareQualities- รายการคุณภาพซอฟต์แวร์ที่ไม่บังคับเพื่อกรอง ค่าที่เป็นไปได้: MAINTAINABILITY, RELIABILITY, SECURITY - String[]issueStatuses- รายการสถานะปัญหาที่ไม่บังคับเพื่อกรอง ค่าที่เป็นไปได้: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]tags- รายการแท็กปัญหาที่ไม่บังคับเพื่อกรอง แท็กเป็นตัวพิมพ์เล็ก - String[]inNewCodePeriod- คืนค่าเฉพาะปัญหาในช่วงโค้ดใหม่ ต้องมีรายการเดียวในprojectKeysและfiles- บูลีนissueKey- คีย์ปัญหาที่ไม่บังคับเพื่อดึงปัญหาเฉพาะ - สตริงpageIndex- ดัชนีหน้าที่ไม่บังคับ (เริ่มที่ 1, ค่าเริ่มต้น: 1) - จำนวนเต็มpageSize- ขนาดหน้าที่ไม่บังคับ ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - จำนวนเต็ม
Security Hotspots
-
search_security_hotspots - ค้นหา Security Hotspots ในโปรเจกต์ SonarQube
projectKey- คีย์โปรเจกต์หรือแอปพลิเคชัน - สตริงที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)hotspotKeys- รายการคีย์ Security Hotspot เฉพาะที่คั่นด้วยเครื่องหมายจุลภาคเพื่อดึงข้อมูล - String[]branch- ชื่อสาขาที่ไม่บังคับสำหรับการวิเคราะห์ตามสาขา ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงpullRequest- คีย์/ID คำขอดึงที่ไม่บังคับ ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - สตริงfiles- รายการเส้นทางไฟล์ที่ไม่บังคับเพื่อกรอง - String[]status- ตัวกรองสถานะที่ไม่บังคับ: TO_REVIEW, REVIEWED - สตริงresolution- ตัวกรองการแก้ไขที่ไม่บังคับ: FIXED, SAFE, ACKNOWLEDGED - สตริงsinceLeakPeriod- กรอง hotspots ที่สร้างตั้งแต่ช่วง leak (โค้ดใหม่) - บูลีนonlyMine- แสดงเฉพาะ hotspots ที่กำหนดให้ฉัน - บูลีนpageIndex- ดัชนีหน้าที่ไม่บังคับ (เริ่มที่ 1, ค่าเริ่มต้น: 1) - จำนวนเต็มpageSize- ขนาดหน้าที่ไม่บังคับ ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - จำนวนเต็ม
-
show_security_hotspot - รับข้อมูลโดยละเอียดเกี่ยวกับ Security Hotspot เฉพาะ รวมถึงรายละเอียดกฎ บริบทโค้ด โฟลว์ และความคิดเห็น
hotspotKey- คีย์ Security Hotspot - สตริงที่จำเป็น
-
change_security_hotspot_status - ตรวจสอบ Security Hotspot โดยการเปลี่ยนสถานะ เมื่อทำเครื่องหมายเป็น REVIEWED คุณต้องระบุ resolution (FIXED, SAFE, หรือ ACKNOWLEDGED)
hotspotKey- คีย์ของ Security Hotspot - String ที่จำเป็นstatus- สถานะใหม่ - Enum ที่จำเป็น {"TO_REVIEW", "REVIEWED"}resolution- Resolution เมื่อสถานะเป็น REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}comment- ความคิดเห็นในการตรวจสอบเพิ่มเติม (ไม่บังคับ) - String
ภาษา
- list_languages - แสดงรายการภาษาโปรแกรมทั้งหมดที่รองรับในอินสแตนซ์ SonarQube นี้
q- รูปแบบที่ใช้กรองคีย์/ชื่อภาษา (ไม่บังคับ) - String
การวัดผล
- get_component_measures - รับการวัดผล SonarQube สำหรับคอมโพเนนต์ (โปรเจกต์, ไดเรกทอรี, ไฟล์)
projectKey- คีย์โปรเจกต์ - String ที่จำเป็นเมื่อไม่ได้กำหนดค่าSONARQUBE_PROJECT_KEYbranch- ชื่อ branch สำหรับการวิเคราะห์แบบ branch (ไม่บังคับ) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringmetricKeys- คีย์ metric ที่ต้องการดึงข้อมูล (เช่น ncloc, complexity, violations, coverage) (ไม่บังคับ) - String[]pullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - String
Metrics
- search_metrics - ค้นหา metrics ของ SonarQube
pageIndex- ดัชนีหน้าเริ่มต้นที่ 1 (ไม่บังคับ, ค่าเริ่มต้น: 1) - IntegerpageSize- ขนาดหน้า (ไม่บังคับ) ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - Integer
Portfolios
-
list_portfolios - แสดงรายการ portfolios ระดับองค์กรที่พร้อมใช้งานใน SonarQube พร้อมตัวเลือกการกรองและการแบ่งหน้า
สำหรับ SonarQube Server:
q- คำค้นหาเพื่อกรอง portfolios ตามชื่อหรือคีย์ (ไม่บังคับ) - Stringfavorite- หากเป็น true จะส่งคืนเฉพาะ portfolios ที่เป็นรายการโปรด - BooleanpageIndex- หมายเลขหน้าเริ่มต้นที่ 1 (ไม่บังคับ, ค่าเริ่มต้น: 1) - IntegerpageSize- ขนาดหน้า สูงสุด 500 (ไม่บังคับ, ค่าเริ่มต้น: 100) - Integer
สำหรับ SonarQube Cloud:
enterpriseId- enterprise uuid สามารถละเว้นได้เฉพาะเมื่อระบุพารามิเตอร์ 'favorite' เป็น true - Stringq- คำค้นหาเพื่อกรอง portfolios ตามชื่อ (ไม่บังคับ) - Stringfavorite- จำเป็นต้องเป็น true หากละเว้นพารามิเตอร์ 'enterpriseId' หากเป็น true จะส่งคืนเฉพาะ portfolios ที่ผู้ใช้ที่เข้าสู่ระบบทำเครื่องหมายเป็นรายการโปรด ไม่สามารถเป็น true เมื่อ 'draft' เป็น true - Booleandraft- หากเป็น true จะส่งคืนเฉพาะ drafts ที่สร้างโดยผู้ใช้ที่เข้าสู่ระบบ ไม่สามารถเป็น true เมื่อ 'favorite' เป็น true - BooleanpageIndex- ดัชนีของหน้าที่จะดึงข้อมูล (ไม่บังคับ, ค่าเริ่มต้น: 1) - IntegerpageSize- ขนาดของหน้าที่จะดึงข้อมูล (ไม่บังคับ, ค่าเริ่มต้น: 50) - Integer
โปรเจกต์
-
search_my_sonarqube_projects - ค้นหาโปรเจกต์ SonarQube การตอบสนองจะถูกแบ่งหน้า
pageIndex- ดัชนีหน้าเริ่มต้นที่ 1 (ไม่บังคับ, ค่าเริ่มต้น: 1) - IntegerpageSize- ขนาดหน้า (ไม่บังคับ) ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 500) - Integerq- คำค้นหาเพื่อกรองโปรเจกต์ตามชื่อ (การจับคู่บางส่วน) หรือคีย์ (การจับคู่แบบตรงทั้งหมด) (ไม่บังคับ) - String
-
list_branches - แสดงรายการ branch ที่วิเคราะห์แล้วสำหรับโปรเจกต์
- SonarQube Cloud: ส่งคืน branch แบบ long-lived (
LONG) และ short-lived (SHORT) พร้อมฟิลด์typeและmergeBranchตัวกรองbranchTypesเพิ่มเติม (ไม่บังคับ):ALL(ค่าเริ่มต้น),LONG, หรือSHORT - SonarQube Server: ส่งคืน branch ที่วิเคราะห์แล้วทั้งหมด (ชื่อ, quality gate, วันที่วิเคราะห์) ไม่มีตัวกรอง
type,mergeBranch, หรือbranchTypes - ใช้ชื่อ branch ที่ส่งคืนเป็นพารามิเตอร์
branchในเครื่องมืออื่น สำหรับการวิเคราะห์ pull request ให้ใช้list_pull_requestsแทน projectKey- คีย์โปรเจกต์ (เช่น my_project) - String ที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)branchTypes- (เฉพาะ SonarQube Cloud) ตัวกรองเพิ่มเติม (ไม่บังคับ):ALL(ค่าเริ่มต้น),LONG, หรือSHORT- Enum {"ALL", "LONG", "SHORT"}
- SonarQube Cloud: ส่งคืน branch แบบ long-lived (
-
list_pull_requests - แสดงรายการ pull requests ทั้งหมดสำหรับโปรเจกต์ ใช้เครื่องมือนี้เพื่อค้นหา pull requests สำหรับการวิเคราะห์แบบ PR-decorated (coverage, issues, quality gate) ส่งคืนคีย์/ID ของ pull request ซึ่งสามารถใช้กับเครื่องมืออื่นได้ สำหรับการวิเคราะห์แบบ branch ที่ไม่มี pull requests ให้ใช้
list_branchesแทนprojectKey- คีย์โปรเจกต์ (เช่น my_project) - String ที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)
Quality Gates
-
get_project_quality_gate_status - รับสถานะ Quality Gate สำหรับโปรเจกต์ SonarQube
analysisId- ID การวิเคราะห์ (ไม่บังคับ) - Stringbranch- ชื่อ branch สำหรับการวิเคราะห์แบบ branch (ไม่บังคับ) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringprojectId- ID โปรเจกต์ (ไม่บังคับ) - StringprojectKey- คีย์โปรเจกต์ (ไม่บังคับ) - StringpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - String
-
list_quality_gates - แสดงรายการ quality gates ทั้งหมดใน SonarQube ของฉัน
กฎ
- show_rule - แสดงข้อมูลโดยละเอียดเกี่ยวกับกฎของ SonarQube
key- คีย์กฎ - String ที่จำเป็น
การทำซ้ำ
-
search_duplicated_files - ค้นหาไฟล์ที่มีการทำซ้ำของโค้ดในโปรเจกต์ SonarQube โดยค่าเริ่มต้น จะดึงข้อมูลไฟล์ที่ซ้ำกันทั้งหมดโดยอัตโนมัติจากทุกหน้า (สูงสุด 10,000 ไฟล์) ส่งคืนเฉพาะไฟล์ที่มีการทำซ้ำ
projectKey- คีย์โปรเจกต์ - String ที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- ชื่อ branch สำหรับการวิเคราะห์แบบ branch (ไม่บังคับ) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - StringpageSize- จำนวนผลลัพธ์ต่อหน้าสำหรับการแบ่งหน้าด้วยตนเอง (ไม่บังคับ, สูงสุด: 500) หากไม่ระบุ จะดึงข้อมูลไฟล์ที่ซ้ำกันทั้งหมดโดยอัตโนมัติ - IntegerpageIndex- หมายเลขหน้าสำหรับการแบ่งหน้าด้วยตนเอง (ไม่บังคับ, เริ่มต้นที่ 1) หากไม่ระบุ จะดึงข้อมูลไฟล์ที่ซ้ำกันทั้งหมดโดยอัตโนมัติ - Integer
-
get_duplications - รับข้อมูลการทำซ้ำสำหรับไฟล์ ต้องมีสิทธิ์ Browse บนโปรเจกต์ของไฟล์
key- คีย์ไฟล์ - String ที่จำเป็นbranch- ชื่อ branch สำหรับการวิเคราะห์แบบ branch (ไม่บังคับ) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - String
แหล่งที่มา
-
get_raw_source - รับซอร์สโค้ดเป็นข้อความดิบจาก SonarQube ต้องมีสิทธิ์ 'See Source Code' บนไฟล์
key- คีย์ไฟล์ - String ที่จำเป็นbranch- ชื่อ branch สำหรับการวิเคราะห์แบบ branch (ไม่บังคับ) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - String
-
get_scm_info - รับข้อมูล SCM ของไฟล์ซอร์ส SonarQube ต้องมีสิทธิ์ See Source Code บนโปรเจกต์ของไฟล์
key- คีย์ไฟล์ - String ที่จำเป็นcommits_by_line- จัดกลุ่มบรรทัดตาม commit ของ SCM หากค่าเป็น false มิฉะนั้นจะแสดง commits สำหรับแต่ละบรรทัด - Stringfrom- บรรทัดแรกที่จะส่งคืน เริ่มต้นที่ 1 - Numberto- บรรทัดสุดท้ายที่จะส่งคืน (รวม) - Number
ระบบ
หมายเหตุ: เครื่องมือระบบจะพร้อมใช้งานเฉพาะเมื่อเชื่อมต่อกับ SonarQube Server เท่านั้น
-
get_system_health - รับสถานะสุขภาพของอินสแตนซ์ SonarQube Server ส่งคืน GREEN (ทำงานเต็มรูปแบบ), YELLOW (ใช้งานได้แต่ต้องได้รับการดูแล), หรือ RED (ไม่ทำงาน)
-
get_system_info - รับข้อมูลโดยละเอียดเกี่ยวกับการกำหนดค่าระบบ SonarQube Server รวมถึงสถานะ JVM, ฐานข้อมูล, ดัชนีการค้นหา และการตั้งค่า ต้องมีสิทธิ์ 'Administer'
-
get_system_logs - รับบันทึกระบบ SonarQube Server ในรูปแบบข้อความธรรมดา ต้องมีสิทธิ์การดูแลระบบ
name- ชื่อของบันทึกที่จะรับ (ไม่บังคับ) ค่าที่เป็นไปได้: access, app, ce, deprecation, es, web ค่าเริ่มต้น: app - String
-
ping_system - Ping ระบบ SonarQube Server เพื่อตรวจสอบว่าทำงานอยู่หรือไม่ ส่งคืน 'pong' เป็นข้อความธรรมดา
-
get_system_status - รับข้อมูลสถานะเกี่ยวกับ SonarQube Server ส่งคืนสถานะ (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), เวอร์ชัน และ id
Webhooks
-
create_webhook - สร้าง webhook ใหม่สำหรับองค์กรหรือโปรเจกต์ SonarQube ต้องมีสิทธิ์ 'Administer' บนโปรเจกต์ที่ระบุ หรือสิทธิ์ 'Administer' ระดับโลก
name- ชื่อ webhook - String ที่จำเป็นurl- URL ของ webhook - String ที่จำเป็นprojectKey- คีย์โปรเจกต์สำหรับ webhook เฉพาะโปรเจกต์ (ไม่บังคับ) - Stringsecret- ความลับของ webhook สำหรับรักษาความปลอดภัย payload ของ webhook (ไม่บังคับ) - String
-
list_webhooks - แสดงรายการ webhooks ทั้งหมดสำหรับองค์กรหรือโปรเจกต์ SonarQube ต้องมีสิทธิ์ 'Administer' บนโปรเจกต์ที่ระบุ หรือสิทธิ์ 'Administer' ระดับโลก
projectKey- คีย์โปรเจกต์เพื่อแสดงรายการ webhooks เฉพาะโปรเจกต์ (ไม่บังคับ) - String
การเสริมบริบท
เครื่องมือสถาปัตยกรรม
-
search_by_signature_patterns - ค้นหาองค์ประกอบโค้ด (คลาส, เมธอด, อินเทอร์เฟซ, ...) ตามลายเซ็นการประกาศโดยใช้รูปแบบ regex
include_code_regex_list- รายการรูปแบบ regex เพื่อจับคู่กับลายเซ็น - String[] ที่จำเป็นexclude_code_regex_list- รายการรูปแบบ regex เพื่อแยกออกจากผลลัพธ์ - String[]include_glob- รูปแบบ glob สำหรับกรองไฟล์ (เช่น*.java) - Stringexclude_glob- รูปแบบ glob สำหรับแยกไฟล์ - Stringfields- รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบสนอง - Stringlimit- จำนวนผลลัพธ์สูงสุดที่จะส่งคืน (ค่าเริ่มต้น: 10) - Integerregex_lists_operator- วิธีรวมหลายรูปแบบ:OR(ค่าเริ่มต้น) หรือAND- String
-
search_by_body_patterns - ค้นหาองค์ประกอบโค้ดตามเนื้อหาการใช้งานโดยใช้รูปแบบ regex มีประโยชน์สำหรับการค้นหาว่า API หรือรูปแบบถูกใช้งานจริงที่ใด
include_code_regex_list- รายการรูปแบบ regex เพื่อจับคู่ในเนื้อหาโค้ด - String[] ที่จำเป็นexclude_code_regex_list- รายการรูปแบบ regex เพื่อแยกออกจากผลลัพธ์ - String[]include_glob- รูปแบบ glob สำหรับกรองไฟล์ - Stringexclude_glob- รูปแบบ glob สำหรับแยกไฟล์ - Stringfields- รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบสนอง - Stringlimit- จำนวนผลลัพธ์สูงสุดที่จะส่งคืน (ค่าเริ่มต้น: 10) - Integerregex_lists_operator- วิธีรวมหลายรูปแบบ:OR(ค่าเริ่มต้น) หรือAND- String
-
get_upstream_call_flow - ติดตามว่าฟังก์ชันใดเรียกฟังก์ชันที่กำหนด มีประโยชน์สำหรับการค้นหาผู้เรียกและจุดเริ่มต้นทั้งหมด และทำความเข้าใจว่าอะไรจะเสียหายหากลายเซ็นเปลี่ยนแปลง
fqn- ชื่อที่ระบุอย่างสมบูรณ์ของฟังก์ชัน - String ที่จำเป็นdepth- ความลึกของห่วงโซ่การเรียก (0=เฉพาะฟังก์ชัน, 1=ผู้เรียกโดยตรง, ฯลฯ) - Integerfields- รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบสนอง - String
-
get_downstream_call_flow - ติดตามว่าฟังก์ชันที่กำหนดเรียกฟังก์ชันใด มีประโยชน์สำหรับการวิเคราะห์ผลกระทบและทำความเข้าใจขั้นตอนการทำงาน
fqn- ชื่อที่ระบุอย่างสมบูรณ์ของฟังก์ชัน - String ที่จำเป็นdepth- ความลึกของห่วงโซ่การเรียก (0=เฉพาะฟังก์ชัน, 1=ผู้ถูกเรียกโดยตรง, ฯลฯ) - Integerfields- รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบสนอง - String
-
get_source_code - รับซอร์สโค้ดที่สมบูรณ์ (ลายเซ็นและเนื้อหา) สำหรับองค์ประกอบโค้ดตามชื่อที่ระบุอย่างสมบูรณ์
fqn- ชื่อที่ระบุอย่างสมบูรณ์ขององค์ประกอบ - String ที่จำเป็นfields- รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบสนอง - String
-
get_type_hierarchy - รับลำดับชั้นการสืบทอดทั้งหมดสำหรับโครงสร้างคลาส (คลาส, อินเทอร์เฟซ, อีเนียม, เรคคอร์ด, เอ็กซ์เซปชัน, สตรัคต์) จำเป็นสำหรับการทำความเข้าใจแผนผังการสืบทอดและการรีแฟกเตอร์
fqn- ชื่อที่ระบุเต็มรูปแบบของโครงสร้างคลาส - String ที่จำเป็นfields- รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบกลับ - String
-
get_references - รับการอ้างอิงโค้ดขาเข้าและขาออกโดยตรงสำหรับคลาสหรือโมดูล คืนค่าเฉพาะการอ้างอิงโดยตรง (ไม่ใช่แบบทรานซิทีฟ)
fqn- ชื่อที่ระบุเต็มรูปแบบของคลาสหรือโมดูล - String ที่จำเป็นfields- รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบกลับ - String
-
get_current_architecture - รับกราฟสถาปัตยกรรมแบบลำดับชั้นที่กรองด้วยคำนำหน้าเส้นทางและความลึก มีประโยชน์สำหรับการสำรวจโครงสร้างโมดูลและการพึ่งพาระดับสูง
depth- ความลึกของลำดับชั้น (0=เฉพาะราก, 1=ราก+ลูก ฯลฯ) - Integer ที่จำเป็นpath_prefix- คำนำหน้าเส้นทางที่ไม่บังคับเพื่อกรองโหนด (เช่นcom.example.service) - Stringecosystem- ระบบนิเวศที่ไม่บังคับเพื่อกรอง (java,cs,py,js,ts) - String
-
get_intended_architecture - รับข้อจำกัดทางสถาปัตยกรรมที่ผู้ใช้กำหนดซึ่งระบุว่าโมดูลใดได้รับอนุญาตให้พึ่งพาโมดูลอื่น
เครื่องมือแนวทาง
- get_guidelines - รับแนวทางการเขียนโค้ดตามปัญหาของโปรเจกต์ SonarQube หมวดหมู่แคตตาล็อก หรือการรวมกันของทั้งสอง
mode- โหมดการดึงแนวทาง:project_based,category_based, หรือcombined- String ที่จำเป็นcategories- รายการชื่อหมวดหมู่ (จำเป็นสำหรับโหมดcategory_basedและcombined) - String[]languages- รายการภาษาเป้าหมายในรูปแบบคีย์ที่เก็บของ SonarQube (จำเป็นเมื่อระบุcategories) - String[]file_paths- รายการเส้นทางไฟล์ที่ไม่บังคับเพื่อกรองแนวทาง - String[]
เครื่องมือการพึ่งพาบุคคลที่สาม
- check_dependency - ตรวจสอบการพึ่งพาบุคคลที่สามสำหรับช่องโหว่ด้านความปลอดภัย มัลแวร์ในซัพพลายเชน และการปฏิบัติตามใบอนุญาตก่อนเพิ่มหรืออัปเดต
purl- URL ของแพ็กเกจ (purl) พร้อมเวอร์ชัน ตาม purl-spec รูปแบบ:pkg:<type>/<namespace>/<name>@<version>(เช่นpkg:npm/lodash@4.17.21,pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1,pkg:pypi/django@3.2.0) - String ที่จำเป็น
ตัวแปรสภาพแวดล้อมการเสริมบริบท
| ตัวแปร | คำอธิบาย | จำเป็น | ค่าเริ่มต้น |
|---|---|---|---|
SONARQUBE_URL | URL ของ SonarQube Cloud | ใช่ | https://sonarcloud.io |
SONARQUBE_TOKEN | โทเค็นการตรวจสอบสิทธิ์ | ใช่ | ไม่มี |
SONARQUBE_ORG | คีย์องค์กรบน SonarQube Cloud | ใช่ | ไม่มี |
SONARQUBE_PROJECT_KEY | คีย์โปรเจกต์บน SonarQube Cloud | ใช่ | ไม่มี |
SONAR_SQ_BRANCH | การแทนที่สาขา SonarQube ที่ชัดเจน * | ไม่ | ไม่มี |
SONARQUBE_DEBUG_ENABLED | เปิดใช้งานการบันทึกดีบัก (สำหรับการแก้ไขปัญหา) | ไม่ | False |
SONAR_LOG_LEVEL | ระดับรายละเอียดการบันทึก (TRACE, DEBUG, INFO, WARNING, ERROR) | ไม่ | INFO |
- ต้องระบุเมื่อไม่ได้ใช้ git หรือเมื่อชื่อสาขา git ไม่ตรงกับชื่อสาขาใน SonarQube
การกำหนดค่าเฉพาะโปรเจกต์ (แนะนำ)
ขั้นแรก ส่งออก ตัวแปรสภาพแวดล้อม SONARQUBE_TOKEN ด้วย Personal Access Token (PAT) ที่ถูกต้องสำหรับโปรเจกต์ของคุณ
# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"
จากนั้น เมานต์เวิร์กสเปซของโปรเจกต์เพื่อให้เซิร์ฟเวอร์การเสริมบริบทเข้าถึงไฟล์ซอร์สของคุณได้โดยตรง:
{
"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"
}
}
}
}
สำคัญ: ในการกำหนดค่าแบบขอบเขตโปรเจกต์ อย่าใส่ SONARQUBE_TOKEN ในบล็อก env ให้ส่งออกเป็นตัวแปรสภาพแวดล้อม (export SONARQUBE_TOKEN=...) แทน Docker จะส่งต่อไปยังคอนเทนเนอร์ผ่าน -e SONARQUBE_TOKEN
ความพร้อมสำหรับ Agentic
หมายเหตุ: เครื่องมือความพร้อมสำหรับ Agentic มีเฉพาะบน SonarQube Cloud และต้องเปิดใช้งานฟีเจอร์สำหรับองค์กรของคุณ
-
start_agentic_readiness_assessment - เริ่มการประเมินความพร้อมสำหรับ agentic สำหรับโปรเจกต์ คืนค่าทันทีด้วยสถานะ
PENDINGและassessmentIdใช้get_agentic_readiness_assessmentเพื่อสอบถามผลลัพธ์projectKey- คีย์โปรเจกต์ - String ที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- สาขาที่จะประเมิน ละเว้นเพื่อใช้สาขาเริ่มต้นของโปรเจกต์ - String
-
get_agentic_readiness_assessment - ดึงผลลัพธ์ของการประเมิน เรียกซ้ำด้วย
assessmentIdเดียวกันจนกว่าสถานะจะเป็นCOMPLETED,FAILED, หรือINTERRUPTEDเมื่อเสร็จสิ้น จะคืนค่าระดับโดยรวมและการแยกย่อยรายเสาหลักพร้อมการดำเนินการที่แนะนำและหลักฐานassessmentId- ID การประเมินที่คืนค่าโดยstart_agentic_readiness_assessment- String ที่จำเป็น
-
list_agentic_readiness_assessments - แสดงรายการการประเมินทั้งหมดสำหรับโปรเจกต์ เรียงจากใหม่ไปเก่า ใช้
get_agentic_readiness_assessmentสำหรับผลลัพธ์ระดับเสาหลักเต็มรูปแบบprojectKey- คีย์โปรเจกต์เพื่อแสดงรายการการประเมิน - String ที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- กรองการประเมินตามชื่อสาขา ละเว้นเพื่อแสดงรายการการประเมินสำหรับทุกสาขา - StringpageIndex- ดัชนีหน้าแบบ 1-based (ค่าเริ่มต้น: 1) - NumberpageSize- จำนวนรายการต่อหน้า สูงสุด 100 (ค่าเริ่มต้น: 50) - Number
ตัวอย่างพรอมต์
เมื่อคุณตั้งค่า SonarQube MCP Server แล้ว นี่คือตัวอย่างพรอมต์สำหรับสถานการณ์จริงทั่วไป:
การแก้ไข Quality Gate ที่ล้มเหลว
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?
การตรวจสอบก่อนเผยแพร่และก่อนรวมโค้ด
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?
การปรับปรุงคุณภาพโค้ด
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?
การทำความเข้าใจและแก้ไขปัญหา
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?
การจัดการความปลอดภัยและการพึ่งพา
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.
ความช่วยเหลือในการตรวจสอบโค้ด
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.
การตรวจสอบสุขภาพโปรเจกต์
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?
การทำงานร่วมกันในทีม
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?
การสร้าง
ควรใช้ อิมเมจคอนเทนเนอร์ sonarsource/sonarqube-mcp
ในการรันเซิร์ฟเวอร์เป็น JAR แบบสแตนด์อโลนโดยไม่ใช้ Docker ให้ดาวน์โหลดบิลด์ที่เผยแพร่ล่วงหน้าจาก ที่เก็บไบนารี SonarSource ทุกเวอร์ชันที่เผยแพร่จะถูกโพสต์ที่นั่นเป็น sonarqube-mcp-server-<version>.jar (ตัวอย่างเช่น sonarqube-mcp-server-1.19.0.2785.jar)
รันจาก JAR
ดาวน์โหลด JAR สำหรับเวอร์ชันที่คุณต้องการจาก ที่เก็บไบนารี จากนั้นกำหนดค่า MCP client ของคุณให้รันด้วย Java 21 หรือใหม่กว่า:
- เพื่อเชื่อมต่อกับ 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>"
}
}
}
- เพื่อเชื่อมต่อกับ 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>"
}
}
}
สร้างจากซอร์ส
SonarQube MCP Server ต้องใช้ Java Development Kit (JDK) เวอร์ชัน 21 หรือใหม่กว่าในการสร้าง
รันคำสั่ง Gradle ต่อไปนี้เพื่อทำความสะอาดโปรเจกต์และสร้างแอปพลิเคชัน:
./gradlew clean build -x test
ไฟล์ JAR จะถูกสร้างใน build/libs/
หลังจากเพิ่มหรืออัปเดตการพึ่งพา ให้สร้างไฟล์ล็อกใหม่:
./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks
ใช้การกำหนดค่า รันจาก JAR ด้านบน โดยชี้ <path_to_sonarqube_mcp_server_jar> ไปที่ JAR ใน build/libs/
การแก้ไขปัญหา
บันทึกแอปพลิเคชันจะถูกเขียนไปยังไฟล์ STORAGE_PATH/logs/mcp.log โดยค่าเริ่มต้น หากต้องการปิดการบันทึกไฟล์ทั้งหมด ให้ตั้งค่า SONARQUBE_LOG_TO_FILE_DISABLED=true
ปัญหาทั่วไป
"SonarQube server version is not supported"
MCP server ตรวจสอบเวอร์ชัน SonarQube Server ที่เชื่อมต่อระหว่างการเริ่มต้น หากอินสแตนซ์เก่ากว่า 2025.1 (SQS) หรือ 25.1 (SQCB) การเริ่มต้นจะล้มเหลวด้วย:
SonarQube server version is not supported, minimal version is SQS 2025.1 or SQCB 25.1
วิธีแก้ไข: อัปเกรด SonarQube Server เป็นเวอร์ชันที่รองรับ การตรวจสอบนี้ใช้เฉพาะเมื่อเชื่อมต่อกับ SonarQube Server (SONARQUBE_URL โดยไม่มี SONARQUBE_ORG) ไม่ใช่ SonarQube Cloud
"Feature is not working" หรือ "Missing tools/functionality"
คุณอาจรันอิมเมจ Docker ที่ล้าสมัย Docker แคชอิมเมจในเครื่อง ดังนั้นคุณจะไม่ได้รับการอัปเดตโดยอัตโนมัติ
วิธีแก้ไข: อัปเดตเป็นเวอร์ชันล่าสุด:
docker pull sonarsource/sonarqube-mcp
หลังจากดึงอิมเมจล่าสุด ให้รีสตาร์ท MCP client ของคุณเพื่อใช้เวอร์ชันที่อัปเดต
คุณสามารถเพิ่มแฟล็ก --pull=always ในคำสั่ง docker run ของคุณเพื่อตรวจสอบและดึงเวอร์ชันล่าสุดเสมอ:
docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp
"I want to pin to a specific version"
เรียกดูแท็กที่มีอยู่ที่ sonarsource/sonarqube-mcp และอ้างอิงเวอร์ชันที่คุณต้องการ:
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
ในการกำหนดค่า MCP client ของคุณ ใช้ sonarsource/sonarqube-mcp:<version> แทน sonarsource/sonarqube-mcp และลบ --pull=always เพื่อให้ Docker ไม่อัปเกรดอิมเมจโดยไม่แจ้งเตือน
ข้อมูลและเทเลเมทรี
เซิร์ฟเวอร์นี้เก็บข้อมูลการใช้งานแบบไม่ระบุตัวตนและส่งไปยัง SonarSource เพื่อช่วยปรับปรุงผลิตภัณฑ์ ไม่มีการเก็บซอร์สโค้ดหรือที่อยู่ IP และ SonarSource จะไม่แบ่งปันข้อมูลกับผู้อื่น การเก็บเทเลเมทรีสามารถปิดได้ด้วยพร็อพเพอร์ตี้ระบบหรือตัวแปรสภาพแวดล้อมต่อไปนี้: TELEMETRY_DISABLED=true คลิก ที่นี่ เพื่อดูตัวอย่างข้อมูลที่เก็บ
ใบอนุญาต
ลิขสิทธิ์ 2025 SonarSource
ได้รับอนุญาตภายใต้ SONAR Source-Available License v1.0 การใช้ SonarQube MCP Server ตามเอกสารนี้เป็นวัตถุประสงค์ที่ไม่แข่งขันและได้รับอนุญาตภายใต้ SSAL
การใช้ SonarQube ผ่าน MCP ของคุณอยู่ภายใต้ SonarQube Cloud Terms of Service หรือ SonarQube Server Terms and Conditions รวมถึงการใช้ข้อมูลผลลัพธ์เพื่อวัตถุประสงค์การพัฒนาซอฟต์แวร์ภายในของคุณเท่านั้น