SonarQube MCP Server
ทางการให้การผสานรวมกับ SonarQube Server หรือ Cloud อย่างราบรื่น และช่วยให้สามารถวิเคราะห์โค้ดชิ้นส่วนต่างๆ ได้โดยตรงภายในบริบทของเอเจนต์
เอกสาร
SonarQube MCP Server
SonarQube MCP Server เป็นเซิร์ฟเวอร์ Model Context Protocol (MCP) ที่ช่วยให้สามารถผสานรวมกับ SonarQube Server หรือ Cloud ได้อย่างราบรื่น เพื่อคุณภาพและความปลอดภัยของโค้ด นอกจากนี้ยังรองรับการวิเคราะห์ส่วนย่อยของโค้ดโดยตรงภายในบริบทของเอเจนต์
การตั้งค่าอย่างรวดเร็ว
แนวปฏิบัติที่ดีที่สุดด้านความปลอดภัย
🔒 สำคัญ: โทเค็น SonarQube ของคุณเป็นข้อมูลประจำตัวที่ละเอียดอ่อน ปฏิบัติตามแนวทางความปลอดภัยเหล่านี้:
เมื่อใช้คำสั่ง CLI:
- หลีกเลี่ยงการฝังโทเค็นแบบตายตัว ในอาร์กิวเมนต์บรรทัดคำสั่ง – เพราะจะถูกบันทึกในประวัติของเชลล์
- ใช้ตัวแปรสภาพแวดล้อม – ตั้งค่าโทเค็นในตัวแปรสภาพแวดล้อมก่อนรันคำสั่ง
เมื่อใช้ไฟล์การกำหนดค่า:
- อย่าคอมมิตโทเค็น ไปยังระบบควบคุมเวอร์ชัน
- ใช้การแทนที่ด้วยตัวแปรสภาพแวดล้อม ในไฟล์กำหนดค่าเมื่อเป็นไปได้
🚀 สร้างการกำหนดค่าของคุณ
วิธีที่เร็วที่สุดในการเริ่มต้นคือ SonarQube MCP Server Configuration Generator – เครื่องมือแบบโต้ตอบที่สร้างการกำหนดค่าพร้อมใช้งานสำหรับไคลเอนต์เอเจนต์ AI ที่คุณต้องการ
การตั้งค่าด้วยตนเอง
หากคุณต้องการกำหนดค่าด้วยตนเอง วิธีที่ง่ายที่สุดคือใช้อิมเมจคอนเทนเนอร์ของเราที่ sonarsource/sonarqube-mcp ใช้ sonarsource/sonarqube-mcp สำหรับการอัปเดตอัตโนมัติ (ด้วย --pull=always) หรือระบุแท็กเวอร์ชัน (เช่น sonarsource/sonarqube-mcp:1.19.0.2785) สำหรับการปรับใช้ที่สามารถทำซ้ำได้ อ่านด้านล่างหากคุณต้องการสร้างในเครื่อง
หมายเหตุ: แม้ว่าตัวอย่างด้านล่างจะใช้
dockerแต่รันไทม์คอนเทนเนอร์ใดๆ ที่เข้ากันได้กับ OCI ก็สามารถทำงานได้ (เช่น Podman, nerdctl) เพียงแทนที่dockerด้วยเครื่องมือที่คุณต้องการ
Antigravity
SonarQube MCP Server มีให้บริการใน 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:
ใน Agent Side Panel คลิกจุดสามจุด (...) -> MCP Store -> Manage MCP Servers -> View raw config และเพิ่มสิ่งต่อไปนี้:
{
"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- โทเค็น USER ของ 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 ใน Arguments และ SONARQUBE_URL=https://sonarqube.us ใน Environment Variables
- เพื่อเชื่อมต่อกับ 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 coding agent
GitHub Copilot coding agent สามารถใช้ประโยชน์จากเซิร์ฟเวอร์ 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 Server มีให้บริการเป็นปลั๊กอินของ 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 for IDE
SonarQube MCP Server สามารถผสานรวมกับ SonarQube for IDE เพื่อปรับปรุงขั้นตอนการทำงานในการพัฒนาของคุณให้ดียิ่งขึ้น โดยให้การวิเคราะห์โค้ดและข้อมูลเชิงลึกที่ดีขึ้นโดยตรงภายใน IDE ของคุณ
การกำหนดค่า
เมื่อใช้ SonarQube for IDE ควรตั้งค่าตัวแปรสภาพแวดล้อม SONARQUBE_IDE_PORT ด้วยหมายเลขพอร์ตที่ถูกต้อง SonarQube for 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 for IDE ที่รันบน localhost ได้ เพื่อให้คอนเทนเนอร์เชื่อมต่อกับเซิร์ฟเวอร์ SonarQube for IDE ได้ ให้เพิ่มตัวเลือก
--network=hostในคำสั่งรันคอนเทนเนอร์ของคุณ
การกำหนดค่า
คุณควรระบุตัวแปรสภาพแวดล้อมเฉพาะ ทั้งนี้ขึ้นอยู่กับสภาพแวดล้อมของคุณ
พื้นฐาน
คุณควรเพิ่มตัวแปรต่อไปนี้เมื่อรัน MCP Server:
| ตัวแปรสภาพแวดล้อม | คำอธิบาย |
|---|---|
STORAGE_PATH | พาธสัมบูรณ์ที่จำเป็นไปยังไดเรกทอรีที่เขียนได้ ซึ่ง SonarQube MCP Server จะใช้จัดเก็บไฟล์ (เช่น สำหรับการสร้าง อัปเดต และการคงอยู่) โดยจะถูกระบุโดยอัตโนมัติเมื่อใช้อิมเมจคอนเทนเนอร์ |
SONARQUBE_PROJECT_KEY | คีย์โปรเจกต์เริ่มต้นที่ไม่บังคับ เมื่อตั้งค่าแล้ว เครื่องมือทั้งหมดที่ต้องการคีย์โปรเจกต์จะใช้ค่านี้โดยอัตโนมัติ — พารามิเตอร์ projectKey จะถูกลบออกจากสคีมาทั้งหมด มีประโยชน์เมื่อทำงานกับโปรเจกต์เดียว |
SONARQUBE_IDE_PORT | หมายเลขพอร์ตที่ไม่บังคับระหว่าง 64120 ถึง 64130 ที่ใช้เชื่อมต่อ SonarQube MCP Server กับ SonarQube for 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, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag) หมายเหตุ: ชุดเครื่องมือ projects จะถูกเปิดใช้งานเสมอเนื่องจากจำเป็นสำหรับการค้นหาคีย์โปรเจกต์สำหรับการดำเนินการอื่นๆ เครื่องมือ Context Augmentation จะพร้อมใช้งานเฉพาะในโหมด stdio และต้องมีสิทธิ์ขององค์กร ในโหมด Streamable HTTP ไคลเอนต์สามารถส่งส่วนหัว HTTP SONARQUBE_TOOLSETS เพื่อจำกัดขอบเขตเพิ่มเติมต่อคำขอ แต่ไม่สามารถเปิดใช้งานชุดเครื่องมือเกินกว่าที่เซิร์ฟเวอร์เริ่มต้นมา (ดู การขนส่ง Streamable HTTP ด้านล่าง) |
SONARQUBE_READ_ONLY | เมื่อตั้งค่าเป็น true จะเปิดใช้งานโหมดอ่านอย่างเดียวซึ่งปิดใช้งานการดำเนินการเขียนทั้งหมด (เช่น การเปลี่ยนสถานะของปัญหา) ตัวกรองนี้จะสะสมร่วมกับ SONARQUBE_TOOLSETS หากตั้งค่าทั้งคู่ ค่าเริ่มต้น: false ในโหมด Streamable HTTP ไคลเอนต์สามารถส่งส่วนหัว HTTP SONARQUBE_READ_ONLY เพื่อจำกัดคำขอแต่ละรายการเพิ่มเติมเป็นแบบอ่านอย่างเดียว แต่ไม่สามารถยกเลิกข้อจำกัดการอ่านอย่างเดียวระดับเซิร์ฟเวอร์ได้ (ดู การขนส่ง Streamable HTTP ด้านล่าง) |
ชุดเครื่องมือที่พร้อมใช้งาน
| ชุดเครื่องมือ | คีย์ | คำอธิบาย |
|---|---|---|
| การวิเคราะห์ | 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 | เครื่องมือวิเคราะห์และปรับปรุงความครอบคลุมของการทดสอบ |
| การเสริมบริบท | cag | เครื่องมือการเสริมบริบท (โหมด 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
เพื่อเปิดใช้งานฟังก์ชันการทำงานเต็มรูปแบบ ต้องตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้ก่อนเริ่มเซิร์ฟเวอร์:
| ตัวแปรสภาพแวดล้อม | คำอธิบาย | จำเป็น |
|---|---|---|
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 ต้องใช้โทเค็นประเภท USER และจะทำงานไม่ถูกต้องหากใช้โทเค็นโปรเจกต์หรือโทเค็นส่วนกลาง
💡 เคล็ดลับการกำหนดค่า (โหมด stdio): การมีอยู่ของ
SONARQUBE_ORGจะกำหนดว่าคุณกำลังเชื่อมต่อกับ SonarQube Cloud หรือ Server หากตั้งค่าSONARQUBE_ORGจะใช้ SonarQube Cloud มิฉะนั้นจะใช้ SonarQube Server
โหมดการขนส่ง
ข้อกำหนด MCP กำหนดกลไกการขนส่งสองแบบ: Stdio และ Streamable HTTP SonarQube MCP Server รองรับทั้งสองแบบ:
| การขนส่ง 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-only รุ่นเก่าจาก 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 ผ่าน 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 | พาธไปยังไฟล์คีย์สโตร์ (.p12 หรือ .jks) | /etc/ssl/mcp/keystore.p12 |
SONARQUBE_HTTPS_KEYSTORE_PASSWORD | รหัสผ่านคีย์สโตร์ | sonarlint |
SONARQUBE_HTTPS_KEYSTORE_TYPE | ประเภทคีย์สโตร์ (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 Server ของคุณใช้ใบรับรองที่ลงนามด้วยตนเองหรือใบรับรองจากผู้ออกใบรับรองส่วนตัว (CA) คุณสามารถเพิ่มใบรับรองแบบกำหนดเองลงในคอนเทนเนอร์ที่จะถูกติดตั้งโดยอัตโนมัติ
การกำหนดค่า
การใช้การเมาต์โวลุ่ม
เมาต์ไดเรกทอรีที่มีใบรับรองของคุณเมื่อรันคอนเทนเนอร์:
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>"
}
}
}
พร็อกซี
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 |
เครื่องมือ
การวิเคราะห์
-
analyze_code_snippet - วิเคราะห์เนื้อหาไฟล์ด้วยเครื่องวิเคราะห์ SonarQube เพื่อระบุปัญหาด้านคุณภาพโค้ดและความปลอดภัย วิเคราะห์เนื้อหาไฟล์ทั้งหมดเพื่อความถูกต้องเสมอ สามารถกรองผลลัพธ์ไปยังส่วนย่อยของโค้ดที่ระบุได้
การใช้งาน:
- เมื่อเมาต์พื้นที่ทำงาน (แนะนำ): ส่ง
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:
-
analyze_file_list - วิเคราะห์ไฟล์ในไดเรกทอรีการทำงานปัจจุบันโดยใช้ SonarQube for IDE เครื่องมือนี้เชื่อมต่อกับอินสแตนซ์ SonarQube for IDE ที่กำลังทำงานเพื่อทำการวิเคราะห์คุณภาพโค้ดในรายการไฟล์
file_absolute_paths- รายการพาธไฟล์แบบสัมบูรณ์ที่จะวิเคราะห์ - สตริง[] ที่จำเป็น
-
toggle_automatic_analysis - เปิดหรือปิดการวิเคราะห์อัตโนมัติของ SonarQube for IDE เมื่อเปิดใช้งาน SonarQube for IDE จะวิเคราะห์ไฟล์โดยอัตโนมัติเมื่อมีการแก้ไขในไดเรกทอรีการทำงาน เมื่อปิดใช้งาน การวิเคราะห์อัตโนมัติจะถูกปิด
enabled- เปิดหรือปิดการวิเคราะห์อัตโนมัติ - บูลีนที่จำเป็น
เมื่อเปิดใช้งานการวิเคราะห์ขั้นสูงสำหรับองค์กร SonarQube Cloud ของคุณ:
ต้องมีการเมาต์พื้นที่ทำงานที่
/app/mcp-workspace
- run_advanced_code_analysis - รันการวิเคราะห์โค้ดขั้นสูงบน SonarQube Cloud สำหรับไฟล์เดียว องค์กรถูกอนุมานจากการกำหนดค่า MCP
projectKey- คีย์ของโปรเจกต์ - สตริงที่จำเป็น (ถูกละเว้นเมื่อกำหนดSONARQUBE_PROJECT_KEY)branchName- ชื่อแบรนช์ที่ใช้เพื่อดึงบริบทการวิเคราะห์ล่าสุด - สตริงที่จำเป็นfilePath- พาธสัมพันธ์กับโปรเจกต์ของไฟล์ที่จะวิเคราะห์ (เช่นsrc/main/java/MyClass.java) - สตริงที่จำเป็นfileScope- กำหนดขอบเขตที่ไฟล์มาจาก: 'MAIN' หรือ 'TEST' (ค่าเริ่มต้น: MAIN) - สตริง
ความครอบคลุม
-
search_files_by_coverage - ค้นหาไฟล์ในโปรเจกต์โดยเรียงตามความครอบคลุม (จากน้อยไปมาก - ไฟล์ที่มีความครอบคลุมแย่ที่สุดมาก่อน) เครื่องมือนี้ช่วยระบุไฟล์ที่ต้องปรับปรุงความครอบคลุมของการทดสอบ
projectKey- คีย์โปรเจกต์ที่ต้องการค้นหา - สตริงที่จำเป็น (จะถูกละเว้นเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- ชื่อ branch ที่มีอายุยาวนาน (ไม่บังคับ) (เช่น main, develop) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - สตริงmaxCoverage- เกณฑ์ความครอบคลุมสูงสุด (0-100) ส่งคืนเฉพาะไฟล์ที่มีความครอบคลุม <= ค่านี้ - ตัวเลขpageIndex- ดัชนีหน้า (เริ่มจาก 1, ค่าเริ่มต้น: 1) - ตัวเลขpageSize- ขนาดหน้า (ค่าเริ่มต้น: 100, สูงสุด: 500) - ตัวเลข
-
get_file_coverage_details - รับข้อมูลความครอบคลุมทีละบรรทัดสำหรับไฟล์ที่ระบุ รวมถึงบรรทัดใดที่ยังไม่ครอบคลุมและบรรทัดใดที่มี branch ที่ครอบคลุมเพียงบางส่วน เครื่องมือนี้ช่วยระบุตำแหน่งที่แน่นอนในการเพิ่มความครอบคลุมของการทดสอบ ใช้หลังจากระบุไฟล์ที่มีความครอบคลุมต่ำผ่าน search_files_by_coverage
key- คีย์ไฟล์ (เช่น my_project:src/foo/Bar.java) - สตริงที่จำเป็นbranch- ชื่อ branch ที่มีอายุยาวนาน (ไม่บังคับ) (เช่น main, develop) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้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- ชื่อ branch ที่มีอายุยาวนาน (ไม่บังคับ) (เช่น main, develop) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - สตริงpageIndex- ดัชนีหน้า (ไม่บังคับ) (เริ่มจาก 1, ค่าเริ่มต้น: 1) - จำนวนเต็มpageSize- ขนาดหน้า (ไม่บังคับ) ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - จำนวนเต็ม
องค์กร
หมายเหตุ: องค์กรจะพร้อมใช้งานเมื่อเชื่อมต่อกับ SonarQube Cloud เท่านั้น
- list_enterprises - แสดงรายการองค์กรที่มีอยู่ใน SonarQube Cloud ที่คุณมีสิทธิ์เข้าถึง ใช้เครื่องมือนี้เพื่อค้นหา ID องค์กรที่สามารถใช้กับเครื่องมืออื่นๆ ได้
enterpriseKey- คีย์องค์กร (ไม่บังคับ) เพื่อกรองผลลัพธ์ - สตริง
Issues
-
change_sonar_issue_status - เปลี่ยนสถานะของ issue ใน SonarQube เป็น "accept", "falsepositive" หรือ "reopen" issue
key- คีย์ issue - สตริงที่จำเป็นstatus- สถานะใหม่ของ issue - Enum ที่จำเป็น {"accept", "falsepositive", "reopen"}
-
search_sonar_issues_in_projects - ค้นหา issues ใน SonarQube ในโปรเจกต์ขององค์กรของฉัน
projects- รายการโปรเจกต์ Sonar (ไม่บังคับ) - String[]branch- ชื่อ branch ที่มีอายุยาวนาน (ไม่บังคับ) (เช่น main, develop) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - สตริงseverities- รายการระดับความรุนแรง (ไม่บังคับ) เพื่อกรอง ค่าที่เป็นไปได้: INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]impactSoftwareQualities- รายการคุณภาพซอฟต์แวร์ (ไม่บังคับ) เพื่อกรอง ค่าที่เป็นไปได้: MAINTAINABILITY, RELIABILITY, SECURITY - String[]issueStatuses- รายการสถานะ issue (ไม่บังคับ) เพื่อกรอง ค่าที่เป็นไปได้: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]issueKey- คีย์ issue (ไม่บังคับ) เพื่อดึง issue เฉพาะ - สตริงp- หมายเลขหน้า (ไม่บังคับ) (ค่าเริ่มต้น: 1) - จำนวนเต็มps- ขนาดหน้า (ไม่บังคับ) ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - จำนวนเต็ม
Security Hotspots
-
search_security_hotspots - ค้นหา Security Hotspots ในโปรเจกต์ SonarQube
projectKey- คีย์โปรเจกต์หรือแอปพลิเคชัน - สตริงที่จำเป็น (จะถูกละเว้นเมื่อกำหนดSONARQUBE_PROJECT_KEY)hotspotKeys- รายการคีย์ Security Hotspot เฉพาะที่ต้องการเรียกดู โดยคั่นด้วยเครื่องหมายจุลภาค - String[]branch- ชื่อ branch ที่มีอายุยาวนาน (ไม่บังคับ) (เช่น main, develop) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - สตริงfiles- รายการพาธไฟล์ (ไม่บังคับ) เพื่อกรอง - String[]status- ตัวกรองสถานะ (ไม่บังคับ): TO_REVIEW, REVIEWED - สตริงresolution- ตัวกรองการแก้ไข (ไม่บังคับ): FIXED, SAFE, ACKNOWLEDGED - สตริงsinceLeakPeriod- กรอง hotspots ที่สร้างขึ้นตั้งแต่ช่วง leak period (new code) - BooleanonlyMine- แสดงเฉพาะ hotspots ที่มอบหมายให้ฉัน - Booleanp- หมายเลขหน้า (ไม่บังคับ) (ค่าเริ่มต้น: 1) - จำนวนเต็มps- ขนาดหน้า (ไม่บังคับ) ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - จำนวนเต็ม
-
show_security_hotspot - รับข้อมูลโดยละเอียดเกี่ยวกับ Security Hotspot เฉพาะ รวมถึงรายละเอียดกฎ บริบทของโค้ด flows และความคิดเห็น
hotspotKey- คีย์ Security Hotspot - สตริงที่จำเป็น
-
change_security_hotspot_status - ตรวจสอบ Security Hotspot โดยการเปลี่ยนสถานะ เมื่อทำเครื่องหมายเป็น REVIEWED คุณต้องระบุการแก้ไข (FIXED, SAFE หรือ ACKNOWLEDGED)
hotspotKey- คีย์ Security Hotspot - สตริงที่จำเป็นstatus- สถานะใหม่ - Enum ที่จำเป็น {"TO_REVIEW", "REVIEWED"}resolution- การแก้ไขเมื่อสถานะเป็น REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}comment- ความคิดเห็นในการตรวจสอบ (ไม่บังคับ) - สตริง
ภาษา
- list_languages - แสดงรายการภาษาโปรแกรมทั้งหมดที่รองรับในอินสแตนซ์ SonarQube นี้
q- รูปแบบ (ไม่บังคับ) เพื่อจับคู่กับคีย์/ชื่อภาษา - สตริง
Measures
- get_component_measures - รับค่า measures ของ SonarQube สำหรับคอมโพเนนต์ (โปรเจกต์, ไดเรกทอรี, ไฟล์)
projectKey- คีย์โปรเจกต์ - สตริงที่จำเป็นเมื่อไม่ได้กำหนดค่าSONARQUBE_PROJECT_KEYbranch- ชื่อ branch ที่มีอายุยาวนาน (ไม่บังคับ) (เช่น main, develop) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงmetricKeys- คีย์ metric (ไม่บังคับ) ที่ต้องการเรียกดู (เช่น ncloc, complexity, violations, coverage) - String[]pullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - สตริง
Metrics
- search_metrics - ค้นหา metrics ของ SonarQube
p- หมายเลขหน้า (ไม่บังคับ) (ค่าเริ่มต้น: 1) - จำนวนเต็มps- ขนาดหน้า (ไม่บังคับ) ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - จำนวนเต็ม
พอร์ตโฟลิโอ
-
list_portfolios - แสดงรายการพอร์ตโฟลิโอขององค์กรที่มีอยู่ใน SonarQube พร้อมตัวเลือกการกรองและการแบ่งหน้า
สำหรับ SonarQube Server:
q- คำค้นหา (ไม่บังคับ) เพื่อกรองพอร์ตโฟลิโอตามชื่อหรือคีย์ - สตริงfavorite- หากเป็น true จะส่งคืนเฉพาะพอร์ตโฟลิโอที่ชื่นชอบ - BooleanpageIndex- หมายเลขหน้าแบบเริ่มจาก 1 (ไม่บังคับ) (ค่าเริ่มต้น: 1) - จำนวนเต็มpageSize- ขนาดหน้า (ไม่บังคับ) สูงสุด 500 (ค่าเริ่มต้น: 100) - จำนวนเต็ม
สำหรับ SonarQube Cloud:
enterpriseId- uuid ขององค์กร สามารถละเว้นได้เฉพาะเมื่อระบุพารามิเตอร์ 'favorite' เป็น true - สตริงq- คำค้นหา (ไม่บังคับ) เพื่อกรองพอร์ตโฟลิโอตามชื่อ - สตริงfavorite- จำเป็นต้องเป็น true หากละเว้นพารามิเตอร์ 'enterpriseId' หากเป็น true จะส่งคืนเฉพาะพอร์ตโฟลิโอที่ผู้ใช้ที่ล็อกอินอยู่ชื่นชอบ ไม่สามารถเป็น true เมื่อ 'draft' เป็น true - Booleandraft- หากเป็น true จะส่งคืนเฉพาะฉบับร่างที่สร้างโดยผู้ใช้ที่ล็อกอินอยู่ ไม่สามารถเป็น true เมื่อ 'favorite' เป็น true - BooleanpageIndex- ดัชนีของหน้าที่ต้องการดึงข้อมูล (ไม่บังคับ) (ค่าเริ่มต้น: 1) - จำนวนเต็มpageSize- ขนาดของหน้าที่ต้องการดึงข้อมูล (ไม่บังคับ) (ค่าเริ่มต้น: 50) - จำนวนเต็ม
โปรเจกต์
-
search_my_sonarqube_projects - ค้นหาโปรเจกต์ SonarQube การตอบกลับจะถูกแบ่งหน้า
page- หมายเลขหน้า (ไม่บังคับ) - สตริง
-
list_branches - แสดงรายการ branch ที่มีอายุยาวนานสำหรับโปรเจกต์ (เช่น main, develop, master) ส่งคืนเฉพาะ branch
LONGบน SonarQube Cloud และรายการBRANCHบน SonarQube Server — ชื่อที่ปลอดภัยสำหรับพารามิเตอร์branchบนเครื่องมืออื่นๆ สำหรับ pull requests ให้ใช้list_pull_requestsแทนprojectKey- คีย์โปรเจกต์ (เช่น my_project) - สตริงที่จำเป็น (จะถูกละเว้นเมื่อกำหนดSONARQUBE_PROJECT_KEY)
-
list_pull_requests - แสดงรายการ pull requests ทั้งหมดสำหรับโปรเจกต์ ใช้เครื่องมือนี้เพื่อค้นหา pull requests ที่มีอยู่ก่อนวิเคราะห์ความครอบคลุม issues หรือคุณภาพ ส่งคืนคีย์/ID ของ pull request ซึ่งสามารถใช้กับเครื่องมืออื่นๆ ได้ (เช่น search_files_by_coverage, get_file_coverage_details) สำหรับ branch ที่มีอายุยาวนาน ให้ใช้
list_branchesแทนprojectKey- คีย์โปรเจกต์ (เช่น my_project) - สตริงที่จำเป็น (จะถูกละเว้นเมื่อกำหนดSONARQUBE_PROJECT_KEY)
Quality Gates
-
get_project_quality_gate_status - รับสถานะ Quality Gate สำหรับโปรเจกต์ SonarQube
analysisId- ID การวิเคราะห์ (ไม่บังคับ) - สตริงbranch- ชื่อ branch ที่มีอายุยาวนาน (ไม่บังคับ) (เช่น main, develop) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงprojectId- ID โปรเจกต์ (ไม่บังคับ) - สตริงprojectKey- คีย์โปรเจกต์ (ไม่บังคับ) - สตริงpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - สตริง
-
list_quality_gates - แสดงรายการ quality gates ทั้งหมดใน SonarQube ของฉัน
กฎ
- show_rule - แสดงข้อมูลโดยละเอียดเกี่ยวกับกฎของ SonarQube
key- คีย์กฎ - สตริงที่จำเป็น
การทำซ้ำ
-
search_duplicated_files - ค้นหาไฟล์ที่มีการทำซ้ำของโค้ดในโปรเจกต์ SonarQube ตามค่าเริ่มต้น จะดึงข้อมูลไฟล์ที่ซ้ำกันทั้งหมดจากทุกหน้าโดยอัตโนมัติ (สูงสุด 10,000 ไฟล์) ส่งคืนเฉพาะไฟล์ที่มีการทำซ้ำ
projectKey- คีย์โปรเจกต์ - สตริงที่จำเป็น (จะถูกละเว้นเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- ชื่อ branch ที่มีอายุยาวนาน (ไม่บังคับ) (เช่น main, develop) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - สตริงpageSize- จำนวนผลลัพธ์ต่อหน้าสำหรับการแบ่งหน้าแบบกำหนดเอง (ไม่บังคับ) (สูงสุด: 500) หากไม่ระบุ จะดึงข้อมูลไฟล์ที่ซ้ำกันทั้งหมดโดยอัตโนมัติ - จำนวนเต็มpageIndex- หมายเลขหน้าสำหรับการแบ่งหน้าแบบกำหนดเอง (ไม่บังคับ) (เริ่มที่ 1) หากไม่ระบุ จะดึงข้อมูลไฟล์ที่ซ้ำกันทั้งหมดโดยอัตโนมัติ - จำนวนเต็ม
-
get_duplications - รับข้อมูลการทำซ้ำสำหรับไฟล์ ต้องมีสิทธิ์ Browse บนโปรเจกต์ของไฟล์
key- คีย์ไฟล์ - สตริงที่จำเป็นbranch- ชื่อ branch ที่มีอายุยาวนาน (ไม่บังคับ) (เช่น main, develop) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - สตริงpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - สตริง
Sources
-
get_raw_source - รับซอร์สโค้ดเป็นข้อความดิบจาก SonarQube ต้องมีสิทธิ์ 'See Source Code' บนไฟล์
key- คีย์ไฟล์ - String ที่จำเป็นbranch- ชื่อ branch ระยะยาว (ไม่บังคับ เช่น main, develop) ใช้list_branchesเพื่อค้นหาชื่อที่ถูกต้อง - StringpullRequest- คีย์/ID ของ pull request (ไม่บังคับ) ใช้list_pull_requestsเพื่อค้นหาคีย์ที่ถูกต้อง - String
-
get_scm_info - รับข้อมูล SCM ของไฟล์ซอร์สใน SonarQube ต้องมีสิทธิ์ See Source Code บนโปรเจกต์ของไฟล์
key- คีย์ไฟล์ - String ที่จำเป็นcommits_by_line- จัดกลุ่มบรรทัดตาม SCM commit หากค่าเป็น false มิฉะนั้นแสดง commit สำหรับแต่ละบรรทัด - 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 - รับลำดับชั้นการสืบทอดทั้งหมดสำหรับโครงสร้างคล้ายคลาส (คลาส, อินเทอร์เฟซ, 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- String ที่จำเป็นcategories- รายชื่อหมวดหมู่ (จำเป็นสำหรับโหมดcategory_basedและcombined) - String[]languages- รายการภาษาเป้าหมายในรูปแบบคีย์ที่เก็บของ SonarQube (จำเป็นเมื่อระบุcategories) - String[]file_paths- รายการเส้นทางไฟล์ (ไม่บังคับ) เพื่อกรองแนวทาง - String[]
เครื่องมือการพึ่งพาจากภายนอก
- check_dependency - ตรวจสอบการพึ่งพาจากภายนอกสำหรับช่องโหว่ด้านความปลอดภัย, มัลแวร์ในห่วงโซ่อุปทาน, และการปฏิบัติตามใบอนุญาต ก่อนเพิ่มหรืออัปเดต
purl- Package URL (purl) พร้อมเวอร์ชัน ตาม purl-spec รูปแบบ:pkg:<type>/<namespace>/<name>@<version>(เช่นpkg:npm/[email protected],pkg:maven/org.apache.logging.log4j/[email protected],pkg:pypi/[email protected]) - String ที่จำเป็น
ตัวแปรสภาพแวดล้อมการเสริมบริบท
| ตัวแปร | คำอธิบาย | จำเป็น | ค่าเริ่มต้น |
|---|---|---|---|
SONARQUBE_URL | URL ของ SonarQube Cloud | ใช่ | https://sonarcloud.io |
SONARQUBE_TOKEN | โทเค็นการตรวจสอบสิทธิ์ | ใช่ | ไม่มี |
SONARQUBE_ORG | คีย์องค์กรบน SonarQube Cloud | ใช่ | ไม่มี |
SONARQUBE_PROJECT_KEY | คีย์โปรเจกต์บน SonarQube Cloud | ใช่ | ไม่มี |
SONAR_SQ_BRANCH | การแทนที่ branch ของ SonarQube อย่างชัดเจน * | ไม่ | ไม่มี |
SONARQUBE_DEBUG_ENABLED | เปิดใช้งานการบันทึกดีบัก (สำหรับการแก้ไขปัญหา) | ไม่ | False |
SONAR_LOG_LEVEL | ความละเอียดของการบันทึก (TRACE, DEBUG, INFO, WARNING, ERROR) | ไม่ | INFO |
- ต้องระบุเมื่อไม่ได้ใช้ git หรือเมื่อชื่อ branch ใน git ไม่ตรงกับชื่อ branch ใน 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
ความพร้อมสำหรับเอเจนต์
หมายเหตุ: เครื่องมือความพร้อมสำหรับเอเจนต์มีให้ใช้งานบน SonarQube Cloud เท่านั้น และต้องเปิดใช้งานฟีเจอร์นี้สำหรับองค์กรของคุณ
-
start_agentic_readiness_assessment - เริ่มการประเมินความพร้อมสำหรับเอเจนต์สำหรับโปรเจกต์ ส่งคืนทันทีด้วยสถานะ
PENDINGและassessmentIdใช้get_agentic_readiness_assessmentเพื่อสำรวจผลลัพธ์projectKey- คีย์โปรเจกต์ - String ที่จำเป็น (ถูกละเว้นเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- Branch ที่จะประเมิน ละเว้นเพื่อใช้ branch เริ่มต้นของโปรเจกต์ - String
-
get_agentic_readiness_assessment - รับผลลัพธ์ของการประเมิน เรียกซ้ำด้วย
assessmentIdเดิมจนกว่าสถานะจะเป็นCOMPLETED,FAILED, หรือINTERRUPTEDเมื่อเสร็จสิ้น จะส่งคืนระดับโดยรวมและการแจกแจงราย pillar พร้อมการดำเนินการที่แนะนำและหลักฐานassessmentId- ID การประเมินที่ส่งคืนโดยstart_agentic_readiness_assessment- String ที่จำเป็น
-
list_agentic_readiness_assessments - แสดงรายการการประเมินทั้งหมดสำหรับโปรเจกต์ โดยเรียงจากใหม่สุดก่อน ใช้
get_agentic_readiness_assessmentสำหรับผลลัพธ์ระดับ pillar แบบเต็มprojectKey- คีย์โปรเจกต์ที่จะแสดงรายการการประเมิน - String ที่จำเป็น (ถูกละเว้นเมื่อกำหนดSONARQUBE_PROJECT_KEY)branch- กรองการประเมินตามชื่อ branch ละเว้นเพื่อแสดงรายการการประเมินสำหรับทุก 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?
การตรวจสอบก่อนเผยแพร่และก่อนรวมโค้ด
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 ของคุณให้รันด้วย 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
ปัญหาที่พบบ่อย
"ฟีเจอร์ไม่ทำงาน" หรือ "เครื่องมือ/ฟังก์ชันการทำงานหายไป"
คุณอาจกำลังใช้อิมเมจ Docker ที่ล้าสมัย Docker จะแคชอิมเมจไว้ในเครื่อง ดังนั้นคุณจะไม่ได้รับการอัปเดตโดยอัตโนมัติ
วิธีแก้ไข: อัปเดตเป็นเวอร์ชันล่าสุด:
docker pull sonarsource/sonarqube-mcp
หลังจากดึงอิมเมจล่าสุดแล้ว ให้รีสตาร์ทไคลเอนต์ MCP ของคุณเพื่อใช้เวอร์ชันที่อัปเดต
หรือเพิ่มแฟล็ก --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 ของคุณ ให้ใช้ 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 หรือ ข้อกำหนดและเงื่อนไขของ SonarQube Server รวมถึงการใช้ข้อมูลผลลัพธ์เพื่อวัตถุประสงค์ในการพัฒนาซอฟต์แวร์ภายในของคุณเท่านั้น