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ý 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
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ếdockerbằ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 bên tác nhân
- Nhấp vào ba dấu chấm (...) ở góc trên bên phải và chọn Máy chủ MCP
- Tìm kiếm
SonarQubevà chọn Cài đặt - 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:
Đố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 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ạ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- Mã thông báo 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 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.
Đố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 Cài đặt > Cascade > Máy chủ MCP và chọn Mở Chợ MCP
- Tìm kiếm
sonarqubetrên Chợ MCP Cascade - Chọn Máy chủ MCP SonarQube và chọn Cài đặt
- 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=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à duy trì), nó được cung cấp tự động khi sử dụng hình ảnh 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 cho IDE. |
SONARQUBE_DEBUG_ENABLED | Khi đượ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_DISABLED | Khi đượ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_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 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à 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_ONLY | Khi đượ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óa | Mô tả |
|---|---|---|
| Phân tích | analysis | Cá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) |
| 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 |
| Vấn đề | issues | Tìm kiếm và quản lý các vấn đề SonarQube |
| Điểm nóng bảo mật | security-hotspots | Tìm kiếm và xem xét các Điểm nóng bảo mật |
| Dự án | projects | Duyệt và tìm kiếm các dự án SonarQube |
| Cổng chất lượng | quality-gates | Truy cập các cổng chất lượng và trạng thái của chúng |
| Quy tắc | rules | Duyệt và tìm kiếm các quy tắc SonarQube |
| Nguồn | sources | Truy cập mã nguồn và thông tin SCM |
| Trùng lặp | duplications | Tìm các đoạn mã trùng lặp trong các dự án |
| Đo lường | measures | Truy 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ữ | languages | Liệt kê các ngôn ngữ lập trình được hỗ trợ |
| Danh mục đầu tư | portfolios | Quản lý danh mục đầu tư và doanh nghiệp (Cloud và Server) |
| Hệ thống | system | Các công cụ quản trị hệ thống (chỉ Server) |
| Webhooks | webhooks | Quản lý webhooks |
| Rủi ro phụ thuộc | dependency-risks | Phân tích rủi ro phụ thuộc và các vấn đề bảo mật (SCA) |
| Bao phủ | coverage | Các công cụ phân tích và cải thiện độ bao phủ kiểm thử |
| Ngữ cảnh Vortex | cag | Cá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) |
| 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; 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 Agentic | agentic-readiness | Cá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ườ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 SonarQube Server của bạn | Có |
SONARQUBE_URL | URL SonarQube Server của bạn | Có |
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_ORGxác định bạn đang kết nối đến SonarQube Cloud hay Server. NếuSONARQUBE_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 transport | Chế độ máy chủ | Cách sử dụng điển hình |
|---|---|---|
| Stdio | Mặ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 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 đế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ường | Mô tả | Mặc định |
|---|---|---|
SONARQUBE_TRANSPORT | Đặt thành http để bật vận chuyển Streamable HTTP | Không đặt (stdio) |
SONARQUBE_HTTP_PORT | Số cổng (1024-65535) | 8080 |
SONARQUBE_HTTP_HOST | Má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_ORIGINS | Cá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_ORGkhông được đặt khi khởi động máy chủ, mỗi máy khách phải cung cấp tiêu đềSONARQUBE_ORGtrê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_TOOLSETSvà/hoặcSONARQUBE_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_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) (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ường | Mô tả | Mặc định |
|---|---|---|
SONARQUBE_TRANSPORT | Đặt thành https để bật vận chuyển 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ủ để ràng buộc (mặc định là localhost vì lý do bảo mật) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | Cá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ườ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, đặ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à đặtSONARQUBE_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.0chỉ 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_TOOLSETSvàSONARQUBE_READ_ONLYlà 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ối | Phương thức | Mô tả | Phản hồi ví dụ |
|---|---|---|---|
/health | GET | Kiể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) |
/info | GET | Trả 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í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 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/.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 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_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 bậ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:
- 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
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 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 khiSONARQUBE_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ỗifileContent- 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ỗicodeSnippet- Đoạn mã để lọc vấn đề (phải khớp với nội dung trong fileContent) - Chuỗilanguage- Ngôn ngữ của mã (ví dụ: 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - Chuỗiscope- 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 - Với 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ẻ 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 khiSONARQUBE_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ộcfilePath- Đườ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ộcfileScope- 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 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ệ - ChuỗipullRequest- 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ệ - ChuỗimaxCoverage- 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ộcbranch- 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ệ - ChuỗipullRequest- 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ệ - Chuỗifrom- 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 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ệ - ChuỗipullRequest- 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ệ - ChuỗipageIndex- Chỉ số trang tùy chọn (1-based, mặc định: 1) - Số nguyênpageSize- 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ộcstatus- 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ỗibranch- 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ệ - ChuỗipullRequest- 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ệ - Chuỗiseverities- 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ỗiimpactSoftwareQualities- 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ỗiissueStatuses- 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ỗitags- Danh sách thẻ vấn đề tùy chọn để lọc. Các thẻ ở dạng chữ thường - Mảng chuỗiinNewCodePeriod- 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 trongprojectKeysvàfiles- BooleanissueKey- Khóa vấn đề tùy chọn để tìm nạp một vấn đề cụ thể - ChuỗipageIndex- Chỉ số trang tùy chọn (1-based, mặc định: 1) - Số nguyênpageSize- 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 khiSONARQUBE_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ỗibranch- 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ệ - ChuỗipullRequest- 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ệ - Chuỗifiles- Danh sách đường dẫn tệp tùy chọn để lọc - Mảng chuỗistatus- Bộ lọc trạng thái tùy chọn: TO_REVIEW, REVIEWED - Chuỗiresolution- Bộ lọc giải pháp tùy chọn: FIXED, SAFE, ACKNOWLEDGED - ChuỗisinceLeakPeriod- Lọc các điểm nóng được tạo kể từ giai đoạn rò rỉ (mã mới) - BooleanonlyMine- Chỉ hiển thị các điểm nóng được gán cho tôi - BooleanpageIndex- Chỉ số trang tùy chọn (1-based, mặc định: 1) - Số nguyênpageSize- 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ỗistatus- 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 khiSONARQUBE_PROJECT_KEYkhông được cấu hìnhbranch- 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ệ - ChuỗimetricKeys- Các khóa chỉ số tùy chọn để truy xuất (ví dụ: ncloc, complexity, violations, coverage) - Mảng chuỗipullRequest- Khóa/ID pull request tùy chọn. Sử dụnglist_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ênpageSize- 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ỗifavorite- Nếu đúng, 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) - Số nguyênpageSize- 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ỗiq- Truy vấn tìm kiếm tùy chọn để lọc danh mục đầu tư theo tên - Chuỗifavorite- 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 - 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 để tìm nạp (mặc định: 1) - Số nguyênpageSize- 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ênpageSize- 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ênq- 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ườngtypevàmergeBranch. Bộ lọcbranchTypestùy chọn:ALL(mặc định),LONG, hoặ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,mergeBranch, hoặ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) - Bắt buộc, Chuỗi (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),LONG, hoặcSHORT- Enum {"ALL", "LONG", "SHORT"}
- SonarQube Cloud: trả về các nhánh dài hạn (
-
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_branchesthay thế.projectKey- Khóa dự án (ví dụ: my_project) - Bắt buộc, Chuỗi (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 - Chuỗibranch- 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ệ - ChuỗiprojectId- ID dự án tùy chọn - ChuỗiprojectKey- Khóa dự án tùy chọn - ChuỗipullRequest- Khóa/ID pull request tùy chọn. Sử dụnglist_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 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ệ - ChuỗipullRequest- Khóa/ID pull request tùy chọn. Sử dụnglist_pull_requestsđể khám phá các khóa hợp lệ - ChuỗipageSize- 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ênpageIndex- 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ỗibranch- 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ệ - ChuỗipullRequest- Khóa/ID pull request tùy chọn. Sử dụnglist_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ỗibranch- 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ệ - ChuỗipullRequest- Khóa/ID pull request tùy chọn. Sử dụnglist_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ỗicommits_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ỗifrom- 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ỗiurl- URL webhook - Bắt buộc, ChuỗiprojectKey- Khóa dự án tùy chọn cho webhook cụ thể của dự án - Chuỗisecret- 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ỗiexclude_code_regex_list- Danh sách các mẫu regex để loại trừ khỏi kết quả - Mảng chuỗiinclude_glob- Mẫu glob lọc tệp (ví dụ:*.java) - Chuỗiexclude_glob- Mẫu glob loại trừ tệp - Chuỗifields- 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ỗilimit- Số lượng kết quả tối đa để trả về (mặc định: 10) - Số nguyênregex_lists_operator- Cách kết hợp nhiều mẫu:OR(mặc định) hoặcAND- 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ỗiexclude_code_regex_list- Danh sách các mẫu regex để loại trừ khỏi kết quả - Mảng chuỗiinclude_glob- Mẫu glob lọc tệp - Chuỗiexclude_glob- Mẫu glob loại trừ tệp - Chuỗifields- 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ỗilimit- Số lượng kết quả tối đa để trả về (mặc định: 10) - Số nguyênregex_lists_operator- Cách kết hợp nhiều mẫu:OR(mặc định) hoặcAND- 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ỗidepth- Độ sâu chuỗi gọi (0=chỉ hàm, 1=trình gọi trực tiếp, v.v.) - Số nguyênfields- 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ỗidepth- Độ sâu chuỗi gọi (0=chỉ hàm, 1=trình được gọi trực tiếp, v.v.) - Số nguyênfields- 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ỗifields- 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ộcfields- 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ộcfields- 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ộcpath_prefix- Tiền tố đường dẫn tùy chọn để lọc các nút (ví dụ:com.example.service) - Chuỗiecosystem- 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_basedhoặccombined- Chuỗi bắt buộccategories- Danh sách tên danh mục (bắt buộc cho các chế độcategory_basedvà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ấ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 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ế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ó | Không |
SONARQUBE_ORG | Khóa tổ chức trên SonarQube Cloud | Có | Không |
SONARQUBE_PROJECT_KEY | Khóa dự án trên SonarQube Cloud | Có | Không |
SONAR_SQ_BRANCH | Ghi đè nhánh SonarQube rõ ràng * | Không | Không |
SONARQUBE_DEBUG_ENABLED | Kích hoạt ghi nhật ký gỡ lỗi (để khắc phục sự cố) | Không | Sai |
SONAR_LOG_LEVEL | Mức độ chi tiết ghi nhật ký (TRACE, DEBUG, INFO, WARNING, ERROR) | Không | INFO |
- Đượ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
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 để đá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
assessmentIdcho đến khi trạng thái làCOMPLETED,FAILEDhoặcINTERRUPTED. 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ở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để 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 khiSONARQUBE_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ỗipageIndex- 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.