SonarQube

chính thức

Cung cấp tích hợp liền mạch với SonarQube Server hoặc Cloud, và cho phép phân tích các đoạn mã trực tiếp trong ngữ cảnh của agent

Bạn có thể làm gì với SonarQube MCP?

  • Phân tích đoạn mã — Yêu cầu trợ lý của bạn chạy analyze_code_snippet trên một mẫu mã để nhận ngay kết quả về chất lượng và bảo mật.
  • Quản lý issue — Sử dụng bộ công cụ issues để tìm kiếm, lọc và cập nhật các issue của SonarQube theo mức độ nghiêm trọng, trạng thái hoặc dự án.
  • Xem xét các điểm nóng bảo mật — Truy vấn bộ công cụ security-hotspots để liệt kê các điểm nóng cần xem xét và hiểu rủi ro của chúng.
  • Kiểm tra cổng chất lượng — Yêu cầu trạng thái quality-gates của một dự án để xem liệu nó có đạt chuẩn chất lượng của mình hay không.
  • Kéo số liệu dự án — Truy xuất measures như mức độ bao phủ và trùng lặp mã, hoặc duyệt các dự án qua bộ công cụ projects.

Tài liệu

Máy chủ MCP SonarQube

Build Quality Gate Status

Máy chủ MCP SonarQube là một máy chủ Giao thức Ngữ cảnh Mô hình (MCP) cho phép tích hợp liền mạch với SonarQube Server hoặc Cloud để kiểm tra chất lượng và bảo mật mã nguồn. Nó cũng hỗ trợ phân tích đoạn mã trực tiếp trong ngữ cảnh của tác nhân.

Thiết lập nhanh

Các phương pháp bảo mật tốt nhất

🔒 Quan trọng: Token SonarQube của bạn là thông tin xác thực nhạy cảm. Hãy tuân thủ các phương pháp bảo mật sau:

Khi sử dụng lệnh CLI:

  • Tránh mã hóa cứng token trong các tham số dòng lệnh – chúng sẽ được lưu trong lịch sử shell
  • Sử dụng biến môi trường – đặt token trong các biến môi trường trước khi chạy lệnh

Khi sử dụng tệp cấu hình:

  • Không bao giờ commit token vào hệ thống quản lý phiên bản
  • Sử dụng thay thế biến môi trường trong các tệp cấu hình khi có thể

🚀 Tạo cấu hình của bạn

Cách nhanh nhất để bắt đầu là Trình tạo cấu hình Máy chủ MCP SonarQube – một công cụ tương tác tạo ra cấu hình sẵn sàng sử dụng cho ứng dụng khách tác nhân AI mà bạn ưa thích.

Thiết lập thủ công

Nếu bạn muốn tự cấu hình, phương pháp đơn giản nhất là sử dụng image container của chúng tôi tại sonarsource/sonarqube-mcp. Sử dụng sonarsource/sonarqube-mcp để cập nhật tự động (với --pull=always), hoặc ghim vào một thẻ phiên bản (ví dụ: sonarsource/sonarqube-mcp:1.19.0.2785) để triển khai có thể tái tạo. Đọc bên dưới nếu bạn muốn xây dựng cục bộ.

Lưu ý: Mặc dù các ví dụ bên dưới sử dụng docker, mọi thời gian chạy container tương thích OCI đều hoạt động (ví dụ: Podman, nerdctl). Chỉ cần thay docker bằng công cụ bạn ưa thích.

Antigravity

Máy chủ MCP SonarQube có sẵn trong Cửa hàng MCP Antigravity. Làm theo các hướng dẫn sau:

  1. Mở Bảng điều khiển phụ của Tác nhân
  2. Nhấp vào ba dấu chấm (...) ở góc trên bên phải và chọn MCP Servers
  3. Tìm kiếm SonarQube và chọn Install
  4. Cung cấp Token người dùng SonarQube bắt buộc. Bạn cũng có thể cung cấp khóa tổ chức của mình cho SonarQube Cloud hoặc URL SonarQube nếu kết nối với SonarQube Server.

Đối với SonarQube Cloud US, đặt URL thành https://sonarqube.us.

Ngoài ra, bạn có thể cấu hình máy chủ thủ công qua mcp_config.json:

  • Để kết nối với SonarQube Cloud:

Trong Bảng điều khiển phụ của Tác nhân, nhấp vào ba dấu chấm (...) -> MCP Store -> Manage MCP Servers -> View raw config, và thêm nội dung sau:

{
  "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>"
      }
    }
  }
}

Đối với SonarQube Cloud US, thêm thủ công "SONARQUBE_URL": "https://sonarqube.us" vào phần env"-e", "SONARQUBE_URL" vào mảng args.

  • Để kết nối với 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
  • Để kết nối với 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

Đối với SonarQube Cloud US, thêm --env SONARQUBE_URL=https://sonarqube.us vào lệnh.

  • Để kết nối với 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

Chỉnh sửa thủ công tệp cấu hình tại ~/.codex/config.toml và thêm cấu hình sau:

  • Để kết nối với 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>" }

Đối với SonarQube Cloud US, thêm "SONARQUBE_URL" = "https://sonarqube.us" vào phần env"-e", "SONARQUBE_URL" vào mảng args.

  • Để kết nối với 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
  • Để kết nối với SonarQube Cloud:

Install for SonarQube Cloud

Đối với SonarQube Cloud US, thêm thủ công "SONARQUBE_URL": "https://sonarqube.us" vào phần env trong cấu hình MCP của bạn sau khi cài đặt.

  • Để kết nối với SonarQube Server:

Install for SonarQube Server

Gemini CLI

Lưu ý: Tiện ích mở rộng Gemini CLI đã được chuyển đến kho lưu trữ sonarqube-agent-plugins. Vui lòng cài đặt từ đó từ nay về sau.

Bạn có thể cài đặt tiện ích mở rộng máy chủ MCP của chúng tôi bằng cách sử dụng lệnh sau:

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

Bạn sẽ cần đặt các biến môi trường bắt buộc trước khi khởi động Gemini:

Biến môi trường bắt buộc:

  • Đối với SonarQube Cloud:

    • SONARQUBE_TOKEN - Token SonarQube Cloud của bạn
    • SONARQUBE_ORG - Khóa tổ chức của bạn
    • SONARQUBE_URL - (Tùy chọn) Đặt thành https://sonarqube.us cho SonarQube Cloud US
  • Đối với SonarQube Server:

    • SONARQUBE_TOKEN - Token NGƯỜI DÙNG SonarQube Server của bạn
    • SONARQUBE_URL - URL SonarQube Server của bạn

Sau khi cài đặt, tiện ích mở rộng sẽ được cài đặt trong <home>/.gemini/extensions/sonarqube/gemini-extension.json.

GitHub Copilot CLI

Sau khi khởi động Copilot CLI, chạy lệnh sau để thêm máy chủ MCP SonarQube:

/mcp add

Bạn sẽ phải cung cấp các thông tin khác nhau về máy chủ MCP, bạn có thể sử dụng phím tab để di chuyển giữa các trường.

  • Để kết nối với 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: *

Đối với SonarQube Cloud US, thêm -e, SONARQUBE_URL vào Arguments và SONARQUBE_URL=https://sonarqube.us vào Environment Variables.

  • Để kết nối với 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: *

Tệp cấu hình nằm tại ~/.copilot/mcp-config.json.

Tác nhân mã hóa GitHub Copilot

Tác nhân mã hóa GitHub Copilot có thể tận dụng máy chủ MCP SonarQube trực tiếp trong CI/CD của bạn.

Để thêm các bí mật vào môi trường Copilot của bạn, hãy làm theo tài liệu của Copilot. Chỉ các bí mật có tên bắt đầu bằng tiền tố COPILOT_MCP_ mới khả dụng cho cấu hình MCP của bạn.

Trong kho lưu trữ GitHub của bạn, điều hướng đến Settings -> Copilot -> Coding agent, và thêm cấu hình sau vào phần cấu hình MCP:

  • Để kết nối với 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": ["*"]
    }
  }
}

Đối với SonarQube Cloud US, thêm "-e", "SONARQUBE_URL" vào mảng args"SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL" vào phần env, sau đó đặt bí mật COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us.

  • Để kết nối với 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

Tạo tệp .kiro/settings/mcp.json trong thư mục làm việc của bạn (hoặc chỉnh sửa nếu đã tồn tại), thêm cấu hình sau:

  • Để kết nối với 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": []
    }
  }
}

Đối với SonarQube Cloud US, thêm "-e", "SONARQUBE_URL" vào mảng args"SONARQUBE_URL": "https://sonarqube.us" vào phần env.

  • Để kết nối với 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

Bạn có thể sử dụng các nút sau để đơn giản hóa quá trình cài đặt trong VS Code.

Install for SonarQube Cloud

Đối với SonarQube Cloud US, thêm thủ công "SONARQUBE_URL": "https://sonarqube.us" vào phần env trong cấu hình MCP của bạn sau khi cài đặt.

Install for SonarQube Server

Windsurf

Máy chủ MCP SonarQube có sẵn dưới dạng plugin Windsurf. Làm theo các hướng dẫn sau:

  1. Mở Windsurf Settings > Cascade > MCP Servers và chọn Open MCP Marketplace
  2. Tìm kiếm sonarqube trên Cascade MCP Marketplace
  3. Chọn SonarQube MCP Server và chọn Install
  4. Thêm Token người dùng SonarQube bắt buộc. Sau đó thêm khóa tổ chức nếu bạn muốn kết nối với SonarQube Cloud, hoặc URL SonarQube nếu bạn muốn kết nối với SonarQube Server hoặc Community Build.

Đối với SonarQube Cloud US, đặt URL thành https://sonarqube.us.

Zed

Điều hướng đến chế độ xem Extensions trong Zed và tìm kiếm SonarQube MCP Server. Khi cài đặt tiện ích mở rộng, bạn sẽ được nhắc cung cấp các biến môi trường cần thiết:

  • Khi sử dụng SonarQube Cloud:
{
  "sonarqube_token": "YOUR_SONARQUBE_TOKEN",
  "sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
  "docker_path": "DOCKER_PATH"
}

Đối với SonarQube Cloud US, thêm "sonarqube_url": "https://sonarqube.us" vào cấu hình.

  • Khi sử dụng SonarQube Server:
{
  "sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
  "sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
  "docker_path": "DOCKER_PATH"
}

docker_path là đường dẫn đến một tệp thực thi docker. Ví dụ:

Linux/macOS: /usr/bin/docker hoặc /usr/local/bin/docker

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

💡 Mẹo: Chúng tôi khuyên bạn nên kéo image mới nhất thường xuyên hoặc trước khi báo cáo sự cố để đảm bảo bạn có các tính năng và bản sửa lỗi mới nhất.

Cài đặt thủ công

Bạn có thể cài đặt thủ công máy chủ MCP SonarQube bằng cách sao chép đoạn mã sau vào tệp cấu hình máy chủ MCP:

  • Để kết nối với 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>"
    }
  }
}
  • Để kết nối với 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>"
    }
  }
}

Tích hợp với SonarQube for IDE

Máy chủ MCP SonarQube có thể tích hợp với SonarQube for IDE để nâng cao hơn nữa quy trình phát triển của bạn, cung cấp phân tích mã và thông tin chi tiết tốt hơn trực tiếp trong IDE của bạn.

Cấu hình

Khi sử dụng SonarQube for IDE, biến môi trường SONARQUBE_IDE_PORT nên được đặt với số cổng chính xác. SonarQube for VS Code bao gồm nút Quick Install, tự động đặt cấu hình cổng chính xác.

Ví dụ, với 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>"
    }
  }
}

Khi chạy máy chủ MCP trong container trên Linux, container không thể truy cập máy chủ nhúng SonarQube for IDE chạy trên localhost. Để cho phép container kết nối với máy chủ SonarQube for IDE, hãy thêm tùy chọn --network=host vào lệnh chạy container của bạn.

Cấu hình

Tùy thuộc vào môi trường của bạn, bạn nên cung cấp các biến môi trường cụ thể.

Cơ bản

Bạn nên thêm biến sau khi chạy Máy chủ MCP:

Biến môi trườngMô tả
STORAGE_PATHĐường dẫn tuyệt đối bắt buộc đến một thư mục có thể ghi nơi Máy chủ MCP SonarQube sẽ lưu trữ các tệp của nó (ví dụ: để tạo, cập nhật và lưu trữ), được cung cấp tự động khi sử dụng image container
SONARQUBE_PROJECT_KEYKhóa dự án mặc định tùy chọn. Khi được đặt, tất cả các công cụ yêu cầu khóa dự án sẽ tự động sử dụng giá trị này — tham số projectKey bị loại bỏ hoàn toàn khỏi lược đồ của chúng. Hữu ích khi làm việc trên một dự án duy nhất.
SONARQUBE_IDE_PORTSố cổng tùy chọn từ 64120 đến 64130 được sử dụng để kết nối Máy chủ MCP SonarQube với SonarQube for IDE.
SONARQUBE_DEBUG_ENABLEDKhi được đặt thành true, bật ghi log gỡ lỗi. Log gỡ lỗi được ghi vào cả tệp log và STDERR. Hữu ích để khắc phục sự cố kết nối hoặc cấu hình. Mặc định: false.
SONARQUBE_LOG_TO_FILE_DISABLEDKhi được đặt thành true, vô hiệu hóa hoàn toàn việc ghi log vào đĩa. Không có tệp log nào được tạo trong STORAGE_PATH/logs/. Hữu ích trong môi trường container hóa hoặc tạm thời nơi ghi log tệp không được mong muốn. Mặc định: false.

Gắn kết Workspace (Giảm bớt Context Bloat)

Theo mặc định, công cụ phân tích analyze_code_snippet yêu cầu tác nhân truyền toàn bộ nội dung tệp dưới dạng tham số fileContent. Đối với các tệp lớn hoặc khi phân tích nhiều tệp trong một phiên, điều này làm tăng đáng kể việc sử dụng cửa sổ ngữ cảnh và chi phí.

Giải pháp: gắn kết (mount) thư mục dự án của bạn vào container tại /app/mcp-workspace. Khi phát hiện mount này, máy chủ sẽ đọc tệp trực tiếp từ đĩa bằng đối số filePath tương đối với dự án — nội dung tệp không bao giờ đi qua ngữ cảnh của agent.

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

Khi mount đang hoạt động:

  • run_advanced_code_analysis sẽ khả dụng nếu tổ chức của bạn được cấp quyền sử dụng
  • analyze_code_snippet: filePath là bắt buộc và fileContent không được sử dụng — máy chủ giải quyết tệp theo cùng cách

Kích hoạt Bộ công cụ có chọn lọc

Theo mặc định, chỉ các bộ công cụ quan trọng được kích hoạt để giảm chi phí ngữ cảnh. Bạn có thể kích hoạt thêm các bộ công cụ khác khi cần.

Biến môi trườngMô tả
SONARQUBE_TOOLSETSDanh sách các bộ công cụ được phân tách bằng dấu phẩy để kích hoạt. Khi được đặt, chỉ các bộ công cụ này sẽ khả dụng. Nếu không được đặt, các bộ công cụ quan trọng mặc định sẽ được kích hoạt (analysis, ide, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). Lưu ý: Bộ công cụ projects luôn được kích hoạt vì nó cần thiết để tìm khóa dự án cho các thao tác khác. Các công cụ ngữ cảnh Vortex (tên cũ: Context Augmentation/CAG) và các công cụ phân tích Vortex (tên cũ: Advanced Analysis/A3S) chỉ khả dụng ở chế độ stdio và dùng chung một quyền cấp tổ chức kết hợp — một tổ chức phải được cấp quyền cho cả hai để sử dụng một trong hai. Việc truy cập chúng qua khóa bộ công cụ cag hoặc analysis không còn được khuyến khích, thay vào đó hãy dùng khóa bộ công cụ hợp nhất vortex; các khóa cũ vẫn hoạt động để tương thích ngược, nhưng cảnh báo khi khởi động và ghi chú không còn được khuyến khích trong hướng dẫn máy chủ sẽ được phát ra bất cứ khi nào chúng được sử dụng mà không có vortex. Trong chế độ Streamable HTTP, máy khách có thể gửi tiêu đề HTTP SONARQUBE_TOOLSETS để thu hẹp phạm vi này hơn nữa cho từng yêu cầu, nhưng không thể kích hoạt các bộ công cụ vượt quá những gì máy chủ đã khởi chạy (xem Streamable HTTP transport bên dưới).
SONARQUBE_READ_ONLYKhi được đặt thành true, bật chế độ chỉ đọc, vô hiệu hóa tất cả các thao tác ghi (ví dụ: thay đổi trạng thái vấn đề). Bộ lọc này cộng dồn với SONARQUBE_TOOLSETS nếu cả hai được đặt. Mặc định: false. Trong chế độ Streamable HTTP, máy khách có thể gửi tiêu đề HTTP SONARQUBE_READ_ONLY để hạn chế thêm các yêu cầu riêng lẻ ở chế độ chỉ đọc, nhưng không thể gỡ bỏ hạn chế chỉ đọc ở cấp máy chủ (xem Streamable HTTP transport bên dưới).
Các Bộ công cụ Khả dụng
Bộ công cụKhóaMô tả
AnalysisanalysisCác công cụ phân tích mã (phân tích cục bộ qua analyze_code_snippet, không còn được khuyến khích thay bằng analyze_file_list/Vortex analysis)
IDEideCác công cụ cầu nối SonarQube for IDE (phân tích tệp, chuyển đổi phân tích tự động) — hiện cũng được bao gồm trong analysis
IssuesissuesTìm kiếm và quản lý các vấn đề SonarQube
Security Hotspotssecurity-hotspotsTìm kiếm và xem xét các Security Hotspot
ProjectsprojectsDuyệt và tìm kiếm các dự án SonarQube
Quality Gatesquality-gatesTruy cập các quality gate và trạng thái của chúng
RulesrulesDuyệt và tìm kiếm các quy tắc SonarQube
SourcessourcesTruy cập mã nguồn và thông tin SCM
DuplicationsduplicationsTìm các đoạn mã trùng lặp trong các dự án
MeasuresmeasuresTruy xuất số liệu và đo lường (bao gồm cả công cụ measures và metrics)
LanguageslanguagesLiệt kê các ngôn ngữ lập trình được hỗ trợ
PortfoliosportfoliosQuản lý danh mục đầu tư và doanh nghiệp (Cloud và Server)
SystemsystemCác công cụ quản trị hệ thống (chỉ Server)
WebhookswebhooksQuản lý webhook
Dependency Risksdependency-risksPhân tích rủi ro phụ thuộc và các vấn đề bảo mật (SCA)
CoveragecoverageCác công cụ phân tích và cải thiện độ phủ kiểm thử
Vortex ContextcagCác công cụ ngữ cảnh Vortex — chỉ stdio. Không còn được khuyến khích thay bằng vortex (tên cũ: Context Augmentation/CAG)
VortexvortexBộ công cụ hợp nhất, được khuyến nghị hiển thị cả công cụ ngữ cảnh Vortex và phân tích Vortex dưới một tên (chỉ stdio, yêu cầu quyền cấp tổ chức kết hợp)
Agentic Readinessagentic-readinessCác công cụ Agentic Readiness Assessment (SonarQube Cloud, yêu cầu quyền cấp tổ chức)

Ví dụ

Kích hoạt các bộ công cụ analysis, issues và quality gates (sử dụng Docker với 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

Lưu ý: Bộ công cụ projects luôn được kích hoạt tự động, vì vậy bạn không cần đưa nó vào SONARQUBE_TOOLSETS.

Kích hoạt chế độ chỉ đọc (sử dụng Docker với 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

Để kích hoạt đầy đủ chức năng, các biến môi trường sau phải được đặt trước khi khởi động máy chủ:

Biến môi trườngMô tảBắt buộc
SONARQUBE_TOKENToken SonarQube Cloud của bạn
SONARQUBE_ORGKhóa tổ chức SonarQube Cloud của bạn
SONARQUBE_URLURL SonarQube Cloud tùy chỉnh (mặc định là https://sonarcloud.io). Sử dụng cho SonarQube Cloud US: https://sonarqube.usKhông

Ví dụ:

  • SonarQube Cloud: Chỉ cần SONARQUBE_TOKENSONARQUBE_ORG
  • SonarQube Cloud US: Đặt SONARQUBE_TOKEN, SONARQUBE_ORGSONARQUBE_URL=https://sonarqube.us

SonarQube Server

Biến môi trườngMô tảBắt buộc
SONARQUBE_TOKENToken USER của SonarQube Server của bạn
SONARQUBE_URLURL SonarQube Server của bạn

⚠️ Kết nối đến SonarQube Server yêu cầu token loại USER và sẽ không hoạt động đúng nếu sử dụng token dự án hoặc token toàn cục. 💡 Mẹo cấu hình (chế độ stdio): Sự hiện diện của SONARQUBE_ORG xác định bạn đang kết nối với SonarQube Cloud hay Server. Nếu SONARQUBE_ORG được thiết lập, SonarQube Cloud sẽ được sử dụng; nếu không, SonarQube Server sẽ được sử dụng.

Chế độ truyền tải

Đặc tả MCP định nghĩa hai cơ chế truyền tải: StdioStreamable HTTP. SonarQube MCP Server hỗ trợ cả hai:

MCP transportChế độ máy chủCách sử dụng điển hình
StdioMặc định (không có SONARQUBE_TRANSPORT)Máy khách MCP cục bộ khởi chạy máy chủ như một tiến trình con (Cursor, Claude Code, VS Code, v.v.)
Streamable HTTPSONARQUBE_TRANSPORT=http hoặc httpsTriển khai từ xa hoặc nhiều người dùng; máy khách kết nối tới /mcp qua HTTP(S) (ví dụ: Windsurf với URL máy chủ tự lưu trữ)

Lưu ý: Streamable HTTP là cơ chế truyền tải mạng MCP hiện tại. Cơ chế truyền tải HTTP chỉ hỗ trợ SSE cũ từ các phiên bản MCP trước đó đã bị không dùng nữa (deprecated) và không được hỗ trợ.

1. Stdio (Mặc định - Được khuyến nghị cho Phát triển cục bộ)

Chế độ được khuyến nghị cho phát triển cục bộ và thiết lập một người dùng, được hầu hết các máy khách MCP sử dụng.

Ví dụ - Docker với 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)

Cơ chế truyền tải Streamable HTTP không mã hóa. Sử dụng HTTPS để triển khai nhiều người dùng.

⚠️ Không được khuyến nghị: Sử dụng Stdio cho phát triển cục bộ hoặc HTTPS (Streamable HTTP) cho triển khai sản xuất nhiều người dùng.

Biến môi trườngMô tảMặc định
SONARQUBE_TRANSPORTĐặt thành http để bật cơ chế truyền tải Streamable HTTPKhông đặt (stdio)
SONARQUBE_HTTP_PORTSố cổng (1024-65535)8080
SONARQUBE_HTTP_HOSTMáy chủ lưu trú để ràng buộc (mặc định là localhost vì lý do bảo mật)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSDanh sách các nguồn gốc trình duyệt được phép cho CORS, phân tách bằng dấu phẩy (ví dụ: https://my-app.example.com)Không đặt
SONARQUBE_MCP_IN_CONTAINERĐặt thành true khi chạy bên trong container. Docker image chính thức tự động đặt giá trị này; tự đặt khi sử dụng các OCI runtime khác (Podman, Kubernetes, Nomad, v.v.).false

Lưu ý: Trong chế độ Streamable HTTP (HTTP hoặc HTTPS), máy chủ không có trạng thái (stateless) — mỗi yêu cầu của máy khách phải bao gồm tiêu đề Authorization: Bearer <token> mang token SonarQube của chính người dùng. Đối với SonarQube Cloud, tổ chức được xác định như sau:

  • Nếu SONARQUBE_ORG được thiết lập khi máy chủ khởi động, tất cả các yêu cầu được định tuyến đến tổ chức đó. Máy khách không được gửi tiêu đề SONARQUBE_ORG — việc làm đó sẽ dẫn đến lỗi.
  • Nếu SONARQUBE_ORG không được thiết lập khi máy chủ khởi động, mỗi máy khách phải cung cấp tiêu đề SONARQUBE_ORG trong mỗi yêu cầu. Máy khách cũng có thể thu hẹp các công cụ hiển thị theo từng yêu cầu bằng cách cung cấp tiêu đề SONARQUBE_TOOLSETS và/hoặc SONARQUBE_READ_ONLY; các tiêu đề này áp dụng bộ lọc bổ sung trên nền tảng cấu hình cấp máy chủ — chúng chỉ có thể giảm phạm vi, không bao giờ mở rộng phạm vi. Không có trạng thái phiên nào được duy trì giữa các yêu cầu.

Không dùng nữa (Deprecated): Tiêu đề yêu cầu SONARQUBE_TOKEN vẫn được chấp nhận để tương thích ngược nhưng sẽ bị xóa trong phiên bản tương lai. Di chuyển sang Authorization: Bearer <token>.

3. HTTPS (Streamable HTTP qua TLS) (Được khuyến nghị cho Triển khai Sản xuất Nhiều người dùng)

Cơ chế truyền tải Streamable HTTP an toàn với mã hóa TLS. Yêu cầu chứng chỉ SSL.

Được khuyến nghị cho Sản xuất: Sử dụng HTTPS khi triển khai MCP server cho nhiều người dùng qua Streamable HTTP. Máy chủ ràng buộc với 127.0.0.1 (localhost) theo mặc định vì lý do bảo mật.

Biến môi trườngMô tảMặc định
SONARQUBE_TRANSPORTĐặt thành https để bật cơ chế truyền tải Streamable HTTP qua TLSKhông đặt (stdio)
SONARQUBE_HTTP_PORTSố cổng (thường là 8443 cho HTTPS)8080
SONARQUBE_HTTP_HOSTMáy chủ lưu trú để ràng buộc (mặc định là localhost vì lý do bảo mật)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSDanh sách các nguồn gốc trình duyệt được phép cho CORS, phân tách bằng dấu phẩy (ví dụ: https://my-app.example.com)Không đặt
SONARQUBE_MCP_IN_CONTAINERĐặt thành true khi chạy bên trong container. Docker image chính thức tự động đặt giá trị này; tự đặt khi sử dụng các OCI runtime khác (Podman, Kubernetes, Nomad, v.v.).false

Cấu hình chứng chỉ SSL (Tùy chọn):

Biến môi trườngMô tảMặc định
SONARQUBE_HTTPS_KEYSTORE_PATHĐường dẫn đến tệp keystore (.p12 hoặc .jks)/etc/ssl/mcp/keystore.p12
SONARQUBE_HTTPS_KEYSTORE_PASSWORDMật khẩu keystoresonarlint
SONARQUBE_HTTPS_KEYSTORE_TYPELoại keystore (PKCS12 hoặc JKS)PKCS12

Ví dụ - Docker với SonarQube Cloud:

Lưu ý: Khi chạy trong container, hãy đặt SONARQUBE_HTTP_HOST=0.0.0.0 để container lắng nghe trên tất cả các giao diện và ánh xạ cổng của runtime hoạt động, đồng thời đặt SONARQUBE_MCP_IN_CONTAINER=true để báo cho máy chủ biết nó đang chạy bên trong container. Docker image chính thức tự động đặt giá trị sau; tự đặt khi sử dụng các OCI runtime khác (Podman, Kubernetes, Nomad, v.v.). Cờ cổng phía máy chủ kiểm soát ai có thể truy cập máy chủ từ bên ngoài container. SONARQUBE_HTTP_HOST=0.0.0.0 chỉ kiểm soát nơi máy chủ lắng nghe bên trong container — CORS của trình duyệt vẫn cho phép các nguồn gốc localhost theo mặc định.

Đối với máy chủ chạy cục bộ trên máy của bạn (chỉ truy cập được từ 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

Đối với máy chủ truy cập được từ mạng (triển khai từ xa):

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

Cấu hình máy khách (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"
      }
    }
  }
}

Cấu hình máy khách (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"
      }
    }
  }
}

Lưu ý: SONARQUBE_TOOLSETSSONARQUBE_READ_ONLY là các tiêu đề tùy chọn theo từng yêu cầu giúp thu hẹp tập công cụ cấp máy chủ cho yêu cầu cụ thể đó. Chúng chỉ có thể giảm phạm vi — chúng không thể bật các tập công cụ hoặc gỡ bỏ các hạn chế vượt quá những gì máy chủ đã được khởi chạy.

Lưu ý: Đối với phát triển cục bộ, hãy sử dụng cơ chế truyền tải Stdio (mặc định). HTTPS Streamable HTTP dành cho triển khai sản xuất nhiều người dùng với chứng chỉ SSL phù hợp.

Điểm cuối dịch vụ (Service Endpoints)

Khi chạy ở chế độ Streamable HTTP (http hoặc https), máy chủ hiển thị một số điểm cuối dịch vụ không cần xác thực ngoài điểm cuối MCP tại /mcp. Các điểm cuối này dành cho mục đích dịch vụ-giữa-các-dịch vụ (giám sát, điều phối, kiểm tra tương thích máy khách) và không yêu cầu tiêu đề Authorization.

Điểm cuốiPhương thứcMô tảPhản hồi ví dụ
/healthGETKiểm tra tình trạng sống (Liveness probe). Trả về 200 OK với nội dung trống khi máy chủ đã sẵn sàng nhận yêu cầu.(nội dung trống)
/infoGETTrả về phiên bản MCP server dưới dạng JSON. Hữu ích để xác minh phiên bản máy chủ đã triển khai.{"version":"1.16.0"}

Các điểm cuối này không khả dụng khi chạy với cơ chế truyền tải Stdio.

Chứng chỉ tùy chỉnh

Nếu SonarQube Server của bạn sử dụng chứng chỉ tự ký (self-signed) hoặc chứng chỉ từ Certificate Authority (CA) riêng, bạn có thể thêm chứng chỉ tùy chỉnh vào container và chúng sẽ được cài đặt tự động.

Cấu hình

Sử dụng Volume Mount

Gắn một thư mục chứa chứng chỉ của bạn khi chạy container:

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

Định dạng chứng chỉ được hỗ trợ

Container hỗ trợ các định dạng chứng chỉ sau:

  • Tệp .crt (mã hóa PEM hoặc DER)
  • Tệp .pem (mã hóa PEM)

Cấu hình MCP với chứng chỉ

Khi sử dụng chứng chỉ tùy chỉnh, bạn có thể sửa đổi cấu hình MCP của mình để gắn chứng chỉ:

{
  "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>"
    }
  }
}

Lưu ý: Chạy máy chủ từ JAR thay vì container? Volume mount ở trên cài đặt chứng chỉ vào trust store HĐH của container, nơi máy chủ cũng đọc. Nếu bạn không thể sử dụng trust store HĐH — đặc biệt trên Windows, nơi nó không được tham chiếu — hãy trỏ JVM đến truststore Java chứa chứng chỉ CA: -Djavax.net.ssl.trustStore=/path/to/truststore.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=<passphrase>. Nó được thêm bổ sung trên nền các chứng chỉ đáng tin cậy mặc định.

Proxy

SonarQube MCP Server hỗ trợ proxy HTTP và SOCKS5 thông qua các thuộc tính hệ thống proxy Java tiêu chuẩn.

Cấu hình

Proxy HTTP/HTTPS

Bạn có thể cấu hình proxy bằng các thuộc tính hệ thống Java. Các thuộc tính này có thể được đặt dưới dạng biến môi trường hoặc được truyền dưới dạng đối số JVM.

Các thuộc tính proxy thông dụng:

Thuộc tínhMô tảVí dụ
http.proxyHostTên máy chủ proxy HTTPproxy.example.com
http.proxyPortCổng proxy HTTP8080
https.proxyHostTên máy chủ proxy HTTPSproxy.example.com
https.proxyPortCổng proxy HTTPS8443
http.nonProxyHostsCác máy chủ bỏ qua proxy (phân tách bằng dấu gạch đứng)localhost|127.0.0.1|*.internal.com

Xác thực proxy HTTP/HTTPS:

Thuộc tínhMô tảVí dụ
http.proxyUserTên người dùng proxy HTTPmyuser
http.proxyPasswordMật khẩu proxy HTTPmypassword
https.proxyUserTên người dùng proxy HTTPSmyuser
https.proxyPasswordMật khẩu proxy HTTPSmypassword

Proxy SOCKS5

Proxy SOCKS5 được hỗ trợ.

Thuộc tínhMô tảMặc địnhVí dụ
socksProxyHostTên máy chủ proxy SOCKS5localhost
socksProxyPortCổng proxy SOCKS510801080
java.net.socks.usernameTên người dùng SOCKS5 (nếu cần xác thực)myuser
java.net.socks.passwordMật khẩu SOCKS5 (nếu cần xác thực)mypassword

Chứng chỉ máy khách (Mutual TLS)

Nếu SonarQube Server của bạn yêu cầu máy khách xuất trình chứng chỉ trong quá trình bắt tay TLS (mutual TLS), bạn có thể cung cấp keystore PKCS12 bằng cách gắn nó vào container và truyền vị trí của nó qua JAVA_OPTS.

Cấu hình

Sử dụng kho khóa PKCS12

Gắn file .p12 hoặc .pfx của bạn vào container và đặt biến môi trường JAVA_OPTS với các thuộc tính kho khóa:

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

Lưu ý: Tệp chứng chỉ phải được tiến trình container đọc được. Kiểm tra và sửa quyền nếu cần:

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

Bỏ qua -Djavax.net.ssl.keyStorePassword nếu kho khóa không có mật khẩu. Lưu ý rằng mật khẩu được sử dụng ở đây sẽ hiển thị qua docker inspect hoặc danh sách tiến trình.

Cấu hình MCP với chứng chỉ máy khách

{
  "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>"
    }
  }
}

Sử dụng kho khóa PKCS12 với JAR độc lập

Khi chạy máy chủ từ JAR, truyền các thuộc tính kho khóa dưới dạng đối số JVM trước -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>

Bỏ qua -Djavax.net.ssl.keyStorePassword nếu kho khóa không có mật khẩu.

Cấu hình MCP với chứng chỉ máy khách (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>"
    }
  }
}

Lưu ý: Các tệp chứng chỉ PEM và khóa (các file .crt/.key riêng biệt) phải được chuyển đổi sang định dạng PKCS12 trước. Sử dụng openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 để chuyển đổi chúng.

Công cụ

Phân tích

  • analyze_code_snippet - Phân tích nội dung tệp với trình phân tích SonarQube để xác định các vấn đề về chất lượng mã và bảo mật. Luôn phân tích toàn bộ nội dung tệp để đảm bảo chính xác. Tùy chọn lọc kết quả theo một đoạn mã cụ thể.

    Không dùng nữa: analyze_code_snippet sẽ bị xóa trong bản phát hành tương lai. Kết nối SonarQube for IDE để sử dụng analyze_file_list, hoặc kích hoạt phân tích Vortex cho tổ chức của bạn để sử dụng run_advanced_code_analysis (xem bên dưới).

    Cách sử dụng:

    • Khi workspace được gắn (khuyến nghị): truyền filePath (theo đường dẫn tương đối trong dự án) — máy chủ đọc trực tiếp tệp, giữ nội dung tệp ngoài ngữ cảnh của agent
    • Khi không gắn workspace: truyền đầy đủ fileContent để phân tích toàn bộ tệp (báo cáo tất cả các vấn đề)
    • Thêm codeSnippet tùy chọn để lọc kết quả - chỉ các vấn đề trong đoạn mã sẽ được báo cáo (vị trí đoạn được tự động phát hiện)

    Tham số:

    • projectKey - Khóa dự án SonarQube - Bắt buộc, kiểu String (Bỏ qua khi SONARQUBE_PROJECT_KEY được định nghĩa)
    • filePath - Đường dẫn tương đối trong dự án của tệp cần phân tích (ví dụ: src/main/java/MyClass.java). Sử dụng khi workspace được gắn tại /app/mcp-workspace - Kiểu String
    • fileContent - Nội dung tệp đầy đủ dưới dạng chuỗi. Bắt buộc khi workspace không được gắn - Kiểu String
    • codeSnippet - Đoạn mã để lọc vấn đề (phải khớp với nội dung trong fileContent) - Kiểu String
    • language - Ngôn ngữ của mã (ví dụ: 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Kiểu String
    • scope - Phạm vi của tệp: MAIN hoặc TEST (mặc định: MAIN) - Kiểu String

    Ngôn ngữ hỗ trợ: Java, Kotlin, Python, Ruby, Go, JavaScript (js, jsx), TypeScript (ts, tsx), JSP, PHP, XML, HTML, CSS, CloudFormation, Kubernetes, Terraform, Azure Resource Manager, Ansible, Docker, Phát hiện bí mật

Khi tích hợp với SonarQube for IDE được bật: (hai công cụ này được gắn thẻ cho cả bộ công cụ analysiside)

  • analyze_file_list - Phân tích các tệp trong thư mục làm việc hiện tại bằng SonarQube for IDE. Công cụ này kết nối với một phiên bản SonarQube for IDE đang chạy để thực hiện phân tích chất lượng mã trên danh sách tệp.

    • file_absolute_paths - Danh sách đường dẫn tuyệt đối của các tệp cần phân tích - Bắt buộc, kiểu String[]
  • toggle_automatic_analysis - Bật hoặc tắt phân tích tự động của SonarQube for IDE. Khi được bật, SonarQube for IDE sẽ tự động phân tích các tệp khi chúng được sửa đổi trong thư mục làm việc. Khi bị tắt, phân tích tự động bị tắt.

    • enabled - Bật hoặc tắt phân tích tự động - Bắt buộc, kiểu Boolean

Khi phân tích Vortex được bật cho tổ chức SonarQube Cloud của bạn:

Yêu cầu workspace được gắn tại /app/mcp-workspace

  • run_advanced_code_analysis - Chạy phân tích Vortex trên SonarQube Cloud cho một tệp duy nhất. Tổ chức được suy ra từ cấu hình MCP.
    • projectKey - Khóa của dự án - Bắt buộc, kiểu String (Bỏ qua khi SONARQUBE_PROJECT_KEY được định nghĩa)
    • branch - Tên nhánh được sử dụng để lấy ngữ cảnh phân tích mới nhất - Bắt buộc, kiểu String
    • filePath - Đường dẫn tương đối trong dự án của tệp cần phân tích (ví dụ: src/main/java/MyClass.java). - Bắt buộc, kiểu String
    • fileScope - Xác định phạm vi mà tệp đến: 'MAIN' hoặc 'TEST' (mặc định: MAIN) - Kiểu String

Độ phủ

  • search_files_by_coverage - Tìm kiếm các tệp trong một dự án được sắp xếp theo mức độ phủ (tăng dần - độ phủ thấp nhất trước tiên). Công cụ này giúp xác định các tệp cần cải thiện mức độ phủ kiểm thử.

    • projectKey - Khóa dự án để tìm kiếm - Bắt buộc, kiểu String (Bỏ qua khi SONARQUBE_PROJECT_KEY được định nghĩa)
    • branch - Tên nhánh tùy chọn cho phân tích theo nhánh. Sử dụng list_branches để khám phá các tên hợp lệ - Kiểu String
    • pullRequest - Khóa/ID yêu cầu kéo tùy chọn. Sử dụng list_pull_requests để khám phá các khóa hợp lệ - Kiểu String
    • maxCoverage - Ngưỡng độ phủ tối đa (0-100). Chỉ trả về các tệp có độ phủ <= giá trị này - Kiểu Number
    • pageIndex - Chỉ số trang (bắt đầu từ 1, mặc định: 1) - Kiểu Number
    • pageSize - Kích thước trang (mặc định: 100, tối đa: 500) - Kiểu Number
  • get_file_coverage_details - Lấy thông tin độ phủ từng dòng cho một tệp cụ thể, bao gồm các dòng chính xác không được phủ và các nhánh được phủ một phần. Công cụ này giúp xác định chính xác nơi cần thêm độ phủ kiểm thử. Sử dụng sau khi xác định các tệp có độ phủ thấp qua search_files_by_coverage.

    • key - Khóa tệp (ví dụ: my_project:src/foo/Bar.java) - Bắt buộc, kiểu String
    • branch - Tên nhánh tùy chọn cho phân tích theo nhánh. Sử dụng list_branches để khám phá các tên hợp lệ - Kiểu String
    • pullRequest - Khóa/ID yêu cầu kéo tùy chọn. Sử dụng list_pull_requests để khám phá các khóa hợp lệ - Kiểu String
    • from - Dòng đầu tiên để phân tích (bắt đầu từ 1, mặc định: 1) - Kiểu Number
    • to - Dòng cuối cùng để phân tích (bao gồm). Nếu không được chỉ định, tất cả các dòng được trả về - Kiểu Number

Rủi ro phụ thuộc

Lưu ý: Rủi ro phụ thuộc chỉ khả dụng khi kết nối với SonarQube Server 2025.4 Enterprise trở lên với SonarQube Advanced Security được bật.

  • search_dependency_risks - Tìm kiếm các vấn đề phân tích thành phần phần mềm (rủi ro phụ thuộc) của một dự án SonarQube, kèm theo các bản phát hành xuất hiện trong dự án, ứng dụng hoặc danh mục đầu tư được phân tích.
    • projectKey - Khóa dự án - Bắt buộc, kiểu String (Bỏ qua khi SONARQUBE_PROJECT_KEY được định nghĩa)
    • branch - Tên nhánh tùy chọn cho phân tích theo nhánh. Sử dụng list_branches để khám phá các tên hợp lệ - Kiểu String
    • pullRequest - Khóa/ID yêu cầu kéo tùy chọn. Sử dụng list_pull_requests để khám phá các khóa hợp lệ - Kiểu String
    • pageIndex - Chỉ số trang tùy chọn (bắt đầu từ 1, mặc định: 1) - Kiểu Integer
    • pageSize - Kích thước trang tùy chọn. Phải lớn hơn 0 và nhỏ hơn hoặc bằng 500 (mặc định: 100) - Kiểu Integer

Doanh nghiệp

Lưu ý: Doanh nghiệp chỉ khả dụng khi kết nối với SonarQube Cloud.

  • list_enterprises - Liệt kê các doanh nghiệp khả dụng trong SonarQube Cloud mà bạn có quyền truy cập. Sử dụng công cụ này để khám phá các ID doanh nghiệp có thể được sử dụng với các công cụ khác.
    • enterpriseKey - Khóa doanh nghiệp tùy chọn để lọc kết quả - Kiểu String

Vấn đề

  • change_sonar_issue_status - Thay đổi trạng thái của một vấn đề SonarQube thành "accept", "falsepositive" hoặc "reopen" một vấn đề.

    • key - Khóa vấn đề - Bắt buộc, kiểu String
    • status - Trạng thái mới của vấn đề - Bắt buộc, kiểu Enum {"accept", "falsepositive", "reopen"}
  • search_sonar_issues_in_projects - Tìm kiếm các vấn đề SonarQube trong các dự án của tổ chức tôi.

    • projectKeys - Danh sách khóa dự án SonarQube tùy chọn - Kiểu String[]
    • branch - Tên nhánh tùy chọn cho phân tích theo nhánh. Sử dụng list_branches để khám phá các tên hợp lệ - Kiểu String
    • pullRequest - Khóa/ID yêu cầu kéo tùy chọn. Sử dụng list_pull_requests để khám phá các khóa hợp lệ - Kiểu String
    • severities - Danh sách mức độ nghiêm trọng tùy chọn để lọc. Các giá trị có thể: INFO, LOW, MEDIUM, HIGH, BLOCKER - Kiểu String[]
    • impactSoftwareQualities - Danh sách chất lượng phần mềm tùy chọn để lọc. Các giá trị có thể: MAINTAINABILITY, RELIABILITY, SECURITY - Kiểu String[]
    • issueStatuses - Danh sách trạng thái vấn đề tùy chọn để lọc. Các giá trị có thể: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - Kiểu String[]
    • issueKey - Khóa vấn đề tùy chọn để lấy một vấn đề cụ thể - Kiểu String
    • pageIndex - Chỉ số trang tùy chọn bắt đầu từ 1 (mặc định: 1) - Kiểu Integer
    • pageSize - Kích thước trang tùy chọn. Phải lớn hơn 0 và nhỏ hơn hoặc bằng 500 (mặc định: 100) - Kiểu Integer

Điểm nóng bảo mật

  • search_security_hotspots - Tìm kiếm các điểm nóng bảo mật trong một dự án SonarQube.

    • projectKey - Khóa dự án hoặc ứng dụng - Bắt buộc, kiểu String (Bỏ qua khi SONARQUBE_PROJECT_KEY được định nghĩa)
    • hotspotKeys - Danh sách các khóa điểm nóng bảo mật cụ thể để truy xuất, được phân tách bằng dấu phẩy - Kiểu String[]
    • branch - Tên nhánh tùy chọn cho phân tích theo nhánh. Sử dụng list_branches để khám phá các tên hợp lệ - Kiểu String
    • pullRequest - Khóa/ID yêu cầu kéo tùy chọn. Sử dụng list_pull_requests để khám phá các khóa hợp lệ - Kiểu String
    • files - Danh sách đường dẫn tệp tùy chọn để lọc - Kiểu String[]
    • status - Bộ lọc trạng thái tùy chọn: TO_REVIEW, REVIEWED - Kiểu String
    • resolution - Bộ lọc độ phân giải tùy chọn: FIXED, SAFE, ACKNOWLEDGED - Kiểu String
    • sinceLeakPeriod - Lọc các điểm nóng được tạo từ giai đoạn rò rỉ (mã mới) - Kiểu Boolean
    • onlyMine - Chỉ hiển thị các điểm nóng được gán cho tôi - Kiểu Boolean
    • pageIndex - Chỉ số trang tùy chọn bắt đầu từ 1 (mặc định: 1) - Kiểu Integer
    • pageSize - Kích thước trang tùy chọn. Phải lớn hơn 0 và nhỏ hơn hoặc bằng 500 (mặc định: 100) - Kiểu Integer
  • show_security_hotspot - Lấy thông tin chi tiết về một điểm nóng bảo mật cụ thể, bao gồm chi tiết quy tắc, ngữ cảnh mã, luồng và bình luận.

    • hotspotKey - Khóa điểm nóng bảo mật - Bắt buộc, kiểu String
  • change_security_hotspot_status - Xem xét một điểm nóng bảo mật bằng cách thay đổi trạng thái của nó. Khi đánh dấu là REVIEWED, bạn phải chỉ định độ phân giải (FIXED, SAFE hoặc ACKNOWLEDGED).

    • hotspotKey - Khóa điểm nóng bảo mật - Bắt buộc, kiểu String
    • status - Trạng thái mới - Bắt buộc, kiểu Enum {"TO_REVIEW", "REVIEWED"}
    • resolution - Độ phân giải khi trạng thái là REVIEWED - Kiểu Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}
    • comment - Bình luận xem xét tùy chọn - Kiểu String

Ngôn ngữ

  • list_languages - Liệt kê tất cả ngôn ngữ lập trình được hỗ trợ trong phiên bản SonarQube này.
    • q - Mẫu tùy chọn để so khớp với khóa/tên ngôn ngữ - Kiểu String

Đo lường

  • get_component_measures - Lấy các phép đo SonarQube cho một thành phần (dự án, thư mục, tệp).
    • projectKey - Khóa dự án - Bắt buộc, kiểu String khi SONARQUBE_PROJECT_KEY không được cấu hình
    • branch - Tên nhánh tùy chọn cho phân tích theo nhánh. Sử dụng list_branches để khám phá các tên hợp lệ - Kiểu String
    • metricKeys - Khóa chỉ số tùy chọn để truy xuất (ví dụ: ncloc, complexity, violations, coverage) - Kiểu String[]
    • pullRequest - Khóa/ID yêu cầu kéo tùy chọn. Sử dụng list_pull_requests để khám phá các khóa hợp lệ - Kiểu String

Chỉ số

  • search_metrics - Tìm kiếm các chỉ số SonarQube.
    • pageIndex - Chỉ số trang tùy chọn bắt đầu từ 1 (mặc định: 1) - Kiểu Integer
    • pageSize - Kích thước trang tùy chọn. Phải lớn hơn 0 và nhỏ hơn hoặc bằng 500 (mặc định: 100) - Kiểu Integer

Danh mục đầu tư

- list_portfolios - Liệt kê các danh mục đầu tư doanh nghiệp có sẵn trong SonarQube với các tùy chọn lọc và phân trang.

Dành cho SonarQube Server:

  • q - Truy vấn tìm kiếm tùy chọn để lọc danh mục đầu tư theo tên hoặc khóa - String
  • favorite - Nếu true, chỉ trả về các danh mục đầu tư yêu thích - Boolean
  • pageIndex - Số trang tùy chọn bắt đầu từ 1 (mặc định: 1) - Integer
  • pageSize - Kích thước trang tùy chọn, tối đa 500 (mặc định: 100) - Integer

Dành cho SonarQube Cloud:

  • enterpriseId - Enterprise uuid. Chỉ có thể bỏ qua nếu tham số 'favorite' được cung cấp với giá trị true - String
  • q - Truy vấn tìm kiếm tùy chọn để lọc danh mục đầu tư theo tên - String
  • favorite - Bắt buộc là true nếu tham số 'enterpriseId' bị bỏ qua. Nếu true, chỉ trả về các danh mục đầu tư được người dùng đã đăng nhập yêu thích. Không thể là true khi 'draft' là true - Boolean
  • draft - Nếu true, chỉ trả về các bản nháp do người dùng đã đăng nhập tạo. Không thể là true khi 'favorite' là true - Boolean
  • pageIndex - Chỉ mục trang tùy chọn để lấy (mặc định: 1) - Integer
  • pageSize - Kích thước trang tùy chọn để lấy (mặc định: 50) - Integer

Dự án

  • search_my_sonarqube_projects - Tìm các dự án SonarQube. Phản hồi được phân trang.

    • pageIndex - Chỉ mục trang tùy chọn bắt đầu từ 1 (mặc định: 1) - Integer
    • pageSize - Kích thước trang tùy chọn. Phải lớn hơn 0 và nhỏ hơn hoặc bằng 500 (mặc định: 500) - Integer
    • q - Truy vấn tìm kiếm tùy chọn để lọc dự án theo tên (khớp một phần) hoặc khóa (khớp chính xác) - String
  • list_branches - Liệt kê các nhánh đã phân tích cho một dự án.

    • SonarQube Cloud: trả về các nhánh tồn tại lâu dài (LONG) và ngắn hạn (SHORT) với các trường typemergeBranch. Bộ lọc branchTypes tùy chọn: ALL (mặc định), LONG hoặc SHORT.
    • SonarQube Server: trả về tất cả các nhánh đã phân tích (tên, cổng chất lượng, ngày phân tích). Không có bộ lọc type, mergeBranch hoặc branchTypes.
    • Sử dụng tên nhánh được trả về làm tham số branch trên các công cụ khác. Đối với phân tích pull request, hãy sử dụng list_pull_requests thay thế.
    • projectKey - Khóa dự án (ví dụ: my_project) - Required String (Bị bỏ qua khi SONARQUBE_PROJECT_KEY được xác định)
    • branchTypes - (Chỉ dành cho SonarQube Cloud) Bộ lọc tùy chọn: ALL (mặc định), LONG hoặc SHORT - Enum {"ALL", "LONG", "SHORT"}
  • list_pull_requests - Liệt kê tất cả các pull request cho một dự án. Sử dụng công cụ này để khám phá các pull request cho phân tích được trang trí bằng PR (độ phủ, vấn đề, cổng chất lượng). Trả về khóa/ID của pull request có thể được sử dụng với các công cụ khác. Đối với phân tích dựa trên nhánh không có pull request, hãy sử dụng list_branches thay thế.

    • projectKey - Khóa dự án (ví dụ: my_project) - Required String (Bị bỏ qua khi SONARQUBE_PROJECT_KEY được xác định)

Cổng chất lượng

  • get_project_quality_gate_status - Lấy trạng thái Cổng chất lượng cho dự án SonarQube.

    • analysisId - ID phân tích tùy chọn - String
    • branch - Tên nhánh tùy chọn cho phân tích dựa trên nhánh. Sử dụng list_branches để khám phá các tên hợp lệ - String
    • projectId - ID dự án tùy chọn - String
    • projectKey - Khóa dự án tùy chọn - String
    • pullRequest - Khóa/ID pull request tùy chọn. Sử dụng list_pull_requests để khám phá các khóa hợp lệ - String
  • list_quality_gates - Liệt kê tất cả các cổng chất lượng trong SonarQube của tôi.

Quy tắc

  • show_rule - Hiển thị thông tin chi tiết về một quy tắc SonarQube.
    • key - Khóa quy tắc - Required String

Trùng lặp

  • search_duplicated_files - Tìm kiếm các tệp có mã trùng lặp trong một dự án SonarQube. Theo mặc định, tự động lấy tất cả các tệp trùng lặp trên tất cả các trang (tối đa 10.000 tệp). Chỉ trả về các tệp có trùng lặp.

    • projectKey - Khóa dự án - Required String (Bị bỏ qua khi SONARQUBE_PROJECT_KEY được xác định)
    • branch - Tên nhánh tùy chọn cho phân tích dựa trên nhánh. Sử dụng list_branches để khám phá các tên hợp lệ - String
    • pullRequest - Khóa/ID pull request tùy chọn. Sử dụng list_pull_requests để khám phá các khóa hợp lệ - String
    • pageSize - Số lượng kết quả tùy chọn trên mỗi trang để phân trang thủ công (tối đa: 500). Nếu không được chỉ định, tự động lấy tất cả các tệp trùng lặp - Integer
    • pageIndex - Số trang tùy chọn để phân trang thủ công (bắt đầu từ 1). Nếu không được chỉ định, tự động lấy tất cả các tệp trùng lặp - Integer
  • get_duplications - Lấy các trùng lặp cho một tệp. Yêu cầu quyền Duyệt trên dự án của tệp.

    • key - Khóa tệp - Required String
    • branch - Tên nhánh tùy chọn cho phân tích dựa trên nhánh. Sử dụng list_branches để khám phá các tên hợp lệ - String
    • pullRequest - Khóa/ID pull request tùy chọn. Sử dụng list_pull_requests để khám phá các khóa hợp lệ - String

Nguồn

  • get_raw_source - Lấy mã nguồn dưới dạng văn bản thô từ SonarQube. Yêu cầu quyền 'Xem mã nguồn' trên tệp.

    • key - Khóa tệp - Required String
    • branch - Tên nhánh tùy chọn cho phân tích dựa trên nhánh. Sử dụng list_branches để khám phá các tên hợp lệ - String
    • pullRequest - Khóa/ID pull request tùy chọn. Sử dụng list_pull_requests để khám phá các khóa hợp lệ - String
  • get_scm_info - Lấy thông tin SCM của các tệp nguồn SonarQube. Yêu cầu quyền Xem mã nguồn trên dự án của tệp.

    • key - Khóa tệp - Required String
    • commits_by_line - Nhóm các dòng theo commit SCM nếu giá trị là false, ngược lại hiển thị các commit cho từng dòng - String
    • from - Dòng đầu tiên để trả về. Bắt đầu từ 1 - Number
    • to - Dòng cuối cùng để trả về (bao gồm) - Number

Hệ thống

Lưu ý: Các công cụ hệ thống chỉ khả dụng khi kết nối với SonarQube Server.

  • get_system_health - Lấy trạng thái sức khỏe của phiên bản SonarQube Server. Trả về GREEN (hoạt động đầy đủ), YELLOW (có thể sử dụng nhưng cần chú ý) hoặc RED (không hoạt động).

  • get_system_info - Lấy thông tin chi tiết về cấu hình hệ thống SonarQube Server bao gồm trạng thái JVM, cơ sở dữ liệu, chỉ mục tìm kiếm và cài đặt. Yêu cầu quyền 'Quản trị'.

  • get_system_logs - Lấy nhật ký hệ thống SonarQube Server ở định dạng văn bản thuần. Yêu cầu quyền quản trị hệ thống.

    • name - Tên tùy chọn của nhật ký cần lấy. Các giá trị có thể: access, app, ce, deprecation, es, web. Mặc định: app - String
  • ping_system - Ping hệ thống SonarQube Server để kiểm tra xem nó còn hoạt động không. Trả về 'pong' dưới dạng văn bản thuần.

  • get_system_status - Lấy thông tin trạng thái về SonarQube Server. Trả về trạng thái (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), phiên bản và id.

Webhooks

  • create_webhook - Tạo một webhook mới cho tổ chức hoặc dự án SonarQube. Yêu cầu quyền 'Quản trị' trên dự án được chỉ định hoặc quyền 'Quản trị' toàn cầu.

    • name - Tên webhook - Required String
    • url - URL webhook - Required String
    • projectKey - Khóa dự án tùy chọn cho webhook cụ thể của dự án - String
    • secret - Bí mật webhook tùy chọn để bảo mật tải trọng webhook - String
  • list_webhooks - Liệt kê tất cả các webhook cho tổ chức hoặc dự án SonarQube. Yêu cầu quyền 'Quản trị' trên dự án được chỉ định hoặc quyền 'Quản trị' toàn cầu.

    • projectKey - Khóa dự án tùy chọn để liệt kê các webhook cụ thể của dự án - String

Tăng cường ngữ cảnh

Công cụ kiến trúc
  • search_by_signature_patterns - Tìm các phần tử mã (lớp, phương thức, giao diện, ...) theo chữ ký khai báo của chúng bằng các mẫu regex.

    • include_code_regex_list - Danh sách các mẫu regex để khớp với chữ ký - Required String[]
    • exclude_code_regex_list - Danh sách các mẫu regex để loại trừ khỏi kết quả - String[]
    • include_glob - Mẫu glob lọc tệp (ví dụ: *.java) - String
    • exclude_glob - Mẫu glob loại trừ tệp - String
    • fields - Danh sách các trường được phân tách bằng dấu phẩy để bao gồm trong phản hồi - String
    • limit - Số lượng kết quả tối đa để trả về (mặc định: 10) - Integer
    • regex_lists_operator - Cách kết hợp nhiều mẫu: OR (mặc định) hoặc AND - String
  • search_by_body_patterns - Tìm các phần tử mã theo phần thân triển khai của chúng bằng các mẫu regex. Hữu ích để xác định vị trí nơi các API hoặc mẫu thực sự được sử dụng.

    • include_code_regex_list - Danh sách các mẫu regex để khớp trong phần thân mã - Required String[]
    • exclude_code_regex_list - Danh sách các mẫu regex để loại trừ khỏi kết quả - String[]
    • include_glob - Mẫu glob lọc tệp - String
    • exclude_glob - Mẫu glob loại trừ tệp - String
    • fields - Danh sách các trường được phân tách bằng dấu phẩy để bao gồm trong phản hồi - String
    • limit - Số lượng kết quả tối đa để trả về (mặc định: 10) - Integer
    • regex_lists_operator - Cách kết hợp nhiều mẫu: OR (mặc định) hoặc AND - String
  • get_upstream_call_flow - Truy vết những hàm nào gọi một hàm nhất định. Hữu ích để tìm tất cả các trình gọi và điểm vào, đồng thời hiểu điều gì bị hỏng nếu chữ ký thay đổi.

    • fqn - Tên đủ định danh của hàm - Required String
    • depth - Độ sâu chuỗi gọi (0=chỉ hàm, 1=trình gọi trực tiếp, v.v.) - Integer
    • fields - Danh sách các trường được phân tách bằng dấu phẩy để bao gồm trong phản hồi - String
  • get_downstream_call_flow - Truy vết những hàm mà một hàm nhất định gọi. Hữu ích cho phân tích tác động và hiểu luồng thực thi.

    • fqn - Tên đủ định danh của hàm - Required String
    • depth - Độ sâu chuỗi gọi (0=chỉ hàm, 1=hàm được gọi trực tiếp, v.v.) - Integer
    • fields - Danh sách các trường được phân tách bằng dấu phẩy để bao gồm trong phản hồi - String
  • get_source_code - Lấy mã nguồn hoàn chỉnh (chữ ký và phần thân) cho một phần tử mã theo tên đủ định danh của nó.

    • fqn - Tên đủ định danh của phần tử - Required String
    • fields - Danh sách các trường được phân tách bằng dấu phẩy để bao gồm trong phản hồi - String
  • get_type_hierarchy - Lấy toàn bộ hệ thống phân cấp kế thừa cho một cấu trúc giống lớp (lớp, giao diện, enum, bản ghi, ngoại lệ, struct). Cần thiết để hiểu cây kế thừa và tái cấu trúc.

    • fqn - Tên đủ định danh của cấu trúc giống lớp - Required String
    • fields - Danh sách các trường được phân tách bằng dấu phẩy để bao gồm trong phản hồi - String
  • get_references - Lấy các tham chiếu mã đến và đi trực tiếp cho một lớp hoặc mô-đun. Chỉ trả về các tham chiếu trực tiếp (không bắc cầu).

    • fqn - Tên đủ định danh của lớp hoặc mô-đun - Required String
    • fields - Danh sách các trường được phân tách bằng dấu phẩy để bao gồm trong phản hồi - String
  • get_current_architecture - Lấy biểu đồ kiến trúc phân cấp được lọc theo tiền tố đường dẫn và độ sâu. Hữu ích để khám phá cấu trúc mô-đun và các phụ thuộc cấp cao.

    • depth - Độ sâu phân cấp (0=chỉ gốc, 1=gốc + con, v.v.) - Required Integer
    • path_prefix - Tiền tố đường dẫn tùy chọn để lọc các nút (ví dụ: com.example.service) - String
    • ecosystem - Hệ sinh thái tùy chọn để lọc theo (java, cs, py, js, ts) - String
  • get_intended_architecture - Lấy các ràng buộc kiến trúc do người dùng xác định chỉ định mô-đun nào được phép phụ thuộc vào mô-đun khác.

Công cụ hướng dẫn
  • get_guidelines - Lấy hướng dẫn mã hóa dựa trên các vấn đề của dự án SonarQube, danh mục catalog, hoặc kết hợp cả hai.
    • mode - Chế độ truy xuất hướng dẫn: project_based, category_based, hoặc combined - Chuỗi bắt buộc
    • categories - Danh sách tên danh mục (bắt buộc cho chế độ category_basedcombined) - String[]
    • languages - Danh sách ngôn ngữ mục tiêu theo định dạng khóa kho lưu trữ SonarQube (bắt buộc khi cung cấp categories) - String[]
    • file_paths - Danh sách tùy chọn các đường dẫn tệp để lọc hướng dẫn - String[]
Công cụ phụ thuộc bên thứ ba
  • check_dependency - Kiểm tra một phụ thuộc bên thứ ba về các lỗ hổng bảo mật, phần mềm độc hại chuỗi cung ứng và tuân thủ giấy phép trước khi thêm hoặc cập nhật.
    • purl - Package URL (purl) kèm phiên bản, theo purl-spec. Định dạng: pkg:<type>/<namespace>/<name>@<version> (ví dụ: pkg:npm/lodash@4.17.21, pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1, pkg:pypi/django@3.2.0) - Chuỗi bắt buộc
Biến môi trường Context Augmentation
BiếnMô tảBắt buộcMặc định
SONARQUBE_URLURL SonarQube Cloudhttps://sonarcloud.io
SONARQUBE_TOKENMã thông báo xác thựcNone
SONARQUBE_ORGKhóa tổ chức trên SonarQube CloudNone
SONARQUBE_PROJECT_KEYKhóa dự án trên SonarQube CloudNone
SONAR_SQ_BRANCHGhi đè nhánh SonarQube tường minh *KhôngNone
SONARQUBE_DEBUG_ENABLEDKích hoạt ghi log gỡ lỗi (để khắc phục sự cố)KhôngFalse
SONAR_LOG_LEVELMức độ chi tiết ghi log (TRACE, DEBUG, INFO, WARNING, ERROR)KhôngINFO
  • Cần cung cấp khi không sử dụng git, hoặc khi tên nhánh git không khớp với tên nhánh trong SonarQube.
Cấu hình riêng cho dự án (Khuyến nghị)

Đầu tiên, xuất biến môi trường SONARQUBE_TOKEN với Personal Access Token (PAT) hợp lệ cho dự án của bạn.

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

Sau đó, gắn kết không gian làm việc của dự án để cấp cho máy chủ Context Augmentation quyền truy cập trực tiếp vào các tệp nguồn của bạn:

{
  "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"
      }
    }
  }
}

Quan trọng: Trong cấu hình phạm vi dự án, không đặt SONARQUBE_TOKEN trong khối env. Hãy xuất nó dưới dạng biến môi trường (export SONARQUBE_TOKEN=...). Docker sẽ chuyển tiếp nó vào container qua -e SONARQUBE_TOKEN.

Mức độ sẵn sàng Agentic

Lưu ý: Các công cụ Agentic Readiness chỉ khả dụng trên SonarQube Cloud và yêu cầu tính năng này được bật cho tổ chức của bạn.

  • start_agentic_readiness_assessment - Bắt đầu đánh giá mức độ sẵn sàng agentic cho một dự án. Trả về ngay lập tức với trạng thái PENDING và một assessmentId. Sử dụng get_agentic_readiness_assessment để thăm dò kết quả.

    • projectKey - Khóa dự án - Chuỗi bắt buộc (Bị bỏ qua khi SONARQUBE_PROJECT_KEY được xác định)
    • branch - Nhánh cần đánh giá. Bỏ trống để sử dụng nhánh mặc định của dự án - Chuỗi
  • get_agentic_readiness_assessment - Truy xuất kết quả của một đánh giá. Gọi lại với cùng assessmentId cho đến khi trạng thái là COMPLETED, FAILED, hoặc INTERRUPTED. Khi hoàn tất, trả về mức tổng thể và phân tích chi tiết theo từng trụ cột kèm các hành động và bằng chứng được khuyến nghị.

    • assessmentId - ID đánh giá được trả về bởi start_agentic_readiness_assessment - Chuỗi bắt buộc
  • list_agentic_readiness_assessments - Liệt kê tất cả các đánh giá cho một dự án, mới nhất trước. Sử dụng get_agentic_readiness_assessment để xem kết quả đầy đủ ở cấp độ trụ cột.

    • projectKey - Khóa dự án để liệt kê các đánh giá - Chuỗi bắt buộc (Bị bỏ qua khi SONARQUBE_PROJECT_KEY được xác định)
    • branch - Lọc các đánh giá theo tên nhánh. Bỏ trống để liệt kê đánh giá cho tất cả các nhánh - Chuỗi
    • pageIndex - Chỉ số trang bắt đầu từ 1 (mặc định: 1) - Số
    • pageSize - Số mục trên mỗi trang, tối đa 100 (mặc định: 50) - Số

Ví dụ về lời nhắc

Sau khi bạn đã thiết lập SonarQube MCP Server, đây là một số ví dụ về lời nhắc cho các tình huống thực tế phổ biến:

Khắc phục Quality Gate không đạt
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?
Kiểm tra trước khi phát hành và trước khi hợp nhất
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?
Cải thiện chất lượng mã
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?
Hiểu và khắc phục sự cố
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?
Quản lý bảo mật và phụ thuộc
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.
Hỗ trợ đánh giá mã
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.
Giám sát sức khỏe dự án
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?
Cộng tác nhóm
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?

Xây dựng

Ưu tiên sử dụng hình ảnh container sonarsource/sonarqube-mcp.

Để chạy máy chủ dưới dạng JAR độc lập mà không cần Docker, hãy tải xuống bản phát hành được xây dựng sẵn từ kho lưu trữ nhị phân SonarSource. Mọi phiên bản phát hành đều được xuất bản ở đó dưới dạng sonarqube-mcp-server-<version>.jar (ví dụ: sonarqube-mcp-server-1.19.0.2785.jar).

Chạy từ JAR

Tải xuống JAR cho phiên bản bạn muốn từ kho lưu trữ nhị phân, sau đó cấu hình máy khách MCP của bạn để chạy nó với Java 21 trở lên:

  • Để kết nối với 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>"
    }
  }
}
  • Để kết nối với 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>"
    }
  }
}
Xây dựng từ mã nguồn

SonarQube MCP Server yêu cầu Java Development Kit (JDK) phiên bản 21 trở lên để xây dựng.

Chạy lệnh Gradle sau để dọn dẹp dự án và xây dựng ứng dụng:

./gradlew clean build -x test

Tệp JAR sẽ được tạo trong build/libs/.

Sau khi thêm hoặc cập nhật các phụ thuộc, hãy tạo lại các tệp khóa:

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

Sử dụng cấu hình Chạy từ JAR ở trên, trỏ <path_to_sonarqube_mcp_server_jar> đến JAR trong build/libs/.

Khắc phục sự cố

Nhật ký ứng dụng được ghi vào tệp STORAGE_PATH/logs/mcp.log theo mặc định. Để tắt hoàn toàn ghi nhật ký vào tệp, hãy đặt SONARQUBE_LOG_TO_FILE_DISABLED=true.

Các sự cố phổ biến

"Tính năng không hoạt động" hoặc "Thiếu công cụ/chức năng"

Bạn có thể đang chạy một hình ảnh Docker đã lỗi thời. Docker lưu trữ hình ảnh trong bộ nhớ cache cục bộ, vì vậy bạn sẽ không tự động nhận được các bản cập nhật.

Giải pháp: Cập nhật lên phiên bản mới nhất:

docker pull sonarsource/sonarqube-mcp

Sau khi kéo hình ảnh mới nhất, hãy khởi động lại máy khách MCP của bạn để sử dụng phiên bản đã cập nhật.

Tùy chọn, thêm cờ --pull=always vào lệnh docker run của bạn để luôn kiểm tra và kéo phiên bản mới nhất:

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

"Tôi muốn ghim vào một phiên bản cụ thể"

Duyệt các thẻ có sẵn tại sonarsource/sonarqube-mcp và tham chiếu phiên bản bạn muốn:

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

Trong cấu hình máy khách MCP của bạn, sử dụng sonarsource/sonarqube-mcp:<version> thay vì sonarsource/sonarqube-mcp và xóa --pull=always để Docker không âm thầm nâng cấp hình ảnh.

Dữ liệu và đo từ xa

Máy chủ này thu thập dữ liệu sử dụng ẩn danh và gửi đến SonarSource để giúp cải thiện sản phẩm. Không thu thập mã nguồn hoặc địa chỉ IP, và SonarSource không chia sẻ dữ liệu với bất kỳ ai khác. Việc thu thập dữ liệu đo từ xa có thể bị vô hiệu hóa bằng thuộc tính hệ thống hoặc biến môi trường sau: TELEMETRY_DISABLED=true. Nhấp vào đây để xem mẫu dữ liệu được thu thập.

Giấy phép

Bản quyền 2025 SonarSource.

Được cấp phép theo SONAR Source-Available License v1.0. Việc sử dụng SonarQube MCP Server tuân thủ tài liệu này là Mục đích Phi cạnh tranh và do đó được phép theo SSAL.

Việc sử dụng SonarQube qua MCP của bạn được điều chỉnh bởi Điều khoản dịch vụ SonarQube Cloud hoặc Điều khoản và điều kiện SonarQube Server, bao gồm việc sử dụng Dữ liệu kết quả chỉ cho mục đích phát triển phần mềm nội bộ của bạn.