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ý chạy phân tích mã cục bộ trên một đoạn mã hoặc tệp tin qua analyze_code_snippet, có thể gắn workspace tùy chọn để tránh làm quá tải ngữ cảnh.
  • Tìm kiếm và quản lý vấn đề — Nhờ trợ lý tìm, xem xét và cập nhật các vấn đề SonarQube, bao gồm thay đổi trạng thái của chúng khi không ở chế độ chỉ đọc.
  • Kiểm tra cổng chất lượng và số liệu — Yêu cầu trạng thái cổng chất lượng, số liệu dự án, mức độ bao phủ và rủi ro phụ thuộc trên các dự án SonarQube của bạn.
  • Xem xét các điểm nóng bảo mật — Để trợ lý tìm kiếm và hướng dẫn qua các điểm nóng bảo mật được gắn cờ trong mã nguồn của bạn.
  • Duyệt dự án và quy tắc — Sử dụng trợ lý để khám phá các dự án, liệt kê ngôn ngữ được hỗ trợ và tra cứu quy tắc mã hóa trực tiếp từ SonarQube.

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 để đảm bảo chất lượng mã và bảo mật. Nó cũng hỗ trợ phân tích các đ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: Mã thông báo SonarQube của bạn là thông tin xác thực nhạy cảm. Hãy tuân theo 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 mã thông báo trong các đối 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 mã thông báo 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ờ cam kết mã thông báo vào hệ thống kiểm soát 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 ưa thích của bạn.

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 hình ảnh 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, bất kỳ thời gian chạy container tương thích OCI nào cũng hoạt động (ví dụ: Podman, nerdctl). Chỉ cần thay thế 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 bên 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 Máy chủ MCP
  3. Tìm kiếm SonarQube và chọn Cài đặt
  4. Cung cấp mã thông báo 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 bên tác nhân, nhấp vào ba dấu chấm (...) -> Cửa hàng MCP -> Quản lý máy chủ MCP -> Xem cấu hình thô, 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 và "-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 và "-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 trở đi.

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 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 bắt đầu Gemini:

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

  • Đối với SonarQube Cloud:

    • SONARQUBE_TOKEN - Mã thông báo 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 - Mã thông báo 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 dưới <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 để điều hướng 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 Đối số và SONARQUBE_URL=https://sonarqube.us vào Biến môi trường.

  • Để 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 được đặt tiền tố với COPILOT_MCP_ mới có sẵn 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 Cài đặt -> Copilot -> Tác nhân mã hóa, và thêm cấu hình sau trong 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 và "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 nó đã 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 và "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 Cài đặt > Cascade > Máy chủ MCP và chọn Mở Chợ MCP
  2. Tìm kiếm sonarqube trên Chợ MCP Cascade
  3. Chọn Máy chủ MCP SonarQube và chọn Cài đặt
  4. Thêm mã thông báo 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 Tiện ích mở rộng trong Zed và tìm kiếm Máy chủ MCP SonarQube. 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 hình ảnh 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 cho IDE

Máy chủ MCP SonarQube có thể tích hợp với SonarQube cho 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 cho IDE, biến môi trường SONARQUBE_IDE_PORT nên được đặt với số cổng chính xác. SonarQube cho VS Code bao gồm nút Cài đặt nhanh, 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 một container trên Linux, container không thể truy cập máy chủ nhúng SonarQube cho IDE chạy trên localhost. Để cho phép container kết nối với máy chủ SonarQube cho IDE, 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à duy trì), nó được cung cấp tự động khi sử dụng hình ảnh 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 cho IDE.
SONARQUBE_DEBUG_ENABLEDKhi được đặt thành true, bật ghi nhật ký gỡ lỗi. Nhật ký gỡ lỗi được ghi vào cả tệp nhật ký 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 nhật ký vào đĩa. Sẽ không có tệp nhật ký nào được tạo dưới STORAGE_PATH/logs/. Hữu ích trong các môi trường container hóa hoặc tạm thời nơi ghi nhật ký tệp không mong muốn. Mặc định: false.

Gắn kết không gian làm việc (Giảm độ phình ngữ cảnh)

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 đối 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 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 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à chia sẻ một quyền cấp tổ chức kết hợp duy nhất — một tổ chức phải được cấp quyền cho cả hai để sử dụng một trong hai. Trên SonarQube Server, stdio liệt kê ngữ cảnh Vortex và run_advanced_code_analysis khi cả hai hub CAG và A3S được cấp quyền. Ưu tiên khóa bộ công cụ hợp nhất vortex. Các khóa cũ cag và analysis vẫn hoạt động; cảnh báo khi khởi động và ghi chú không dùng nữa trong hướng dẫn máy chủ sẽ được phát ra khi 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 thêm phạm vi này theo 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, kích hoạ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 tích lũy 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ả
Phân tíchanalysisCác công cụ phân tích mã (phân tích cục bộ qua analyze_code_snippet, không dùng nữa thay bằng analyze_file_list/phân tích Vortex)
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
Vấn đềissuesTìm kiếm và quản lý các vấn đề SonarQube
Điểm nóng bảo mậtsecurity-hotspotsTìm kiếm và xem xét các Điểm nóng bảo mật
Dự ánprojectsDuyệt và tìm kiếm các dự án SonarQube
Cổng chất lượngquality-gatesTruy cập các cổng chất lượng và trạng thái của chúng
Quy tắcrulesDuyệt và tìm kiếm các quy tắc SonarQube
NguồnsourcesTruy cập mã nguồn và thông tin SCM
Trùng lặpduplicationsTìm các đoạn mã trùng lặp trong các dự án
Đo lườngmeasuresTruy xuất số liệu và phép đo (bao gồm cả công cụ đo lường và số liệu)
Ngôn ngữlanguagesLiệt kê các ngôn ngữ lập trình được hỗ trợ
Danh mục đầu tưportfoliosQuản lý danh mục đầu tư và doanh nghiệp (Cloud và Server)
Hệ thốngsystemCác công cụ quản trị hệ thống (chỉ Server)
WebhookswebhooksQuản lý webhooks
Rủi ro phụ thuộcdependency-risksPhân tích rủi ro phụ thuộc và các vấn đề bảo mật (SCA)
Bao phủcoverageCác công cụ phân tích và cải thiện độ bao phủ kiểm thử
Ngữ cảnh VortexcagCác công cụ ngữ cảnh Vortex — chỉ stdio. Không dùng nữa 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; Cloud cần quyền tổ chức kết hợp; Server cần cả hai hub được cấp quyền)
Mức sẵn sàng Agenticagentic-readinessCác công cụ Đánh giá mức sẵn sàng Agentic (SonarQube Cloud, yêu cầu quyền tổ chức)

Ví dụ

Kích hoạt các bộ công cụ phân tích, vấn đề và cổng chất lượng (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ạnCó
SONARQUBE_ORGkhóa tổ chức SonarQube Cloud của bạnCó
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_TOKEN và SONARQUBE_ORG
  • SonarQube Cloud US: Đặt SONARQUBE_TOKEN, SONARQUBE_ORG và SONARQUBE_URL=https://sonarqube.us

SonarQube Server

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

Yêu cầu về phiên bản: Cần có SonarQube Server 2025.1 (SQS) hoặc 25.1 (SonarQube Community Build) trở lên. Khi khởi động, máy chủ MCP đọc phiên bản của instance đang kết nối và thoát với lỗi nếu phiên bản quá cũ (ví dụ: các bản phát hành Server 9.x/10.x cũ và Community Build 24.x không được hỗ trợ). SonarQube Cloud không phải chịu kiểm tra này.

⚠️ 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 project token hoặc global token.

💡 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 đến SonarQube Cloud hay Server. Nếu SONARQUBE_ORG được thiết lập, SonarQube Cloud được sử dụng; nếu không, SonarQube Server được sử dụng.

Chế độ vận chuyển (Transport Modes)

Đặc tả MCP định nghĩa hai cơ chế vận chuyển: Stdio và Streamable HTTP. Máy chủ MCP SonarQube 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)Các 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 đến /mcp qua HTTP(S) (ví dụ: Windsurf với URL máy chủ tự lưu trữ)

Lưu ý: Streamable HTTP là mạng vận chuyển MCP hiện tại. Vận chuyển HTTP chỉ-SSE cũ hơn từ các phiên bản MCP trước đã bị không dùng nữa và không được hỗ trợ.

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

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

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)

Vận chuyển Streamable HTTP không mã hóa. Sử dụng HTTPS thay thế cho các triển khai nhiều người dùng.

⚠️ Không khuyến nghị: Sử dụng Stdio cho phát triển cục bộ hoặc HTTPS (Streamable HTTP) cho các 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 vận chuyển Streamable HTTPKhông đặt (stdio)
SONARQUBE_HTTP_PORTSố cổng (1024-65535)8080
SONARQUBE_HTTP_HOSTMáy chủ để ràng buộc (mặc định là localhost vì lý do bảo mật)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSCác nguồn gốc trình duyệt được phân tách bằng dấu phẩy được phép cho CORS (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. Hình ảnh Docker 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 trạng thái — 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 giải quyết như sau:

  • Nếu SONARQUBE_ORG được đặt khi khởi động máy chủ, 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 — làm như vậy sẽ dẫn đến lỗi.
  • Nếu SONARQUBE_ORG không được đặt khi khởi động máy chủ, mỗi máy khách phải cung cấp tiêu đề SONARQUBE_ORG trên 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 lọc bổ sung trên 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. 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: 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) (Khuyến nghị cho Triển khai Sản xuất Nhiều người dùng)

Vận chuyển Streamable HTTP an toàn với mã hóa TLS. Yêu cầu chứng chỉ SSL.

✅ Khuyến nghị cho Sản xuất: Sử dụng HTTPS khi triển khai máy chủ MCP 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 vận chuyển Streamable HTTP qua TLSKhông đặt (stdio)
SONARQUBE_HTTP_PORTSố cổng (thường là 8443 cho HTTPS)8080
SONARQUBE_HTTP_HOSTMáy chủ để ràng buộc (mặc định là localhost vì lý do bảo mật)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSCác nguồn gốc trình duyệt được phân tách bằng dấu phẩy được phép cho CORS (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. Hình ảnh Docker 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, đặ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, và đặt SONARQUBE_MCP_IN_CONTAINER=true để báo cho máy chủ biết nó đang ở trong container. Hình ảnh Docker 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 trình duyệt vẫn cho phép 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 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 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_TOOLSETS và SONARQUBE_READ_ONLY là các tiêu đề tùy chọn theo từng yêu cầu thu hẹp bộ 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 bộ 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 vận chuyển Stdio thay thế (mặc định). HTTPS Streamable HTTP dành cho các 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ụ

Khi chạy ở chế độ Streamable HTTP (http hoặc https), máy chủ hiển thị một vài điểm cuối dịch vụ không 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 sử dụng dịch vụ-đến-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 liveness. Trả về 200 OK với phần thân trống khi máy chủ đã sẵn sàng nhận yêu cầu.(phần thân trống)
/infoGETTrả về phiên bản máy chủ MCP 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 vận chuyển Stdio.

Chứng chỉ Tùy chỉnh

Nếu SonarQube Server của bạn sử dụng chứng chỉ tự ký hoặc chứng chỉ từ Cơ quan cấp chứng chỉ (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 Gắn kết Ổ đĩa (Volume Mount)

Gắn kết 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 kết 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? Gắn kết ổ đĩa ở trên cài đặt chứng chỉ vào kho tin cậy hệ điều hành của container, mà máy chủ cũng đọc. Nếu bạn không thể sử dụng kho tin cậy hệ điều hành — đặc biệt trên Windows, nơi nó không được tham khảo — hãy trỏ JVM đến kho tin cậy 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 vào trên các chứng chỉ tin cậy mặc định.

Proxy

Máy chủ MCP SonarQube 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 cài đặt proxy bằng các thuộc tính hệ thống Java. Chúng có thể được đặt dưới dạng biến môi trường hoặc truyền dưới dạng đối số JVM.

Thuộc tính Proxy Phổ biến:

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 SOCKS5—localhost
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 máy chủ SonarQube của bạn yêu cầu máy khách phải xuất trình chứng chỉ trong quá trình bắt tay TLS (mutual TLS), bạn có thể cung cấp kho khóa 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 tệp .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ó thể đọc được bởi tiến trình container. Kiểm tra và sửa quyền nếu cần:

ls -la /path/to/client.p12       # tìm -rw-r--r-- (644) hoặc rộng hơn
chmod 644 /path/to/client.p12    # cấp quyền đọc cho người dùng container

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ừ một JAR, hãy truyền các thuộc tính kho khóa làm đố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ỉ và khóa PEM (các tệp .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 bằng 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 bậ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:

    • Với workspace được gắn (khuyến nghị): truyền filePath (tương đối theo dự án) — máy chủ đọc tệp trực tiếp, giữ nội dung tệp ngoài cửa sổ ngữ cảnh của agent
    • Không gắn workspace: truyền fileContent đầy đủ để 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 mã được tự động phát hiện)

    Tham số:

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

    Ngôn ngữ được 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ẻ trong cả bộ công cụ analysis và ide)

  • 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 đến 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 các tệp.

    • file_absolute_paths - Danh sách đường dẫn tệp tuyệt đối để phân tích - Mảng chuỗi bắt buộc
  • 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 sẽ bị vô hiệu hóa.

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

Trên SonarQube Server, stdio liệt kê các công cụ ngữ cảnh Vortex và run_advanced_code_analysis khi cả hai hub CAG và A3S đều được cấp phép.

Khi phân tích Vortex được bật:

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 một tệp duy nhất. Tổ chức được suy ra từ cấu hình MCP (SonarQube Server sử dụng trình giữ chỗ UUID nil).
    • projectKey - Khóa của dự án - Chuỗi bắt buộc (Bị bỏ qua khi SONARQUBE_PROJECT_KEY được xác định)
    • branch - Tên nhánh được sử dụng để truy xuất ngữ cảnh phân tích mới nhất - Chuỗi bắt buộc
    • filePath - Đường dẫn tương đối theo dự án của tệp cần phân tích (ví dụ: src/main/java/MyClass.java). - Chuỗi bắt buộc
    • fileScope - Xác định phạm vi mà tệp bắt nguồn: 'MAIN' hoặc 'TEST' (mặc định: MAIN) - Chuỗi

Độ phủ

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

    • projectKey - Khóa dự án để tìm kiếm - Chuỗi bắt buộc (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ệ - Chuỗi
    • 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ệ - Chuỗi
    • maxCoverage - Ngưỡng độ phủ tối đa (0-100). Chỉ trả về các tệp có độ phủ <= giá trị này - Số
    • pageIndex - Chỉ số trang (1-based, mặc định: 1) - Số
    • pageSize - Kích thước trang (mặc định: 100, tối đa: 500) - Số
  • get_file_coverage_details - Lấy thông tin độ phủ theo từng dòng cho một tệp cụ thể, bao gồm chính xác các dòng không được phủ và các dòng 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) - Chuỗi bắt buộc
    • 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ệ - Chuỗi
    • 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ệ - Chuỗi
    • from - Dòng đầu tiên để phân tích (1-based, mặc định: 1) - Số
    • 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 sẽ được trả về - Số

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ết hợp với 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 - Chuỗi bắt buộc (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ệ - Chuỗi
    • 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ệ - Chuỗi
    • pageIndex - Chỉ số trang tùy chọn (1-based, mặc định: 1) - Số nguyên
    • 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) - Số nguyên

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á 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ả - Chuỗi

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 đề - Chuỗi bắt buộc
    • status - Trạng thái mới của vấn đề - Enum bắt buộc {"accept", "falsepositive", "reopen"}
    • comment - Bình luận tùy chọn giải thích thay đổi trạng thái - Chuỗi
  • 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 - Mảng chuỗi
    • 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ệ - Chuỗi
    • 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ệ - Chuỗi
    • 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 - Mảng chuỗi
    • 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 - Mảng chuỗi
    • 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 - Mảng chuỗi
    • tags - Danh sách thẻ vấn đề tùy chọn để lọc. Các thẻ ở dạng chữ thường - Mảng chuỗi
    • inNewCodePeriod - Chỉ trả về các vấn đề trong giai đoạn mã mới. Yêu cầu chính xác một mục trong projectKeys và files - Boolean
    • issueKey - Khóa vấn đề tùy chọn để tìm nạp một vấn đề cụ thể - Chuỗi
    • pageIndex - Chỉ số trang tùy chọn (1-based, mặc định: 1) - Số nguyên
    • 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) - Số nguyên

Đ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 - Chuỗi bắt buộc (Bị bỏ qua khi SONARQUBE_PROJECT_KEY được xác định)
    • hotspotKeys - Danh sách phân tách bằng dấu phẩy các khóa Điểm nóng bảo mật cụ thể để truy xuất - Mảng chuỗi
    • 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ệ - Chuỗi
    • 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ệ - Chuỗi
    • files - Danh sách đường dẫn tệp tùy chọn để lọc - Mảng chuỗi
    • status - Bộ lọc trạng thái tùy chọn: TO_REVIEW, REVIEWED - Chuỗi
    • resolution - Bộ lọc giải pháp tùy chọn: FIXED, SAFE, ACKNOWLEDGED - Chuỗi
    • sinceLeakPeriod - Lọc các điểm nóng được tạo kể từ giai đoạn rò rỉ (mã mới) - Boolean
    • onlyMine - Chỉ hiển thị các điểm nóng được gán cho tôi - Boolean
    • pageIndex - Chỉ số trang tùy chọn (1-based, mặc định: 1) - Số nguyên
    • 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) - Số nguyên
  • 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 - Chuỗi bắt buộc
  • change_security_hotspot_status - Xem xét một Security Hotspot 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 một resolution (FIXED, SAFE, hoặc ACKNOWLEDGED).

    • hotspotKey - Khóa Security Hotspot - Bắt buộc, Chuỗi
    • status - Trạng thái mới - Bắt buộc, Enum {"TO_REVIEW", "REVIEWED"}
    • resolution - Resolution khi trạng thái là REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}
    • comment - Nhận xét xem xét tùy chọn - Chuỗi

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 để khớp với khóa/tên ngôn ngữ - Chuỗi

Đo lường

  • get_component_measures - Lấy các đo lường SonarQube cho một thành phần (dự án, thư mục, tệp).
    • projectKey - Khóa dự án - Bắt buộc, Chuỗi 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 dựa trên nhánh. Sử dụng list_branches để khám phá các tên hợp lệ - Chuỗi
    • metricKeys - Các khóa chỉ số tùy chọn để truy xuất (ví dụ: ncloc, complexity, violations, coverage) - Mảng chuỗi
    • 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ệ - Chuỗi

Chỉ số

  • search_metrics - Tìm kiếm các chỉ số SonarQube.
    • pageIndex - Chỉ mục trang tùy chọn bắt đầu từ 1 (mặc định: 1) - Số nguyên
    • 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) - Số nguyên

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.

    Đối với 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 - Chuỗi
    • favorite - Nếu đúng, 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) - Số nguyên
    • pageSize - Kích thước trang tùy chọn, tối đa 500 (mặc định: 100) - Số nguyên

    Đối với SonarQube Cloud:

    • enterpriseId - Enterprise uuid. Có thể bỏ qua chỉ khi tham số 'favorite' được cung cấp với giá trị true - Chuỗi
    • q - Truy vấn tìm kiếm tùy chọn để lọc danh mục đầu tư theo tên - Chuỗi
    • favorite - Bắt buộc phải 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 để tìm nạp (mặc định: 1) - Số nguyên
    • pageSize - Kích thước trang tùy chọn để tìm nạp (mặc định: 50) - Số nguyên

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) - Số nguyên
    • 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) - Số nguyên
    • 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) - Chuỗi
  • 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 dài hạn (LONG) và ngắn hạn (SHORT) với các trường type và mergeBranch. 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) - Bắt buộc, Chuỗi (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í PR (coverage, issues, quality gate). Trả về khóa/ID 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) - Bắt buộc, Chuỗi (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 - Chuỗi
    • 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ệ - Chuỗi
    • projectId - ID dự án tùy chọn - Chuỗi
    • projectKey - Khóa dự án tùy chọn - Chuỗi
    • 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ệ - Chuỗi
  • 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 - Bắt buộc, Chuỗi

Trùng lặp

  • search_duplicated_files - Tìm kiếm các tệp có trùng lặp mã trong một dự án SonarQube. Theo mặc định, tự động tìm nạp 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 - Bắt buộc, Chuỗi (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ệ - Chuỗi
    • 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ệ - Chuỗi
    • 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 tìm nạp tất cả các tệp trùng lặp - Số nguyên
    • 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 tìm nạp tất cả các tệp trùng lặp - Số nguyên
  • get_duplications - Lấy trùng lặp cho một tệp. Yêu cầu quyền Browse trên dự án của tệp.

    • key - Khóa tệp - Bắt buộc, Chuỗi
    • 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ệ - Chuỗi
    • 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ệ - Chuỗi

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 'See Source Code' trên tệp.

    • key - Khóa tệp - Bắt buộc, Chuỗi
    • 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ệ - Chuỗi
    • 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ệ - Chuỗi
  • get_scm_info - Lấy thông tin SCM của các tệp nguồn SonarQube. Yêu cầu quyền See Source Code trên dự án của tệp.

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

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 (khả 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 'Administer'.

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

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

  • 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 'Administer' trên dự án được chỉ định, hoặc quyền 'Administer' toàn cầu.

    • name - Tên webhook - Bắt buộc, Chuỗi
    • url - URL webhook - Bắt buộc, Chuỗi
    • projectKey - Khóa dự án tùy chọn cho webhook cụ thể của dự án - Chuỗi
    • secret - Bí mật webhook tùy chọn để bảo mật tải trọng webhook - Chuỗi
  • 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 'Administer' trên dự án được chỉ định, hoặc quyền 'Administer' 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 - Chuỗi

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ý - Bắt buộc, Mảng chuỗi
    • exclude_code_regex_list - Danh sách các mẫu regex để loại trừ khỏi kết quả - Mảng chuỗi
    • include_glob - Mẫu glob lọc tệp (ví dụ: *.java) - Chuỗi
    • exclude_glob - Mẫu glob loại trừ tệp - Chuỗi
    • fields - Danh sách các trường được phân tách bằng dấu phẩy để đưa vào phản hồi - Chuỗi
    • limit - Số lượng kết quả tối đa để trả về (mặc định: 10) - Số nguyên
    • regex_lists_operator - Cách kết hợp nhiều mẫu: OR (mặc định) hoặc AND - Chuỗi
  • 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í 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ã - Bắt buộc, Mảng chuỗi
    • exclude_code_regex_list - Danh sách các mẫu regex để loại trừ khỏi kết quả - Mảng chuỗi
    • include_glob - Mẫu glob lọc tệp - Chuỗi
    • exclude_glob - Mẫu glob loại trừ tệp - Chuỗi
    • fields - Danh sách các trường được phân tách bằng dấu phẩy để đưa vào phản hồi - Chuỗi
    • limit - Số lượng kết quả tối đa để trả về (mặc định: 10) - Số nguyên
    • regex_lists_operator - Cách kết hợp nhiều mẫu: OR (mặc định) hoặc AND - Chuỗi
  • get_upstream_call_flow - Truy vết các hàm 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, và hiểu điều gì sẽ hỏng nếu một chữ ký thay đổi.

    • fqn - Tên đủ điều kiện của hàm - Bắt buộc, Chuỗi
    • depth - Độ sâu chuỗi gọi (0=chỉ hàm, 1=trình gọi trực tiếp, v.v.) - Số nguyên
    • fields - Danh sách các trường được phân tách bằng dấu phẩy để đưa vào phản hồi - Chuỗi
  • get_downstream_call_flow - Truy vết các 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 đủ điều kiện của hàm - Bắt buộc, Chuỗi
    • depth - Độ sâu chuỗi gọi (0=chỉ hàm, 1=trình được gọi trực tiếp, v.v.) - Số nguyên
    • fields - Danh sách các trường được phân tách bằng dấu phẩy để đưa vào phản hồi - Chuỗi
  • 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 đủ điều kiện của nó.

    • fqn - Tên đủ điều kiện của phần tử - Bắt buộc, Chuỗi
    • fields - Danh sách các trường được phân tách bằng dấu phẩy để đưa vào phản hồi - Chuỗi
  • 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 (class, interface, enum, record, exception, struct). Cần thiết để hiểu cây kế thừa và tái cấu trúc mã.

    • fqn - Tên đầy đủ (fully qualified name) của cấu trúc giống lớp - Chuỗi bắt buộc
    • fields - Danh sách các trường phân tách bằng dấu phẩy để đưa vào phản hồi - Chuỗi
  • get_references - Lấy các tham chiếu mã trực tiếp đến và đi từ một lớp hoặc mô-đun. Chỉ trả về các tham chiếu trực tiếp (không chuyển tiếp).

    • fqn - Tên đầy đủ (fully qualified name) của lớp hoặc mô-đun - Chuỗi bắt buộc
    • fields - Danh sách các trường phân tách bằng dấu phẩy để đưa vào phản hồi - Chuỗi
  • 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.) - Số nguyên bắt buộc
    • path_prefix - Tiền tố đường dẫn tùy chọn để lọc các nút (ví dụ: com.example.service) - Chuỗi
    • ecosystem - Hệ sinh thái tùy chọn để lọc (java, cs, py, js, ts) - Chuỗi
  • 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 các hướng dẫn mã hóa dựa trên các vấn đề của dự án SonarQube, danh mục danh mục 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 các chế độ category_based và combined) - String[]
    • languages - Danh sách ngôn ngữ đích ở đị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 phụ thuộc bên thứ ba để tìm 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 - URL gói (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 Tăng cường Ngữ cảnh
BiếnMô tảBắt buộcMặc định
SONARQUBE_URLURL SonarQube CloudCóhttps://sonarcloud.io
SONARQUBE_TOKENMã thông báo xác thựcCóKhông
SONARQUBE_ORGKhóa tổ chức trên SonarQube CloudCóKhông
SONARQUBE_PROJECT_KEYKhóa dự án trên SonarQube CloudCóKhông
SONAR_SQ_BRANCHGhi đè nhánh SonarQube rõ ràng *KhôngKhông
SONARQUBE_DEBUG_ENABLEDKích hoạt ghi nhật ký gỡ lỗi (để khắc phục sự cố)KhôngSai
SONAR_LOG_LEVELMức độ chi tiết ghi nhật ký (TRACE, DEBUG, INFO, WARNING, ERROR)KhôngINFO
  • Được 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 Dành riêng cho Dự án (Được khuyến nghị)

Đầu tiên, xuất biến môi trường SONARQUBE_TOKEN với Mã thông báo truy cập cá nhân (PAT) hợp lệ cho dự án của bạn.

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

Sau đó, gắn không gian làm việc của dự án để cấp cho máy chủ Tăng cường Ngữ cảnh 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 theo 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 Tác nhân

Lưu ý: Các công cụ Mức độ Sẵn sàng Tác nhân 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 tác nhân 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 để đánh giá. Bỏ qua để 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ề cấp độ tổng thể và phân tích chi tiết theo từng trụ cột với các hành động được khuyến nghị và bằng chứng.

    • 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 để có kết quả chi tiết theo 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ỏ qua để liệt kê các đánh giá cho tất cả các nhánh - Chuỗi
    • pageIndex - Chỉ mục trang dựa trên 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 Máy chủ MCP SonarQube, đây là một số lời nhắc ví dụ cho các tình huống thực tế phổ biến:

Khắc phục Cổng chất lượng 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 đó định 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

Máy chủ MCP SonarQube yêu cầu Bộ công cụ phát triển Java (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ý tệp, hãy đặt SONARQUBE_LOG_TO_FILE_DISABLED=true.

Các sự cố thường gặp

"Phiên bản máy chủ SonarQube không được hỗ trợ"

Máy chủ MCP kiểm tra phiên bản Máy chủ SonarQube được kết nối trong quá trình khởi động. Nếu phiên bản cũ hơn 2025.1 (SQS) hoặc 25.1 (SQCB), quá trình khởi động sẽ thất bại với:

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

Giải pháp: Nâng cấp Máy chủ SonarQube lên bản phát hành được hỗ trợ. Kiểm tra này chỉ áp dụng khi kết nối với Máy chủ SonarQube (SONARQUBE_URL không có SONARQUBE_ORG), không áp dụng cho SonarQube Cloud.

"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 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 tại đâ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 Giấy phép Nguồn Mở SONAR v1.0. Việc sử dụng Máy chủ MCP SonarQube tuân thủ tài liệu này là Mục đích Không Cạnh tranh và do đó được phép theo SSAL.

Việc bạn sử dụng SonarQube qua MCP đượ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.