SonarQube
ทางการให้การผสานรวมกับ SonarQube Server หรือ Cloud อย่างราบรื่น และช่วยให้สามารถวิเคราะห์โค้ดชิ้นส่วนต่างๆ ได้โดยตรงภายในบริบทของเอเจนต์
คุณทำอะไรได้บ้างด้วย SonarQube MCP?
- วิเคราะห์โค้ดสไนปเปต — ขอให้ผู้ช่วยของคุณรัน
analyze_code_snippetบนตัวอย่างโค้ดเพื่อรับผลการวิเคราะห์คุณภาพและความปลอดภัยทันที - จัดการอิสชู — ใช้ชุดเครื่องมือ
issuesเพื่อค้นหา กรอง และอัปเดตอิสชูของ SonarQube ตามความรุนแรง สถานะ หรือโปรเจกต์ - ตรวจสอบ Security Hotspots — คิวรีชุดเครื่องมือ
security-hotspotsเพื่อแสดงรายการ hotspots ที่ต้องตรวจสอบและเข้าใจความเสี่ยง - ตรวจสอบ Quality Gates — ถามสถานะ
quality-gatesของโปรเจกต์เพื่อดูว่าผ่านเกณฑ์คุณภาพหรือไม่ - ดึงเมตริกโปรเจกต์ — ดึงข้อมูล
measuresเช่น coverage และ duplications หรือเรียกดูโปรเจกต์ผ่านชุดเครื่องมือprojects
เอกสาร
เซิร์ฟเวอร์ 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 พร้อมใช้งานใน Antigravity MCP Store ทำตามขั้นตอนเหล่านี้:
- เปิด แผงด้านข้างของเอเจนต์ (Agent Side Panel)
- คลิกที่จุดสามจุด (...) ที่มุมขวาบนแล้วเลือก MCP Servers
- ค้นหา
SonarQubeแล้วเลือก ติดตั้ง (Install) - ระบุโทเค็นผู้ใช้ 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 ของคุณ ไปที่ Settings -> Copilot -> Coding agent และเพิ่มคอนฟิกูเรชันต่อไปนี้ในส่วนคอนฟิกูเรชัน 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 ทำตามขั้นตอนเหล่านี้:
- เปิด Settings ของ Windsurf > Cascade > MCP Servers แล้วเลือก Open MCP Marketplace
- ค้นหา
sonarqubeใน Cascade MCP Marketplace - เลือก SonarQube MCP Server แล้วเลือก ติดตั้ง (Install)
- เพิ่มโทเค็นผู้ใช้ SonarQube ที่จำเป็น จากนั้นเพิ่มคีย์องค์กรหากคุณต้องการเชื่อมต่อกับ SonarQube Cloud หรือ URL ของ SonarQube หากคุณต้องการเชื่อมต่อกับ SonarQube Server หรือ Community Build
สำหรับ SonarQube Cloud US ให้ตั้งค่า URL เป็น https://sonarqube.us
Zed
ไปที่มุมมอง Extensions ใน 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 มีปุ่มติดตั้งด่วน (Quick Install) ซึ่งจะตั้งค่าคอนฟิกูเรชันพอร์ตที่ถูกต้องให้โดยอัตโนมัติ
ตัวอย่างเช่น กับ 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— เซิร์ฟเวอร์จะแก้ไขไฟล์ในลักษณะเดียวกัน
การเปิดใช้งานชุดเครื่องมือแบบเลือก
โดยค่าเริ่มต้น จะเปิดใช้งานเฉพาะชุดเครื่องมือที่สำคัญเท่านั้นเพื่อลดค่าใช้จ่ายของบริบท คุณสามารถเปิดใช้งานชุดเครื่องมือเพิ่มเติมได้ตามต้องการ
| Environment variable | Description |
|---|---|
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 และใช้สิทธิ์องค์กรแบบรวมร่วมกัน — องค์กรต้องมีสิทธิ์ทั้งสองอย่างจึงจะใช้อย่างใดอย่างหนึ่งได้ การเข้าถึงผ่านคีย์ชุดเครื่องมือ cag หรือ analysis ถูกเลิกใช้งานแล้ว แนะนำให้ใช้คีย์ชุดเครื่องมือแบบรวม vortex คีย์เก่ายังคงทำงานเพื่อความเข้ากันได้ย้อนหลัง แต่จะมีการแจ้งเตือนเมื่อเริ่มต้นและหมายเหตุการเลิกใช้งานในคำแนะนำเซิร์ฟเวอร์ทุกครั้งที่ใช้โดยไม่มี vortex ในโหมด Streamable HTTP ไคลเอนต์สามารถส่งส่วนหัว HTTP SONARQUBE_TOOLSETS เพื่อจำกัดเพิ่มเติมต่อคำขอ แต่ไม่สามารถเปิดใช้งานชุดเครื่องมือเกินกว่าที่เซิร์ฟเวอร์เริ่มต้นได้ (ดู การขนส่ง HTTP แบบสตรีม ด้านล่าง) |
SONARQUBE_READ_ONLY | เมื่อตั้งค่าเป็น true จะเปิดใช้งานโหมดอ่านอย่างเดียวซึ่งปิดการดำเนินการเขียนทั้งหมด (เช่น การเปลี่ยนสถานะปัญหา) ตัวกรองนี้สะสมร่วมกับ SONARQUBE_TOOLSETS หากตั้งค่าทั้งสอง ค่าเริ่มต้น: false ในโหมด Streamable HTTP ไคลเอนต์สามารถส่งส่วนหัว HTTP SONARQUBE_READ_ONLY เพื่อจำกัดคำขอแต่ละรายการให้เป็นอ่านอย่างเดียวเพิ่มเติม แต่ไม่สามารถยกเลิกข้อจำกัดการอ่านอย่างเดียวระดับเซิร์ฟเวอร์ได้ (ดู การขนส่ง HTTP แบบสตรีม ด้านล่าง) |
ชุดเครื่องมือที่มี
| Toolset | Key | Description |
|---|---|---|
| การวิเคราะห์ | analysis | เครื่องมือวิเคราะห์โค้ด (การวิเคราะห์ในเครื่องผ่าน analyze_code_snippet, เลิกใช้งาน แนะนำให้ใช้ analyze_file_list/การวิเคราะห์ Vortex) |
| IDE | ide | เครื่องมือเชื่อมต่อ SonarQube สำหรับ IDE (การวิเคราะห์ไฟล์, การสลับการวิเคราะห์อัตโนมัติ) — ปัจจุบันรวมอยู่ใน analysis ด้วย |
| ปัญหา | issues | ค้นหาและจัดการปัญหาของ SonarQube |
| จุดเสี่ยงด้านความปลอดภัย | security-hotspots | ค้นหาและตรวจสอบจุดเสี่ยงด้านความปลอดภัย |
| โปรเจกต์ | projects | เรียกดูและค้นหาโปรเจกต์ของ SonarQube |
| ประตูคุณภาพ | quality-gates | เข้าถึงประตูคุณภาพและสถานะของมัน |
| กฎ | rules | เรียกดูและค้นหากฎของ SonarQube |
| ซอร์สโค้ด | sources | เข้าถึงซอร์สโค้ดและข้อมูล SCM |
| การซ้ำซ้อน | duplications | ค้นหาการซ้ำซ้อนของโค้ดในโปรเจกต์ต่างๆ |
| การวัด | measures | ดึงข้อมูลเมตริกและการวัด (รวมทั้งเครื่องมือวัดและเมตริก) |
| ภาษา | languages | แสดงรายการภาษาการเขียนโปรแกรมที่รองรับ |
| พอร์ตโฟลิโอ | portfolios | จัดการพอร์ตโฟลิโอและองค์กร (Cloud และ Server) |
| ระบบ | system | เครื่องมือการดูแลระบบ (เฉพาะ Server) |
| เว็บฮุก | webhooks | จัดการเว็บฮุก |
| ความเสี่ยงจากดีเพนเดนซี | dependency-risks | วิเคราะห์ความเสี่ยงจากดีเพนเดนซีและปัญหาความปลอดภัย (SCA) |
| ความครอบคลุม | coverage | เครื่องมือวิเคราะห์และปรับปรุงความครอบคลุมของการทดสอบ |
| บริบท Vortex | cag | เครื่องมือบริบท Vortex — เฉพาะ stdio เลิกใช้งาน แนะนำให้ใช้ vortex (ชื่อเดิม: Context Augmentation/CAG) |
| Vortex | vortex | ชุดเครื่องมือแบบรวม แนะนำ ที่แสดงทั้งเครื่องมือบริบท Vortex และการวิเคราะห์ Vortex ภายใต้ชื่อเดียว (เฉพาะ stdio ต้องมีสิทธิ์ขององค์กรรวม) |
| ความพร้อมเชิงเอเจนต์ | agentic-readiness | เครื่องมือประเมินความพร้อมเชิงเอเจนต์ (SonarQube Cloud ต้องมีสิทธิ์ขององค์กร) |
ตัวอย่าง
เปิดใช้งานชุดเครื่องมือการวิเคราะห์ ปัญหา และประตูคุณภาพ (ใช้ 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
เพื่อเปิดใช้งานฟังก์ชันทั้งหมด ต้องตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้ก่อนเริ่มเซิร์ฟเวอร์:
| Environment variable | Description | Required |
|---|---|---|
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
| Environment variable | Description | Required |
|---|---|---|
SONARQUBE_TOKEN | โทเคน USER ของ SonarQube Server ของคุณ | ใช่ |
SONARQUBE_URL | URL ของ SonarQube Server ของคุณ | ใช่ |
⚠️ การเชื่อมต่อกับ SonarQube Server ต้องใช้โทเคนประเภท USER และจะทำงานไม่ถูกต้องหากใช้โทเคนโปรเจกต์หรือโทเคนทั่วโลก 💡 เคล็ดลับการกำหนดค่า (โหมด stdio): การมีอยู่ของ
SONARQUBE_ORGกำหนดว่าคุณกำลังเชื่อมต่อกับ SonarQube Cloud หรือ Server ถ้าSONARQUBE_ORGถูกตั้งค่า จะใช้ SonarQube Cloud มิฉะนั้นจะใช้ SonarQube Server
โหมดการขนส่ง (Transport Modes)
ข้อกำหนด MCP กำหนดกลไกการขนส่งสองแบบ: Stdio และ Streamable HTTP เซิร์ฟเวอร์ SonarQube MCP รองรับทั้งสองแบบ:
| การขนส่ง MCP | โหมดเซิร์ฟเวอร์ | การใช้งานทั่วไป |
|---|---|---|
| Stdio | ค่าเริ่มต้น (ไม่มี SONARQUBE_TRANSPORT) | ไคลเอนต์ MCP ในเครื่องที่เปิดเซิร์ฟเวอร์เป็นโปรเซสย่อย (Cursor, Claude Code, VS Code, ฯลฯ) |
| Streamable HTTP | SONARQUBE_TRANSPORT=http หรือ https | การใช้งานระยะไกลหรือหลายผู้ใช้; ไคลเอนต์เชื่อมต่อกับ /mcp ผ่าน HTTP(S) (เช่น Windsurf พร้อม URL เซิร์ฟเวอร์ที่โฮสต์เอง) |
หมายเหตุ: Streamable HTTP คือการขนส่งเครือข่าย MCP ในปัจจุบัน การขนส่ง HTTP แบบ SSE เท่านั้นจากเวอร์ชัน MCP ก่อนหน้าถูกเลิกใช้งานและไม่รองรับ
1. Stdio (ค่าเริ่มต้น - แนะนำสำหรับการพัฒนาท้องถิ่น)
โหมดที่แนะนำสำหรับการพัฒนาท้องถิ่นและการตั้งค่าแบบผู้ใช้คนเดียว ใช้โดยไคลเอนต์ MCP ส่วนใหญ่
ตัวอย่าง - 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 อื่น ๆ (Podman, Kubernetes, Nomad, ฯลฯ) | false |
หมายเหตุ: ในโหมด Streamable HTTP (HTTP หรือ HTTPS) เซิร์ฟเวอร์ไม่มีสถานะ — คำขอแต่ละรายการจากไคลเอนต์ต้องมีส่วนหัว Authorization: Bearer <token> พร้อมโทเค็น SonarQube ของผู้ใช้เอง สำหรับ SonarQube Cloud องค์กรจะถูกกำหนดดังนี้:
- ถ้า
SONARQUBE_ORGถูกตั้งค่าเมื่อเริ่มเซิร์ฟเวอร์ คำขอทั้งหมดจะถูกส่งไปยังองค์กรนั้น ไคลเอนต์ต้อง ไม่ ส่งส่วนหัวSONARQUBE_ORG— การทำเช่นนั้นจะทำให้เกิดข้อผิดพลาด - ถ้า
SONARQUBE_ORGไม่ถูกตั้งค่าเมื่อเริ่มเซิร์ฟเวอร์ ไคลเอนต์แต่ละราย ต้อง ส่งส่วนหัวSONARQUBE_ORGในทุกคำขอ ไคลเอนต์ยังสามารถจำกัดเครื่องมือที่มองเห็นได้ต่อคำขอโดยส่งส่วนหัวSONARQUBE_TOOLSETSและ/หรือSONARQUBE_READ_ONLY; ส่วนหัวเหล่านี้ใช้การกรองเพิ่มเติมเหนือการกำหนดค่าระดับเซิร์ฟเวอร์ — สามารถลดขอบเขตได้เท่านั้น ไม่สามารถขยายได้ ไม่มีสถานะเซสชันระหว่างคำขอ
เลิกใช้งาน: ส่วนหัวคำขอ
SONARQUBE_TOKENยังคงรองรับเพื่อความเข้ากันได้ย้อนหลัง แต่จะถูกลบในเวอร์ชันอนาคต ย้ายไปใช้Authorization: Bearer <token>
3. HTTPS (Streamable HTTP over TLS) (แนะนำสำหรับการใช้งานจริงหลายผู้ใช้)
การขนส่ง Streamable HTTP ที่ปลอดภัยด้วยการเข้ารหัส TLS ต้องใช้ใบรับรอง SSL
✅ แนะนำสำหรับการใช้งานจริง: ใช้ HTTPS เมื่อปรับใช้เซิร์ฟเวอร์ MCP สำหรับผู้ใช้หลายคนผ่าน 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 อื่น ๆ (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เพื่อให้คอนเทนเนอร์ฟังบนอินเทอร์เฟซทั้งหมดและการแมปพอร์ตของรันไทม์ทำงาน และตั้งSONARQUBE_MCP_IN_CONTAINER=trueเพื่อบอกเซิร์ฟเวอร์ว่าอยู่ในคอนเทนเนอร์ อิมเมจ Docker อย่างเป็นทางการตั้งค่านี้โดยอัตโนมัติ; ตั้งด้วยตัวเองเมื่อใช้รันไทม์ OCI อื่น ๆ (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
การกำหนดค่าไคลเอนต์ (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"
}
}
}
}
การกำหนดค่าไคลเอนต์ (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 ที่เหมาะสม
เอ็นด์พอยต์บริการ
เมื่อรันในโหมด Streamable HTTP (http หรือ https) เซิร์ฟเวอร์จะเปิดเอ็นด์พอยต์บริการที่ไม่ต้องรับรองความถูกต้องเพิ่มเติมนอกเหนือจากเอ็นด์พอยต์ MCP ที่ /mcp เอ็นด์พอยต์เหล่านี้มีไว้สำหรับการใช้งานจากบริการหนึ่งไปยังอีกบริการหนึ่ง (การตรวจสอบ การจัดออร์เคสตรา การตรวจสอบความเข้ากันได้ของไคลเอนต์) และไม่ต้องใช้ส่วนหัว Authorization
| เอ็นด์พอยต์ | เมธอด | คำอธิบาย | ตัวอย่างการตอบสนอง |
|---|---|---|---|
/health | GET | การตรวจสอบการมีชีวิต คืนค่า 200 OK พร้อมเนื้อหาว่างเมื่อเซิร์ฟเวอร์พร้อมรับคำขอ | (เนื้อหาว่าง) |
/info | GET | คืนค่าเวอร์ชันเซิร์ฟเวอร์ MCP เป็น JSON มีประโยชน์สำหรับการตรวจสอบเวอร์ชันเซิร์ฟเวอร์ที่ปรับใช้ | {"version":"1.16.0"} |
เอ็นด์พอยต์เหล่านี้ไม่พร้อมใช้งานเมื่อรันด้วยการขนส่ง Stdio
ใบรับรองแบบกำหนดเอง
หากเซิร์ฟเวอร์ SonarQube ของคุณใช้ใบรับรองที่เซ็นชื่อเองหรือใบรับรองจากหน่วยงานออกใบรับรอง (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 แทนคอนเทนเนอร์? การเมานต์ volume ด้านบนติดตั้งใบรับรองลงในที่เก็บความไว้วางใจของ OS ของคอนเทนเนอร์ ซึ่งเซิร์ฟเวอร์อ่านเช่นกัน หากคุณไม่สามารถใช้ที่เก็บความไว้วางใจของ 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 รองรับพร็อกซี 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 Proxy
รองรับพร็อกซี 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 keystore โดยการเมานต์ลงในคอนเทนเนอร์และส่งตำแหน่งผ่าน JAVA_OPTS
การตั้งค่า
การใช้ PKCS12 keystore
วางไฟล์ .p12 หรือ .pfx ของคุณลงในคอนเทนเนอร์และตั้งค่าตัวแปรสภาพแวดล้อม JAVA_OPTS ด้วยคุณสมบัติของ 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
หมายเหตุ: ไฟล์ใบรับรองต้องสามารถอ่านได้โดยกระบวนการของคอนเทนเนอร์ ตรวจสอบและแก้ไขสิทธิ์หากจำเป็น:
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
ละเว้น -Djavax.net.ssl.keyStorePassword หาก keystore ไม่มีรหัสผ่าน โปรดทราบว่ารหัสผ่านที่ใช้ที่นี่จะมองเห็นได้ผ่าน 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 keystore กับ JAR แบบสแตนด์อโลน
เมื่อรันเซิร์ฟเวอร์ จาก JAR ให้ส่งคุณสมบัติ keystore เป็นอาร์กิวเมนต์ 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 หาก keystore ไม่มีรหัสผ่าน
การกำหนดค่า 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 - String ที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)filePath- เส้นทางสัมพัทธ์ของไฟล์ที่ต้องการวิเคราะห์ (เช่นsrc/main/java/MyClass.java) ใช้เมื่อเมานต์เวิร์กสเปซที่/app/mcp-workspace- StringfileContent- เนื้อหาไฟล์ทั้งหมดเป็นสตริง จำเป็นเมื่อไม่ได้เมานต์เวิร์กสเปซ - StringcodeSnippet- สไนปเพตโค้ดเพื่อกรองปัญหา (ต้องตรงกับเนื้อหาในไฟล์คอนเทนต์) - Stringlanguage- ภาษาของโค้ด (เช่น 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Stringscope- ขอบเขตของไฟล์: MAIN หรือ TEST (ค่าเริ่มต้น: MAIN) - String
ภาษาที่รองรับ: 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- เปิดหรือปิดการวิเคราะห์อัตโนมัติ - Boolean ที่จำเป็น
เมื่อเปิดใช้งานการวิเคราะห์ Vortex สำหรับองค์กร SonarQube Cloud ของคุณ:
ต้องมีการเมานต์เวิร์กสเปซที่
/app/mcp-workspace
- run_advanced_code_analysis - รันการวิเคราะห์ Vortex บน SonarQube Cloud สำหรับไฟล์เดียว องค์กรจะถูกอนุมานจากการกำหนดค่า MCP
projectKey- คีย์ของโปรเจกต์ - String ที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- ชื่อแบรนช์ที่ใช้ดึงบริบทการวิเคราะห์ล่าสุด - String ที่จำเป็นfilePath- เส้นทางสัมพัทธ์ของไฟล์ที่ต้องการวิเคราะห์ (เช่นsrc/main/java/MyClass.java) - String ที่จำเป็นfileScope- กำหนดขอบเขตที่ไฟล์มาจาก: 'MAIN' หรือ 'TEST' (ค่าเริ่มต้น: MAIN) - String
ความครอบคลุม
-
search_files_by_coverage - ค้นหาไฟล์ในโปรเจกต์เรียงตามความครอบคลุม (จากน้อยไปมาก - ความครอบคลุมต่ำสุดก่อน) เครื่องมือนี้ช่วยระบุไฟล์ที่ต้องการปรับปรุงความครอบคลุมของการทดสอบ
projectKey- คีย์โปรเจกต์ที่ต้องการค้นหา - String ที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- ชื่อแบรนช์สำหรับการวิเคราะห์ตามแบรนช์ ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringpullRequest- คีย์/ID ของพูลรีเควสต์ ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - StringmaxCoverage- เกณฑ์ความครอบคลุมสูงสุด (0-100) คืนเฉพาะไฟล์ที่มีความครอบคลุม <= ค่านี้ - NumberpageIndex- ดัชนีหน้า (เริ่มที่ 1, ค่าเริ่มต้น: 1) - NumberpageSize- ขนาดหน้า (ค่าเริ่มต้น: 100, สูงสุด: 500) - Number
-
get_file_coverage_details - รับข้อมูลความครอบคลุมแบบทีละบรรทัดสำหรับไฟล์เฉพาะ รวมถึงบรรทัดที่ไม่ครอบคลุมและสาขาที่ครอบคลุมบางส่วน เครื่องมือนี้ช่วยระบุตำแหน่งที่แน่นอนที่ควรเพิ่มความครอบคลุมของการทดสอบ ใช้หลังจากระบุไฟล์ที่มีความครอบคลุมต่ำผ่าน search_files_by_coverage
key- คีย์ไฟล์ (เช่น my_project:src/foo/Bar.java) - String ที่จำเป็นbranch- ชื่อแบรนช์สำหรับการวิเคราะห์ตามแบรนช์ ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringpullRequest- คีย์/ID ของพูลรีเควสต์ ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - Stringfrom- บรรทัดแรกที่วิเคราะห์ (เริ่มที่ 1, ค่าเริ่มต้น: 1) - Numberto- บรรทัดสุดท้ายที่วิเคราะห์ (รวม) หากไม่ระบุ จะคืนทุกบรรทัด - Number
ความเสี่ยงจาก Dependency
หมายเหตุ: ความเสี่ยงจาก Dependency มีเฉพาะเมื่อเชื่อมต่อกับ SonarQube Server 2025.4 Enterprise หรือสูงกว่าที่เปิดใช้งาน SonarQube Advanced Security
- search_dependency_risks - ค้นหาปัญหาการวิเคราะห์องค์ประกอบซอฟต์แวร์ (ความเสี่ยงจาก dependency) ของโปรเจกต์ SonarQube พร้อมกับรีลีสที่ปรากฏในโปรเจกต์ แอปพลิเคชัน หรือพอร์ตโฟลิโอที่วิเคราะห์
projectKey- คีย์โปรเจกต์ - String ที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- ชื่อแบรนช์สำหรับการวิเคราะห์ตามแบรนช์ ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringpullRequest- คีย์/ID ของพูลรีเควสต์ ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - StringpageIndex- ดัชนีหน้า (เริ่มที่ 1, ค่าเริ่มต้น: 1) - IntegerpageSize- ขนาดหน้า ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - Integer
องค์กร
หมายเหตุ: องค์กรมีเฉพาะเมื่อเชื่อมต่อกับ SonarQube Cloud
- list_enterprises - แสดงรายการองค์กรที่พร้อมใช้งานใน SonarQube Cloud ที่คุณมีสิทธิ์เข้าถึง ใช้เครื่องมือนี้เพื่อค้นหา ID องค์กรที่สามารถใช้กับเครื่องมืออื่นได้
enterpriseKey- คีย์องค์กรที่เลือกเพื่อกรองผลลัพธ์ - String
ปัญหา
-
change_sonar_issue_status - เปลี่ยนสถานะของปัญหาของ SonarQube เป็น "accept", "falsepositive" หรือ "reopen"
key- คีย์ปัญหา - String ที่จำเป็นstatus- สถานะใหม่ของปัญหา - Enum ที่จำเป็น {"accept", "falsepositive", "reopen"}
-
search_sonar_issues_in_projects - ค้นหาปัญหาของ SonarQube ในโปรเจกต์ขององค์กร
projectKeys- รายการคีย์โปรเจกต์ SonarQube (ไม่บังคับ) - String[]branch- ชื่อแบรนช์สำหรับการวิเคราะห์ตามแบรนช์ ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringpullRequest- คีย์/ID ของพูลรีเควสต์ ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - Stringseverities- รายการระดับความรุนแรงเพื่อกรอง (ไม่บังคับ) ค่าที่เป็นไปได้: INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]impactSoftwareQualities- รายการคุณภาพซอฟต์แวร์เพื่อกรอง (ไม่บังคับ) ค่าที่เป็นไปได้: MAINTAINABILITY, RELIABILITY, SECURITY - String[]issueStatuses- รายการสถานะของปัญหาเพื่อกรอง (ไม่บังคับ) ค่าที่เป็นไปได้: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]issueKey- คีย์ปัญหาเพื่อดึงปัญหาที่เฉพาะเจาะจง (ไม่บังคับ) - StringpageIndex- ดัชนีหน้า (เริ่มที่ 1, ค่าเริ่มต้น: 1) - IntegerpageSize- ขนาดหน้า ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - Integer
Security Hotspots
-
search_security_hotspots - ค้นหา Security Hotspots ในโปรเจกต์ SonarQube
projectKey- คีย์โปรเจกต์หรือแอปพลิเคชัน - String ที่จำเป็น (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)hotspotKeys- รายการคีย์ Security Hotspot เฉพาะที่คั่นด้วยเครื่องหมายจุลภาคเพื่อดึงข้อมูล - String[]branch- ชื่อแบรนช์สำหรับการวิเคราะห์ตามแบรนช์ ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringpullRequest- คีย์/ID ของพูลรีเควสต์ ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - Stringfiles- รายการเส้นทางไฟล์เพื่อกรอง (ไม่บังคับ) - String[]status- ตัวกรองสถานะ: TO_REVIEW, REVIEWED - Stringresolution- ตัวกรองความละเอียด: FIXED, SAFE, ACKNOWLEDGED - StringsinceLeakPeriod- กรอง Hotspots ที่สร้างตั้งแต่ช่วง leak period (โค้ดใหม่) - BooleanonlyMine- แสดงเฉพาะ Hotspots ที่ถูกกำหนดให้ฉัน - BooleanpageIndex- ดัชนีหน้า (เริ่มที่ 1, ค่าเริ่มต้น: 1) - IntegerpageSize- ขนาดหน้า ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - Integer
-
show_security_hotspot - รับข้อมูลโดยละเอียดของ Security Hotspot เฉพาะ รวมถึงรายละเอียดกฎ บริบทโค้ด โฟลว์ และความคิดเห็น
hotspotKey- คีย์ Security Hotspot - String ที่จำเป็น
-
change_security_hotspot_status - ตรวจสอบ Security Hotspot โดยเปลี่ยนสถานะ เมื่อทำเครื่องหมายเป็น REVIEWED ต้องระบุความละเอียด (FIXED, SAFE, หรือ ACKNOWLEDGED)
hotspotKey- คีย์ Security Hotspot - String ที่จำเป็นstatus- สถานะใหม่ - Enum ที่จำเป็น {"TO_REVIEW", "REVIEWED"}resolution- ความละเอียดเมื่อสถานะเป็น REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}comment- ความคิดเห็นการตรวจสอบ (ไม่บังคับ) - String
ภาษา
- list_languages - แสดงรายการภาษาโปรแกรมทั้งหมดที่รองรับในอินสแตนซ์ SonarQube นี้
q- รูปแบบเพื่อจับคู่คีย์/ชื่อภาษา (ไม่บังคับ) - String
Measures
- get_component_measures - รับ measures ของ SonarQube สำหรับคอมโพเนนต์ (โปรเจกต์ ไดเรกทอรี ไฟล์)
projectKey- คีย์โปรเจกต์ - String ที่จำเป็นเมื่อไม่ได้กำหนดSONARQUBE_PROJECT_KEYbranch- ชื่อแบรนช์สำหรับการวิเคราะห์ตามแบรนช์ ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringmetricKeys- คีย์เมตริกที่ต้องการดึงข้อมูล (เช่น ncloc, complexity, violations, coverage) - String[]pullRequest- คีย์/ID ของพูลรีเควสต์ ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - String
เมตริก
- search_metrics - ค้นหาเมตริกของ SonarQube
pageIndex- ดัชนีหน้า (เริ่มที่ 1, ค่าเริ่มต้น: 1) - IntegerpageSize- ขนาดหน้า ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - Integer
Portfolios
-
list_portfolios - แสดงรายการพอร์ตโฟลิโอระดับองค์กรที่มีใน SonarQube พร้อมตัวเลือกการกรองและการแบ่งหน้า
สำหรับ SonarQube Server:
q- คิวรีค้นหาเพื่อกรองพอร์ตโฟลิโอตามชื่อหรือคีย์ (ไม่บังคับ) - Stringfavorite- หากเป็น true จะส่งคืนเฉพาะพอร์ตโฟลิโอที่โปรดปราน (ไม่บังคับ) - BooleanpageIndex- หมายเลขหน้าแบบ 1-based (ไม่บังคับ, ค่าเริ่มต้น: 1) - IntegerpageSize- ขนาดหน้า (ไม่บังคับ, สูงสุด 500, ค่าเริ่มต้น: 100) - Integer
สำหรับ SonarQube Cloud:
enterpriseId- Enterprise uuid. ละเว้นได้ก็ต่อเมื่อระบุพารามิเตอร์ 'favorite' เป็น true - Stringq- คิวรีค้นหาเพื่อกรองพอร์ตโฟลิโอตามชื่อ (ไม่บังคับ) - Stringfavorite- ต้องเป็น true หากละเว้นพารามิเตอร์ 'enterpriseId' ถ้าเป็น true จะส่งคืนเฉพาะพอร์ตโฟลิโอที่ถูกโปรดปรานโดยผู้ใช้ที่เข้าสู่ระบบ ไม่สามารถเป็น true เมื่อ 'draft' เป็น true - Booleandraft- หากเป็น true จะส่งคืนเฉพาะฉบับร่างที่สร้างโดยผู้ใช้ที่เข้าสู่ระบบ ไม่สามารถเป็น true เมื่อ 'favorite' เป็น true - BooleanpageIndex- ดัชนีของหน้าที่จะดึง (ไม่บังคับ, ค่าเริ่มต้น: 1) - IntegerpageSize- ขนาดของหน้าที่จะดึง (ไม่บังคับ, ค่าเริ่มต้น: 50) - Integer
โปรเจกต์
-
search_my_sonarqube_projects - ค้นหาโปรเจกต์ SonarQube การตอบสนองถูกแบ่งหน้า
pageIndex- ดัชนีหน้าแบบ 1-based (ไม่บังคับ, ค่าเริ่มต้น: 1) - IntegerpageSize- ขนาดหน้า (ไม่บังคับ) ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 500) - Integerq- คิวรีค้นหาเพื่อกรองโปรเจกต์ตามชื่อ (การจับคู่บางส่วน) หรือคีย์ (การจับคู่แบบตรงทั้งหมด) (ไม่บังคับ) - String
-
list_branches - แสดงรายการสาขาที่ได้รับการวิเคราะห์สำหรับโปรเจกต์
- SonarQube Cloud: ส่งคืนสาขาแบบมีอายุยาว (
LONG) และแบบมีอายุสั้น (SHORT) พร้อมฟิลด์typeและmergeBranchตัวกรองbranchTypesเพิ่มเติม (ไม่บังคับ):ALL(ค่าเริ่มต้น),LONG, หรือSHORT - SonarQube Server: ส่งคืนสาขาที่ได้รับการวิเคราะห์ทั้งหมด (ชื่อ, สถานะคุณภาพเกต, วันที่วิเคราะห์) ไม่มีตัวกรอง
type,mergeBranch, หรือbranchTypes - ใช้ชื่อสาขาที่ส่งคืนเป็นพารามิเตอร์
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: ส่งคืนสาขาแบบมีอายุยาว (
-
list_pull_requests - แสดงรายการ pull requests ทั้งหมดสำหรับโปรเจกต์ ใช้เครื่องมือนี้เพื่อค้นหา pull requests สำหรับการวิเคราะห์ที่ตกแต่งด้วย PR (ความครอบคลุม, ปัญหา, คุณภาพเกต) ส่งคืนคีย์/ID ของ pull request ซึ่งสามารถใช้กับเครื่องมืออื่น ๆ สำหรับการวิเคราะห์แบบใช้สาขาที่ไม่มี pull requests ใช้
list_branchesแทนprojectKey- คีย์โปรเจกต์ (เช่น my_project) - String ที่จำเป็น (ถูกละเว้นเมื่อกำหนดSONARQUBE_PROJECT_KEY)
คุณภาพเกต
-
get_project_quality_gate_status - รับสถานะคุณภาพเกตสำหรับโปรเจกต์ SonarQube
analysisId- ID การวิเคราะห์ (ไม่บังคับ) - Stringbranch- ชื่อสาขาสำหรับการวิเคราะห์แบบใช้สาขา (ไม่บังคับ) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringprojectId- ID โปรเจกต์ (ไม่บังคับ) - StringprojectKey- คีย์โปรเจกต์ (ไม่บังคับ) - StringpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - String
-
list_quality_gates - แสดงรายการคุณภาพเกตทั้งหมดใน SonarQube ของฉัน
กฎ
- show_rule - แสดงข้อมูลโดยละเอียดเกี่ยวกับกฎของ SonarQube
key- คีย์กฎ - String ที่จำเป็น
การทำซ้ำ (Duplications)
-
search_duplicated_files - ค้นหาไฟล์ที่มีการทำซ้ำของโค้ดในโปรเจกต์ SonarQube โดยค่าเริ่มต้น จะดึงไฟล์ที่ซ้ำกันทั้งหมดโดยอัตโนมัติทุกหน้า (สูงสุด 10,000 ไฟล์) ส่งคืนเฉพาะไฟล์ที่มีการทำซ้ำ
projectKey- คีย์โปรเจกต์ - String ที่จำเป็น (ถูกละเว้นเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- ชื่อสาขาสำหรับการวิเคราะห์แบบใช้สาขา (ไม่บังคับ) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - StringpageSize- จำนวนผลลัพธ์ต่อหน้าสำหรับการแบ่งหน้าด้วยตนเอง (สูงสุด: 500) หากไม่ระบุ จะดึงไฟล์ซ้ำทั้งหมดโดยอัตโนมัติ - IntegerpageIndex- หมายเลขหน้าสำหรับการแบ่งหน้าด้วยตนเอง (เริ่มต้นที่ 1) หากไม่ระบุ จะดึงไฟล์ซ้ำทั้งหมดโดยอัตโนมัติ - Integer
-
get_duplications - รับการทำซ้ำสำหรับไฟล์ ต้องมีสิทธิ์ Browse ในโปรเจกต์ของไฟล์
key- คีย์ไฟล์ - String ที่จำเป็นbranch- ชื่อสาขาสำหรับการวิเคราะห์แบบใช้สาขา (ไม่บังคับ) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - String
แหล่งที่มา
-
get_raw_source - รับซอร์สโค้ดเป็นข้อความดิบจาก SonarQube ต้องมีสิทธิ์ 'See Source Code' บนไฟล์
key- คีย์ไฟล์ - String ที่จำเป็นbranch- ชื่อสาขาสำหรับการวิเคราะห์แบบใช้สาขา (ไม่บังคับ) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - String
-
get_scm_info - รับข้อมูล SCM ของไฟล์ต้นฉบับ SonarQube ต้องมีสิทธิ์ See Source Code บนโปรเจกต์ของไฟล์
key- คีย์ไฟล์ - String ที่จำเป็นcommits_by_line- จัดกลุ่มบรรทัดตามคอมมิต SCM หากเป็น false ไม่เช่นนั้นจะแสดงคอมมิตสำหรับแต่ละบรรทัด - 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- ความลับ (secret) ของ webhook สำหรับรักษาความปลอดภัยของ payload (ไม่บังคับ) - 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 - รับลำดับชั้นการสืบทอดทั้งหมดสำหรับโครงสร้างคล้ายคลาส (คลาส, อินเทอร์เฟส, enum, record, exception, struct) จำเป็นสำหรับการทำความเข้าใจแผนผังการสืบทอดและการรีแฟกเตอร์
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` - _Required String_ - `categories` - รายการชื่อหมวดหมู่ (จำเป็นสำหรับโหมด `category_based` และ `combined`) - _String[]_ - `languages` - รายการภาษาเป้าหมายในรูปแบบคีย์รีโพซิทอรีของ SonarQube (จำเป็นเมื่อระบุ `categories`) - _String[]_ - `file_paths` - รายการเส้นทางไฟล์ที่ไม่บังคับเพื่อกรองแนวทาง - _String[]_เครื่องมือ Dependency ของบุคคลที่สาม
- check_dependency - ตรวจสอบ dependency ของบุคคลที่สามสำหรับช่องโหว่ด้านความปลอดภัย มัลแวร์ในซัพพลายเชน และการปฏิบัติตามใบอนุญาตก่อนเพิ่มหรืออัปเดต
purl- Package 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) - Required String
ตัวแปรสภาพแวดล้อมสำหรับ Context Augmentation
| ตัวแปร | คำอธิบาย | จำเป็น | ค่าเริ่มต้น |
|---|---|---|---|
SONARQUBE_URL | URL ของ SonarQube Cloud | ใช่ | https://sonarcloud.io |
SONARQUBE_TOKEN | โทเค็นการตรวจสอบสิทธิ์ | ใช่ | None |
SONARQUBE_ORG | คีย์องค์กรบน SonarQube Cloud | ใช่ | None |
SONARQUBE_PROJECT_KEY | คีย์โปรเจกต์บน SonarQube Cloud | ใช่ | None |
SONAR_SQ_BRANCH | การแทนที่สาขา SonarQube อย่างชัดเจน * | ไม่ | None |
SONARQUBE_DEBUG_ENABLED | เปิดใช้งานการบันทึกดีบัก (สำหรับการแก้ไขปัญหา) | ไม่ | False |
SONAR_LOG_LEVEL | ระดับความละเอียดของการบันทึก (TRACE, DEBUG, INFO, WARNING, ERROR) | ไม่ | INFO |
- ต้องระบุเมื่อไม่ได้ใช้ git หรือเมื่อชื่อสาขา git ไม่ตรงกับชื่อสาขาใน SonarQube
การกำหนดค่าเฉพาะโปรเจกต์ (แนะนำ)
ขั้นแรก ให้ส่งออก SONARQUBE_TOKEN ตัวแปรสภาพแวดล้อม ด้วย โทเค็นการเข้าถึงส่วนบุคคล (PAT) ที่ถูกต้องสำหรับโปรเจกต์ของคุณ
# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"
จากนั้น เมานต์เวิร์กสเปซของโปรเจกต์เพื่อให้เซิร์ฟเวอร์ 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"
}
}
}
}
สำคัญ: ในการกำหนดค่าแบบจำกัดขอบเขตโปรเจกต์ อย่าใส่ 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- คีย์โปรเจกต์ - Required String (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- สาขาที่จะประเมิน ละเว้นเพื่อใช้สาขาเริ่มต้นของโปรเจกต์ - String
-
get_agentic_readiness_assessment - ดึงผลลัพธ์ของการประเมิน เรียกซ้ำด้วย
assessmentIdเดิมจนกว่าสถานะจะเป็นCOMPLETED,FAILED, หรือINTERRUPTEDเมื่อเสร็จสิ้น จะคืนค่าระดับโดยรวมและการแจกแจงรายเสาหลักพร้อมการดำเนินการที่แนะนำและหลักฐานassessmentId- ID การประเมินที่ส่งคืนโดยstart_agentic_readiness_assessment- Required String
-
list_agentic_readiness_assessments - แสดงรายการการประเมินทั้งหมดสำหรับโปรเจกต์ เรียงจากใหม่ไปเก่า ใช้
get_agentic_readiness_assessmentสำหรับผลลัพธ์ระดับเสาหลักแบบเต็มprojectKey- คีย์โปรเจกต์ที่จะแสดงรายการการประเมิน - Required String (ไม่สนใจเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- กรองการประเมินตามชื่อสาขา ละเว้นเพื่อแสดงรายการการประเมินสำหรับทุกสาขา - StringpageIndex- ดัชนีหน้าเริ่มต้นที่ 1 (ค่าเริ่มต้น: 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?
การตรวจสอบก่อน Release และก่อน Merge
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?
การจัดการความปลอดภัยและ Dependency
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/
หลังจากเพิ่มหรืออัปเดต dependencies ให้สร้างไฟล์ล็อกใหม่:
./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
ปัญหาทั่วไป
"ฟีเจอร์ไม่ทำงาน" หรือ "เครื่องมือ/ฟังก์ชันหายไป"
คุณอาจกำลังรันอิมเมจ 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
"ฉันต้องการระบุเวอร์ชันเฉพาะ"
เรียกดูแท็กที่มีอยู่ที่ 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 ไม่อัปเกรดอิมเมจอย่างเงียบ ๆ
ข้อมูลและ telemetry
เซิร์ฟเวอร์นี้เก็บข้อมูลการใช้งานแบบไม่ระบุตัวตนและส่งไปยัง SonarSource เพื่อช่วยปรับปรุงผลิตภัณฑ์ ไม่มีการเก็บซอร์สโค้ดหรือที่อยู่ IP และ SonarSource จะไม่แบ่งปันข้อมูลกับผู้อื่น การเก็บ telemetry สามารถปิดได้ด้วยพร็อพเพอร์ตี้ระบบหรือตัวแปรสภาพแวดล้อมต่อไปนี้: TELEMETRY_DISABLED=true คลิก ที่นี่ เพื่อดูตัวอย่างข้อมูลที่เก็บ
ใบอนุญาต
ลิขสิทธิ์ 2025 SonarSource.
ได้รับอนุญาตภายใต้ SONAR Source-Available License v1.0 การใช้ SonarQube MCP Server ตามเอกสารนี้ถือเป็นวัตถุประสงค์ที่ไม่แข่งขัน (Non-Competitive Purpose) และได้รับอนุญาตภายใต้ SSAL
การใช้ SonarQube ผ่าน MCP ของคุณอยู่ภายใต้ ข้อกำหนดการให้บริการของ SonarQube Cloud หรือ ข้อกำหนดและเงื่อนไขของ SonarQube Server รวมถึงการใช้ข้อมูลผลลัพธ์ (Results Data) เพื่อวัตถุประสงค์การพัฒนาซอฟต์แวร์ภายในของคุณเท่านั้น