SonarQube

ทางการ

ให้การผสานรวมกับ SonarQube Server หรือ Cloud อย่างราบรื่น และช่วยให้สามารถวิเคราะห์โค้ดชิ้นส่วนต่างๆ ได้โดยตรงภายในบริบทของเอเจนต์

GitHub
655
ลองใช้ MCP นี้ผู้สนับสนุน

คุณทำอะไรได้บ้างด้วย SonarQube MCP?

  • วิเคราะห์โค้ดสnippets — ให้ผู้ช่วยของคุณรันการวิเคราะห์โค้ดในเครื่องสำหรับ snippet หรือไฟล์ผ่าน analyze_code_snippet โดยสามารถ mount workspace ได้ตามต้องการเพื่อหลีกเลี่ยง context bloat
  • ค้นหาและจัดการ issues — ให้ผู้ช่วยค้นหา ตรวจสอบ และอัปเดต issues ใน SonarQube รวมถึงการเปลี่ยนสถานะเมื่อไม่ได้อยู่ในโหมดอ่านอย่างเดียว
  • ตรวจสอบ quality gates และ measures — ขอสถานะ quality gate, metrics ของโปรเจกต์, ความครอบคลุม และความเสี่ยงด้าน dependencies ในโปรเจกต์ SonarQube ของคุณ
  • ตรวจสอบ security hotspots — ให้ผู้ช่วยค้นหาและอธิบาย security hotspots ที่ถูกflagged ใน codebase ของคุณ
  • เรียกดูโปรเจกต์และ rules — ใช้ผู้ช่วยเพื่อสำรวจโปรเจกต์ ดูรายการภาษาที่รองรับ และค้นหา coding rules โดยตรงจาก SonarQube

เอกสาร

เซิร์ฟเวอร์ SonarQube MCP

Build Quality Gate Status

เซิร์ฟเวอร์ SonarQube MCP เป็นเซิร์ฟเวอร์ Model Context Protocol (MCP) ที่ช่วยให้สามารถเชื่อมต่อกับ SonarQube Server หรือ Cloud ได้อย่างราบรื่นสำหรับคุณภาพโค้ดและความปลอดภัย นอกจากนี้ยังรองรับการวิเคราะห์โค้ดบางส่วนโดยตรงภายในบริบทของเอเจนต์

การตั้งค่าอย่างรวดเร็ว

แนวทางปฏิบัติด้านความปลอดภัย

🔒 สำคัญ: โทเค็น SonarQube ของคุณเป็นข้อมูลประจำตัวที่ละเอียดอ่อน ปฏิบัติตามแนวทางด้านความปลอดภัยเหล่านี้:

เมื่อใช้คำสั่ง CLI:

  • หลีกเลี่ยงการเขียนโทเค็นแบบฮาร์ดโค้ด ในอาร์กิวเมนต์ของคำสั่ง – โทเค็นเหล่านั้นจะถูกบันทึกไว้ในประวัติเชลล์
  • ใช้ตัวแปรสภาพแวดล้อม – ตั้งค่าโทเค็นในตัวแปรสภาพแวดล้อมก่อนรันคำสั่ง

เมื่อใช้ไฟล์คอนฟิกูเรชัน:

  • ห้ามคอมมิตโทเค็น ลงในระบบควบคุมเวอร์ชัน
  • ใช้การแทนที่ตัวแปรสภาพแวดล้อม ในไฟล์คอนฟิกูเรชันเมื่อเป็นไปได้

🚀 สร้างคอนฟิกูเรชันของคุณ

วิธีที่เร็วที่สุดในการเริ่มต้นคือ ตัวสร้างคอนฟิกูเรชันเซิร์ฟเวอร์ SonarQube MCP – เครื่องมือแบบโต้ตอบที่สร้างคอนฟิกูเรชันที่พร้อมใช้งานสำหรับไคลเอนต์เอเจนต์ AI ที่คุณต้องการ

การตั้งค่าด้วยตนเอง

หากคุณต้องการกำหนดค่าด้วยตัวเอง วิธีที่ง่ายที่สุดคือใช้อิมเมจคอนเทนเนอร์ของเราที่ sonarsource/sonarqube-mcp ใช้ sonarsource/sonarqube-mcp สำหรับการอัปเดตอัตโนมัติ (ด้วย --pull=always) หรือกำหนดเวอร์ชันแท็ก (เช่น sonarsource/sonarqube-mcp:1.19.0.2785) สำหรับการปรับใช้ที่ทำซ้ำได้ อ่านด้านล่างหากคุณต้องการสร้างในเครื่อง

หมายเหตุ: แม้ว่าตัวอย่างด้านล่างจะใช้ docker แต่รันไทม์คอนเทนเนอร์ที่เข้ากันได้กับ OCI ใดๆ ก็ใช้งานได้ (เช่น Podman, nerdctl) เพียงแทนที่ docker ด้วยเครื่องมือที่คุณต้องการ

Antigravity

เซิร์ฟเวอร์ SonarQube MCP พร้อมใช้งานในร้านค้า MCP ของ Antigravity ทำตามขั้นตอนเหล่านี้:

  1. เปิด แผงด้านข้างเอเจนต์
  2. คลิกจุดสามจุด (...) ที่มุมขวาบนและเลือก MCP Servers
  3. ค้นหา SonarQube และเลือก ติดตั้ง
  4. ระบุโทเค็นผู้ใช้ 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:

Install for SonarQube Cloud

สำหรับ SonarQube Cloud US ให้เพิ่ม "SONARQUBE_URL": "https://sonarqube.us" ด้วยตนเองในส่วน env ในคอนฟิกูเรชัน MCP ของคุณหลังการติดตั้ง

  • เพื่อเชื่อมต่อกับ SonarQube Server:

Install for SonarQube Server

Gemini CLI

หมายเหตุ: ส่วนขยาย Gemini CLI ได้ย้ายไปยังพื้นที่เก็บ sonarqube-agent-plugins แล้ว โปรดติดตั้งจากที่นั่นต่อไป

คุณสามารถติดตั้งส่วนขยายเซิร์ฟเวอร์ MCP ของเราได้โดยใช้คำสั่งต่อไปนี้:

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

คุณจะต้องตั้งค่าตัวแปรสภาพแวดล้อมที่จำเป็นก่อนเริ่ม Gemini:

ตัวแปรสภาพแวดล้อมที่จำเป็น:

  • สำหรับ SonarQube Cloud:

    • SONARQUBE_TOKEN - โทเค็น SonarQube Cloud ของคุณ
    • SONARQUBE_ORG - คีย์องค์กรของคุณ
    • SONARQUBE_URL - (ไม่บังคับ) ตั้งค่าเป็น https://sonarqube.us สำหรับ SonarQube Cloud US
  • สำหรับ SonarQube Server:

    • SONARQUBE_TOKEN - โทเค็นผู้ใช้ SonarQube Server ของคุณ
    • SONARQUBE_URL - URL ของ SonarQube Server ของคุณ

เมื่อติดตั้งแล้ว ส่วนขยายจะถูกติดตั้งภายใต้ <home>/.gemini/extensions/sonarqube/gemini-extension.json

GitHub Copilot CLI

หลังจากเริ่ม Copilot CLI ให้รันคำสั่งต่อไปนี้เพื่อเพิ่มเซิร์ฟเวอร์ SonarQube MCP:

/mcp add

คุณจะต้องระบุข้อมูลต่างๆ เกี่ยวกับเซิร์ฟเวอร์ MCP คุณสามารถใช้แท็บเพื่อนำทางระหว่างฟิลด์ต่างๆ ได้

  • เพื่อเชื่อมต่อกับ SonarQube Cloud:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_ORG, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_TOKEN>,SONARQUBE_ORG=<YOUR_ORG>
Tools: *

สำหรับ SonarQube Cloud US ให้เพิ่ม -e, SONARQUBE_URL ในอาร์กิวเมนต์และ SONARQUBE_URL=https://sonarqube.us ในตัวแปรสภาพแวดล้อม

  • เพื่อเชื่อมต่อกับ SonarQube Server:
Server Name: sonarqube
Server Type: Local (Press 1)
Command: docker
Arguments: run, --init, --pull=always, --rm, -i, -e, SONARQUBE_TOKEN, -e, SONARQUBE_URL, sonarsource/sonarqube-mcp
Environment Variables: SONARQUBE_TOKEN=<YOUR_USER_TOKEN>,SONARQUBE_URL=<YOUR_SERVER_URL>
Tools: *

ไฟล์คอนฟิกูเรชันอยู่ที่ ~/.copilot/mcp-config.json

เอเจนต์การเขียนโค้ด GitHub Copilot

เอเจนต์การเขียนโค้ด GitHub Copilot สามารถใช้เซิร์ฟเวอร์ SonarQube MCP ได้โดยตรงใน CI/CD ของคุณ

หากต้องการเพิ่มความลับในสภาพแวดล้อม Copilot ของคุณ ให้ทำตาม เอกสารประกอบ ของ Copilot เฉพาะความลับที่มีชื่อนำหน้าด้วย COPILOT_MCP_ เท่านั้นที่จะพร้อมใช้งานในคอนฟิกูเรชัน MCP ของคุณ

ในพื้นที่เก็บ GitHub ของคุณ ไปที่ การตั้งค่า -> Copilot -> เอเจนต์การเขียนโค้ด และเพิ่มคอนฟิกูเรชันต่อไปนี้ในส่วนคอนฟิกูเรชัน MCP:

  • เพื่อเชื่อมต่อกับ SonarQube Cloud:
{
  "mcpServers": {
    "sonarqube": {
      "type": "local",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "--rm",
        "-i",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_TOKEN",
        "SONARQUBE_ORG": "COPILOT_MCP_SONARQUBE_ORG"
      },
      "tools": ["*"]
    }
  }
}

สำหรับ SonarQube Cloud US ให้เพิ่ม "-e", "SONARQUBE_URL" ในอาร์เรย์ args และ "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" ในส่วน env จากนั้นตั้งค่าความลับ COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us

  • เพื่อเชื่อมต่อกับ SonarQube Server:
{
  "mcpServers": {
    "sonarqube": {
      "type": "local",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "--rm",
        "-i",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_URL",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "COPILOT_MCP_SONARQUBE_USER_TOKEN",
        "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL"
      },
      "tools": ["*"]
    }
  }
}
Kiro

สร้างไฟล์ .kiro/settings/mcp.json ในไดเรกทอรีพื้นที่ทำงานของคุณ (หรือแก้ไขหากมีอยู่แล้ว) เพิ่มคอนฟิกูเรชันต่อไปนี้:

  • เพื่อเชื่อมต่อกับ SonarQube Cloud:
{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e", 
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_TOKEN>",
        "SONARQUBE_ORG": "<YOUR_ORG>"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

สำหรับ SonarQube Cloud US ให้เพิ่ม "-e", "SONARQUBE_URL" ในอาร์เรย์ args และ "SONARQUBE_URL": "https://sonarqube.us" ในส่วน env

  • เพื่อเชื่อมต่อกับ SonarQube Server:
{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e", 
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_URL",
        "sonarsource/sonarqube-mcp"
      ],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
        "SONARQUBE_URL": "<YOUR_SERVER_URL>"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
VS Code

คุณสามารถใช้ปุ่มต่อไปนี้เพื่อทำให้กระบวนการติดตั้งภายใน VS Code ง่ายขึ้น

Install for SonarQube Cloud

สำหรับ SonarQube Cloud US ให้เพิ่ม "SONARQUBE_URL": "https://sonarqube.us" ด้วยตนเองในส่วน env ในคอนฟิกูเรชัน MCP ของคุณหลังการติดตั้ง

Install for SonarQube Server

Windsurf

เซิร์ฟเวอร์ SonarQube MCP พร้อมใช้งานเป็นปลั๊กอิน Windsurf ทำตามขั้นตอนเหล่านี้:

  1. เปิด การตั้งค่า ของ Windsurf > Cascade > MCP Servers และเลือก เปิด MCP Marketplace
  2. ค้นหา sonarqube ใน Cascade MCP Marketplace
  3. เลือก SonarQube MCP Server และเลือก ติดตั้ง
  4. เพิ่มโทเค็นผู้ใช้ SonarQube ที่จำเป็น จากนั้นเพิ่มคีย์องค์กรหากคุณต้องการเชื่อมต่อกับ SonarQube Cloud หรือ URL ของ SonarQube หากคุณต้องการเชื่อมต่อกับ SonarQube Server หรือ Community Build

สำหรับ SonarQube Cloud US ให้ตั้งค่า URL เป็น https://sonarqube.us

Zed

ไปที่มุมมอง ส่วนขยาย ใน Zed และค้นหา SonarQube MCP Server เมื่อติดตั้งส่วนขยาย คุณจะได้รับแจ้งให้ระบุตัวแปรสภาพแวดล้อมที่จำเป็น:

  • เมื่อใช้ SonarQube Cloud:
{
  "sonarqube_token": "YOUR_SONARQUBE_TOKEN",
  "sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
  "docker_path": "DOCKER_PATH"
}

สำหรับ SonarQube Cloud US ให้เพิ่ม "sonarqube_url": "https://sonarqube.us" ในคอนฟิกูเรชัน

  • เมื่อใช้ SonarQube Server:
{
  "sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
  "sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
  "docker_path": "DOCKER_PATH"
}

docker_path คือพาธไปยังไฟล์ปฏิบัติการ docker ตัวอย่าง:

Linux/macOS: /usr/bin/docker หรือ /usr/local/bin/docker

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

💡 เคล็ดลับ: เราขอแนะนำให้ดึงอิมเมจล่าสุดเป็นประจำหรือก่อนรายงานปัญหาเพื่อให้แน่ใจว่าคุณมีฟีเจอร์และการแก้ไขล่าสุด

การติดตั้งด้วยตนเอง

คุณสามารถติดตั้งเซิร์ฟเวอร์ SonarQube MCP ด้วยตนเองโดยคัดลอกข้อมูลต่อไปนี้ในไฟล์คอนฟิกูเรชันเซิร์ฟเวอร์ MCP:

  • เพื่อเชื่อมต่อกับ SonarQube Cloud:
{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_ORG",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_ORG": "<org>"
    }
  }
}
  • เพื่อเชื่อมต่อกับ SonarQube Server:
{
  "sonarqube": {
    "command": "docker",
    "args": [
      "run",
      "--init",
      "--pull=always",
      "-i",
      "--rm",
      "-e",
      "SONARQUBE_TOKEN",
      "-e",
      "SONARQUBE_URL",
      "sonarsource/sonarqube-mcp"
    ],
    "env": {
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}

การผสานรวมกับ SonarQube สำหรับ IDE

เซิร์ฟเวอร์ SonarQube MCP สามารถผสานรวมกับ SonarQube สำหรับ IDE เพื่อเพิ่มประสิทธิภาพขั้นตอนการทำงานการพัฒนาของคุณ ให้การวิเคราะห์โค้ดและข้อมูลเชิงลึกที่ดีขึ้นโดยตรงภายใน IDE ของคุณ

คอนฟิกูเรชัน

เมื่อใช้ SonarQube สำหรับ IDE ควรตั้งค่าตัวแปรสภาพแวดล้อม SONARQUBE_IDE_PORT ด้วยหมายเลขพอร์ตที่ถูกต้อง SonarQube สำหรับ VS Code มีปุ่มติดตั้งด่วนซึ่งจะตั้งค่าคอนฟิกูเรชันพอร์ตที่ถูกต้องโดยอัตโนมัติ

ตัวอย่างเช่น ด้วย SonarQube Cloud:

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

เมื่อรันเซิร์ฟเวอร์ MCP ในคอนเทนเนอร์บน Linux คอนเทนเนอร์ไม่สามารถเข้าถึงเซิร์ฟเวอร์ฝังตัว SonarQube สำหรับ IDE ที่ทำงานบน localhost ได้ เพื่อให้คอนเทนเนอร์เชื่อมต่อกับเซิร์ฟเวอร์ SonarQube สำหรับ IDE ได้ ให้เพิ่มตัวเลือก --network=host ในคำสั่งรันคอนเทนเนอร์ของคุณ

คอนฟิกูเรชัน

ขึ้นอยู่กับสภาพแวดล้อมของคุณ คุณควรระบุตัวแปรสภาพแวดล้อมเฉพาะ

พื้นฐาน

คุณควรเพิ่มตัวแปรต่อไปนี้เมื่อรันเซิร์ฟเวอร์ MCP:

ตัวแปรสภาพแวดล้อมคำอธิบาย
STORAGE_PATHพาธสัมบูรณ์ที่จำเป็นไปยังไดเรกทอรีที่เขียนได้ซึ่งเซิร์ฟเวอร์ SonarQube MCP จะเก็บไฟล์ของตน (เช่น สำหรับการสร้าง การอัปเดต และการคงอยู่) โดยจะระบุให้โดยอัตโนมัติเมื่อใช้อิมเมจคอนเทนเนอร์
SONARQUBE_PROJECT_KEYคีย์โครงการเริ่มต้นที่ไม่บังคับ เมื่อตั้งค่าแล้ว เครื่องมือทั้งหมดที่ต้องใช้คีย์โครงการจะใช้ค่านี้โดยอัตโนมัติ — พารามิเตอร์ projectKey จะถูกลบออกจากสคีมาทั้งหมด มีประโยชน์เมื่อทำงานในโครงการเดียว
SONARQUBE_IDE_PORTหมายเลขพอร์ตที่ไม่บังคับระหว่าง 64120 ถึง 64130 ที่ใช้เชื่อมต่อเซิร์ฟเวอร์ SonarQube MCP กับ SonarQube สำหรับ IDE
SONARQUBE_DEBUG_ENABLEDเมื่อตั้งค่าเป็น true จะเปิดใช้งานการบันทึกดีบัก บันทึกดีบักจะถูกเขียนไปยังทั้งไฟล์บันทึกและ STDERR มีประโยชน์สำหรับการแก้ไขปัญหาการเชื่อมต่อหรือคอนฟิกูเรชัน ค่าเริ่มต้น: false
SONARQUBE_LOG_TO_FILE_DISABLEDเมื่อตั้งค่าเป็น true จะปิดการเขียนบันทึกลงดิสก์ทั้งหมด จะไม่มีการสร้างไฟล์บันทึกภายใต้ STORAGE_PATH/logs/ มีประโยชน์ในสภาพแวดล้อมคอนเทนเนอร์หรือสภาพแวดล้อมชั่วคราวที่ไม่ต้องการการบันทึกไฟล์ ค่าเริ่มต้น: false

การเมานต์พื้นที่ทำงาน (การลดการใช้บริบท)

โดยค่าเริ่มต้น เครื่องมือวิเคราะห์ analyze_code_snippet กำหนดให้เอเจนต์ส่งเนื้อหาไฟล์ทั้งหมดเป็นอาร์กิวเมนต์ fileContent สำหรับไฟล์ขนาดใหญ่หรือเมื่อวิเคราะห์หลายไฟล์ในเซสชันเดียว สิ่งนี้จะเพิ่มการใช้หน้าต่างบริบทและต้นทุนอย่างมีนัยสำคัญ วิธีแก้ไข: เมานต์ไดเรกทอรีโปรเจกต์ของคุณลงในคอนเทนเนอร์ที่ /app/mcp-workspace เมื่อตรวจพบการเมานต์นี้ เซิร์ฟเวอร์จะอ่านไฟล์โดยตรงจากดิสก์โดยใช้อาร์กิวเมนต์ filePath ที่สัมพันธ์กับโปรเจกต์ — เนื้อหาไฟล์จะไม่ผ่านบริบทของเอเจนต์

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

เมื่อการเมานต์ทำงานอยู่:

  • run_advanced_code_analysis จะพร้อมใช้งานหากองค์กรของคุณมีสิทธิ์
  • analyze_code_snippet: ต้องใช้ filePath และไม่ใช้ fileContent — เซิร์ฟเวอร์จะแก้ไขไฟล์ในลักษณะเดียวกัน

การเปิดใช้งานชุดเครื่องมือแบบเลือก

โดยค่าเริ่มต้น เฉพาะชุดเครื่องมือที่สำคัญเท่านั้นที่จะถูกเปิดใช้งานเพื่อลดภาระบริบท คุณสามารถเปิดใช้งานชุดเครื่องมือเพิ่มเติมได้ตามต้องการ

ตัวแปรสภาพแวดล้อมคำอธิบาย
SONARQUBE_TOOLSETSรายการชุดเครื่องมือที่คั่นด้วยเครื่องหมายจุลภาคเพื่อเปิดใช้งาน เมื่อตั้งค่าแล้ว เฉพาะชุดเครื่องมือเหล่านี้เท่านั้นที่จะพร้อมใช้งาน หากไม่ได้ตั้งค่า ชุดเครื่องมือสำคัญเริ่มต้นจะถูกเปิดใช้งาน (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag) หมายเหตุ: ชุดเครื่องมือ projects ถูกเปิดใช้งานเสมอโดยอัตโนมัติเนื่องจากจำเป็นสำหรับการค้นหาคีย์โปรเจกต์สำหรับการดำเนินการอื่นๆ เครื่องมือบริบท Vortex (ชื่อเดิม: Context Augmentation/CAG) และเครื่องมือวิเคราะห์ Vortex (ชื่อเดิม: Advanced Analysis/A3S) พร้อมใช้งานเฉพาะในโหมด stdio และใช้สิทธิ์องค์กรร่วมกันเพียงสิทธิ์เดียว — องค์กรต้องมีสิทธิ์ทั้งสองอย่างจึงจะใช้อย่างใดอย่างหนึ่งได้ บน SonarQube Server, stdio จะแสดงรายการบริบท Vortex และ run_advanced_code_analysis เมื่อทั้ง CAG และ A3S hubs มีสิทธิ์ ควรใช้คีย์ชุดเครื่องมือแบบรวม vortex คีย์ที่เลิกใช้งานแล้ว cag และ analysis ยังคงทำงานอยู่ คำเตือนเมื่อเริ่มต้นและหมายเหตุการเลิกใช้งานในคำแนะนำเซิร์ฟเวอร์จะถูกแสดงเมื่อใช้โดยไม่มี vortex ในโหมด Streamable HTTP ไคลเอนต์สามารถส่งส่วนหัว HTTP SONARQUBE_TOOLSETS เพื่อจำกัดขอบเขตเพิ่มเติมต่อคำขอ แต่ไม่สามารถเปิดใช้งานชุดเครื่องมือที่เกินกว่าที่เซิร์ฟเวอร์เริ่มต้นไว้ได้ (ดู Streamable HTTP transport ด้านล่าง)
SONARQUBE_READ_ONLYเมื่อตั้งค่าเป็น true จะเปิดใช้งานโหมดอ่านอย่างเดียวซึ่งปิดการดำเนินการเขียนทั้งหมด (เช่น การเปลี่ยนสถานะ issue) ตัวกรองนี้จะรวมกับ SONARQUBE_TOOLSETS หากตั้งค่าทั้งสอง ค่าเริ่มต้น: false ในโหมด Streamable HTTP ไคลเอนต์สามารถส่งส่วนหัว HTTP SONARQUBE_READ_ONLY เพื่อจำกัดคำขอแต่ละรายการให้เป็นอ่านอย่างเดียวเพิ่มเติม แต่ไม่สามารถยกเลิกข้อจำกัดการอ่านอย่างเดียวระดับเซิร์ฟเวอร์ได้ (ดู Streamable HTTP transport ด้านล่าง)
ชุดเครื่องมือที่พร้อมใช้งาน
ชุดเครื่องมือคีย์คำอธิบาย
Analysisanalysisเครื่องมือวิเคราะห์โค้ด (การวิเคราะห์ในเครื่องผ่าน analyze_code_snippet, เลิกใช้งานแล้ว แนะนำให้ใช้ analyze_file_list/การวิเคราะห์ Vortex)
IDEideเครื่องมือบริดจ์ SonarQube สำหรับ IDE (การวิเคราะห์ไฟล์, การสลับการวิเคราะห์อัตโนมัติ) — ปัจจุบันรวมอยู่ใน analysis ด้วย
Issuesissuesค้นหาและจัดการ issues ของ SonarQube
Security Hotspotssecurity-hotspotsค้นหาและตรวจสอบ Security Hotspots
Projectsprojectsเรียกดูและค้นหาโปรเจกต์ของ SonarQube
Quality Gatesquality-gatesเข้าถึง quality gates และสถานะของมัน
Rulesrulesเรียกดูและค้นหากฎของ SonarQube
Sourcessourcesเข้าถึงซอร์สโค้ดและข้อมูล SCM
Duplicationsduplicationsค้นหาการซ้ำซ้อนของโค้ดในโปรเจกต์ต่างๆ
Measuresmeasuresดึงข้อมูลเมตริกและการวัด (รวมทั้งเครื่องมือ measures และ metrics)
Languageslanguagesแสดงรายการภาษาการเขียนโปรแกรมที่รองรับ
Portfoliosportfoliosจัดการ portfolios และองค์กร (Cloud และ Server)
Systemsystemเครื่องมือการดูแลระบบ (เฉพาะ Server)
Webhookswebhooksจัดการ webhooks
Dependency Risksdependency-risksวิเคราะห์ความเสี่ยงด้าน dependencies และปัญหาความปลอดภัย (SCA)
Coveragecoverageเครื่องมือวิเคราะห์และปรับปรุงความครอบคลุมการทดสอบ
Vortex Contextcagเครื่องมือบริบท Vortex — เฉพาะ stdio เลิกใช้งานแล้ว แนะนำให้ใช้ vortex (ชื่อเดิม: Context Augmentation/CAG)
Vortexvortexชุดเครื่องมือแบบรวม แนะนำ ที่แสดงทั้งเครื่องมือบริบท Vortex และเครื่องมือวิเคราะห์ Vortex ภายใต้ชื่อเดียว (เฉพาะ stdio; Cloud ต้องมีสิทธิ์องค์กรรวม; Server ต้องมีสิทธิ์ทั้งสอง hubs)
Agentic Readinessagentic-readinessเครื่องมือประเมินความพร้อมแบบ Agentic (SonarQube Cloud, ต้องมีสิทธิ์องค์กร)

ตัวอย่าง

เปิดใช้งานชุดเครื่องมือ analysis, issues และ quality gates (ใช้ Docker กับ SonarQube Cloud):

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

หมายเหตุ: ชุดเครื่องมือ projects ถูกเปิดใช้งานโดยอัตโนมัติเสมอ ดังนั้นคุณไม่จำเป็นต้องรวมไว้ใน SONARQUBE_TOOLSETS

เปิดใช้งานโหมดอ่านอย่างเดียว (ใช้ Docker กับ SonarQube Cloud):

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

SonarQube Cloud

เพื่อเปิดใช้งานฟังก์ชันทั้งหมด ต้องตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้ก่อนเริ่มเซิร์ฟเวอร์:

ตัวแปรสภาพแวดล้อมคำอธิบายจำเป็น
SONARQUBE_TOKENโทเค็น SonarQube Cloud ของคุณใช่
SONARQUBE_ORGคีย์ องค์กร SonarQube Cloud ของคุณใช่
SONARQUBE_URLURL 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_URLURL ของ SonarQube Server ของคุณใช่

ข้อกำหนดเวอร์ชัน: ต้องใช้ SonarQube Server 2025.1 (SQS) หรือ 25.1 (SonarQube Community Build) หรือใหม่กว่า ในระหว่างการเริ่มต้น MCP server จะอ่านเวอร์ชันของอินสแตนซ์ที่เชื่อมต่อและออกจากระบบพร้อมแสดงข้อผิดพลาดหากเวอร์ชันเก่าเกินไป (ตัวอย่างเช่น legacy 9.x/10.x Server releases และ Community Build 24.x ไม่ได้รับการสนับสนุน) SonarQube Cloud ไม่ต้องอยู่ภายใต้การตรวจสอบนี้

⚠️ การเชื่อมต่อกับ SonarQube Server ต้องใช้โทเค็นประเภท USER และจะไม่ทำงานอย่างถูกต้องหากใช้ project tokens หรือ global tokens

💡 เคล็ดลับการกำหนดค่า (โหมด stdio): การมีอยู่ของ SONARQUBE_ORG จะกำหนดว่าคุณกำลังเชื่อมต่อกับ SonarQube Cloud หรือ Server หากตั้งค่า SONARQUBE_ORG จะใช้ SonarQube Cloud มิฉะนั้นจะใช้ SonarQube Server

โหมดการขนส่ง (Transport Modes)

ข้อกำหนด MCP กำหนดกลไกการขนส่งสองแบบ: Stdio และ Streamable HTTP SonarQube MCP Server รองรับทั้งสองแบบ:

MCP transportโหมดเซิร์ฟเวอร์การใช้งานทั่วไป
Stdioค่าเริ่มต้น (ไม่มี SONARQUBE_TRANSPORT)MCP clients ในเครื่องที่เปิดใช้เซิร์ฟเวอร์เป็น subprocess (Cursor, Claude Code, VS Code, ฯลฯ)
Streamable HTTPSONARQUBE_TRANSPORT=http หรือ httpsการติดตั้งระยะไกลหรือผู้ใช้หลายคน; clients เชื่อมต่อกับ /mcp ผ่าน HTTP(S) (เช่น Windsurf พร้อม URL เซิร์ฟเวอร์ที่โฮสต์เอง)

หมายเหตุ: Streamable HTTP คือ MCP network transport ปัจจุบัน การขนส่ง HTTP แบบ SSE-only ที่เก่ากว่าจาก MCP เวอร์ชันก่อนหน้าถูกเลิกใช้และไม่ได้รับการสนับสนุน

1. Stdio (ค่าเริ่มต้น - แนะนำสำหรับการพัฒนาท้องถิ่น)

โหมดที่แนะนำสำหรับการพัฒนาท้องถิ่นและการตั้งค่าผู้ใช้คนเดียว ใช้โดย MCP clients ส่วนใหญ่

ตัวอย่าง - Docker กับ SonarQube Cloud:

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

2. HTTP (Streamable HTTP)

การขนส่ง Streamable HTTP ที่ไม่เข้ารหัส ใช้ HTTPS แทนสำหรับการติดตั้งผู้ใช้หลายคน

⚠️ ไม่แนะนำ: ใช้ Stdio สำหรับการพัฒนาท้องถิ่นหรือ HTTPS (Streamable HTTP) สำหรับการติดตั้งการผลิตผู้ใช้หลายคน

ตัวแปรสภาพแวดล้อมคำอธิบายค่าเริ่มต้น
SONARQUBE_TRANSPORTตั้งค่าเป็น http เพื่อเปิดใช้งานการขนส่ง Streamable HTTPไม่ได้ตั้งค่า (stdio)
SONARQUBE_HTTP_PORTหมายเลขพอร์ต (1024-65535)8080
SONARQUBE_HTTP_HOSTโฮสต์ที่จะผูก (ค่าเริ่มต้นคือ localhost เพื่อความปลอดภัย)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSต้นทางเบราว์เซอร์ที่คั่นด้วยเครื่องหมายจุลภาคที่อนุญาตสำหรับ CORS (เช่น https://my-app.example.com)ไม่ได้ตั้งค่า
SONARQUBE_MCP_IN_CONTAINERตั้งค่าเป็น true เมื่อรันภายในคอนเทนเนอร์ อิมเมจ Docker อย่างเป็นทางการตั้งค่านี้โดยอัตโนมัติ; ตั้งค่าด้วยตัวเองเมื่อใช้ OCI runtimes อื่นๆ (Podman, Kubernetes, Nomad, ฯลฯ)false

หมายเหตุ: ในโหมด Streamable HTTP (HTTP หรือ HTTPS) เซิร์ฟเวอร์ไม่มีสถานะ — คำขอของ client แต่ละรายการต้องรวมส่วนหัว Authorization: Bearer <token> ที่มีโทเค็น SonarQube ของผู้ใช้เอง สำหรับ SonarQube Cloud องค์กรจะถูกแก้ไขดังนี้:

  • หากตั้งค่า SONARQUBE_ORG ที่การเริ่มต้นเซิร์ฟเวอร์ คำขอทั้งหมดจะถูกส่งไปยังองค์กรนั้น Clients ต้องไม่ ส่งส่วนหัว SONARQUBE_ORG — การทำเช่นนั้นจะส่งผลให้เกิดข้อผิดพลาด
  • หากไม่ได้ตั้งค่า SONARQUBE_ORG ที่การเริ่มต้นเซิร์ฟเวอร์ client แต่ละรายการ ต้อง จัดหาส่วนหัว SONARQUBE_ORG ในทุกคำขอ Clients ยังสามารถจำกัดเครื่องมือที่มองเห็นได้ต่อคำขอโดยการจัดหาส่วนหัว SONARQUBE_TOOLSETS และ/หรือ SONARQUBE_READ_ONLY; สิ่งเหล่านี้ใช้การกรองเพิ่มเติมเหนือการกำหนดค่าระดับเซิร์ฟเวอร์ — สามารถลดขอบเขตได้เท่านั้น ไม่สามารถขยายได้ ไม่มีการรักษาสถานะเซสชันระหว่างคำขอ

เลิกใช้แล้ว: ส่วนหัวคำขอ SONARQUBE_TOKEN ยังคงได้รับการยอมรับสำหรับความเข้ากันได้ย้อนหลัง แต่จะถูกลบออกในเวอร์ชันอนาคต ย้ายไปใช้ Authorization: Bearer <token>

3. HTTPS (Streamable HTTP ผ่าน TLS) (แนะนำสำหรับการติดตั้งการผลิตผู้ใช้หลายคน)

การขนส่ง Streamable HTTP ที่ปลอดภัยด้วยการเข้ารหัส TLS ต้องใช้ใบรับรอง SSL

✅ แนะนำสำหรับการผลิต: ใช้ HTTPS เมื่อติดตั้ง MCP server สำหรับผู้ใช้หลายคนผ่าน Streamable HTTP เซิร์ฟเวอร์ผูกกับ 127.0.0.1 (localhost) โดยค่าเริ่มต้นเพื่อความปลอดภัย

ตัวแปรสภาพแวดล้อมคำอธิบายค่าเริ่มต้น
SONARQUBE_TRANSPORTตั้งค่าเป็น https เพื่อเปิดใช้งานการขนส่ง Streamable HTTP ผ่าน TLSไม่ได้ตั้งค่า (stdio)
SONARQUBE_HTTP_PORTหมายเลขพอร์ต (โดยทั่วไปคือ 8443 สำหรับ HTTPS)8080
SONARQUBE_HTTP_HOSTโฮสต์ที่จะผูก (ค่าเริ่มต้นคือ localhost เพื่อความปลอดภัย)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSต้นทางเบราว์เซอร์ที่คั่นด้วยเครื่องหมายจุลภาคที่อนุญาตสำหรับ CORS (เช่น https://my-app.example.com)ไม่ได้ตั้งค่า
SONARQUBE_MCP_IN_CONTAINERตั้งค่าเป็น true เมื่อรันภายในคอนเทนเนอร์ อิมเมจ Docker อย่างเป็นทางการตั้งค่านี้โดยอัตโนมัติ; ตั้งค่าด้วยตัวเองเมื่อใช้ OCI runtimes อื่นๆ (Podman, Kubernetes, Nomad, ฯลฯ)false

การกำหนดค่าใบรับรอง SSL (ไม่บังคับ):

ตัวแปรสภาพแวดล้อมคำอธิบายค่าเริ่มต้น
SONARQUBE_HTTPS_KEYSTORE_PATHเส้นทางไปยังไฟล์ keystore (.p12 หรือ .jks)/etc/ssl/mcp/keystore.p12
SONARQUBE_HTTPS_KEYSTORE_PASSWORDรหัสผ่าน keystoresonarlint
SONARQUBE_HTTPS_KEYSTORE_TYPEประเภท keystore (PKCS12 หรือ JKS)PKCS12

ตัวอย่าง - Docker กับ SonarQube Cloud:

หมายเหตุ: เมื่อรันในคอนเทนเนอร์ ให้ตั้งค่า SONARQUBE_HTTP_HOST=0.0.0.0 เพื่อให้คอนเทนเนอร์ฟังบนอินเทอร์เฟซทั้งหมดและการแมปพอร์ตของ runtime ทำงาน และตั้งค่า SONARQUBE_MCP_IN_CONTAINER=true เพื่อบอกเซิร์ฟเวอร์ว่าอยู่ภายในคอนเทนเนอร์ อิมเมจ Docker อย่างเป็นทางการตั้งค่าอย่างหลังโดยอัตโนมัติ; ตั้งค่าด้วยตัวเองเมื่อใช้ OCI runtimes อื่นๆ (Podman, Kubernetes, Nomad, ฯลฯ) แฟล็กพอร์ตฝั่งโฮสต์ควบคุมว่าใครสามารถเข้าถึงเซิร์ฟเวอร์จากภายนอกคอนเทนเนอร์ได้ SONARQUBE_HTTP_HOST=0.0.0.0 ควบคุมเฉพาะตำแหน่งที่เซิร์ฟเวอร์ฟังภายในคอนเทนเนอร์ — CORS ของเบราว์เซอร์ยังอนุญาตต้นทาง localhost โดยค่าเริ่มต้น

สำหรับเซิร์ฟเวอร์ที่รัน บนเครื่องของคุณเอง (เข้าถึงได้จาก localhost เท่านั้น):

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

สำหรับเซิร์ฟเวอร์ที่ เข้าถึงได้จากเครือข่าย (การติดตั้งระยะไกล):

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

การกำหนดค่า Client (SonarQube Cloud):

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

การกำหนดค่า Client (SonarQube Server):

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

หมายเหตุ: SONARQUBE_TOOLSETS และ SONARQUBE_READ_ONLY เป็นส่วนหัวต่อคำขอที่ไม่บังคับซึ่งจำกัดชุดเครื่องมือระดับเซิร์ฟเวอร์สำหรับคำขอนั้นๆ โดยเฉพาะ สามารถลดขอบเขตได้เท่านั้น — ไม่สามารถเปิดใช้งานชุดเครื่องมือหรือยกข้อจำกัดเกินกว่าที่เซิร์ฟเวอร์เปิดใช้ได้

หมายเหตุ: สำหรับการพัฒนาท้องถิ่น ให้ใช้การขนส่ง Stdio แทน (ค่าเริ่มต้น) HTTPS Streamable HTTP มีไว้สำหรับการติดตั้งการผลิตผู้ใช้หลายคนพร้อมใบรับรอง SSL ที่เหมาะสม

Service Endpoints

เมื่อรันในโหมด Streamable HTTP (http หรือ https) เซิร์ฟเวอร์จะเปิดเผย service endpoints ที่ไม่ต้องรับรองความถูกต้องสองสามรายการนอกเหนือจาก MCP endpoint ที่ /mcp สิ่งเหล่านี้มีไว้สำหรับการใช้งานระหว่างบริการ (การตรวจสอบ การจัดระเบียบ การตรวจสอบความเข้ากันได้ของ client) และไม่ต้องใช้ส่วนหัว Authorization

EndpointMethodคำอธิบายตัวอย่างการตอบสนอง
/healthGETLiveness probe ส่งคืน 200 OK พร้อมเนื้อหาว่างเมื่อเซิร์ฟเวอร์พร้อมรับคำขอ(เนื้อหาว่าง)
/infoGETส่งคืนเวอร์ชัน MCP server เป็น JSON มีประโยชน์สำหรับการตรวจสอบเวอร์ชันเซิร์ฟเวอร์ที่ติดตั้ง{"version":"1.16.0"}

Endpoints เหล่านี้ไม่พร้อมใช้งานเมื่อรันด้วยการขนส่ง Stdio

ใบรับรองที่กำหนดเอง

หาก SonarQube Server ของคุณใช้ใบรับรองที่ลงนามด้วยตนเองหรือใบรับรองจาก Certificate Authority (CA) ส่วนตัว คุณสามารถเพิ่มใบรับรองที่กำหนดเองลงในคอนเทนเนอร์ที่จะถูกติดตั้งโดยอัตโนมัติ

การกำหนดค่า

การใช้ Volume Mount

เมานต์ไดเรกทอรีที่มีใบรับรองของคุณเมื่อรันคอนเทนเนอร์:

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

รูปแบบใบรับรองที่รองรับ

คอนเทนเนอร์รองรับรูปแบบใบรับรองต่อไปนี้:

  • ไฟล์ .crt (เข้ารหัส PEM หรือ DER)
  • ไฟล์ .pem (เข้ารหัส PEM)

การกำหนดค่า MCP พร้อมใบรับรอง

เมื่อใช้ใบรับรองที่กำหนดเอง คุณสามารถแก้ไขการกำหนดค่า MCP ของคุณเพื่อเมานต์ใบรับรอง:

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

หมายเหตุ: รันเซิร์ฟเวอร์ จาก JAR แทนคอนเทนเนอร์หรือไม่? การเมานต์โวลุ่มด้านบนติดตั้งใบรับรองลงใน trust store ของ OS ในคอนเทนเนอร์ ซึ่งเซิร์ฟเวอร์ก็อ่านเช่นกัน หากคุณไม่สามารถใช้ trust store ของ OS — โดยเฉพาะบน Windows ซึ่งไม่มีการปรึกษา — ชี้ JVM ไปที่ Java truststore ที่เก็บใบรับรอง CA: -Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase> มันถูกเพิ่มเหนือใบรับรองที่เชื่อถือได้เริ่มต้น

พร็อกซี

SonarQube MCP Server รองรับพร็อกซี HTTP และ SOCKS5 ผ่านคุณสมบัติระบบ Java มาตรฐาน

การกำหนดค่า

พร็อกซี HTTP/HTTPS

คุณสามารถกำหนดค่าการตั้งค่าพร็อกซีโดยใช้คุณสมบัติระบบ Java สิ่งเหล่านี้สามารถตั้งค่าเป็นตัวแปรสภาพแวดล้อมหรือส่งผ่านเป็นอาร์กิวเมนต์ JVM

คุณสมบัติพร็อกซีทั่วไป:

คุณสมบัติคำอธิบายตัวอย่าง
http.proxyHostชื่อโฮสต์พร็อกซี HTTPproxy.example.com
http.proxyPortพอร์ตพร็อกซี HTTP8080
https.proxyHostชื่อโฮสต์พร็อกซี HTTPSproxy.example.com
https.proxyPortพอร์ตพร็อกซี HTTPS8443
http.nonProxyHostsโฮสต์ที่ข้ามพร็อกซี (คั่นด้วยไปป์)localhost|127.0.0.1|*.internal.com

การรับรองความถูกต้องพร็อกซี HTTP/HTTPS:

คุณสมบัติคำอธิบายตัวอย่าง
http.proxyUserชื่อผู้ใช้พร็อกซี HTTPmyuser
http.proxyPasswordรหัสผ่านพร็อกซี HTTPmypassword
https.proxyUserชื่อผู้ใช้พร็อกซี HTTPSmyuser
https.proxyPasswordรหัสผ่านพร็อกซี HTTPSmypassword

พร็อกซี SOCKS5

รองรับพร็อกซี SOCKS5

คุณสมบัติคำอธิบายค่าเริ่มต้นตัวอย่าง
socksProxyHostชื่อโฮสต์ของพร็อกซี SOCKS5—localhost
socksProxyPortพอร์ตของพร็อกซี SOCKS510801080
java.net.socks.usernameชื่อผู้ใช้ SOCKS5 (หากต้องมีการยืนยันตัวตน)—myuser
java.net.socks.passwordรหัสผ่าน SOCKS5 (หากต้องมีการยืนยันตัวตน)—mypassword

ใบรับรองไคลเอ็นต์ (Mutual TLS)

หากเซิร์ฟเวอร์ SonarQube ของคุณกำหนดให้ไคลเอ็นต์ต้องแสดงใบรับรองระหว่างการจับมือ TLS (mutual TLS) คุณสามารถระบุคีย์สโตร์ PKCS12 ได้โดยการเมานต์ลงในคอนเทนเนอร์และส่งตำแหน่งผ่าน JAVA_OPTS

การกำหนดค่า

การใช้คีย์สโตร์ PKCS12

เมานต์ไฟล์ .p12 หรือ .pfx ของคุณลงในคอนเทนเนอร์และตั้งค่าตัวแปรสภาพแวดล้อม JAVA_OPTS พร้อมคุณสมบัติของคีย์สโตร์:

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

หมายเหตุ: ไฟล์ใบรับรองต้องสามารถอ่านได้โดยกระบวนการในคอนเทนเนอร์ ตรวจสอบและแก้ไขสิทธิ์หากจำเป็น:

ls -la /path/to/client.p12       # ดูหา -rw-r--r-- (644) หรือกว้างกว่า
chmod 644 /path/to/client.p12    # ให้สิทธิ์อ่านแก่ผู้ใช้ในคอนเทนเนอร์

ละเว้น -Djavax.net.ssl.keyStorePassword หากคีย์สโตร์ไม่มีรหัสผ่าน โปรดทราบว่ารหัสผ่านที่ใช้ที่นี่จะมองเห็นได้ผ่าน docker inspect หรือรายการกระบวนการ

การกำหนดค่า MCP พร้อมใบรับรองไคลเอ็นต์

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

การใช้คีย์สโตร์ PKCS12 กับ JAR แบบสแตนด์อโลน

เมื่อรันเซิร์ฟเวอร์ จาก JAR ให้ส่งคุณสมบัติคีย์สโตร์เป็นอาร์กิวเมนต์ JVM ก่อน -jar:

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

ละเว้น -Djavax.net.ssl.keyStorePassword หากคีย์สโตร์ไม่มีรหัสผ่าน

การกำหนดค่า MCP พร้อมใบรับรองไคลเอ็นต์ (JAR)

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

หมายเหตุ: ไฟล์ใบรับรองและคีย์ PEM (ไฟล์ .crt/.key แยกกัน) ต้องแปลงเป็นรูปแบบ PKCS12 ก่อน ใช้ openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 เพื่อแปลงไฟล์เหล่านั้น

เครื่องมือ

การวิเคราะห์

  • analyze_code_snippet - วิเคราะห์เนื้อหาไฟล์ด้วยตัววิเคราะห์ SonarQube เพื่อระบุปัญหาคุณภาพโค้ดและความปลอดภัย วิเคราะห์เนื้อหาไฟล์ทั้งหมดเสมอเพื่อความแม่นยำ สามารถกรองผลลัพธ์เป็นโค้ดสั้นๆ ที่ระบุได้

    เลิกใช้งาน: analyze_code_snippet จะถูกลบออกในเวอร์ชันอนาคต เชื่อมต่อ SonarQube for IDE เพื่อใช้ analyze_file_list หรือเปิดใช้งานการวิเคราะห์ Vortex สำหรับองค์กรของคุณเพื่อใช้ run_advanced_code_analysis (ดูด้านล่าง)

    การใช้งาน:

    • เมื่อเมานต์เวิร์กสเปซ (แนะนำ): ส่ง filePath (สัมพันธ์กับโปรเจกต์) — เซิร์ฟเวอร์อ่านไฟล์โดยตรง ทำให้เนื้อหาไฟล์ไม่อยู่ในบริบทของเอเจนต์
    • เมื่อไม่ได้เมานต์เวิร์กสเปซ: ส่ง fileContent ที่สมบูรณ์สำหรับการวิเคราะห์ไฟล์ทั้งหมด (รายงานปัญหาทั้งหมด)
    • เพิ่ม codeSnippet ที่ไม่บังคับเพื่อกรองผลลัพธ์ - เฉพาะปัญหาภายในโค้ดสั้นๆ จะถูกรายงาน (ตำแหน่งโค้ดสั้นๆ ถูกตรวจจับอัตโนมัติ)

    พารามิเตอร์:

    • projectKey - คีย์โปรเจกต์ SonarQube - สตริงที่จำเป็น (ไม่สนใจเมื่อกำหนด SONARQUBE_PROJECT_KEY)
    • filePath - เส้นทางสัมพันธ์กับโปรเจกต์ของไฟล์ที่จะวิเคราะห์ (เช่น src/main/java/MyClass.java) ใช้เมื่อเมานต์เวิร์กสเปซที่ /app/mcp-workspace - สตริง
    • fileContent - เนื้อหาไฟล์ที่สมบูรณ์เป็นสตริง จำเป็นเมื่อไม่ได้เมานต์เวิร์กสเปซ - สตริง
    • codeSnippet - โค้ดสั้นๆ เพื่อกรองปัญหา (ต้องตรงกับเนื้อหาใน fileContent) - สตริง
    • language - ภาษาของโค้ด (เช่น 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - สตริง
    • scope - ขอบเขตของไฟล์: MAIN หรือ TEST (ค่าเริ่มต้น: MAIN) - สตริง

    ภาษาที่รองรับ: Java, Kotlin, Python, Ruby, Go, JavaScript (js, jsx), TypeScript (ts, tsx), JSP, PHP, XML, HTML, CSS, CloudFormation, Kubernetes, Terraform, Azure Resource Manager, Ansible, Docker, การตรวจจับความลับ

เมื่อเปิดใช้งานการรวมกับ SonarQube for IDE: (เครื่องมือสองตัวนี้ถูกแท็กภายใต้ชุดเครื่องมือ analysis และ ide)

  • analyze_file_list - วิเคราะห์ไฟล์ในไดเรกทอรีทำงานปัจจุบันโดยใช้ SonarQube for IDE เครื่องมือนี้เชื่อมต่อกับอินสแตนซ์ SonarQube for IDE ที่รันอยู่เพื่อวิเคราะห์คุณภาพโค้ดบนรายการไฟล์

    • file_absolute_paths - รายการเส้นทางไฟล์สัมบูรณ์ที่จะวิเคราะห์ - String[] ที่จำเป็น
  • toggle_automatic_analysis - เปิดหรือปิดการวิเคราะห์อัตโนมัติของ SonarQube for IDE เมื่อเปิดใช้งาน SonarQube for IDE จะวิเคราะห์ไฟล์โดยอัตโนมัติเมื่อมีการแก้ไขในไดเรกทอรีทำงาน เมื่อปิดใช้งาน การวิเคราะห์อัตโนมัติจะถูกปิด

    • enabled - เปิดหรือปิดการวิเคราะห์อัตโนมัติ - บูลีนที่จำเป็น

บน SonarQube Server, stdio แสดงรายการเครื่องมือบริบท Vortex และ run_advanced_code_analysis เมื่อทั้งฮับ CAG และ A3S ได้รับสิทธิ์

เมื่อเปิดใช้งานการวิเคราะห์ Vortex:

ต้องเมานต์เวิร์กสเปซที่ /app/mcp-workspace

  • run_advanced_code_analysis - รันการวิเคราะห์ Vortex บนไฟล์เดียว องค์กรถูกอนุมานจากการกำหนดค่า MCP (SonarQube Server ใช้ตัวยึดตำแหน่ง UUID nil)
    • projectKey - คีย์ของโปรเจกต์ - สตริงที่จำเป็น (ไม่สนใจเมื่อกำหนด SONARQUBE_PROJECT_KEY)
    • branch - ชื่อสาขาที่ใช้ดึงบริบทการวิเคราะห์ล่าสุด - สตริงที่จำเป็น
    • filePath - เส้นทางสัมพันธ์กับโปรเจกต์ของไฟล์ที่จะวิเคราะห์ (เช่น src/main/java/MyClass.java) - สตริงที่จำเป็น
    • fileScope - กำหนดขอบเขตที่ไฟล์มาจาก: 'MAIN' หรือ 'TEST' (ค่าเริ่มต้น: MAIN) - สตริง

ความครอบคลุม

  • search_files_by_coverage - ค้นหาไฟล์ในโปรเจกต์ที่เรียงตามความครอบคลุม (จากน้อยไปมาก - ความครอบคลุมแย่ที่สุดก่อน) เครื่องมือนี้ช่วยระบุไฟล์ที่ต้องปรับปรุงความครอบคลุมของการทดสอบ

    • projectKey - คีย์โปรเจกต์ที่จะค้นหา - สตริงที่จำเป็น (ไม่สนใจเมื่อกำหนด SONARQUBE_PROJECT_KEY)
    • branch - ชื่อสาขาที่ไม่บังคับสำหรับการวิเคราะห์ตามสาขา ใช้ list_branches เพื่อค้นหาชื่อที่ถูกต้อง - สตริง
    • pullRequest - คีย์/ID คำขอดึงที่ไม่บังคับ ใช้ list_pull_requests เพื่อค้นหาคีย์ที่ถูกต้อง - สตริง
    • maxCoverage - เกณฑ์ความครอบคลุมสูงสุด (0-100) คืนค่าเฉพาะไฟล์ที่มีความครอบคลุม <= ค่านี้ - ตัวเลข
    • pageIndex - ดัชนีหน้า (เริ่มที่ 1, ค่าเริ่มต้น: 1) - ตัวเลข
    • pageSize - ขนาดหน้า (ค่าเริ่มต้น: 100, สูงสุด: 500) - ตัวเลข
  • get_file_coverage_details - รับข้อมูลความครอบคลุมทีละบรรทัดสำหรับไฟล์เฉพาะ รวมถึงบรรทัดที่ไม่ได้ครอบคลุมและบรรทัดที่มีสาขาครอบคลุมบางส่วน เครื่องมือนี้ช่วยระบุตำแหน่งที่แน่นอนในการเพิ่มความครอบคลุมของการทดสอบ ใช้หลังจากระบุไฟล์ที่มีความครอบคลุมต่ำผ่าน search_files_by_coverage

    • key - คีย์ไฟล์ (เช่น my_project:src/foo/Bar.java) - สตริงที่จำเป็น
    • branch - ชื่อสาขาที่ไม่บังคับสำหรับการวิเคราะห์ตามสาขา ใช้ list_branches เพื่อค้นหาชื่อที่ถูกต้อง - สตริง
    • pullRequest - คีย์/ID คำขอดึงที่ไม่บังคับ ใช้ list_pull_requests เพื่อค้นหาคีย์ที่ถูกต้อง - สตริง
    • from - บรรทัดแรกที่จะวิเคราะห์ (เริ่มที่ 1, ค่าเริ่มต้น: 1) - ตัวเลข
    • to - บรรทัดสุดท้ายที่จะวิเคราะห์ (รวม) หากไม่ระบุ จะคืนค่าทุกบรรทัด - ตัวเลข

ความเสี่ยงด้าน dependencies

หมายเหตุ: ความเสี่ยงด้าน dependencies มีเฉพาะเมื่อเชื่อมต่อกับ SonarQube Server 2025.4 Enterprise หรือสูงกว่าที่เปิดใช้งาน SonarQube Advanced Security

  • search_dependency_risks - ค้นหาปัญหาการวิเคราะห์องค์ประกอบซอฟต์แวร์ (ความเสี่ยงด้าน dependencies) ของโปรเจกต์ SonarQube พร้อมกับเวอร์ชันที่ปรากฏในโปรเจกต์ แอปพลิเคชัน หรือพอร์ตโฟลิโอที่วิเคราะห์
    • projectKey - คีย์โปรเจกต์ - สตริงที่จำเป็น (ไม่สนใจเมื่อกำหนด SONARQUBE_PROJECT_KEY)
    • branch - ชื่อสาขาที่ไม่บังคับสำหรับการวิเคราะห์ตามสาขา ใช้ list_branches เพื่อค้นหาชื่อที่ถูกต้อง - สตริง
    • pullRequest - คีย์/ID คำขอดึงที่ไม่บังคับ ใช้ list_pull_requests เพื่อค้นหาคีย์ที่ถูกต้อง - สตริง
    • pageIndex - ดัชนีหน้าที่ไม่บังคับ (เริ่มที่ 1, ค่าเริ่มต้น: 1) - จำนวนเต็ม
    • pageSize - ขนาดหน้าที่ไม่บังคับ ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - จำนวนเต็ม

องค์กร

หมายเหตุ: องค์กรมีเฉพาะเมื่อเชื่อมต่อกับ SonarQube Cloud

  • list_enterprises - แสดงรายการองค์กรที่พร้อมใช้งานใน SonarQube Cloud ที่คุณมีสิทธิ์เข้าถึง ใช้เครื่องมือนี้เพื่อค้นหา ID องค์กรที่สามารถใช้กับเครื่องมืออื่นๆ ได้
    • enterpriseKey - คีย์องค์กรที่ไม่บังคับเพื่อกรองผลลัพธ์ - สตริง

ปัญหา

  • change_sonar_issue_status - เปลี่ยนสถานะของปัญหา SonarQube เป็น "accept", "falsepositive" หรือ "reopen" ปัญหา

    • key - คีย์ปัญหา - สตริงที่จำเป็น
    • status - สถานะใหม่ของปัญหา - Enum ที่จำเป็น {"accept", "falsepositive", "reopen"}
    • comment - ความคิดเห็นที่ไม่บังคับอธิบายการเปลี่ยนสถานะ - สตริง
  • search_sonar_issues_in_projects - ค้นหาปัญหา SonarQube ในโปรเจกต์ขององค์กรของฉัน

    • projectKeys - รายการคีย์โปรเจกต์ SonarQube ที่ไม่บังคับ - String[]
    • branch - ชื่อสาขาที่ไม่บังคับสำหรับการวิเคราะห์ตามสาขา ใช้ list_branches เพื่อค้นหาชื่อที่ถูกต้อง - สตริง
    • pullRequest - คีย์/ID คำขอดึงที่ไม่บังคับ ใช้ list_pull_requests เพื่อค้นหาคีย์ที่ถูกต้อง - สตริง
    • severities - รายการระดับความรุนแรงที่ไม่บังคับเพื่อกรอง ค่าที่เป็นไปได้: INFO, LOW, MEDIUM, HIGH, BLOCKER - String[]
    • impactSoftwareQualities - รายการคุณภาพซอฟต์แวร์ที่ไม่บังคับเพื่อกรอง ค่าที่เป็นไปได้: MAINTAINABILITY, RELIABILITY, SECURITY - String[]
    • issueStatuses - รายการสถานะปัญหาที่ไม่บังคับเพื่อกรอง ค่าที่เป็นไปได้: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - String[]
    • tags - รายการแท็กปัญหาที่ไม่บังคับเพื่อกรอง แท็กเป็นตัวพิมพ์เล็ก - String[]
    • inNewCodePeriod - คืนค่าเฉพาะปัญหาในช่วงโค้ดใหม่ ต้องมีรายการเดียวใน projectKeys และ files - บูลีน
    • issueKey - คีย์ปัญหาที่ไม่บังคับเพื่อดึงปัญหาเฉพาะ - สตริง
    • pageIndex - ดัชนีหน้าที่ไม่บังคับ (เริ่มที่ 1, ค่าเริ่มต้น: 1) - จำนวนเต็ม
    • pageSize - ขนาดหน้าที่ไม่บังคับ ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - จำนวนเต็ม

Security Hotspots

  • search_security_hotspots - ค้นหา Security Hotspots ในโปรเจกต์ SonarQube

    • projectKey - คีย์โปรเจกต์หรือแอปพลิเคชัน - สตริงที่จำเป็น (ไม่สนใจเมื่อกำหนด SONARQUBE_PROJECT_KEY)
    • hotspotKeys - รายการคีย์ Security Hotspot เฉพาะที่คั่นด้วยเครื่องหมายจุลภาคเพื่อดึงข้อมูล - String[]
    • branch - ชื่อสาขาที่ไม่บังคับสำหรับการวิเคราะห์ตามสาขา ใช้ list_branches เพื่อค้นหาชื่อที่ถูกต้อง - สตริง
    • pullRequest - คีย์/ID คำขอดึงที่ไม่บังคับ ใช้ list_pull_requests เพื่อค้นหาคีย์ที่ถูกต้อง - สตริง
    • files - รายการเส้นทางไฟล์ที่ไม่บังคับเพื่อกรอง - String[]
    • status - ตัวกรองสถานะที่ไม่บังคับ: TO_REVIEW, REVIEWED - สตริง
    • resolution - ตัวกรองการแก้ไขที่ไม่บังคับ: FIXED, SAFE, ACKNOWLEDGED - สตริง
    • sinceLeakPeriod - กรอง hotspots ที่สร้างตั้งแต่ช่วง leak (โค้ดใหม่) - บูลีน
    • onlyMine - แสดงเฉพาะ hotspots ที่กำหนดให้ฉัน - บูลีน
    • pageIndex - ดัชนีหน้าที่ไม่บังคับ (เริ่มที่ 1, ค่าเริ่มต้น: 1) - จำนวนเต็ม
    • pageSize - ขนาดหน้าที่ไม่บังคับ ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - จำนวนเต็ม
  • show_security_hotspot - รับข้อมูลโดยละเอียดเกี่ยวกับ Security Hotspot เฉพาะ รวมถึงรายละเอียดกฎ บริบทโค้ด โฟลว์ และความคิดเห็น

    • hotspotKey - คีย์ Security Hotspot - สตริงที่จำเป็น
  • change_security_hotspot_status - ตรวจสอบ Security Hotspot โดยการเปลี่ยนสถานะ เมื่อทำเครื่องหมายเป็น REVIEWED คุณต้องระบุ resolution (FIXED, SAFE, หรือ ACKNOWLEDGED)

    • hotspotKey - คีย์ของ Security Hotspot - String ที่จำเป็น
    • status - สถานะใหม่ - Enum ที่จำเป็น {"TO_REVIEW", "REVIEWED"}
    • resolution - Resolution เมื่อสถานะเป็น REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}
    • comment - ความคิดเห็นในการตรวจสอบเพิ่มเติม (ไม่บังคับ) - String

ภาษา

  • list_languages - แสดงรายการภาษาโปรแกรมทั้งหมดที่รองรับในอินสแตนซ์ SonarQube นี้
    • q - รูปแบบที่ใช้กรองคีย์/ชื่อภาษา (ไม่บังคับ) - String

การวัดผล

  • get_component_measures - รับการวัดผล SonarQube สำหรับคอมโพเนนต์ (โปรเจกต์, ไดเรกทอรี, ไฟล์)
    • projectKey - คีย์โปรเจกต์ - String ที่จำเป็นเมื่อไม่ได้กำหนดค่า SONARQUBE_PROJECT_KEY
    • branch - ชื่อ branch สำหรับการวิเคราะห์แบบ branch (ไม่บังคับ) ใช้ list_branches เพื่อค้นหาชื่อที่ถูกต้อง - String
    • metricKeys - คีย์ metric ที่ต้องการดึงข้อมูล (เช่น ncloc, complexity, violations, coverage) (ไม่บังคับ) - String[]
    • pullRequest - คีย์/ID ของ pull request (ไม่บังคับ) ใช้ list_pull_requests เพื่อค้นหาคีย์ที่ถูกต้อง - String

Metrics

  • search_metrics - ค้นหา metrics ของ SonarQube
    • pageIndex - ดัชนีหน้าเริ่มต้นที่ 1 (ไม่บังคับ, ค่าเริ่มต้น: 1) - Integer
    • pageSize - ขนาดหน้า (ไม่บังคับ) ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 100) - Integer

Portfolios

  • list_portfolios - แสดงรายการ portfolios ระดับองค์กรที่พร้อมใช้งานใน SonarQube พร้อมตัวเลือกการกรองและการแบ่งหน้า

    สำหรับ SonarQube Server:

    • q - คำค้นหาเพื่อกรอง portfolios ตามชื่อหรือคีย์ (ไม่บังคับ) - String
    • favorite - หากเป็น true จะส่งคืนเฉพาะ portfolios ที่เป็นรายการโปรด - Boolean
    • pageIndex - หมายเลขหน้าเริ่มต้นที่ 1 (ไม่บังคับ, ค่าเริ่มต้น: 1) - Integer
    • pageSize - ขนาดหน้า สูงสุด 500 (ไม่บังคับ, ค่าเริ่มต้น: 100) - Integer

    สำหรับ SonarQube Cloud:

    • enterpriseId - enterprise uuid สามารถละเว้นได้เฉพาะเมื่อระบุพารามิเตอร์ 'favorite' เป็น true - String
    • q - คำค้นหาเพื่อกรอง portfolios ตามชื่อ (ไม่บังคับ) - String
    • favorite - จำเป็นต้องเป็น true หากละเว้นพารามิเตอร์ 'enterpriseId' หากเป็น true จะส่งคืนเฉพาะ portfolios ที่ผู้ใช้ที่เข้าสู่ระบบทำเครื่องหมายเป็นรายการโปรด ไม่สามารถเป็น true เมื่อ 'draft' เป็น true - Boolean
    • draft - หากเป็น true จะส่งคืนเฉพาะ drafts ที่สร้างโดยผู้ใช้ที่เข้าสู่ระบบ ไม่สามารถเป็น true เมื่อ 'favorite' เป็น true - Boolean
    • pageIndex - ดัชนีของหน้าที่จะดึงข้อมูล (ไม่บังคับ, ค่าเริ่มต้น: 1) - Integer
    • pageSize - ขนาดของหน้าที่จะดึงข้อมูล (ไม่บังคับ, ค่าเริ่มต้น: 50) - Integer

โปรเจกต์

  • search_my_sonarqube_projects - ค้นหาโปรเจกต์ SonarQube การตอบสนองจะถูกแบ่งหน้า

    • pageIndex - ดัชนีหน้าเริ่มต้นที่ 1 (ไม่บังคับ, ค่าเริ่มต้น: 1) - Integer
    • pageSize - ขนาดหน้า (ไม่บังคับ) ต้องมากกว่า 0 และน้อยกว่าหรือเท่ากับ 500 (ค่าเริ่มต้น: 500) - Integer
    • q - คำค้นหาเพื่อกรองโปรเจกต์ตามชื่อ (การจับคู่บางส่วน) หรือคีย์ (การจับคู่แบบตรงทั้งหมด) (ไม่บังคับ) - String
  • list_branches - แสดงรายการ branch ที่วิเคราะห์แล้วสำหรับโปรเจกต์

    • SonarQube Cloud: ส่งคืน branch แบบ long-lived (LONG) และ short-lived (SHORT) พร้อมฟิลด์ type และ mergeBranch ตัวกรอง branchTypes เพิ่มเติม (ไม่บังคับ): ALL (ค่าเริ่มต้น), LONG, หรือ SHORT
    • SonarQube Server: ส่งคืน branch ที่วิเคราะห์แล้วทั้งหมด (ชื่อ, quality gate, วันที่วิเคราะห์) ไม่มีตัวกรอง type, mergeBranch, หรือ branchTypes
    • ใช้ชื่อ branch ที่ส่งคืนเป็นพารามิเตอร์ branch ในเครื่องมืออื่น สำหรับการวิเคราะห์ pull request ให้ใช้ list_pull_requests แทน
    • projectKey - คีย์โปรเจกต์ (เช่น my_project) - String ที่จำเป็น (ไม่สนใจเมื่อกำหนด SONARQUBE_PROJECT_KEY)
    • branchTypes - (เฉพาะ SonarQube Cloud) ตัวกรองเพิ่มเติม (ไม่บังคับ): ALL (ค่าเริ่มต้น), LONG, หรือ SHORT - Enum {"ALL", "LONG", "SHORT"}
  • list_pull_requests - แสดงรายการ pull requests ทั้งหมดสำหรับโปรเจกต์ ใช้เครื่องมือนี้เพื่อค้นหา pull requests สำหรับการวิเคราะห์แบบ PR-decorated (coverage, issues, quality gate) ส่งคืนคีย์/ID ของ pull request ซึ่งสามารถใช้กับเครื่องมืออื่นได้ สำหรับการวิเคราะห์แบบ branch ที่ไม่มี pull requests ให้ใช้ list_branches แทน

    • projectKey - คีย์โปรเจกต์ (เช่น my_project) - String ที่จำเป็น (ไม่สนใจเมื่อกำหนด SONARQUBE_PROJECT_KEY)

Quality Gates

  • get_project_quality_gate_status - รับสถานะ Quality Gate สำหรับโปรเจกต์ SonarQube

    • analysisId - ID การวิเคราะห์ (ไม่บังคับ) - String
    • branch - ชื่อ branch สำหรับการวิเคราะห์แบบ branch (ไม่บังคับ) ใช้ list_branches เพื่อค้นหาชื่อที่ถูกต้อง - String
    • projectId - ID โปรเจกต์ (ไม่บังคับ) - String
    • projectKey - คีย์โปรเจกต์ (ไม่บังคับ) - String
    • pullRequest - คีย์/ID ของ pull request (ไม่บังคับ) ใช้ list_pull_requests เพื่อค้นหาคีย์ที่ถูกต้อง - String
  • list_quality_gates - แสดงรายการ quality gates ทั้งหมดใน SonarQube ของฉัน

กฎ

  • show_rule - แสดงข้อมูลโดยละเอียดเกี่ยวกับกฎของ SonarQube
    • key - คีย์กฎ - String ที่จำเป็น

การทำซ้ำ

  • search_duplicated_files - ค้นหาไฟล์ที่มีการทำซ้ำของโค้ดในโปรเจกต์ SonarQube โดยค่าเริ่มต้น จะดึงข้อมูลไฟล์ที่ซ้ำกันทั้งหมดโดยอัตโนมัติจากทุกหน้า (สูงสุด 10,000 ไฟล์) ส่งคืนเฉพาะไฟล์ที่มีการทำซ้ำ

    • projectKey - คีย์โปรเจกต์ - String ที่จำเป็น (ไม่สนใจเมื่อกำหนด SONARQUBE_PROJECT_KEY)
    • branch - ชื่อ branch สำหรับการวิเคราะห์แบบ branch (ไม่บังคับ) ใช้ list_branches เพื่อค้นหาชื่อที่ถูกต้อง - String
    • pullRequest - คีย์/ID ของ pull request (ไม่บังคับ) ใช้ list_pull_requests เพื่อค้นหาคีย์ที่ถูกต้อง - String
    • pageSize - จำนวนผลลัพธ์ต่อหน้าสำหรับการแบ่งหน้าด้วยตนเอง (ไม่บังคับ, สูงสุด: 500) หากไม่ระบุ จะดึงข้อมูลไฟล์ที่ซ้ำกันทั้งหมดโดยอัตโนมัติ - Integer
    • pageIndex - หมายเลขหน้าสำหรับการแบ่งหน้าด้วยตนเอง (ไม่บังคับ, เริ่มต้นที่ 1) หากไม่ระบุ จะดึงข้อมูลไฟล์ที่ซ้ำกันทั้งหมดโดยอัตโนมัติ - Integer
  • get_duplications - รับข้อมูลการทำซ้ำสำหรับไฟล์ ต้องมีสิทธิ์ Browse บนโปรเจกต์ของไฟล์

    • key - คีย์ไฟล์ - String ที่จำเป็น
    • branch - ชื่อ branch สำหรับการวิเคราะห์แบบ branch (ไม่บังคับ) ใช้ list_branches เพื่อค้นหาชื่อที่ถูกต้อง - String
    • pullRequest - คีย์/ID ของ pull request (ไม่บังคับ) ใช้ list_pull_requests เพื่อค้นหาคีย์ที่ถูกต้อง - String

แหล่งที่มา

  • get_raw_source - รับซอร์สโค้ดเป็นข้อความดิบจาก SonarQube ต้องมีสิทธิ์ 'See Source Code' บนไฟล์

    • key - คีย์ไฟล์ - String ที่จำเป็น
    • branch - ชื่อ branch สำหรับการวิเคราะห์แบบ branch (ไม่บังคับ) ใช้ list_branches เพื่อค้นหาชื่อที่ถูกต้อง - String
    • pullRequest - คีย์/ID ของ pull request (ไม่บังคับ) ใช้ list_pull_requests เพื่อค้นหาคีย์ที่ถูกต้อง - String
  • get_scm_info - รับข้อมูล SCM ของไฟล์ซอร์ส SonarQube ต้องมีสิทธิ์ See Source Code บนโปรเจกต์ของไฟล์

    • key - คีย์ไฟล์ - String ที่จำเป็น
    • commits_by_line - จัดกลุ่มบรรทัดตาม commit ของ SCM หากค่าเป็น false มิฉะนั้นจะแสดง commits สำหรับแต่ละบรรทัด - String
    • from - บรรทัดแรกที่จะส่งคืน เริ่มต้นที่ 1 - Number
    • to - บรรทัดสุดท้ายที่จะส่งคืน (รวม) - 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 เฉพาะโปรเจกต์ (ไม่บังคับ) - String
    • secret - ความลับของ 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) - String
    • exclude_glob - รูปแบบ glob สำหรับแยกไฟล์ - String
    • fields - รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบสนอง - String
    • limit - จำนวนผลลัพธ์สูงสุดที่จะส่งคืน (ค่าเริ่มต้น: 10) - Integer
    • regex_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 สำหรับกรองไฟล์ - String
    • exclude_glob - รูปแบบ glob สำหรับแยกไฟล์ - String
    • fields - รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบสนอง - String
    • limit - จำนวนผลลัพธ์สูงสุดที่จะส่งคืน (ค่าเริ่มต้น: 10) - Integer
    • regex_lists_operator - วิธีรวมหลายรูปแบบ: OR (ค่าเริ่มต้น) หรือ AND - String
  • get_upstream_call_flow - ติดตามว่าฟังก์ชันใดเรียกฟังก์ชันที่กำหนด มีประโยชน์สำหรับการค้นหาผู้เรียกและจุดเริ่มต้นทั้งหมด และทำความเข้าใจว่าอะไรจะเสียหายหากลายเซ็นเปลี่ยนแปลง

    • fqn - ชื่อที่ระบุอย่างสมบูรณ์ของฟังก์ชัน - String ที่จำเป็น
    • depth - ความลึกของห่วงโซ่การเรียก (0=เฉพาะฟังก์ชัน, 1=ผู้เรียกโดยตรง, ฯลฯ) - Integer
    • fields - รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบสนอง - String
  • get_downstream_call_flow - ติดตามว่าฟังก์ชันที่กำหนดเรียกฟังก์ชันใด มีประโยชน์สำหรับการวิเคราะห์ผลกระทบและทำความเข้าใจขั้นตอนการทำงาน

    • fqn - ชื่อที่ระบุอย่างสมบูรณ์ของฟังก์ชัน - String ที่จำเป็น
    • depth - ความลึกของห่วงโซ่การเรียก (0=เฉพาะฟังก์ชัน, 1=ผู้ถูกเรียกโดยตรง, ฯลฯ) - Integer
    • fields - รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบสนอง - String
  • get_source_code - รับซอร์สโค้ดที่สมบูรณ์ (ลายเซ็นและเนื้อหา) สำหรับองค์ประกอบโค้ดตามชื่อที่ระบุอย่างสมบูรณ์

    • fqn - ชื่อที่ระบุอย่างสมบูรณ์ขององค์ประกอบ - String ที่จำเป็น
    • fields - รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบสนอง - String
  • get_type_hierarchy - รับลำดับชั้นการสืบทอดทั้งหมดสำหรับโครงสร้างคลาส (คลาส, อินเทอร์เฟซ, อีเนียม, เรคคอร์ด, เอ็กซ์เซปชัน, สตรัคต์) จำเป็นสำหรับการทำความเข้าใจแผนผังการสืบทอดและการรีแฟกเตอร์

    • fqn - ชื่อที่ระบุเต็มรูปแบบของโครงสร้างคลาส - String ที่จำเป็น
    • fields - รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบกลับ - String
  • get_references - รับการอ้างอิงโค้ดขาเข้าและขาออกโดยตรงสำหรับคลาสหรือโมดูล คืนค่าเฉพาะการอ้างอิงโดยตรง (ไม่ใช่แบบทรานซิทีฟ)

    • fqn - ชื่อที่ระบุเต็มรูปแบบของคลาสหรือโมดูล - String ที่จำเป็น
    • fields - รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวมในการตอบกลับ - String
  • get_current_architecture - รับกราฟสถาปัตยกรรมแบบลำดับชั้นที่กรองด้วยคำนำหน้าเส้นทางและความลึก มีประโยชน์สำหรับการสำรวจโครงสร้างโมดูลและการพึ่งพาระดับสูง

    • depth - ความลึกของลำดับชั้น (0=เฉพาะราก, 1=ราก+ลูก ฯลฯ) - Integer ที่จำเป็น
    • path_prefix - คำนำหน้าเส้นทางที่ไม่บังคับเพื่อกรองโหนด (เช่น com.example.service) - String
    • ecosystem - ระบบนิเวศที่ไม่บังคับเพื่อกรอง (java, cs, py, js, ts) - String
  • get_intended_architecture - รับข้อจำกัดทางสถาปัตยกรรมที่ผู้ใช้กำหนดซึ่งระบุว่าโมดูลใดได้รับอนุญาตให้พึ่งพาโมดูลอื่น

เครื่องมือแนวทาง
  • get_guidelines - รับแนวทางการเขียนโค้ดตามปัญหาของโปรเจกต์ SonarQube หมวดหมู่แคตตาล็อก หรือการรวมกันของทั้งสอง
    • mode - โหมดการดึงแนวทาง: project_based, category_based, หรือ combined - String ที่จำเป็น
    • categories - รายการชื่อหมวดหมู่ (จำเป็นสำหรับโหมด category_based และ combined) - String[]
    • languages - รายการภาษาเป้าหมายในรูปแบบคีย์ที่เก็บของ SonarQube (จำเป็นเมื่อระบุ categories) - String[]
    • file_paths - รายการเส้นทางไฟล์ที่ไม่บังคับเพื่อกรองแนวทาง - String[]
เครื่องมือการพึ่งพาบุคคลที่สาม
  • check_dependency - ตรวจสอบการพึ่งพาบุคคลที่สามสำหรับช่องโหว่ด้านความปลอดภัย มัลแวร์ในซัพพลายเชน และการปฏิบัติตามใบอนุญาตก่อนเพิ่มหรืออัปเดต
    • purl - URL ของแพ็กเกจ (purl) พร้อมเวอร์ชัน ตาม purl-spec รูปแบบ: pkg:<type>/<namespace>/<name>@<version> (เช่น pkg:npm/lodash@4.17.21, pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1, pkg:pypi/django@3.2.0) - String ที่จำเป็น
ตัวแปรสภาพแวดล้อมการเสริมบริบท
ตัวแปรคำอธิบายจำเป็นค่าเริ่มต้น
SONARQUBE_URLURL ของ SonarQube Cloudใช่https://sonarcloud.io
SONARQUBE_TOKENโทเค็นการตรวจสอบสิทธิ์ใช่ไม่มี
SONARQUBE_ORGคีย์องค์กรบน SonarQube Cloudใช่ไม่มี
SONARQUBE_PROJECT_KEYคีย์โปรเจกต์บน SonarQube Cloudใช่ไม่มี
SONAR_SQ_BRANCHการแทนที่สาขา SonarQube ที่ชัดเจน *ไม่ไม่มี
SONARQUBE_DEBUG_ENABLEDเปิดใช้งานการบันทึกดีบัก (สำหรับการแก้ไขปัญหา)ไม่False
SONAR_LOG_LEVELระดับรายละเอียดการบันทึก (TRACE, DEBUG, INFO, WARNING, ERROR)ไม่INFO
  • ต้องระบุเมื่อไม่ได้ใช้ git หรือเมื่อชื่อสาขา git ไม่ตรงกับชื่อสาขาใน SonarQube
การกำหนดค่าเฉพาะโปรเจกต์ (แนะนำ)

ขั้นแรก ส่งออก ตัวแปรสภาพแวดล้อม SONARQUBE_TOKEN ด้วย Personal Access Token (PAT) ที่ถูกต้องสำหรับโปรเจกต์ของคุณ

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

จากนั้น เมานต์เวิร์กสเปซของโปรเจกต์เพื่อให้เซิร์ฟเวอร์การเสริมบริบทเข้าถึงไฟล์ซอร์สของคุณได้โดยตรง:

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

สำคัญ: ในการกำหนดค่าแบบขอบเขตโปรเจกต์ อย่าใส่ SONARQUBE_TOKEN ในบล็อก env ให้ส่งออกเป็นตัวแปรสภาพแวดล้อม (export SONARQUBE_TOKEN=...) แทน Docker จะส่งต่อไปยังคอนเทนเนอร์ผ่าน -e SONARQUBE_TOKEN

ความพร้อมสำหรับ Agentic

หมายเหตุ: เครื่องมือความพร้อมสำหรับ Agentic มีเฉพาะบน SonarQube Cloud และต้องเปิดใช้งานฟีเจอร์สำหรับองค์กรของคุณ

  • start_agentic_readiness_assessment - เริ่มการประเมินความพร้อมสำหรับ agentic สำหรับโปรเจกต์ คืนค่าทันทีด้วยสถานะ PENDING และ assessmentId ใช้ get_agentic_readiness_assessment เพื่อสอบถามผลลัพธ์

    • projectKey - คีย์โปรเจกต์ - String ที่จำเป็น (ไม่สนใจเมื่อกำหนด SONARQUBE_PROJECT_KEY)
    • branch - สาขาที่จะประเมิน ละเว้นเพื่อใช้สาขาเริ่มต้นของโปรเจกต์ - String
  • get_agentic_readiness_assessment - ดึงผลลัพธ์ของการประเมิน เรียกซ้ำด้วย assessmentId เดียวกันจนกว่าสถานะจะเป็น COMPLETED, FAILED, หรือ INTERRUPTED เมื่อเสร็จสิ้น จะคืนค่าระดับโดยรวมและการแยกย่อยรายเสาหลักพร้อมการดำเนินการที่แนะนำและหลักฐาน

    • assessmentId - ID การประเมินที่คืนค่าโดย start_agentic_readiness_assessment - String ที่จำเป็น
  • list_agentic_readiness_assessments - แสดงรายการการประเมินทั้งหมดสำหรับโปรเจกต์ เรียงจากใหม่ไปเก่า ใช้ get_agentic_readiness_assessment สำหรับผลลัพธ์ระดับเสาหลักเต็มรูปแบบ

    • projectKey - คีย์โปรเจกต์เพื่อแสดงรายการการประเมิน - String ที่จำเป็น (ไม่สนใจเมื่อกำหนด SONARQUBE_PROJECT_KEY)
    • branch - กรองการประเมินตามชื่อสาขา ละเว้นเพื่อแสดงรายการการประเมินสำหรับทุกสาขา - String
    • pageIndex - ดัชนีหน้าแบบ 1-based (ค่าเริ่มต้น: 1) - Number
    • pageSize - จำนวนรายการต่อหน้า สูงสุด 100 (ค่าเริ่มต้น: 50) - Number

ตัวอย่างพรอมต์

เมื่อคุณตั้งค่า SonarQube MCP Server แล้ว นี่คือตัวอย่างพรอมต์สำหรับสถานการณ์จริงทั่วไป:

การแก้ไข Quality Gate ที่ล้มเหลว
My quality gate is failing for my project. Can you help me understand why and fix the most critical issues?
The quality gate on my feature branch is red. What do I need to fix to get it passing before I can merge to main?
การตรวจสอบก่อนเผยแพร่และก่อนรวมโค้ด
I'm about to merge my pull request <#247> for the <web-app> project. Can you check if there are any quality issues I should address first?
We're deploying to production tomorrow. Can you check the quality gate status and alert me to any critical issues in this branch?
การปรับปรุงคุณภาพโค้ด
I want to reduce technical debt in my project. What are the top issues I should prioritize?
Our code coverage dropped below 70%. Can you identify which files have the lowest coverage and help me improve it?
การทำความเข้าใจและแก้ไขปัญหา
I have 15 new code smells in my latest commit. Can you explain what they are and help me fix them?
SonarQube flagged a critical security vulnerability in <AuthController.java>. What's the issue and how do I fix it?
การจัดการความปลอดภัยและการพึ่งพา
We need to pass a security audit. Can you check all our projects for security vulnerabilities and create a prioritized list of what needs to be fixed?
Are there any known vulnerabilities in our dependencies? Check this project for dependency risks.
ความช่วยเหลือในการตรวจสอบโค้ด
I just wrote this authentication function. Can you analyze it for security issues and code quality problems before I commit?
Review the changes in <src/database/migrations> for any potential bugs or security issues.
การตรวจสอบสุขภาพโปรเจกต์
Give me a health report for my project: quality gate status, number of bugs, Security Hotspots, and code coverage.
Compare code quality between our main branch and the develop branch. Are we introducing new issues?
การทำงานร่วมกันในทีม
What are the most common rule violations across all our projects? We might need to update our coding standards.
Show me all the issues that were marked as false positives in the last month. Are we seeing patterns that suggest our rules need adjustment?

การสร้าง

ควรใช้ อิมเมจคอนเทนเนอร์ sonarsource/sonarqube-mcp

ในการรันเซิร์ฟเวอร์เป็น JAR แบบสแตนด์อโลนโดยไม่ใช้ Docker ให้ดาวน์โหลดบิลด์ที่เผยแพร่ล่วงหน้าจาก ที่เก็บไบนารี SonarSource ทุกเวอร์ชันที่เผยแพร่จะถูกโพสต์ที่นั่นเป็น sonarqube-mcp-server-<version>.jar (ตัวอย่างเช่น sonarqube-mcp-server-1.19.0.2785.jar)

รันจาก JAR

ดาวน์โหลด JAR สำหรับเวอร์ชันที่คุณต้องการจาก ที่เก็บไบนารี จากนั้นกำหนดค่า MCP client ของคุณให้รันด้วย Java 21 หรือใหม่กว่า:

  • เพื่อเชื่อมต่อกับ SonarQube Cloud:
{
  "sonarqube": {
    "command": "java",
    "args": [
      "-jar",
      "<path_to_sonarqube_mcp_server_jar>"
    ],
    "env": {
      "STORAGE_PATH": "<path_to_your_mcp_storage>",
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_ORG": "<org>"
    }
  }
}
  • เพื่อเชื่อมต่อกับ SonarQube Server:
{
  "sonarqube": {
    "command": "java",
    "args": [
      "-jar",
      "<path_to_sonarqube_mcp_server_jar>"
    ],
    "env": {
      "STORAGE_PATH": "<path_to_your_mcp_storage>",
      "SONARQUBE_TOKEN": "<token>",
      "SONARQUBE_URL": "<url>"
    }
  }
}
สร้างจากซอร์ส

SonarQube MCP Server ต้องใช้ Java Development Kit (JDK) เวอร์ชัน 21 หรือใหม่กว่าในการสร้าง

รันคำสั่ง Gradle ต่อไปนี้เพื่อทำความสะอาดโปรเจกต์และสร้างแอปพลิเคชัน:

./gradlew clean build -x test

ไฟล์ JAR จะถูกสร้างใน build/libs/

หลังจากเพิ่มหรืออัปเดตการพึ่งพา ให้สร้างไฟล์ล็อกใหม่:

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

ใช้การกำหนดค่า รันจาก JAR ด้านบน โดยชี้ <path_to_sonarqube_mcp_server_jar> ไปที่ JAR ใน build/libs/

การแก้ไขปัญหา

บันทึกแอปพลิเคชันจะถูกเขียนไปยังไฟล์ STORAGE_PATH/logs/mcp.log โดยค่าเริ่มต้น หากต้องการปิดการบันทึกไฟล์ทั้งหมด ให้ตั้งค่า SONARQUBE_LOG_TO_FILE_DISABLED=true

ปัญหาทั่วไป

"SonarQube server version is not supported"

MCP server ตรวจสอบเวอร์ชัน SonarQube Server ที่เชื่อมต่อระหว่างการเริ่มต้น หากอินสแตนซ์เก่ากว่า 2025.1 (SQS) หรือ 25.1 (SQCB) การเริ่มต้นจะล้มเหลวด้วย:

SonarQube server version is not supported, minimal version is SQS 2025.1 or SQCB 25.1

วิธีแก้ไข: อัปเกรด SonarQube Server เป็นเวอร์ชันที่รองรับ การตรวจสอบนี้ใช้เฉพาะเมื่อเชื่อมต่อกับ SonarQube Server (SONARQUBE_URL โดยไม่มี SONARQUBE_ORG) ไม่ใช่ SonarQube Cloud

"Feature is not working" หรือ "Missing tools/functionality"

คุณอาจรันอิมเมจ Docker ที่ล้าสมัย Docker แคชอิมเมจในเครื่อง ดังนั้นคุณจะไม่ได้รับการอัปเดตโดยอัตโนมัติ

วิธีแก้ไข: อัปเดตเป็นเวอร์ชันล่าสุด:

docker pull sonarsource/sonarqube-mcp

หลังจากดึงอิมเมจล่าสุด ให้รีสตาร์ท MCP client ของคุณเพื่อใช้เวอร์ชันที่อัปเดต

คุณสามารถเพิ่มแฟล็ก --pull=always ในคำสั่ง docker run ของคุณเพื่อตรวจสอบและดึงเวอร์ชันล่าสุดเสมอ:

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

"I want to pin to a specific version"

เรียกดูแท็กที่มีอยู่ที่ sonarsource/sonarqube-mcp และอ้างอิงเวอร์ชันที่คุณต้องการ:

docker pull sonarsource/sonarqube-mcp:1.19.0.2785

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

ในการกำหนดค่า MCP client ของคุณ ใช้ sonarsource/sonarqube-mcp:<version> แทน sonarsource/sonarqube-mcp และลบ --pull=always เพื่อให้ Docker ไม่อัปเกรดอิมเมจโดยไม่แจ้งเตือน

ข้อมูลและเทเลเมทรี

เซิร์ฟเวอร์นี้เก็บข้อมูลการใช้งานแบบไม่ระบุตัวตนและส่งไปยัง SonarSource เพื่อช่วยปรับปรุงผลิตภัณฑ์ ไม่มีการเก็บซอร์สโค้ดหรือที่อยู่ IP และ SonarSource จะไม่แบ่งปันข้อมูลกับผู้อื่น การเก็บเทเลเมทรีสามารถปิดได้ด้วยพร็อพเพอร์ตี้ระบบหรือตัวแปรสภาพแวดล้อมต่อไปนี้: TELEMETRY_DISABLED=true คลิก ที่นี่ เพื่อดูตัวอย่างข้อมูลที่เก็บ

ใบอนุญาต

ลิขสิทธิ์ 2025 SonarSource

ได้รับอนุญาตภายใต้ SONAR Source-Available License v1.0 การใช้ SonarQube MCP Server ตามเอกสารนี้เป็นวัตถุประสงค์ที่ไม่แข่งขันและได้รับอนุญาตภายใต้ SSAL

การใช้ SonarQube ผ่าน MCP ของคุณอยู่ภายใต้ SonarQube Cloud Terms of Service หรือ SonarQube Server Terms and Conditions รวมถึงการใช้ข้อมูลผลลัพธ์เพื่อวัตถุประสงค์การพัฒนาซอฟต์แวร์ภายในของคุณเท่านั้น