MCP server for SonarQube code quality platform
Project description
SonarQube MCP Server
A Model Context Protocol (MCP) server for interacting with SonarQube code quality platform.
Features
- 21 SonarQube tools organized into 7 categories, accessible via dispatch pattern
- 6 MCP Prompts for code review, security audits, and quality reports
- 7 MCP Resources for browseable URI-based access to SonarQube data
- Multi-instance support for managing multiple SonarQube servers
- HTTP transport modes - stdio, SSE, and streamable-http
Installation
# Using pip
pip install sonar-mcp
# Using uv (recommended)
uv pip install sonar-mcp
Quick Start
1. Configure for Claude Code
Add to your Claude Code MCP settings:
{
"mcpServers": {
"sonar-mcp": {
"command": "sonar-mcp",
"env": {
"SONAR_TOKEN": "your-sonarqube-token",
"SONAR_URL": "https://sonarqube.example.com"
}
}
}
}
2. Use the Tools
The server uses a dispatch pattern (similar to GitLab MCP) with just 3 meta-tools:
# Discover available tools by category
sonar_list_categories()
sonar_list_categories(category="issue") # Filter to specific category
# Get parameter schema for a tool
sonar_get_tool_schema(tool_name="sonar_list_issues")
# Execute any tool by name
sonar_execute_tool(tool_name="sonar_list_projects")
sonar_execute_tool(tool_name="sonar_list_issues", arguments={"project": "my-project"})
Running the Server
Stdio Mode (Default)
For Claude Code and other MCP clients that use stdio transport:
sonar-mcp
# or
python -m sonar_mcp
Streamable HTTP Mode
For web-based clients or remote access:
# Start server on default port 8000
sonar-mcp --transport streamable-http
# Custom host and port
sonar-mcp --transport streamable-http --host 0.0.0.0 --port 3000
# Using environment variables
SONAR_MCP_TRANSPORT=streamable-http SONAR_MCP_PORT=3000 sonar-mcp
SSE Mode (Server-Sent Events)
For clients that support SSE transport:
sonar-mcp --transport sse --port 8000
Command Line Options
| Option | Description | Default |
|---|---|---|
--transport |
Transport protocol: stdio, sse, streamable-http |
stdio |
--host |
Host address for HTTP transports | 127.0.0.1 |
--port |
Port for HTTP transports | 8000 |
--version |
Show version and exit | - |
Environment Variables
| Variable | Description | Required |
|---|---|---|
SONAR_TOKEN |
SonarQube API token | Yes |
SONAR_URL |
SonarQube server URL | Yes |
SONAR_MCP_TRANSPORT |
Default transport mode | No |
SONAR_MCP_HOST |
Default host for HTTP | No |
SONAR_MCP_PORT |
Default port for HTTP | No |
Available Tools
Dispatch Meta-Tools (3 tools, always available)
These 3 tools provide access to all SonarQube functionality:
| Tool | Description |
|---|---|
sonar_list_categories |
Discover available tools by category |
sonar_get_tool_schema |
Get parameter schema for a specific tool |
sonar_execute_tool |
Execute any tool by name with arguments |
Category: instance (4 tools)
Instance management for SonarQube server connections:
sonar_list_instances- List all configured instancessonar_manage_instance- Create, update, delete instancessonar_select_instance- Set the active instancesonar_test_connection- Test instance connectivity
Category: project (3 tools)
Project operations:
sonar_list_projects- List all accessible projectssonar_get_project- Get project details and metricssonar_detect_project- Auto-detect project from current directory
Category: issue (5 tools)
Issue management:
sonar_list_issues- List issues with filtering (severity, type, status)sonar_get_issue- Get detailed issue informationsonar_transition_issue- Change issue status (resolve, falsepositive, etc.)sonar_add_comment- Add a comment to an issuesonar_bulk_transition- Bulk transition multiple issues
Category: quality (2 tools)
Quality gate operations:
sonar_get_quality_gate- Get quality gate status (OK/ERROR)sonar_check_goals- Validate against quality goals
Category: metrics (3 tools)
Metrics retrieval:
sonar_get_metrics- Get project metricssonar_get_coverage- Get coverage percentagesonar_get_file_coverage- Get file-level coverage details
Category: rules (1 tool)
Rule information:
sonar_get_rule- Get rule details and remediation guidance
Category: task (3 tools)
Async task management:
sonar_get_task- Get task statussonar_list_tasks- List background taskssonar_cancel_task- Cancel a running task
MCP Resources
Browseable URI-based access to SonarQube data:
| URI Pattern | Description |
|---|---|
sonarqube://projects |
List all projects |
sonarqube://projects/{key} |
Get project details |
sonarqube://projects/{key}/issues |
Get project issues |
sonarqube://projects/{key}/issues/{severity} |
Get issues by severity |
sonarqube://projects/{key}/metrics |
Get project metrics |
sonarqube://projects/{key}/quality-gate |
Get quality gate status |
MCP Prompts
Reusable prompt templates for code quality workflows:
| Prompt | Description |
|---|---|
code_review |
Review code issues and suggest fixes |
fix_issues |
Generate fix recommendations for issues |
quality_report |
Generate quality report for a project |
quality_goals |
Check project against quality goals |
security_audit |
Perform security vulnerability audit |
vulnerability_fix |
Generate fixes for security vulnerabilities |
Development
Setup
# Clone the repository
git clone https://github.com/wadew/sonar-mcp.git
cd sonar-mcp
# Create virtual environment
uv venv
source .venv/bin/activate
# Install dependencies
uv pip install -e ".[dev]"
Testing
# Run all tests with coverage
pytest tests/ -v --cov=src/sonar_mcp --cov-report=term-missing
# Run with coverage enforcement (80% minimum)
pytest tests/ -v --cov=src/sonar_mcp --cov-fail-under=80
Linting
# Check linting
ruff check src/ tests/
# Format code
ruff format src/ tests/
# Type checking
mypy src/
License
MIT License - see LICENSE for details.
Contributing
- Follow TDD (Test-Driven Development) - write tests first
- Maintain 80% coverage on ALL modules
- Ensure all linting and type checks pass
- Use conventional commits
See CONTRIBUTING.md for detailed guidelines.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sonar_mcp-1.1.0.tar.gz.
File metadata
- Download URL: sonar_mcp-1.1.0.tar.gz
- Upload date:
- Size: 56.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
035d55509c126e01e8c549f5471b68e50a55ed310172a4b7f37611458e839926
|
|
| MD5 |
ffb779203290fa911547bb4ac47b1eb4
|
|
| BLAKE2b-256 |
4c819cb9c76df8b455a66b07ea52ad9a7af68eb53b7d71b2202a046dbed809dd
|
File details
Details for the file sonar_mcp-1.1.0-py3-none-any.whl.
File metadata
- Download URL: sonar_mcp-1.1.0-py3-none-any.whl
- Upload date:
- Size: 60.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e221e6f0f602a576f8324ed2c0ad08e6b12faa475b3850d42206a8c89eed8c08
|
|
| MD5 |
31653caf9e5a5d4ce3b94a27cb99d597
|
|
| BLAKE2b-256 |
2c6ee40aee4b1ccfc757edcb996f70831f63200e44d81e5c3ac9581d80509b42
|