SonarQube
chính thứcCung 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_snippettrê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-gatescủ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
measuresnhư 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
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 thaydockerbằ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:
- Mở Bảng điều khiển phụ của Tác nhân
- Nhấp vào ba dấu chấm (...) ở góc trên bên phải và chọn MCP Servers
- Tìm kiếm
SonarQubevà chọn Install - 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 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:
Đố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:
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ạnSONARQUBE_ORG- Khóa tổ chức của bạnSONARQUBE_URL- (Tùy chọn) Đặt thànhhttps://sonarqube.uscho SonarQube Cloud US
-
Đối với SonarQube Server:
SONARQUBE_TOKEN- Token NGƯỜI DÙNG SonarQube Server của bạnSONARQUBE_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 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 đã 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.
Đố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.
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:
- Mở Windsurf Settings > Cascade > MCP Servers và chọn Open MCP Marketplace
- Tìm kiếm
sonarqubetrên Cascade MCP Marketplace - Chọn SonarQube MCP Server và chọn Install
- 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=hostvà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ường | Mô 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_KEY | Khó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_PORT | Số 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_ENABLED | Khi đượ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_DISABLED | Khi đượ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_analysissẽ khả dụng nếu tổ chức của bạn được cấp quyền sử dụnganalyze_code_snippet:filePathlà bắt buộc vàfileContentkhô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ường | Mô tả |
|---|---|
SONARQUBE_TOOLSETS | Danh 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_ONLY | Khi đượ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óa | Mô tả |
|---|---|---|
| Analysis | analysis | Cá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) |
| IDE | ide | Cá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 |
| Issues | issues | Tìm kiếm và quản lý các vấn đề SonarQube |
| Security Hotspots | security-hotspots | Tìm kiếm và xem xét các Security Hotspot |
| Projects | projects | Duyệt và tìm kiếm các dự án SonarQube |
| Quality Gates | quality-gates | Truy cập các quality gate và trạng thái của chúng |
| Rules | rules | Duyệt và tìm kiếm các quy tắc SonarQube |
| Sources | sources | Truy cập mã nguồn và thông tin SCM |
| Duplications | duplications | Tìm các đoạn mã trùng lặp trong các dự án |
| Measures | measures | Truy xuất số liệu và đo lường (bao gồm cả công cụ measures và metrics) |
| Languages | languages | Liệt kê các ngôn ngữ lập trình được hỗ trợ |
| Portfolios | portfolios | Quản lý danh mục đầu tư và doanh nghiệp (Cloud và Server) |
| System | system | Các công cụ quản trị hệ thống (chỉ Server) |
| Webhooks | webhooks | Quản lý webhook |
| Dependency Risks | dependency-risks | Phân tích rủi ro phụ thuộc và các vấn đề bảo mật (SCA) |
| Coverage | coverage | Các công cụ phân tích và cải thiện độ phủ kiểm thử |
| Vortex Context | cag | Cá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) |
| Vortex | vortex | Bộ 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 Readiness | agentic-readiness | Cá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ường | Mô tả | Bắt buộc |
|---|---|---|
SONARQUBE_TOKEN | Token SonarQube Cloud của bạn | Có |
SONARQUBE_ORG | Khóa tổ chức SonarQube Cloud của bạn | Có |
SONARQUBE_URL | URL SonarQube Cloud tùy chỉnh (mặc định là https://sonarcloud.io). Sử dụng cho SonarQube Cloud US: https://sonarqube.us | Không |
Ví dụ:
- SonarQube Cloud: Chỉ cần
SONARQUBE_TOKENvàSONARQUBE_ORG - SonarQube Cloud US: Đặt
SONARQUBE_TOKEN,SONARQUBE_ORGvàSONARQUBE_URL=https://sonarqube.us
SonarQube Server
| Biến môi trường | Mô tả | Bắt buộc |
|---|---|---|
SONARQUBE_TOKEN | Token USER của SonarQube Server của bạn | Có |
SONARQUBE_URL | URL SonarQube Server của bạn | Có |
⚠️ 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_ORGxác định bạn đang kết nối với SonarQube Cloud hay Server. NếuSONARQUBE_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: Stdio và Streamable HTTP. SonarQube MCP Server hỗ trợ cả hai:
| MCP transport | Chế độ máy chủ | Cách sử dụng điển hình |
|---|---|---|
| Stdio | Mặ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 HTTP | SONARQUBE_TRANSPORT=http hoặc https | Triể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ường | Mô tả | Mặc định |
|---|---|---|
SONARQUBE_TRANSPORT | Đặt thành http để bật cơ chế truyền tải Streamable HTTP | Không đặt (stdio) |
SONARQUBE_HTTP_PORT | Số cổng (1024-65535) | 8080 |
SONARQUBE_HTTP_HOST | Má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_ORIGINS | Danh 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_ORGkhô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_ORGtrong 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_TOOLSETSvà/hoặcSONARQUBE_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_TOKENvẫ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 sangAuthorization: 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ường | Mô tả | Mặc định |
|---|---|---|
SONARQUBE_TRANSPORT | Đặt thành https để bật cơ chế truyền tải Streamable HTTP qua TLS | Không đặt (stdio) |
SONARQUBE_HTTP_PORT | Số cổng (thường là 8443 cho HTTPS) | 8080 |
SONARQUBE_HTTP_HOST | Má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_ORIGINS | Danh 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ường | Mô 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_PASSWORD | Mật khẩu keystore | sonarlint |
SONARQUBE_HTTPS_KEYSTORE_TYPE | Loạ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 đặtSONARQUBE_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.0chỉ 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_TOOLSETSvàSONARQUBE_READ_ONLYlà 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ối | Phương thức | Mô tả | Phản hồi ví dụ |
|---|---|---|---|
/health | GET | Kiể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) |
/info | GET | Trả 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ính | Mô tả | Ví dụ |
|---|---|---|
http.proxyHost | Tên máy chủ proxy HTTP | proxy.example.com |
http.proxyPort | Cổng proxy HTTP | 8080 |
https.proxyHost | Tên máy chủ proxy HTTPS | proxy.example.com |
https.proxyPort | Cổng proxy HTTPS | 8443 |
http.nonProxyHosts | Cá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ính | Mô tả | Ví dụ |
|---|---|---|
http.proxyUser | Tên người dùng proxy HTTP | myuser |
http.proxyPassword | Mật khẩu proxy HTTP | mypassword |
https.proxyUser | Tên người dùng proxy HTTPS | myuser |
https.proxyPassword | Mật khẩu proxy HTTPS | mypassword |
Proxy SOCKS5
Proxy SOCKS5 được hỗ trợ.
| Thuộc tính | Mô tả | Mặc định | Ví dụ |
|---|---|---|---|
socksProxyHost | Tên máy chủ proxy SOCKS5 | — | localhost |
socksProxyPort | Cổng proxy SOCKS5 | 1080 | 1080 |
java.net.socks.username | Tên người dùng SOCKS5 (nếu cần xác thực) | — | myuser |
java.net.socks.password | Mậ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/.keyriêng biệt) phải được chuyển đổi sang định dạng PKCS12 trước. Sử dụngopenssl 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_snippetsẽ bị xóa trong bản phát hành tương lai. Kết nối SonarQube for IDE để sử dụnganalyze_file_list, hoặc kích hoạt phân tích Vortex cho tổ chức của bạn để sử dụngrun_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
codeSnippettù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 khiSONARQUBE_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 StringfileContent- 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 StringcodeSnippet- Đoạn mã để lọc vấn đề (phải khớp với nội dung trong fileContent) - Kiểu Stringlanguage- Ngôn ngữ của mã (ví dụ: 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Kiểu Stringscope- 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 workspace được gắn (khuyến nghị): truyền
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ụ 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 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 khiSONARQUBE_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 StringfilePath- Đườ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 StringfileScope- 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 khiSONARQUBE_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ụnglist_branchesđể khám phá các tên hợp lệ - Kiểu StringpullRequest- Khóa/ID yêu cầu kéo tùy chọn. Sử dụnglist_pull_requestsđể khám phá các khóa hợp lệ - Kiểu StringmaxCoverage- Ngưỡng độ phủ tối đa (0-100). Chỉ trả về các tệp có độ phủ <= giá trị này - Kiểu NumberpageIndex- Chỉ số trang (bắt đầu từ 1, mặc định: 1) - Kiểu NumberpageSize- 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 Stringbranch- Tên nhánh tùy chọn cho phân tích theo nhánh. Sử dụnglist_branchesđể khám phá các tên hợp lệ - Kiểu StringpullRequest- Khóa/ID yêu cầu kéo tùy chọn. Sử dụnglist_pull_requestsđể khám phá các khóa hợp lệ - Kiểu Stringfrom- Dòng đầu tiên để phân tích (bắt đầu từ 1, mặc định: 1) - Kiểu Numberto- 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 khiSONARQUBE_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ụnglist_branchesđể khám phá các tên hợp lệ - Kiểu StringpullRequest- Khóa/ID yêu cầu kéo tùy chọn. Sử dụnglist_pull_requestsđể khám phá các khóa hợp lệ - Kiểu StringpageIndex- Chỉ số trang tùy chọn (bắt đầu từ 1, mặc định: 1) - Kiểu IntegerpageSize- 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 Stringstatus- 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ụnglist_branchesđể khám phá các tên hợp lệ - Kiểu StringpullRequest- Khóa/ID yêu cầu kéo tùy chọn. Sử dụnglist_pull_requestsđể khám phá các khóa hợp lệ - Kiểu Stringseverities- 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 StringpageIndex- Chỉ số trang tùy chọn bắt đầu từ 1 (mặc định: 1) - Kiểu IntegerpageSize- 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 khiSONARQUBE_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ụnglist_branchesđể khám phá các tên hợp lệ - Kiểu StringpullRequest- Khóa/ID yêu cầu kéo tùy chọn. Sử dụnglist_pull_requestsđể khám phá các khóa hợp lệ - Kiểu Stringfiles- 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 Stringresolution- Bộ lọc độ phân giải tùy chọn: FIXED, SAFE, ACKNOWLEDGED - Kiểu StringsinceLeakPeriod- Lọc các điểm nóng được tạo từ giai đoạn rò rỉ (mã mới) - Kiểu BooleanonlyMine- Chỉ hiển thị các điểm nóng được gán cho tôi - Kiểu BooleanpageIndex- Chỉ số trang tùy chọn bắt đầu từ 1 (mặc định: 1) - Kiểu IntegerpageSize- 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 Stringstatus- 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 khiSONARQUBE_PROJECT_KEYkhông được cấu hìnhbranch- Tên nhánh tùy chọn cho phân tích theo nhánh. Sử dụnglist_branchesđể khám phá các tên hợp lệ - Kiểu StringmetricKeys- 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ụnglist_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 IntegerpageSize- 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 - Stringfavorite- Nếu true, chỉ trả về các danh mục đầu tư yêu thích - BooleanpageIndex- Số trang tùy chọn bắt đầu từ 1 (mặc định: 1) - IntegerpageSize- 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 - Stringq- Truy vấn tìm kiếm tùy chọn để lọc danh mục đầu tư theo tên - Stringfavorite- 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 - Booleandraft- 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 - BooleanpageIndex- Chỉ mục trang tùy chọn để lấy (mặc định: 1) - IntegerpageSize- 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) - IntegerpageSize- 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) - Integerq- 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ườngtypevàmergeBranch. Bộ lọcbranchTypestùy chọn:ALL(mặc định),LONGhoặcSHORT. - 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,mergeBranchhoặcbranchTypes. - Sử dụng tên nhánh được trả về làm tham số
branchtrên các công cụ khác. Đối với phân tích pull request, hãy sử dụnglist_pull_requeststhay thế. projectKey- Khóa dự án (ví dụ: my_project) - Required String (Bị bỏ qua khiSONARQUBE_PROJECT_KEYđược xác định)branchTypes- (Chỉ dành cho SonarQube Cloud) Bộ lọc tùy chọn:ALL(mặc định),LONGhoặcSHORT- Enum {"ALL", "LONG", "SHORT"}
- SonarQube Cloud: trả về các nhánh tồn tại lâu dài (
-
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_branchesthay thế.projectKey- Khóa dự án (ví dụ: my_project) - Required String (Bị bỏ qua khiSONARQUBE_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 - Stringbranch- Tên nhánh tùy chọn cho phân tích dựa trên nhánh. Sử dụnglist_branchesđể khám phá các tên hợp lệ - StringprojectId- ID dự án tùy chọn - StringprojectKey- Khóa dự án tùy chọn - StringpullRequest- Khóa/ID pull request tùy chọn. Sử dụnglist_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 khiSONARQUBE_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ụnglist_branchesđể khám phá các tên hợp lệ - StringpullRequest- Khóa/ID pull request tùy chọn. Sử dụnglist_pull_requestsđể khám phá các khóa hợp lệ - StringpageSize- 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 - IntegerpageIndex- 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 Stringbranch- Tên nhánh tùy chọn cho phân tích dựa trên nhánh. Sử dụnglist_branchesđể khám phá các tên hợp lệ - StringpullRequest- Khóa/ID pull request tùy chọn. Sử dụnglist_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 Stringbranch- Tên nhánh tùy chọn cho phân tích dựa trên nhánh. Sử dụnglist_branchesđể khám phá các tên hợp lệ - StringpullRequest- Khóa/ID pull request tùy chọn. Sử dụnglist_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 Stringcommits_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 - Stringfrom- Dòng đầu tiên để trả về. Bắt đầu từ 1 - Numberto- 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 Stringurl- URL webhook - Required StringprojectKey- Khóa dự án tùy chọn cho webhook cụ thể của dự án - Stringsecret- 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) - Stringexclude_glob- Mẫu glob loại trừ tệp - Stringfields- 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 - Stringlimit- Số lượng kết quả tối đa để trả về (mặc định: 10) - Integerregex_lists_operator- Cách kết hợp nhiều mẫu:OR(mặc định) hoặcAND- 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 - Stringexclude_glob- Mẫu glob loại trừ tệp - Stringfields- 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 - Stringlimit- Số lượng kết quả tối đa để trả về (mặc định: 10) - Integerregex_lists_operator- Cách kết hợp nhiều mẫu:OR(mặc định) hoặcAND- 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 Stringdepth- Độ sâu chuỗi gọi (0=chỉ hàm, 1=trình gọi trực tiếp, v.v.) - Integerfields- 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 Stringdepth- Độ sâu chuỗi gọi (0=chỉ hàm, 1=hàm được gọi trực tiếp, v.v.) - Integerfields- 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 Stringfields- 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 Stringfields- 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 Stringfields- 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 Integerpath_prefix- Tiền tố đường dẫn tùy chọn để lọc các nút (ví dụ:com.example.service) - Stringecosystem- 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ặccombined- Chuỗi bắt buộccategories- Danh sách tên danh mục (bắt buộc cho chế độcategory_basedvàcombined) - 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ấpcategories) - 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ến | Mô tả | Bắt buộc | Mặc định |
|---|---|---|---|
SONARQUBE_URL | URL SonarQube Cloud | Có | https://sonarcloud.io |
SONARQUBE_TOKEN | Mã thông báo xác thực | Có | None |
SONARQUBE_ORG | Khóa tổ chức trên SonarQube Cloud | Có | None |
SONARQUBE_PROJECT_KEY | Khóa dự án trên SonarQube Cloud | Có | None |
SONAR_SQ_BRANCH | Ghi đè nhánh SonarQube tường minh * | Không | None |
SONARQUBE_DEBUG_ENABLED | Kích hoạt ghi log gỡ lỗi (để khắc phục sự cố) | Không | False |
SONAR_LOG_LEVEL | Mức độ chi tiết ghi log (TRACE, DEBUG, INFO, WARNING, ERROR) | Không | INFO |
- 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
PENDINGvà mộtassessmentId. Sử dụngget_agentic_readiness_assessmentđể thăm dò kết quả.projectKey- Khóa dự án - Chuỗi bắt buộc (Bị bỏ qua khiSONARQUBE_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
assessmentIdcho đến khi trạng thái làCOMPLETED,FAILED, hoặcINTERRUPTED. 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ởistart_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 khiSONARQUBE_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ỗipageIndex- 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.