sonar-mcp

sonar-mcp

A Model Context Protocol (MCP) server for interacting with SonarQube code quality platform.

Category
访问服务器

README

SonarQube MCP Server

PyPI version Python 3.11+ License: MIT Coverage

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 instances
  • sonar_manage_instance - Create, update, delete instances
  • sonar_select_instance - Set the active instance
  • sonar_test_connection - Test instance connectivity

Category: project (3 tools)

Project operations:

  • sonar_list_projects - List all accessible projects
  • sonar_get_project - Get project details and metrics
  • sonar_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 information
  • sonar_transition_issue - Change issue status (resolve, falsepositive, etc.)
  • sonar_add_comment - Add a comment to an issue
  • sonar_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 metrics
  • sonar_get_coverage - Get coverage percentage
  • sonar_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 status
  • sonar_list_tasks - List background tasks
  • sonar_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

  1. Follow TDD (Test-Driven Development) - write tests first
  2. Maintain 80% coverage on ALL modules
  3. Ensure all linting and type checks pass
  4. Use conventional commits

See CONTRIBUTING.md for detailed guidelines.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
mcp-server-qdrant

mcp-server-qdrant

这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。

官方
精选
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选