SonarQube

ทางการ

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

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

  • เชื่อมต่อกับ SonarQube Cloud หรือ Server — กำหนดค่า container sonarsource/sonarqube-mcp ด้วย token, org key หรือ URL ของ server เพื่อเชื่อมต่อผู้ช่วยของคุณกับ SonarQube
  • วิเคราะห์โค้ดตัวอย่าง — ขอให้ผู้ช่วยวิเคราะห์โค้ดตัวอย่างหรือไฟล์ โดยใช้การเมานต์ workspace เพื่ออ่านไฟล์จากดิสก์โดยตรง
  • ค้นหาและจัดการปัญหา — ค้นหาและอัปเดตปัญหา SonarQube ผ่านชุดเครื่องมือ issues
  • ตรวจสอบ Security Hotspots — ค้นหาและตรวจสอบ Security Hotspots ผ่านชุดเครื่องมือ security-hotspots
  • เรียกดูโปรเจกต์และ quality gates — ค้นหา project keys, quality gates, rules, measures และข้อมูล coverage
  • จำกัดชุดเครื่องมือและใช้โหมดอ่านอย่างเดียว — ใช้ SONARQUBE_TOOLSETS และ SONARQUBE_READ_ONLY เพื่อควบคุมว่าจะโหลดเครื่องมือใดบ้างและบล็อกการดำเนินการเขียน

เอกสาร

Sonar logo

Build Quality Gate Status

SonarQube MCP Server

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

เริ่มต้นด้วยการตั้งค่าอย่างรวดเร็ว หรือเรียนรู้เพิ่มเติมเกี่ยวกับกลุ่มผลิตภัณฑ์ SonarQube

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

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

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

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

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

เมื่อใช้ไฟล์การกำหนดค่า:

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

🚀 สร้างการกำหนดค่าของคุณ

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

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

หากต้องการกำหนดค่าด้วยตนเอง วิธีที่ง่ายที่สุดคือใช้ container image ของเราที่ sonarsource/sonarqube-mcp ใช้ sonarsource/sonarqube-mcp เพื่ออัปเดตโดยอัตโนมัติ (ด้วย --pull=always) หรือระบุแท็กเวอร์ชัน (เช่น sonarsource/sonarqube-mcp:1.19.0.2785) เพื่อให้การติดตั้งใช้งานทำซ้ำได้ บางรุ่นยังติดแท็กด้วยเวอร์ชัน SonarQube Server ที่สอดคล้องกันในรูปแบบ <SQS major>.<SQS minor>.<patch> (เช่น sonarsource/sonarqube-mcp:2026.5.0) โดยเพิ่มหมายเลขแพตช์สำหรับ MCP แต่ละรุ่นที่กำหนดเป้าหมายไปยัง SonarQube Server เวอร์ชันนั้น อ่านรายละเอียดด้านล่างหากต้องการสร้างในเครื่อง

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

Antigravity

SonarQube MCP Server พร้อมใช้งานใน Antigravity MCP Store ทำตามคำแนะนำต่อไปนี้:

  1. เปิด แผงด้านข้าง Agent
  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:

ในแผงด้านข้าง Agent ให้คลิกจุดสามจุด (...) -> MCP Store -> Manage MCP Servers -> View raw config แล้วเพิ่มรายการต่อไปนี้:

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

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

  • เชื่อมต่อกับ SonarQube Server:
{
  "mcpServers": {
    "sonarqube": {
      "command": "docker",
      "args": ["run", "--init", "--pull=always", "-i", "--rm", "-e", "SONARQUBE_TOKEN", "-e", "SONARQUBE_URL", "sonarsource/sonarqube-mcp"],
      "env": {
        "SONARQUBE_TOKEN": "<YOUR_USER_TOKEN>",
        "SONARQUBE_URL": "<YOUR_SERVER_URL>"
      }
    }
  }
}
Claude Code
  • เชื่อมต่อกับ SonarQube Cloud:
claude mcp add sonarqube \
  --env SONARQUBE_TOKEN=$SONAR_TOKEN \
  --env SONARQUBE_ORG=$SONAR_ORG \
  -- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp

สำหรับ SonarQube Cloud US ให้เพิ่ม --env SONARQUBE_URL=https://sonarqube.us ในคำสั่ง

  • เชื่อมต่อกับ SonarQube Server:
claude mcp add sonarqube \
  --env SONARQUBE_TOKEN=$SONAR_USER_TOKEN \
  --env SONARQUBE_URL=$SONAR_URL \
  -- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_URL sonarsource/sonarqube-mcp
Codex CLI

แก้ไขไฟล์การกำหนดค่าที่ ~/.codex/config.toml ด้วยตนเอง แล้วเพิ่มการกำหนดค่าต่อไปนี้:

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

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

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

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 server ของเราได้โดยใช้คำสั่งต่อไปนี้:

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

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

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

  • สำหรับ SonarQube Cloud:

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

    • SONARQUBE_TOKEN - โทเค็น USER ของ SonarQube Server
    • SONARQUBE_URL - URL ของ SonarQube Server

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

GitHub Copilot CLI

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

/mcp add

คุณจะต้องระบุข้อมูลต่าง ๆ เกี่ยวกับ MCP server โดยใช้ Tab เพื่อเลื่อนไปมาระหว่างช่องได้

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

สำหรับ SonarQube Cloud US ให้เพิ่ม -e, SONARQUBE_URL ใน Arguments และ SONARQUBE_URL=https://sonarqube.us ใน Environment Variables

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

ไฟล์การกำหนดค่าอยู่ที่ ~/.copilot/mcp-config.json

GitHub Copilot coding agent

GitHub Copilot coding agent สามารถใช้ SonarQube MCP server ได้โดยตรงใน CI/CD ของคุณ

หากต้องการเพิ่ม secrets ลงในสภาพแวดล้อม Copilot ให้ทำตามเอกสารประกอบ ของ Copilot เฉพาะ secrets ที่มีชื่อขึ้นต้นด้วย 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 จากนั้นตั้งค่า secret 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 ในไดเรกทอรี workspace (หรือแก้ไขไฟล์หากมีอยู่แล้ว) แล้วเพิ่มการกำหนดค่าต่อไปนี้:

  • เชื่อมต่อกับ 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 Server พร้อมใช้งานในรูปแบบปลั๊กอิน Windsurf ทำตามคำแนะนำต่อไปนี้:

  1. เปิด Windsurf Settings > 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

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

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

คุณสามารถติดตั้ง SonarQube MCP server ด้วยตนเองได้โดยคัดลอก snippet ต่อไปนี้ลงในไฟล์การกำหนดค่า MCP servers:

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

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

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

การกำหนดค่า

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

ตัวอย่างการใช้ SonarQube Cloud:

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

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

การกำหนดค่า

คุณควรกำหนดตัวแปรสภาพแวดล้อมเฉพาะตามสภาพแวดล้อมของคุณ

พื้นฐาน

คุณควรเพิ่มตัวแปรต่อไปนี้เมื่อเรียกใช้ MCP Server:

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

การเมานต์ Workspace (ลดบริบทที่มากเกินไป)

โดยค่าเริ่มต้น เครื่องมือวิเคราะห์ 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"
  ]
}

เมื่อมีการเมานต์ เครื่องมือวิเคราะห์จะอ่านไฟล์โดยตรงโดยใช้ filePath; ไม่จำเป็นต้องใช้ fileContent

ผ่าน stdio ระบบจะเลือกการวิเคราะห์เมื่อเริ่มต้น (ขึ้นอยู่กับชุดเครื่องมือที่เปิดใช้):

  • SonarQube Cloud: การวิเคราะห์ Vortex (run_advanced_code_analysis) เมื่อมีการเมานต์ workspace และมีองค์กรที่มีสิทธิ์ใช้งานอย่างน้อยหนึ่งองค์กร มิฉะนั้นจะใช้การวิเคราะห์ในเครื่อง การวิเคราะห์ Vortex รองรับเฉพาะองค์กรที่มีสิทธิ์ใช้งานเท่านั้น
  • SonarQube Server: การวิเคราะห์ Vortex สำหรับอินสแตนซ์ที่มีสิทธิ์ใช้งาน (ต้องมีการเมานต์ workspace); การวิเคราะห์ในเครื่องสำหรับอินสแตนซ์ที่ไม่มี Vortex

การวิเคราะห์ในเครื่องจะใช้ SonarQube for IDE หากเชื่อมต่ออยู่ หรือ analyze_code_snippet หากไม่มีการเมานต์ การวิเคราะห์ snippet ต้องใช้ fileContent

บน Cloud stdio, SONARQUBE_ORG จะจำกัดการตรวจสอบสิทธิ์ใช้งานไว้เฉพาะองค์กรนั้น หากต้องการใช้ snippet กับทุกองค์กร ให้ตั้งค่า SONARQUBE_FORCE_LOCAL_ANALYSIS=true เปิดใช้ชุดเครื่องมือ analysis แล้วเริ่มระบบใหม่ การตั้งค่านี้มีผลกับ Cloud stdio เท่านั้น

ผ่าน HTTP/HTTPS, Cloud และ Server รองรับ analyze_code_snippet เมื่อเซิร์ฟเวอร์ MCP มี SONARQUBE_TOKEN สำหรับการเริ่มต้น และเปิดใช้ชุดเครื่องมือ analysis ต้องใช้โทเค็นเริ่มต้นเพื่อเริ่มต้นตัววิเคราะห์ (การดาวน์โหลดปลั๊กอิน Cloud เป็นแบบไม่ระบุตัวตน); การเรียกใช้จะใช้โทเค็นของผู้เรียก และบน Cloud จะใช้องค์กรที่เลือกสำหรับคำขอเพื่อดึงโปรไฟล์คุณภาพและกฎที่ใช้งานอยู่ หากไม่มีโทเค็นเริ่มต้น การวิเคราะห์ snippet และการดาวน์โหลดตัววิเคราะห์จะถูกปิดใช้งาน แม้จะมี SONARQUBE_FORCE_LOCAL_ANALYSIS=true ก็ไม่มีข้อยกเว้น ไม่จำเป็นต้องมีสิทธิ์ Vortex

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

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

โดยค่าเริ่มต้น จะเปิดใช้เฉพาะชุดเครื่องมือที่สำคัญ เปิดใช้ชุดเครื่องมือเพิ่มเติมเฉพาะเมื่อจำเป็น

ตัวแปรสภาพแวดล้อมคำอธิบาย
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 และใช้สิทธิ์การใช้งานขององค์กรร่วมกัน — องค์กรต้องมีสิทธิ์ใช้งานทั้งสองอย่างจึงจะใช้รายการใดรายการหนึ่งได้ การวิเคราะห์ในตัวของ Cloud จะตรวจสอบองค์กรที่เลือกขณะรันไทม์ ส่วนเครื่องมือบริบทที่พร็อกซีจะใช้องค์กรที่เลือกตอนเริ่มต้น บน SonarQube Server, stdio จะแสดงบริบท Vortex และ run_advanced_code_analysis เมื่อฮับ CAG และ A3S มีสิทธิ์ใช้งานทั้งคู่ แนะนำให้ใช้คีย์ชุดเครื่องมือแบบรวม vortex คีย์ cag และ analysis ที่เลิกใช้แล้วก็ยังใช้งานได้ เมื่อใช้คีย์เหล่านี้โดยไม่มี vortex ระบบจะแสดงคำเตือนตอนเริ่มต้นและหมายเหตุการเลิกใช้ในคำแนะนำของเซิร์ฟเวอร์ ในโหมด Streamable HTTP ไคลเอ็นต์สามารถส่งส่วนหัว HTTP SONARQUBE_TOOLSETS เพื่อจำกัดรายการเพิ่มเติมในแต่ละคำขอได้ แต่ไม่สามารถเปิดใช้ชุดเครื่องมือที่เกินกว่าที่เซิร์ฟเวอร์เปิดใช้ไว้ตอนเริ่มทำงาน (ดู การขนส่ง Streamable HTTP ด้านล่าง)
SONARQUBE_READ_ONLYเมื่อตั้งค่าเป็น true จะเปิดใช้โหมดอ่านอย่างเดียว ซึ่งปิดการดำเนินการเขียนทั้งหมด (เช่น การเปลี่ยนสถานะปัญหา) ตัวกรองนี้จะทำงานร่วมกับ SONARQUBE_TOOLSETS หากตั้งค่าทั้งคู่ ค่าเริ่มต้น: false ในโหมด Streamable HTTP ไคลเอ็นต์สามารถส่งส่วนหัว HTTP SONARQUBE_READ_ONLY เพื่อจำกัดคำขอแต่ละรายการให้เป็นแบบอ่านอย่างเดียวเพิ่มเติมได้ แต่ไม่สามารถยกเลิกข้อจำกัดอ่านอย่างเดียวระดับเซิร์ฟเวอร์ได้ (ดู การขนส่ง Streamable HTTP ด้านล่าง)
ชุดเครื่องมือที่พร้อมใช้งาน | Toolset | Key | Description | |-----------------------|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| | **Analysis** | `analysis` | เครื่องมือวิเคราะห์โค้ด (การวิเคราะห์ในเครื่องผ่าน `analyze_code_snippet` ซึ่ง **เลิกใช้แล้ว** และแนะนำให้ใช้การวิเคราะห์ `analyze_file_list`/Vortex แทน) | | **IDE** | `ide` | เครื่องมือบริดจ์ SonarQube for IDE (การวิเคราะห์ไฟล์ การสลับเปิด/ปิดการวิเคราะห์อัตโนมัติ) — ปัจจุบันรวมอยู่ใน `analysis` ด้วย | | **Issues** | `issues` | ค้นหาและจัดการปัญหา SonarQube | | **Security Hotspots** | `security-hotspots` | ค้นหาและตรวจสอบ Security Hotspots | | **Projects** | `projects` | เรียกดูและค้นหาโปรเจกต์ SonarQube | | **Quality Gates** | `quality-gates` | เข้าถึง Quality Gates และสถานะของรายการเหล่านั้น | | **Rules** | `rules` | เรียกดูและค้นหากฎ SonarQube | | **Sources** | `sources` | เข้าถึงซอร์สโค้ดและข้อมูล SCM | | **Duplications** | `duplications` | ค้นหาการทำซ้ำของโค้ดในโปรเจกต์ต่าง ๆ | | **Measures** | `measures` | ดึงข้อมูลเมตริกและค่าการวัด (รวมเครื่องมือสำหรับค่าการวัดและเมตริก) | | **Languages** | `languages` | แสดงรายการภาษาโปรแกรมที่รองรับ | | **Portfolios** | `portfolios` | จัดการพอร์ตโฟลิโอและองค์กร (Cloud และ Server) | | **System** | `system` | เครื่องมือดูแลระบบ (Server เท่านั้น) | | **Webhooks** | `webhooks` | จัดการ Webhooks | | **Dependency Risks** | `dependency-risks` | วิเคราะห์ความเสี่ยงของการพึ่งพาและปัญหาด้านความปลอดภัย (SCA) | | **Coverage** | `coverage` | เครื่องมือวิเคราะห์และปรับปรุงความครอบคลุมของการทดสอบ | | **Vortex Context** | `cag` | เครื่องมือบริบท Vortex — ใช้ได้เฉพาะ stdio **เลิกใช้แล้ว** และแนะนำให้ใช้ `vortex` แทน (ชื่อเดิม: Context Augmentation/CAG) | | **Vortex** | `vortex` | Toolset แบบรวมที่ **แนะนำ** ซึ่งแสดงทั้งเครื่องมือบริบท Vortex และเครื่องมือวิเคราะห์ Vortex ภายใต้ชื่อเดียว (ใช้ได้เฉพาะ stdio; Cloud ต้องมีสิทธิ์ใช้งานระดับองค์กรแบบรวม; Server ต้องเปิดสิทธิ์ใช้งานทั้งสองฮับ) | | **Agentic Readiness** | `agentic-readiness` | เครื่องมือประเมิน Agentic Readiness (SonarQube Cloud ต้องมีสิทธิ์ใช้งานระดับองค์กร) | | **Architecture** | `architecture` | อ่านสถาปัตยกรรม แทนที่โมเดลที่กำหนดไว้ และจัดการคำสั่งกำกับโปรเจกต์ (ไม่ได้เปิดใช้งานตามค่าเริ่มต้น) |

ตัวอย่าง

เปิดใช้ toolset สำหรับการวิเคราะห์ ปัญหา และ 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

หมายเหตุ: toolset 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

สำหรับ stdio ให้กำหนดค่าตัวแปรสภาพแวดล้อมต่อไปนี้:

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_URL=https://sonarqube.us; SONARQUBE_ORG เป็นตัวเลือก

SonarQube Server

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

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

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

💡 เคล็ดลับการกำหนดค่า (โหมด stdio): หากไม่มี URL โทเค็นจะใช้ SonarQube Cloud เป็นค่าเริ่มต้น ตั้งค่า SONARQUBE_URL สำหรับ SonarQube Server หรือ Cloud ภูมิภาคอื่น SONARQUBE_ORG จะกำหนดองค์กร Cloud ตายตัวเมื่อมีการตั้งค่า

ใน stdio การตั้งค่า SONARQUBE_ORG จะกำหนดองค์กร Cloud ตายตัว อาร์กิวเมนต์ organization ของเครื่องมือจะถูกตัดออกจากสคีมาและถูกปฏิเสธ เช่นเดียวกับ projectKey เมื่อกำหนด SONARQUBE_PROJECT_KEY

เมื่อไม่ได้กำหนด SONARQUBE_ORG เอเจนต์สามารถเรียก list_organizations เพื่อค้นหาคีย์ ชื่อ ID และ UUID ขององค์กรที่บัญชีผู้ใช้ของคุณเข้าถึงได้ จากนั้นส่งคีย์เป็นอาร์กิวเมนต์ organization ซึ่งเป็นตัวเลือกให้กับเครื่องมือที่รองรับองค์กร stdio จะคงองค์กรที่ตรวจพบได้เพียงแห่งเดียวไว้เป็นค่าเริ่มต้น หากไม่พบองค์กรหรือพบหลายองค์กร ระบบจะไม่ระบุองค์กร อาร์กิวเมนต์ของเครื่องมือมีผลเฉพาะการเรียกครั้งนั้น และจะไม่เปลี่ยนค่าเริ่มต้นที่ตรวจพบ การค้นหาโปรไฟล์ข้อมูลโค้ดและกฎจะใช้องค์กรที่เลือกสำหรับการเรียกครั้งนั้น

สำหรับคำขอโทเค็นผ่าน HTTP/HTTPS ยังคงรองรับ SONARQUBE_ORG ระดับเซิร์ฟเวอร์เพื่อความเข้ากันได้ แต่เลิกแนะนำให้ใช้แล้วและจะบันทึกคำเตือนเมื่อเริ่มต้น โดยจะกำหนดองค์กรตายตัวสำหรับทุกคำขอ และปฏิเสธส่วนหัวองค์กรจากไคลเอ็นต์และอาร์กิวเมนต์ organization ของเครื่องมือ เมื่อไม่ได้กำหนดองค์กรระดับเซิร์ฟเวอร์ ส่วนหัว SONARQUBE_ORG จากไคลเอ็นต์ซึ่งเป็นตัวเลือกจะกำหนดองค์กรตายตัวสำหรับคำขอนั้น และไม่อนุญาตให้อาร์กิวเมนต์ organization ของเครื่องมือใช้งาน หากไม่มีส่วนหัว ให้ใช้อาร์กิวเมนต์ของเครื่องมือ เครื่องมือที่ต้องใช้องค์กรจะแสดงคำแนะนำในการค้นหาเมื่อไม่มีการระบุข้อมูลทั้งหมด การค้นหาองค์กรและเครื่องมือที่ API ใช้เฉพาะตัวระบุทรัพยากรไม่จำเป็นต้องมีอาร์กิวเมนต์องค์กร การค้นหาปัญหาที่รองรับองค์กรและการตรวจสอบสิทธิ์ Dependency Risks จะใช้องค์กรที่เลือก เมื่อกำหนดค่า OAuth ระบบจะปฏิเสธ SONARQUBE_ORG ระดับเซิร์ฟเวอร์ คำขอ OAuth จะปฏิเสธส่วนหัวองค์กรด้วย ให้เลือกองค์กรผ่านอาร์กิวเมนต์ของเครื่องมือ

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

โหมดการรับส่ง

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

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

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

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

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

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

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

2. HTTP (Streamable HTTP)

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

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

Environment variableDescriptionDefault
SONARQUBE_TRANSPORTตั้งค่าเป็น http เพื่อเปิดใช้การรับส่งข้อมูล Streamable HTTPไม่ได้ตั้งค่า (stdio)
SONARQUBE_HTTP_PORTหมายเลขพอร์ต (1024-65535) หรือ 0 เพื่อใช้พอร์ตที่ระบบปฏิบัติการกำหนด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 runtime อื่น (Podman, Kubernetes, Nomad ฯลฯ) ให้ตั้งค่าด้วยตนเองfalse
หมายเหตุ: HTTP/HTTPS รับโทเค็น SonarQube ของผู้ใช้ผ่าน Authorization: Bearer <token> บริการ Cloud ที่โฮสต์โดย Sonar ยังรองรับ OAuth ด้วย สำหรับคำขอโทเค็น SonarQube Cloud ระบบจะระบุองค์กรดังนี้:
  • SONARQUBE_ORG เป็นส่วนหัวคำขอที่ไม่บังคับ ซึ่งกำหนดองค์กรสำหรับคำขอนั้น การกำหนดค่าระดับเซิร์ฟเวอร์ที่เลิกใช้แล้วจะกำหนดองค์กรสำหรับทุกคำขอ และปฏิเสธส่วนหัวองค์กรจากไคลเอ็นต์และอาร์กิวเมนต์องค์กรของเครื่องมือ
  • เครื่องมือที่รองรับองค์กรรับอาร์กิวเมนต์ organization ที่ไม่บังคับ เมื่อทั้งการกำหนดค่าเซิร์ฟเวอร์และส่วนหัวคำขอไม่ได้กำหนดองค์กรไว้ หากระบุอาร์กิวเมนต์นี้ในกรณีที่กำหนดองค์กรไว้แล้ว ระบบจะปฏิเสธ
  • หากไม่มีค่าเริ่มต้น เอเจนต์สามารถเรียก list_organizations โดยใช้เพียงโทเค็นของตน จากนั้นส่งคีย์ที่เลือกให้เครื่องมือถัดไป

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

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

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

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

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

ตัวแปรสภาพแวดล้อมคำอธิบายค่าเริ่มต้น
SONARQUBE_TRANSPORTตั้งค่าเป็น https เพื่อเปิดใช้การขนส่ง Streamable HTTP ผ่าน TLSไม่ได้ตั้งค่า (stdio)
SONARQUBE_HTTP_PORTหมายเลขพอร์ต (โดยทั่วไปคือ 8443 สำหรับ HTTPS) หรือ 0 เพื่อใช้พอร์ตที่ระบบปฏิบัติการกำหนดให้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 runtime อื่น (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 runtime อื่น (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 \
  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 \
  sonarsource/sonarqube-mcp

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

สำหรับคำขอโทเค็น SonarQube ให้ตั้งค่า SONARQUBE_ORG ในส่วนหัวของไคลเอ็นต์ (ไม่บังคับ) เพื่อกำหนดองค์กรของคำขอ หรือไม่ต้องระบุเพื่อเลือกองค์กรผ่านอาร์กิวเมนต์ของเครื่องมือ

{
  "mcpServers": {
    "sonarqube-https": {
      "url": "https://your-server:8443/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>",
        "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 แทน (ซึ่งเป็นค่าเริ่มต้น) Streamable HTTP ผ่าน HTTPS มีไว้สำหรับการติดตั้งใช้งานจริงแบบหลายผู้ใช้ที่มีใบรับรอง SSL ที่เหมาะสม

OAuth สำหรับ SonarQube Cloud ที่โฮสต์

การรองรับ OAuth มุ่งเป้าไปที่บริการ MCP ของ SonarQube Cloud ที่โฮสต์โดย Sonar ใช้ไคลเอ็นต์ MCP ที่รองรับ OAuth แล้วลงชื่อเข้าใช้เมื่อระบบแจ้ง ไม่จำเป็นต้องตั้งค่าเซิร์ฟเวอร์ OAuth ในการกำหนดค่าไคลเอ็นต์ ไคลเอ็นต์ที่ใช้โทเค็น SonarQube เดิมยังคงรองรับ

ขอบเขต mcp:tools:read และ mcp:tools:write ควบคุมการเข้าถึงเครื่องมืออ่านและเขียนแยกจากกัน โดยขึ้นอยู่กับสิทธิ์ Cloud ของคุณ ใช้ list_organizations และอาร์กิวเมนต์ organization ของเครื่องมือเพื่อเลือกองค์กร

การติดตั้งใช้งานแบบโฮสต์เองยังคงใช้โทเค็น SonarQube โดยยังไม่รองรับ OAuth สำหรับ SonarQube Server

ปลายทางบริการ

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

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

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

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

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

การกำหนดค่า

การใช้การเมานต์โวลุ่ม

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

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

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

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

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

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

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

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

หมายเหตุ: กำลังเรียกใช้เซิร์ฟเวอร์ จาก JAR แทนการใช้คอนเทนเนอร์อยู่หรือไม่ การเมานต์โวลุ่มด้านบนจะติดตั้งใบรับรองลงในที่เก็บความเชื่อถือของ 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 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 Server ของคุณกำหนดให้ไคลเอ็นต์ต้องแสดงใบรับรองระหว่างการจับมือ TLS (mutual TLS) คุณสามารถระบุ keystore PKCS12 โดยเมานต์ไว้ในคอนเทนเนอร์และส่งตำแหน่งผ่าน JAVA_OPTS

การกำหนดค่า

การใช้ keystore PKCS12

เมานต์ไฟล์ .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       # มองหา -rw-r--r-- (644) หรือสิทธิ์ที่กว้างกว่า
chmod 644 /path/to/client.p12    # ให้สิทธิ์อ่านแก่ผู้ใช้ในคอนเทนเนอร์

ไม่ต้องระบุ -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>"
    }
  }
}

การใช้ keystore PKCS12 กับ 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 (ดูด้านล่าง)

    การใช้งาน:

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

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

    • organization - คีย์องค์กร SonarQube Cloud - สตริงที่ไม่บังคับ ใช้ได้เฉพาะ Cloud
    • projectKey - คีย์โปรเจกต์ SonarQube - สตริงที่จำเป็น (ไม่สนใจเมื่อกำหนด SONARQUBE_PROJECT_KEY แล้ว)
    • filePath - พาธของไฟล์ที่สัมพันธ์กับโปรเจกต์เพื่อวิเคราะห์ (เช่น src/main/java/MyClass.java) ใช้เมื่อเมานต์ workspace ที่ /app/mcp-workspace - สตริง
    • fileContent - เนื้อหาไฟล์ทั้งหมดในรูปแบบสตริง จำเป็นเมื่อไม่ได้เมานต์ workspace - สตริง
    • codeSnippet - โค้ด snippet สำหรับกรองปัญหา (ต้องตรงกับเนื้อหาใน 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, การตรวจจับ Secrets

เมื่อเปิดใช้การผสานรวมกับ 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 ที่จำเป็น

บน SonarQube Server, stdio จะแสดงเครื่องมือบริบท Vortex และ run_advanced_code_analysis เมื่อมีสิทธิ์ใช้ทั้งฮับ CAG และ A3S

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

ต้องเมานต์ workspace ที่ /app/mcp-workspace

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

ความครอบคลุมของการทดสอบ

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

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

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

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

หมายเหตุ: ความเสี่ยงจาก Dependency ต้องใช้ SonarQube Advanced Security บน SonarQube Server ต้องใช้รุ่น 2025.4 Enterprise ขึ้นไป

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

องค์กร

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

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

Issues

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

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

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

Security Hotspots

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

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

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

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

ภาษา

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

Measures

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

Metrics

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

พอร์ตโฟลิโอ

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

    สำหรับ SonarQube Server:

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

    สำหรับ SonarQube Cloud:

    • enterpriseId - UUID ของ Enterprise สามารถละเว้นได้เฉพาะเมื่อระบุพารามิเตอร์ '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

โปรเจกต์

  • list_organizations - แสดงรายการองค์กร SonarQube Cloud ที่ผู้ใช้เป็นสมาชิก รวมถึงคีย์ ชื่อ ID และ UUID ใช้คีย์ที่ส่งคืนเป็น organization ในเครื่องมือถัดไป

  • search_my_sonarqube_projects - ค้นหาโปรเจกต์ SonarQube ผลลัพธ์แบ่งเป็นหน้า

    • organization - คีย์องค์กร SonarQube Cloud - Optional String, Cloud only
    • pageIndex - ดัชนีหน้าแบบเริ่มนับจาก 1 (ค่าเริ่มต้น: 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) - Required String (ละเว้นเมื่อกำหนด SONARQUBE_PROJECT_KEY)
    • branchTypes - (SonarQube Cloud only) ตัวกรองเพิ่มเติม: ALL (ค่าเริ่มต้น), LONG หรือ SHORT - Enum {"ALL", "LONG", "SHORT"}
  • list_pull_requests - แสดงรายการ pull request ทั้งหมดของโปรเจกต์ ใช้เครื่องมือนี้เพื่อค้นหา pull request สำหรับการวิเคราะห์ที่ตกแต่ง PR (ความครอบคลุม ปัญหา เกตคุณภาพ) ส่งคืนคีย์/ID ของ pull request ซึ่งใช้กับเครื่องมืออื่นได้ สำหรับการวิเคราะห์ตามสาขาที่ไม่มี pull request ให้ใช้ list_branches แทน

    • projectKey - คีย์โปรเจกต์ (เช่น my_project) - Required 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 ของฉัน

    • organization - คีย์องค์กร SonarQube Cloud - Optional String, Cloud only

กฎ

  • show_rule - แสดงข้อมูลโดยละเอียดเกี่ยวกับกฎ SonarQube
    • organization - คีย์องค์กร SonarQube Cloud - Optional String, Cloud only
    • key - คีย์กฎ - Required String

โค้ดซ้ำ

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

    • projectKey - คีย์โปรเจกต์ - Required 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 - คีย์ไฟล์ - Required String
    • branch - ชื่อสาขาสำหรับการวิเคราะห์ตามสาขา (ไม่บังคับ) ใช้ list_branches เพื่อค้นหาชื่อที่ถูกต้อง - String
    • pullRequest - คีย์/ID ของ pull request (ไม่บังคับ) ใช้ list_pull_requests เพื่อค้นหาคีย์ที่ถูกต้อง - String

ซอร์ส

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

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

    • key - คีย์ไฟล์ - Required 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' ระดับส่วนกลาง

    • organization - คีย์องค์กร SonarQube Cloud - Optional String, Cloud only
    • name - ชื่อ webhook - Required String
    • url - URL ของ webhook - Required String
    • projectKey - คีย์โปรเจกต์สำหรับ webhook เฉพาะโปรเจกต์ (ไม่บังคับ) - String
    • secret - secret ของ webhook สำหรับรักษาความปลอดภัยของ payload webhook (ไม่บังคับ) - String
  • list_webhooks - แสดงรายการ webhook ทั้งหมดขององค์กรหรือโปรเจกต์ SonarQube ต้องมีสิทธิ์ 'Administer' ในโปรเจกต์ที่ระบุ หรือสิทธิ์ 'Administer' ระดับส่วนกลาง

    • organization - คีย์องค์กร SonarQube Cloud - Optional String, Cloud only
    • projectKey - คีย์โปรเจกต์สำหรับแสดงรายการ webhook เฉพาะโปรเจกต์ (ไม่บังคับ) - String

การเพิ่มบริบท

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

    • include_code_regex_list - รายการรูปแบบ regex ที่ใช้จับคู่กับลายเซ็น - Required 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 ที่ใช้จับคู่ในเนื้อหาโค้ด - Required 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 - ชื่อฟังก์ชันแบบ fully qualified - Required String
    • depth - ความลึกของสายการเรียก (0=เฉพาะฟังก์ชัน, 1=ผู้เรียกโดยตรง ฯลฯ) - Integer
    • fields - รายการฟิลด์ที่คั่นด้วยจุลภาคเพื่อรวมไว้ในผลลัพธ์ - String
  • get_downstream_call_flow - ติดตามว่าฟังก์ชันที่ระบุเรียกใช้ฟังก์ชันใดบ้าง มีประโยชน์สำหรับวิเคราะห์ผลกระทบและทำความเข้าใจลำดับการทำงาน

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

    • fqn - ชื่อองค์ประกอบแบบ fully qualified - Required String
    • fields - รายการฟิลด์ที่คั่นด้วยจุลภาคเพื่อรวมไว้ในผลลัพธ์ - String
  • get_type_hierarchy - รับลำดับชั้นการสืบทอดทั้งหมดของโครงสร้างคล้ายคลาส (คลาส อินเทอร์เฟซ enum record exception struct) จำเป็นสำหรับทำความเข้าใจแผนผังการสืบทอดและการปรับโครงสร้างโค้ด

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

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

    • depth - ความลึกของลำดับชั้น (0=เฉพาะราก, 1=รากและรายการย่อย ฯลฯ) - Required 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 - สตริงที่จำเป็น
    • categories - รายการชื่อหมวดหมู่ (จำเป็นสำหรับโหมด category_based และ combined) - String[]
    • languages - รายการภาษาเป้าหมายในรูปแบบคีย์ที่เก็บของ SonarQube (จำเป็นเมื่อระบุ categories) - String[]
    • file_paths - รายการพาธไฟล์ที่ไม่บังคับเพื่อกรองแนวทางปฏิบัติ - String[]
เครื่องมือการพึ่งพาของบุคคลที่สาม
  • check_dependency - ตรวจสอบการพึ่งพาของบุคคลที่สามเพื่อหาช่องโหว่ด้านความปลอดภัย มัลแวร์ในห่วงโซ่อุปทาน และการปฏิบัติตามใบอนุญาต ก่อนเพิ่มหรืออัปเดต
    • purl - Package URL (purl) พร้อมเวอร์ชัน ตาม purl-spec รูปแบบ: pkg:<type>/<namespace>/<name>@<version> (เช่น pkg:npm/lodash@4.17.21, pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1, pkg:pypi/django@3.2.0) - สตริงที่จำเป็น
ตัวแปรสภาพแวดล้อมสำหรับการเพิ่มบริบท
ตัวแปรคำอธิบายจำเป็นค่าเริ่มต้น
SONARQUBE_URLURL ของ SonarQube Cloudใช่https://sonarcloud.io
SONARQUBE_TOKENโทเค็นการยืนยันตัวตนใช่ไม่มี
SONARQUBE_ORGองค์กร 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>}"

จากนั้น เมานต์พื้นที่ทำงานของโปรเจกต์เพื่อให้เซิร์ฟเวอร์ 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 Readiness ใช้ได้เฉพาะบน SonarQube Cloud และต้องเปิดใช้ฟีเจอร์นี้สำหรับองค์กรของคุณ

ระบบจะตรวจสอบแฟล็กฟีเจอร์ตอนเริ่มต้นในโหมด stdio สำหรับ HTTP/HTTPS ให้เพิ่ม agentic-readiness ลงใน SONARQUBE_TOOLSETS ของเซิร์ฟเวอร์เพื่อเปิดใช้เครื่องมือ

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

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

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

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

สถาปัตยกรรม

หมายเหตุ: เปิดใช้เครื่องมือเหล่านี้ด้วย SONARQUBE_TOOLSETS=architecture ในโหมด stdio หรือ HTTP/HTTPS SonarQube Cloud ต้องใช้แพ็กเกจ Team หรือ Enterprise ส่วน SonarQube Server ต้องเป็นเวอร์ชัน 2026.6 ขึ้นไปและรุ่น Developer ขึ้นไป เครื่องมือเหล่านี้ไม่พร้อมใช้งานในเวอร์ชันเก่าหรือ Community Build ดู เวิร์กโฟลว์สถาปัตยกรรมและการกู้คืน

  • architecture_get - อ่านการพึ่งพาปัจจุบัน สถาปัตยกรรมที่ต้องการ คำสั่งของโปรเจกต์ หรือ Findings (ความเบี่ยงเบน ข้อบกพร่อง และกลิ่นโค้ด)

    • target - current, intended, directives หรือ findings; ความพร้อมใช้งานขึ้นอยู่กับ MCP และบิลด์ของ Server - Enum ที่จำเป็น
    • projectKey - คีย์โปรเจกต์ - สตริงที่จำเป็น (ไม่สนใจเมื่อกำหนด SONARQUBE_PROJECT_KEY)
    • organization - คีย์องค์กร SonarQube Cloud เมื่อยังไม่ได้กำหนดค่า - สตริงที่ไม่บังคับ ใช้ได้เฉพาะ Cloud
    • component - คีย์โหนดปัจจุบันที่ตรงกันทุกประการหรือพาธกลุ่มที่ต้องการ; หากไม่ระบุจะใช้ระดับบนสุด - String
    • depth - เฉพาะ current/intended: จำนวนระดับที่อยู่ใต้จุดเริ่มต้น; ค่าเริ่มต้นคือ 1 สำหรับ current และทั้งหมดสำหรับ intended - Number
    • language - เฉพาะ current/intended/findings: java, cs, js, ts หรือ py - Enum
    • directiveId - คำสั่งฉบับเต็มตาม UUID รวมถึงคำอธิบาย; ใช้แทนการแบ่งหน้า - String
    • category / type - เฉพาะ Findings: กรองความเบี่ยงเบน ข้อบกพร่อง หรือกลิ่นโค้ดตามประเภทที่ระบุ - Enum
    • pageIndex - Directives/Findings: ดัชนีหน้าเริ่มจาก 1 (ค่าเริ่มต้น: 1) - Number
    • pageSize - Directives: สรุป ค่าเริ่มต้น/สูงสุด 50 Findings: ค่าเริ่มต้น 50 สูงสุด 1000; 0 ใช้สำหรับนับเท่านั้น - Number
  • architecture_set - แทนที่สถาปัตยกรรมที่ต้องการทั้งหมด หรือสร้าง อัปเดต และลบคำสั่งของโปรเจกต์ ใช้ได้ในบิลด์ Cloud และ Server ที่รองรับเมื่อเปิดใช้การเขียน

    • target - intended หรือ directives - Enum ที่จำเป็น
    • projectKey - คีย์โปรเจกต์ - สตริงที่จำเป็น (ไม่สนใจเมื่อกำหนด SONARQUBE_PROJECT_KEY)
    • organization - คีย์องค์กร SonarQube Cloud เมื่อยังไม่ได้กำหนดค่า - สตริงที่ไม่บังคับ ใช้ได้เฉพาะ Cloud
    • model - สตริง JSON: export สถาปัตยกรรมที่ต้องการฉบับสมบูรณ์ หรืออาร์เรย์ models (เนื้อหาที่ละไว้จะถูกลบ) หรือการเปลี่ยนแปลงคำสั่งพร้อมอาร์เรย์ create, update และ delete - สตริงที่จำเป็น
    • dryRun - true เพื่อดูตัวอย่างก่อนใช้, false เพื่อใช้การเปลี่ยนแปลง - บูลีนที่จำเป็น
    • revision - เฉพาะ intended: revision จาก architecture_get; ค่าเริ่มต้นคือ revision ของ export ฉบับสมบูรณ์ จำเป็นเมื่อใช้ clear - String

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

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

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

การสร้าง

แนะนำให้ใช้คอนเทนเนอร์อิมเมจ sonarsource/sonarqube-mcp

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

เรียกใช้จาก JAR

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

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

SonarQube MCP Server ต้องใช้ Java Development Kit (JDK) เวอร์ชัน 21 ขึ้นไปในการสร้าง

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

./gradlew clean build -x test

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

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

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

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

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

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

ปัญหาที่พบบ่อย

"ไม่รองรับเวอร์ชันเซิร์ฟเวอร์ SonarQube"

เซิร์ฟเวอร์ MCP จะตรวจสอบเวอร์ชันของ 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

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

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

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

docker pull sonarsource/sonarqube-mcp

หลังจากดึง image ล่าสุดแล้ว ให้รีสตาร์ตไคลเอ็นต์ MCP เพื่อใช้เวอร์ชันที่อัปเดต

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

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

"ฉันต้องการตรึงไว้ที่เวอร์ชันที่ระบุ"

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

docker pull sonarsource/sonarqube-mcp:1.19.0.2785

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

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

ข้อมูลและการวัดผลการใช้งาน

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

ใบอนุญาต

ลิขสิทธิ์ 2025 SonarSource

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

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