SonarQube

ทางการ

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

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

  • วิเคราะห์โค้ดสไนปเปต — ขอให้ผู้ช่วยของคุณรัน analyze_code_snippet บนตัวอย่างโค้ดเพื่อรับผลการวิเคราะห์คุณภาพและความปลอดภัยทันที
  • จัดการอิสชู — ใช้ชุดเครื่องมือ issues เพื่อค้นหา กรอง และอัปเดตอิสชูของ SonarQube ตามความรุนแรง สถานะ หรือโปรเจกต์
  • ตรวจสอบ Security Hotspots — คิวรีชุดเครื่องมือ security-hotspots เพื่อแสดงรายการ hotspots ที่ต้องตรวจสอบและเข้าใจความเสี่ยง
  • ตรวจสอบ Quality Gates — ถามสถานะ quality-gates ของโปรเจกต์เพื่อดูว่าผ่านเกณฑ์คุณภาพหรือไม่
  • ดึงเมตริกโปรเจกต์ — ดึงข้อมูล measures เช่น coverage และ duplications หรือเรียกดูโปรเจกต์ผ่านชุดเครื่องมือ projects

เอกสาร

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

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 พร้อมใช้งานใน Antigravity MCP Store ทำตามขั้นตอนเหล่านี้:

  1. เปิด แผงด้านข้างของเอเจนต์ (Agent Side Panel)
  2. คลิกที่จุดสามจุด (...) ที่มุมขวาบนแล้วเลือก MCP Servers
  3. ค้นหา SonarQube แล้วเลือก ติดตั้ง (Install)
  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 ของคุณ ไปที่ 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 ง่ายขึ้น

Install for SonarQube Cloud

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

Install for SonarQube Server

Windsurf

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

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

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

Zed

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ตัวอย่างเช่น กับ SonarQube Cloud:

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

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

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

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

พื้นฐาน

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

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

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

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

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

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

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

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

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

Environment variableDescription
SONARQUBE_TOOLSETSรายการชุดเครื่องมือที่คั่นด้วยเครื่องหมายจุลภาคเพื่อเปิดใช้งาน เมื่อตั้งค่าแล้ว จะมีเฉพาะชุดเครื่องมือเหล่านี้เท่านั้น หากไม่ได้ตั้งค่า จะเปิดใช้งานชุดเครื่องมือสำคัญเริ่มต้น (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag) หมายเหตุ: ชุดเครื่องมือ projects ถูกเปิดใช้งานโดยอัตโนมัติเสมอ เนื่องจากจำเป็นต้องใช้เพื่อค้นหาคีย์โปรเจกต์สำหรับการดำเนินการอื่น ๆ เครื่องมือบริบท Vortex (ชื่อเดิม: Context Augmentation/CAG) และเครื่องมือวิเคราะห์ Vortex (ชื่อเดิม: Advanced Analysis/A3S) มีเฉพาะในโหมด stdio และใช้สิทธิ์องค์กรแบบรวมร่วมกัน — องค์กรต้องมีสิทธิ์ทั้งสองอย่างจึงจะใช้อย่างใดอย่างหนึ่งได้ การเข้าถึงผ่านคีย์ชุดเครื่องมือ cag หรือ analysis ถูกเลิกใช้งานแล้ว แนะนำให้ใช้คีย์ชุดเครื่องมือแบบรวม vortex คีย์เก่ายังคงทำงานเพื่อความเข้ากันได้ย้อนหลัง แต่จะมีการแจ้งเตือนเมื่อเริ่มต้นและหมายเหตุการเลิกใช้งานในคำแนะนำเซิร์ฟเวอร์ทุกครั้งที่ใช้โดยไม่มี vortex ในโหมด Streamable HTTP ไคลเอนต์สามารถส่งส่วนหัว HTTP SONARQUBE_TOOLSETS เพื่อจำกัดเพิ่มเติมต่อคำขอ แต่ไม่สามารถเปิดใช้งานชุดเครื่องมือเกินกว่าที่เซิร์ฟเวอร์เริ่มต้นได้ (ดู การขนส่ง HTTP แบบสตรีม ด้านล่าง)
SONARQUBE_READ_ONLYเมื่อตั้งค่าเป็น true จะเปิดใช้งานโหมดอ่านอย่างเดียวซึ่งปิดการดำเนินการเขียนทั้งหมด (เช่น การเปลี่ยนสถานะปัญหา) ตัวกรองนี้สะสมร่วมกับ SONARQUBE_TOOLSETS หากตั้งค่าทั้งสอง ค่าเริ่มต้น: false ในโหมด Streamable HTTP ไคลเอนต์สามารถส่งส่วนหัว HTTP SONARQUBE_READ_ONLY เพื่อจำกัดคำขอแต่ละรายการให้เป็นอ่านอย่างเดียวเพิ่มเติม แต่ไม่สามารถยกเลิกข้อจำกัดการอ่านอย่างเดียวระดับเซิร์ฟเวอร์ได้ (ดู การขนส่ง HTTP แบบสตรีม ด้านล่าง)
ชุดเครื่องมือที่มี
ToolsetKeyDescription
การวิเคราะห์analysisเครื่องมือวิเคราะห์โค้ด (การวิเคราะห์ในเครื่องผ่าน analyze_code_snippet, เลิกใช้งาน แนะนำให้ใช้ analyze_file_list/การวิเคราะห์ Vortex)
IDEideเครื่องมือเชื่อมต่อ SonarQube สำหรับ IDE (การวิเคราะห์ไฟล์, การสลับการวิเคราะห์อัตโนมัติ) — ปัจจุบันรวมอยู่ใน analysis ด้วย
ปัญหาissuesค้นหาและจัดการปัญหาของ SonarQube
จุดเสี่ยงด้านความปลอดภัยsecurity-hotspotsค้นหาและตรวจสอบจุดเสี่ยงด้านความปลอดภัย
โปรเจกต์projectsเรียกดูและค้นหาโปรเจกต์ของ SonarQube
ประตูคุณภาพquality-gatesเข้าถึงประตูคุณภาพและสถานะของมัน
กฎrulesเรียกดูและค้นหากฎของ SonarQube
ซอร์สโค้ดsourcesเข้าถึงซอร์สโค้ดและข้อมูล SCM
การซ้ำซ้อนduplicationsค้นหาการซ้ำซ้อนของโค้ดในโปรเจกต์ต่างๆ
การวัดmeasuresดึงข้อมูลเมตริกและการวัด (รวมทั้งเครื่องมือวัดและเมตริก)
ภาษาlanguagesแสดงรายการภาษาการเขียนโปรแกรมที่รองรับ
พอร์ตโฟลิโอportfoliosจัดการพอร์ตโฟลิโอและองค์กร (Cloud และ Server)
ระบบsystemเครื่องมือการดูแลระบบ (เฉพาะ Server)
เว็บฮุกwebhooksจัดการเว็บฮุก
ความเสี่ยงจากดีเพนเดนซีdependency-risksวิเคราะห์ความเสี่ยงจากดีเพนเดนซีและปัญหาความปลอดภัย (SCA)
ความครอบคลุมcoverageเครื่องมือวิเคราะห์และปรับปรุงความครอบคลุมของการทดสอบ
บริบท Vortexcagเครื่องมือบริบท Vortex — เฉพาะ stdio เลิกใช้งาน แนะนำให้ใช้ vortex (ชื่อเดิม: Context Augmentation/CAG)
Vortexvortexชุดเครื่องมือแบบรวม แนะนำ ที่แสดงทั้งเครื่องมือบริบท Vortex และการวิเคราะห์ Vortex ภายใต้ชื่อเดียว (เฉพาะ stdio ต้องมีสิทธิ์ขององค์กรรวม)
ความพร้อมเชิงเอเจนต์agentic-readinessเครื่องมือประเมินความพร้อมเชิงเอเจนต์ (SonarQube Cloud ต้องมีสิทธิ์ขององค์กร)

ตัวอย่าง

เปิดใช้งานชุดเครื่องมือการวิเคราะห์ ปัญหา และประตูคุณภาพ (ใช้ Docker กับ SonarQube Cloud):

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

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

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

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

SonarQube Cloud

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

Environment variableDescriptionRequired
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

Environment variableDescriptionRequired
SONARQUBE_TOKENโทเคน USER ของ SonarQube Server ของคุณใช่
SONARQUBE_URLURL ของ SonarQube Server ของคุณใช่

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

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

ข้อกำหนด MCP กำหนดกลไกการขนส่งสองแบบ: Stdio และ Streamable HTTP เซิร์ฟเวอร์ SonarQube MCP รองรับทั้งสองแบบ:

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

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

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

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

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

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

2. HTTP (Streamable HTTP)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

การกำหนดค่าไคลเอนต์ (SonarQube Cloud):

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

การกำหนดค่าไคลเอนต์ (SonarQube Server):

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

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

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

เอ็นด์พอยต์บริการ

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

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

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

ใบรับรองแบบกำหนดเอง

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

การกำหนดค่า

การใช้ Volume Mount

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

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

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

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

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

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

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

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

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

พร็อกซี

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

การกำหนดค่า

พร็อกซี HTTP/HTTPS

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

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

คุณสมบัติคำอธิบายตัวอย่าง
http.proxyHostโฮสต์นามพร็อกซี 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 Proxy

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

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

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

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

การตั้งค่า

การใช้ PKCS12 keystore

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

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

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

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

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

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

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

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

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

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

ละเว้น -Djavax.net.ssl.keyStorePassword หาก keystore ไม่มีรหัสผ่าน

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

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

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

เครื่องมือ

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

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

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

    การใช้งาน:

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

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

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

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

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

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

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

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

เมื่อเปิดใช้งานการวิเคราะห์ Vortex สำหรับองค์กร SonarQube Cloud ของคุณ:

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

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

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

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

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

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

ความเสี่ยงจาก Dependency

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

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

องค์กร

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

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

ปัญหา

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

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

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

Security Hotspots

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

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

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

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

ภาษา

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

Measures

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

เมตริก

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

Portfolios

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

    สำหรับ SonarQube Server:

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

    สำหรับ SonarQube Cloud:

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

โปรเจกต์

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

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

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

    • projectKey - คีย์โปรเจกต์ (เช่น my_project) - String ที่จำเป็น (ถูกละเว้นเมื่อกำหนด SONARQUBE_PROJECT_KEY)

คุณภาพเกต

  • get_project_quality_gate_status - รับสถานะคุณภาพเกตสำหรับโปรเจกต์ SonarQube

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

กฎ

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

การทำซ้ำ (Duplications)

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

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

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

แหล่งที่มา

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

    • key - คีย์ไฟล์ - String ที่จำเป็น
    • 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 - จัดกลุ่มบรรทัดตามคอมมิต SCM หากเป็น false ไม่เช่นนั้นจะแสดงคอมมิตสำหรับแต่ละบรรทัด - 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 - ความลับ (secret) ของ webhook สำหรับรักษาความปลอดภัยของ payload (ไม่บังคับ) - String
  • list_webhooks - แสดงรายการ webhooks ทั้งหมดสำหรับองค์กรหรือโปรเจกต์ SonarQube ต้องมีสิทธิ์ 'Administer' บนโปรเจกต์ที่ระบุ หรือสิทธิ์ 'Administer' ระดับโลก

    • projectKey - คีย์โปรเจกต์เพื่อแสดงรายการ webhooks เฉพาะโปรเจกต์ (ไม่บังคับ) - String

การเสริมบริบท

เครื่องมือสถาปัตยกรรม
  • search_by_signature_patterns - ค้นหาองค์ประกอบโค้ด (คลาส, เมธอด, อินเทอร์เฟส, ...) ตามลายเซ็นการประกาศโดยใช้รูปแบบ regex

    • include_code_regex_list - รายการรูปแบบ regex เพื่อจับคู่กับลายเซ็น - String[] ที่จำเป็น
    • exclude_code_regex_list - รายการรูปแบบ regex ที่จะยกเว้นจากผลลัพธ์ - String[]
    • include_glob - รูปแบบ glob สำหรับกรองไฟล์ (เช่น *.java) - 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 - รับลำดับชั้นการสืบทอดทั้งหมดสำหรับโครงสร้างคล้ายคลาส (คลาส, อินเทอร์เฟส, 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) - String
    • ecosystem - ระบบนิเวศเพื่อกรอง (ไม่บังคับ: java, cs, py, js, ts) - String
  • get_intended_architecture - รับข้อจำกัดทางสถาปัตยกรรมที่ผู้ใช้กำหนดซึ่งระบุว่าโมดูลใดได้รับอนุญาตให้พึ่งพาโมดูลอื่น

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

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

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

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

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

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

ความพร้อมของ Agentic

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

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

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

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

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

การสร้าง

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

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

รันจาก JAR

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

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

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

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

./gradlew clean build -x test

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

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

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

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

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

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

ปัญหาทั่วไป

"ฟีเจอร์ไม่ทำงาน" หรือ "เครื่องมือ/ฟังก์ชันหายไป"

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

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

docker pull sonarsource/sonarqube-mcp

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

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

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

"ฉันต้องการระบุเวอร์ชันเฉพาะ"

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

docker pull sonarsource/sonarqube-mcp:1.19.0.2785

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

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

ข้อมูลและ telemetry

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

ใบอนุญาต

ลิขสิทธิ์ 2025 SonarSource.

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

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