SonarQube MCP Server
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
Tài liệu
SonarQube MCP Server
SonarQube MCP Server là một máy chủ Model Context Protocol (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 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 đối số dòng lệnh – chúng sẽ được lưu vào lịch sử shell
- Sử dụng biến môi trường – đặt token trong 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 kiểm soát phiên bản
- Sử dụng thay thế biến môi trường trong 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 SonarQube MCP Server – 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 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 ả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 thẻ phiên bản (ví dụ: sonarsource/sonarqube-mcp:1.19.0.2785) để triển khai có thể tái tạo. Đọc phần bên dưới nếu bạn muốn build cục bộ.
Lưu ý: Mặc dù các ví dụ bên dưới sử dụng
docker, bất kỳ runtime 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ụ ưa thích của bạn.
Antigravity
SonarQube MCP Server 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 (...) ở trên cùng bên phải và chọn Máy chủ MCP
- Tìm kiếm
SonarQubevà chọn Cài đặt - Cung cấp token Người dùng SonarQube được yêu cầu. Bạn cũng có thể cung cấp khóa tổ chức 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 phần 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ừ đó trong tương lai.
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 cần thiết 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 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ủ SonarQube MCP:
/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 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 lập trình GitHub Copilot
Tác nhân lập trình GitHub Copilot có thể tận dụng máy chủ SonarQube MCP trực tiếp trong CI/CD của bạn.
Để thêm 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ỉ những bí mật có tên bắt đầu bằng 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 Cài đặt -> Copilot -> Tác nhân lập trình, 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 một tệp .kiro/settings/mcp.json trong thư mục không gian 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
SonarQube MCP Server có sẵn dưới dạng plugin Windsurf. Làm theo các hướng dẫn sau:
- Mở Cài đặt Windsurf > Cascade > Máy chủ MCP và chọn Mở Chợ MCP
- Tìm kiếm
sonarqubetrên Chợ MCP Cascade - Chọn SonarQube MCP Server và chọn Cài đặt
- Thêm token Người dùng SonarQube được yêu cầu. 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 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 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 pull ả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ủ SonarQube MCP 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
SonarQube MCP Server 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 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 container trên Linux, container không thể truy cập máy chủ nhúng SonarQube for IDE đang 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 MCP Server:
| Biến môi trường | Mô tả |
|---|---|
STORAGE_PATH | Đường dẫn tuyệt đối bắt buộc đến thư mục có thể ghi nơi SonarQube MCP Server sẽ lưu trữ các tệp của nó (ví dụ: để tạo, cập nhật và duy trì), nó được tự động cung cấp khi sử dụng ả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 SonarQube MCP Server với SonarQube for 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 trong STORAGE_PATH/logs/. Hữu ích trong môi trường container hóa hoặc tạm thời nơi không mong muốn ghi nhật ký tệp. Mặc định: false. |
Gắn kết không gian làm việc (Giảm phình to 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 thư mục dự án của bạn vào container tại /app/mcp-workspace. Khi phát hiện thấy việc gắn 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 tác nhân.
{
"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 việc gắn đang hoạt động:
run_advanced_code_analysissẽ khả dụng nếu tổ chức của bạn được hưởng quyền đóanalyze_code_snippet:filePathlà bắt buộc vàfileContentkhông được sử dụng — máy chủ phân giải tệp theo cùng một 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ụ khi cần.
| Biến môi trường | Mô tả |
|---|---|
SONARQUBE_TOOLSETS | Danh sách các bộ công cụ cần kích hoạt, phân tách bằng dấu phẩy. Khi được đặt, chỉ những bộ công cụ này mới 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, 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ụ Tăng cường Ngữ cảnh chỉ khả dụng ở chế độ stdio và yêu cầu quyền của tổ chức. Ở chế độ HTTP Có thể truyền phát, máy khách có thể gửi tiêu đề HTTP SONARQUBE_TOOLSETS để thu hẹp thêm phạm vi này cho mỗi 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ủ đã được khởi chạy (xem Truyền tải HTTP Có thể truyền phát 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 được tích lũy cùng với SONARQUBE_TOOLSETS nếu cả hai đều được đặt. Mặc định: false. Ở chế độ HTTP Có thể truyền phát, 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ể dỡ bỏ hạn chế chỉ đọc ở cấp máy chủ (xem Truyền tải HTTP Có thể truyền phát 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ông cụ phân tích mã (phân tích cục bộ và phân tích từ xa nâng cao) |
| 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 |
| Ngưỡng Chất lượng | quality-gates | Truy cập các ngưỡ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 trên các dự án |
| Số đo | measures | Truy xuất các chỉ số và số đo (bao gồm cả công cụ số đo và chỉ số) |
| 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ông cụ quản trị hệ thống (chỉ dành cho 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) |
| Độ phủ | coverage | Công cụ phân tích và cải thiện độ phủ kiểm thử |
| Tăng cường Ngữ cảnh | cag | Công cụ Tăng cường Ngữ cảnh (chỉ chế độ stdio, yêu cầu quyền tổ chức) |
| Mức độ Sẵn sàng Tác nhân | agentic-readiness | Công cụ Đánh giá Mức độ Sẵn sàng Tác nhân (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à ngưỡ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 tự động kích hoạt, 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 token | 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 đặt, 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à HTTP Có thể truyền phát. SonarQube MCP Server hỗ trợ cả hai:
| Truyền tải MCP | Chế độ máy chủ | Trường hợp 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.) |
| HTTP Có thể truyền phát | 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 ý: HTTP Có thể truyền phát là truyền tải mạng MCP hiện tại. Truyền tải HTTP chỉ SSE cũ hơn từ các phiên bản MCP trước đã bị phản đối và không được hỗ trợ.
1. Stdio (Mặc định - 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 (HTTP Có thể truyền phát)
Truyền tải HTTP Có thể truyền phát 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 (HTTP Có thể truyền phát) 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 để kích hoạt truyền tải HTTP Có thể truyền phát | Không đặt (stdio) |
SONARQUBE_HTTP_PORT | Số cổng (1024-65535) | 8080 |
SONARQUBE_HTTP_HOST | Máy chủ để liên kết (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é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. Hình ảnh Docker chính thức tự động đặt biến này; hãy tự đặt khi sử dụng các runtime OCI khác (Podman, Kubernetes, Nomad, v.v.). | false |
Lưu ý: Trong chế độ Streamable HTTP (HTTP hoặc HTTPS), máy chủ là phi 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 xác định như sau: |
- Nếu
SONARQUBE_ORGđược đặt khi khởi động máy chủ, tất cả các yêu cầu sẽ được định tuyến đến tổ chức đó. Máy khách không được gửi tiêu đềSONARQUBE_ORG— việc nà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ị cho mỗi yêu cầu bằng cách cung cấp tiêu đềSONARQUBE_TOOLSETSvà/hoặcSONARQUBE_READ_ONLY; những tiêu đề này áp dụng bộ 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. Hãy 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)
Truyền tải 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ủ mặc định liên kết với
127.0.0.1(localhost) để bảo mật.
| Biến môi trường | Mô tả | Mặc định |
|---|---|---|
SONARQUBE_TRANSPORT | Đặt thành https để bật 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ủ để liên kết (mặc định là localhost để bảo mật) | 127.0.0.1 |
SONARQUBE_HTTP_ALLOWED_ORIGINS | 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. Hình ảnh Docker chính thức tự động đặt biến này; hãy tự đặt khi sử dụng các runtime OCI 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để thông báo cho máy chủ biết nó đang ở trong container. Hình ảnh Docker chính thức tự động đặt biến sau; hãy tự đặt khi sử dụng các runtime OCI 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 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ỉ có thể 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ủ có thể 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 cho mỗi 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 — không thể kích hoạt bộ công cụ hoặc dỡ 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 truyền tải 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 yêu cầu xác thực ngoài điểm cuối MCP tại /mcp. Chúng dành cho việc sử dụng 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 | Đầu dò tính sống. Trả về 200 OK với phần thân trống khi máy chủ đang chấp 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 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ý hoặc chứng chỉ từ Tổ chức phát hành 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 tự động cài đặt.
Cấu hình
Sử dụng Gắn kết Ổ đĩa
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>"
}
}
}
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 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 đượ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 | 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 yêu cầu xác thực) | — | myuser |
java.net.socks.password | Mật khẩu SOCKS5 (nếu yêu cầu xác thực) | — | mypassword |
Công cụ
Phân tích
-
analyze_code_snippet - Phân tích nội dung tệp bằng các 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ể.
Cách sử dụng:
- Với không gian làm việc được gắn kết (khuyến nghị): truyền
filePath(tương đối với dự án) — máy chủ đọc tệp trực tiếp, giữ nội dung tệp nằm ngoài cửa sổ ngữ cảnh của tác nhân - Không gắn kết không gian làm việc: truyền toàn bộ
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ã mới đượ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 với dự án của tệp cần phân tích (ví dụ:src/main/java/MyClass.java). Được sử dụng khi không gian làm việc được gắn kết tại/app/mcp-workspace- ChuỗifileContent- Nội dung tệp hoàn chỉnh dưới dạng chuỗi. Bắt buộc khi không gian làm việc không được gắn kết - 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 không gian làm việc được gắn kết (khuyến nghị): truyền
Khi tích hợp với SonarQube for IDE được bật:
-
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 tệp tuyệt đối để phân tích - 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ẽ dừng.
enabled- Bật hoặc tắt phân tích tự động - Boolean Bắt buộc
Khi phân tích nâng cao được bật cho tổ chức SonarQube Cloud của bạn:
Yêu cầu không gian làm việc được gắn kết tại
/app/mcp-workspace
- run_advanced_code_analysis - Chạy phân tích mã nâng cao 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 - Chuỗi Bắt buộc (Bị bỏ qua khiSONARQUBE_PROJECT_KEYđược xác định)branchName- 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 với 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 tệp trong một dự án được sắp xếp theo độ bao phủ (tăng dần - độ bao 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 độ bao 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ồn tại lâu dài tùy chọn (ví dụ: main, develop). 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 độ bao phủ tối đa (0-100). Chỉ trả về các tệp có độ bao phủ <= giá trị này - SốpageIndex- Chỉ mục trang (dựa trên 1, 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 độ bao phủ theo từng dòng cho một tệp cụ thể, bao gồm những dòng chính xác nào chưa được bao phủ và những dòng nào có các nhánh được bao 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 độ bao phủ kiểm thử. Sử dụng sau khi xác định các tệp có độ bao 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ồn tại lâu dài tùy chọn (ví dụ: main, develop). 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 (dựa trên 1, 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à đã bật SonarQube Advanced Security.
- 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, được ghép nối 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ư đã 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ồn tại lâu dài tùy chọn (ví dụ: main, develop). 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ỉ mục trang tùy chọn (dựa trên 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
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 có sẵn 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ể 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"}
-
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.
projects- Danh sách tùy chọn các dự án Sonar - Chuỗi[]branch- Tên nhánh tồn tại lâu dài tùy chọn (ví dụ: main, develop). 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 tùy chọn các mức độ nghiêm trọng để lọc. Các giá trị có thể: INFO, LOW, MEDIUM, HIGH, BLOCKER - Chuỗi[]impactSoftwareQualities- Danh sách tùy chọn các chất lượng phần mềm để lọc. Các giá trị có thể: MAINTAINABILITY, RELIABILITY, SECURITY - Chuỗi[]issueStatuses- Danh sách tùy chọn các trạng thái vấn đề để lọc. Các giá trị có thể: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - Chuỗi[]issueKey- Khóa vấn đề tùy chọn để lấy một vấn đề cụ thể - Chuỗip- Số trang tùy chọn (mặc định: 1) - Số nguyênps- 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 cách bằng dấu phẩy các khóa Điểm nóng bảo mật cụ thể để truy xuất - Chuỗi[]branch- Tên nhánh tồn tại lâu dài tùy chọn (ví dụ: main, develop). 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 tùy chọn các đường dẫn tệp để lọc - Chuỗi[]status- 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 từ kỳ rò rỉ (mã mới) - BooleanonlyMine- Chỉ hiển thị các điểm nóng được gán cho tôi - Booleanp- Số trang tùy chọn (mặc định: 1) - Số nguyênps- 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 Đ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 một giải pháp (FIXED, SAFE hoặc ACKNOWLEDGED).
hotspotKey- Khóa Điểm nóng bảo mật - Chuỗi bắt buộcstatus- Trạng thái mới - Enum bắt buộc {"TO_REVIEW", "REVIEWED"}resolution- Giải pháp khi trạng thái là REVIEWED - Enum {"FIXED", "SAFE", "ACKNOWLEDGED"}comment- Bình luận đánh giá tùy chọn - Chuỗi
Ngôn ngữ
- list_languages - Liệt kê tất cả cá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 các khóa/tên ngôn ngữ - Chuỗi
Số đo
- get_component_measures - Lấy các số đo SonarQube cho một thành phần (dự án, thư mục, tệp).
projectKey- Khóa dự án - Chuỗi bắt buộc khiSONARQUBE_PROJECT_KEYkhông được cấu hìnhbranch- Tên nhánh tồn tại lâu dài tùy chọn (ví dụ: main, develop). Sử dụnglist_branchesđể khám phá các tên hợp lệ - ChuỗimetricKeys- Các khóa số liệu tùy chọn để truy xuất (ví dụ: ncloc, complexity, violations, coverage) - Chuỗi[]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ệ - Chuỗi
Số liệu
- search_metrics - Tìm kiếm các số liệu SonarQube.
p- Số trang tùy chọn (mặc định: 1) - Số nguyênps- 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 true, chỉ trả về các danh mục đầu tư yêu thích - BooleanpageIndex- Số trang dựa trên 1 tùy chọn (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- UUID doanh nghiệp. 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 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 tùy chọn của trang cần lấy (mặc định: 1) - Số nguyênpageSize- Kích thước tùy chọn của trang cần lấy (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.
page- Số trang tùy chọn - Chuỗi
-
list_branches - Liệt kê các nhánh tồn tại lâu dài cho một dự án (ví dụ: main, develop, master). Chỉ trả về các nhánh
LONGtrên SonarQube Cloud và các mụcBRANCHtrên SonarQube Server — các tên an toàn cho tham sốbranchtrên các công cụ khác. Đối với yêu cầu kéo, hãy sử dụnglist_pull_requeststhay thế.projectKey- Khóa dự án (ví dụ: my_project) - Chuỗi bắt buộc (Bị bỏ qua khiSONARQUBE_PROJECT_KEYđược xác định)
-
list_pull_requests - Liệt kê tất cả các yêu cầu kéo cho một dự án. Sử dụng công cụ này để khám phá các yêu cầu kéo có sẵn trước khi phân tích độ bao phủ, vấn đề hoặc chất lượng của chúng. Trả về khóa/ID yêu cầu kéo có thể được sử dụng với các công cụ khác (ví dụ: search_files_by_coverage, get_file_coverage_details). Đối với các nhánh tồn tại lâu dài, hãy sử dụng
list_branchesthay thế.projectKey- Khóa dự án (ví dụ: my_project) - Chuỗi bắt buộc (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ồn tại lâu dài tùy chọn (ví dụ: main, develop). 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 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ỗ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 - Chuỗi bắt buộc
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 - Chuỗi bắt buộc (Bị bỏ qua khiSONARQUBE_PROJECT_KEYđược xác định)branch- Tên nhánh tồn tại lâu dài tùy chọn (ví dụ: main, develop). 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ỗipageSize- Số lượng kết quả tùy chọn trên mỗi trang cho 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 - Số nguyênpageIndex- Số trang tùy chọn cho 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 - Số nguyên
-
get_duplications - Lấy các 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 - Chuỗi bắt buộcbranch- Tên nhánh tồn tại lâu dài tùy chọn (ví dụ: main, develop). 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ỗ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 - Chuỗi bắt buộcbranch- Tên nhánh tồn tại lâu dài tùy chọn (ví dụ: main, develop). 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 - Chuỗi bắt buộccommits_by_line- Nhóm các dòng theo commit SCM nếu giá trị là false, ngược lại hiển thị commit cho từng dòng - Chuỗifrom- Dòng đầu tiên cần trả về. Bắt đầu từ 1 - Sốto- Dòng cuối cùng cần 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 (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 '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ý cần lấy. Các giá trị khả dụng: 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ó đang 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ục.
name- Tên webhook - Chuỗi bắt buộcurl- URL webhook - Chuỗi bắt buộcprojectKey- 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ả 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ục.
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ý - Chuỗi[] bắt buộcexclude_code_regex_list- Danh sách các mẫu regex để loại trừ khỏi kết quả - Chuỗi[]include_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 để bao gồm trong phản hồi - Chuỗilimit- Số lượng kết quả tối đa cần 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í 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 thân mã - Chuỗi[] bắt buộcexclude_code_regex_list- Danh sách các mẫu regex để loại trừ khỏi kết quả - Chuỗi[]include_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 để bao gồm trong phản hồi - Chuỗilimit- Số lượng kết quả tối đa cần 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 - Theo dõi những hàm nào gọi một hàm đã cho. Hữu ích để tìm tất cả các hàm gọi và điểm vào, và hiểu những gì bị hỏng nếu chữ ký thay đổi.
fqn- Tên đầy đủ của hàm - Chuỗi bắt buộcdepth- Độ sâu chuỗi gọi (0=chỉ hàm, 1=người 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 để bao gồm trong phản hồi - Chuỗi
-
get_downstream_call_flow - Theo dõi những hàm nào một hàm đã cho gọi. Hữu ích cho phân tích tác động và hiểu luồng thực thi.
fqn- Tên đầy đủ của hàm - Chuỗi bắt buộcdepth- Độ sâu chuỗi gọi (0=chỉ hàm, 1=người đượ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 để bao gồm trong phản hồi - Chuỗi
-
get_source_code - Lấy mã nguồn hoàn chỉnh (chữ ký và thân) cho một phần tử mã theo tên đầy đủ của nó.
fqn- Tên đầy đủ của phần tử - Chuỗi bắt buộcfields- 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 - 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 (lớp, giao diện, enum, bản ghi, ngoại lệ, cấu trúc). Cần thiết để hiểu cây kế thừa và tái cấu trúc.
fqn- Tên đầy đủ của cấu trúc giống lớp - Chuỗi bắt buộcfields- 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 - Chuỗi
-
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 đầy đủ của lớp hoặc mô-đun - Chuỗi bắt buộcfields- 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 - 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 theo (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 những mô-đun nào được phép phụ thuộc vào những 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) - Chuỗi[]languages- Danh sách ngôn ngữ đích ở định dạng khóa kho lưu trữ SonarQube (bắt buộc khicategoriesđược cung cấp) - Chuỗi[]file_paths- Danh sách tùy chọn các đường dẫn tệp để lọc hướng dẫn theo - Chuỗi[]
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ề 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 nó.
purl- URL gói (purl) có phiên bản, theo purl-spec. Định dạng:pkg:<type>/<namespace>/<name>@<version>(ví dụ:pkg:npm/[email protected],pkg:maven/org.apache.logging.log4j/[email protected],pkg:pypi/[email protected]) - 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 có |
SONARQUBE_ORG | Khóa tổ chức trên SonarQube Cloud | Có | Không có |
SONARQUBE_PROJECT_KEY | Khóa dự án trên SonarQube Cloud | Có | Không có |
SONAR_SQ_BRANCH | Ghi đè nhánh SonarQube tường minh * | Không | Không có |
SONARQUBE_DEBUG_ENABLED | Kích hoạt ghi nhật ký gỡ lỗi (để khắc phục sự cố) | Không | False |
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 Cụ thể cho Dự án (Khuyến nghị)
Trước tiên, xuất biến môi trường SONARQUBE_TOKEN biến môi trường 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 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 phạm vi dự án, không đặt SONARQUBE_TOKEN vào 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 cho Tác tử
Lưu ý: Các công cụ Mức độ Sẵn sàng cho Tác tử chỉ khả dụng trên SonarQube Cloud và yêu cầu tính năng đượ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 cho tác tử 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ỏ 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,FAILED, hoặcINTERRUPTED. Khi hoàn thành, trả về mức tổng thể và phân tích 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ả cấp trụ cột đầy đủ.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 đánh giá theo tên nhánh. Bỏ qua để liệt kê đá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ố
Lời nhắc Ví dụ
Khi bạn đã thiết lập Máy chủ SonarQube MCP, đây là một số lời nhắc ví dụ cho các tình huống thực tế phổ biến:
Sửa một Ngưỡng Chất lượng Bị Lỗi
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 Phát hành và Trước 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ã nguồn
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à Sửa lỗi
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ã nguồn
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 Tình trạng 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
Nên sử dụng ảnh container sonarsource/sonarqube-mcp.
Để chạy máy chủ dưới dạng JAR độc lập không cần Docker, hãy tải xuống bản dựng phát hành 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 tại đó 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 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 tệp 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 vấn đề thường gặp
"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 ảnh Docker đã lỗi thời. Docker lưu trữ ả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 tải ả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à tải 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, hãy 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 ảnh.
Dữ liệu và đo lường 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 có mã nguồn hoặc địa chỉ IP nào bị thu thập 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 lường 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 Giấy phép Khả dụng Nguồn SONAR v1.0. Việc sử dụng SonarQube MCP Server 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 thông 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.