sonarqube-api-mcp
Provides read-only access to the SonarQube Web API, enabling issue retrieval, quality gate status checks, rule details, component measures, and source code context for project analysis.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sonarqube-api-mcpget fix plan for new code issues in project hvmb-app"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
sonarqube-api-mcp
Docker-free SonarQube MCP server for read-only access to the SonarQube Web API.
Run it with:
npx sonarqube-api-mcpRequirements
Node.js 20+
SonarQube token with permission to browse the target project
No Docker
This package uses the public SonarQube Web API only. It does not use private SonarQube UI GraphQL endpoints.
It is designed for coding-agent workflows like:
"fix all new code issues"
"fix all overall code issues"
"fix issues for this SonarQube project name"
The server stays read-only: it fetches SonarQube issues, source context, rule details, and quality data so the calling agent can edit the checked-out repository.
Related MCP server: sonarqube-mcp
Configuration
Configure the server entirely through environment variables in mcp.json.
Variable | Required | Description |
| Yes | SonarQube base URL. Trailing slashes are normalized. |
| Yes | SonarQube token. Sent as Basic Auth using |
| No | Default project key used by project-scoped tools when |
Startup fails clearly when SONAR_HOST_URL or SONAR_TOKEN is missing.
Published package usage
{
"mcpServers": {
"sonarqube": {
"command": "npx",
"args": ["-y", "sonarqube-api-mcp"],
"env": {
"SONAR_HOST_URL": "https://sonarqube.yourcompany.com",
"SONAR_TOKEN": "YOUR_SONAR_TOKEN",
"SONAR_PROJECT_KEY": "hvmb-app"
}
}
}
}Local package development
Build first:
npm install
npm run buildThen point your MCP client at the compiled entrypoint:
{
"mcpServers": {
"sonarqube-local": {
"command": "node",
"args": ["/absolute/path/to/sonarqube-api-mcp/dist/index.js"],
"env": {
"SONAR_HOST_URL": "https://sonarqube.yourcompany.com",
"SONAR_TOKEN": "YOUR_SONAR_TOKEN",
"SONAR_PROJECT_KEY": "hvmb-app"
}
}
}
}Default project key
Set SONAR_PROJECT_KEY once and omit projectKey from project-scoped tool calls.
{
"mcpServers": {
"sonarqube": {
"command": "npx",
"args": ["-y", "sonarqube-api-mcp"],
"env": {
"SONAR_HOST_URL": "https://sonarqube.yourcompany.com",
"SONAR_TOKEN": "YOUR_SONAR_TOKEN",
"SONAR_PROJECT_KEY": "hvmb-app"
}
}
}
}Example tool input:
{
"resolved": false,
"severities": ["BLOCKER", "CRITICAL"]
}Per-tool project override
Every project-scoped tool accepts projectKey or projectName, which override SONAR_PROJECT_KEY for that call.
{
"projectKey": "another-project",
"branch": "main",
"metricKeys": ["coverage", "bugs", "vulnerabilities"]
}If your infrastructure creates a SonarQube project per branch, pass the SonarQube project name directly:
{
"projectName": "repo-name-feature-branch",
"scope": "new_code"
}If a name matches multiple projects, the tool returns candidates and asks the caller to retry with projectKey.
Tools
search_sonar_projects
Searches /api/projects/search to find project keys by SonarQube project name or key.
Inputs:
queryoptional stringpageSizeoptional number, defaults to100
get_sonar_fix_plan
Gets unresolved issues grouped by file for agentic fixing workflows.
Use this for prompts like "fix all new code issues" or "fix all overall code issues".
Inputs:
projectKeyoptional, falls back toSONAR_PROJECT_KEYprojectNameoptional, resolved through/api/projects/searchscopeoptional,new_codeoroverall, defaults tonew_codebranchoptionalpullRequestoptionalseveritiesoptional string arraystatusesoptional string arraytypesoptional string arrayimpactSeveritiesoptional string array for newer SonarQube versionsimpactSoftwareQualitiesoptional string array for newer SonarQube versionspageSizeoptional number, defaults to100maxIssuesoptional number, defaults to200includeSourceoptional boolean, defaults totrueincludeRulesoptional boolean, defaults tofalsecontextLinesoptional number, defaults to5
Example for new code:
{
"projectName": "hvmb-app-feature-branch",
"scope": "new_code",
"includeSource": true,
"includeRules": true
}Example for overall code:
{
"projectKey": "hvmb-app",
"scope": "overall",
"maxIssues": 500
}Returns clean JSON with:
resolved project identity
issue count and truncation flag
optional rule details keyed by rule key
files sorted by issue count
issues per file
merged source ranges around affected lines
get_sonar_issue_context
Gets one issue plus surrounding source lines and optional rule details.
Inputs:
issueKeyrequiredbranchoptionalpullRequestoptionalcontextLinesoptional number, defaults to5includeRuleoptional boolean, defaults totrue
search_sonar_issues
Searches /api/issues/search and handles pagination.
Inputs:
projectKeyoptional, falls back toSONAR_PROJECT_KEYprojectNameoptional, resolved through/api/projects/searchbranchoptionalpullRequestoptionalseveritiesoptional string arraystatusesoptional string arraytypesoptional string arrayimpactSeveritiesoptional string array for newer SonarQube versionsimpactSoftwareQualitiesoptional string array for newer SonarQube versionsinNewCodePeriodoptional booleanresolvedoptional boolean, defaults tofalsepageSizeoptional number, defaults to100
Returns clean JSON with issue key, rule, severity, type, message, component, filePath, line, textRange, effort, status, and tags.
get_quality_gate_status
Calls /api/qualitygates/project_status.
Inputs:
projectKeyoptional, falls back toSONAR_PROJECT_KEYprojectNameoptional, resolved through/api/projects/searchbranchoptionalpullRequestoptional
get_rule_details
Calls /api/rules/show.
Inputs:
ruleKeyrequired
get_component_measures
Calls /api/measures/component.
Inputs:
projectKeyoptional, falls back toSONAR_PROJECT_KEYprojectNameoptional, resolved through/api/projects/searchmetricKeysrequired string arraybranchoptionalpullRequestoptional
get_sonar_sources
Calls /api/sources/lines.
Inputs:
componentrequiredfromoptional numbertooptional numberbranchoptionalpullRequestoptional
Errors
SonarQube API errors are wrapped as JSON strings containing:
endpointstatusmessage
HTML error pages are never returned directly.
Development
npm install
npm run buildprepublishOnly runs the build before publishing.
Available Tools
8 toolsget_component_measuresGet component measuresC
Get read-only SonarQube component measures for metric keys.
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | No | ||
| projectName | No | ||
| branch | No | ||
| pullRequest | No | ||
| metricKeys | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior but only states 'read-only'. It omits details about authentication, rate limits, or side effects, which is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While the description is only one sentence, it is overly sparse and fails to include critical information, sacrificing completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, and no annotations, the description is grossly incomplete. It lacks any context on parameter usage, return values, or operational constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the description does not explain any parameters (e.g., projectKey, metricKeys). This leaves the agent without necessary guidance on how to fill in the fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets SonarQube component measures for metric keys, using a specific verb and resource that distinguishes it from sibling tools like get_quality_gate_status or search_sonar_issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as search_sonar_projects or get_rule_details, leaving the agent to infer context without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quality_gate_statusGet quality gate statusC
Get read-only SonarQube quality gate status for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | No | ||
| projectName | No | ||
| branch | No | ||
| pullRequest | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits but only mentions 'read-only'. Missing effects of invalid inputs, rate limits, or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded, but given the lack of parameter guidance it feels under-specified rather than efficiently concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 optional parameters and no output schema, the description fails to explain how to construct a query or interpret results, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no information about any of the 4 parameters, leaving their meaning and usage entirely ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves read-only SonarQube quality gate status for a project. Uses specific verb and resource, differentiating it from sibling tools that focus on measures, rules, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies read-only usage but provides no explicit guidance on when to use this tool versus alternatives, nor any prerequisites such as required project key.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rule_detailsGet rule detailsC
Get read-only SonarQube rule details.
| Name | Required | Description | Default |
|---|---|---|---|
| ruleKey | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. Only states 'read-only' which is already implied by the verb. Missing details on error handling, rate limits, authentication, or what happens with invalid ruleKey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence is concise but too minimal. It lacks necessary details to be truly helpful. Structure is front-loaded but insufficient for the information content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not explain the return value or differentiate from sibling tools effectively. Given the simplicity (1 param, no output schema), it could be complete with minimal addition but falls short.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description provides no information about the 'ruleKey' parameter. The parameter's purpose (e.g., format or examples) is absent, leaving the agent to infer from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Get', resource 'rule details', and specifies 'read-only' to indicate safe operation. The tool's purpose is distinct from sibling tools like search_sonar_issues or get_component_measures.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for read-only rule details but provides no explicit guidance on when to use this tool versus alternatives like search_sonar_issues or get_component_measures. No when-not-to-use or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sonar_fix_planGet SonarQube fix planA
Return unresolved SonarQube issues grouped by file with optional source context for fixing new-code or overall-code issues.
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | No | ||
| projectName | No | ||
| branch | No | ||
| pullRequest | No | ||
| scope | No | new_code | |
| severities | No | ||
| statuses | No | ||
| types | No | ||
| impactSeverities | No | ||
| impactSoftwareQualities | No | ||
| pageSize | No | ||
| maxIssues | No | ||
| includeSource | No | ||
| includeRules | No | ||
| contextLines | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states what the tool returns. It does not disclose any behavioral traits like authorization needs, rate limits, or side effects, which is insufficient for a tool with 15 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence conveys the core action and scope, but it is dense and could be split for readability. Still efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description gives only a high-level shape (grouped by file, optional source context). It lacks details on response structure and parameter explanations, leaving many gaps for a tool with 15 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and 15 parameters, but the description does not explain any parameter meaning or behavior. Parameters like impactSeverities, impactSoftwareQualities, and contextLines remain ambiguous without schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns unresolved SonarQure issues grouped by file with optional source context for two scopes (new-code or overall-code). This differentiates it from siblings like search_sonar_issues or get_sonar_issue_context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a fix plan aggregated by file is needed, but does not explicitly exclude cases or mention alternatives. It is clear enough given sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sonar_issue_contextGet issue contextB
Get one SonarQube issue with source lines around the affected range.
| Name | Required | Description | Default |
|---|---|---|---|
| issueKey | Yes | ||
| branch | No | ||
| pullRequest | No | ||
| contextLines | No | ||
| includeRule | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only indicates a read operation ('Get'). It omits details like authentication requirements, error handling for invalid keys, or any side effects, which is insufficient for a tool with no other behavioral documentation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, 14-word sentence that efficiently conveys the core function. It is front-loaded with the verb and resource. However, it could be slightly more informative without becoming verbose, e.g., mentioning the optional parameters briefly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no output schema, and no annotations, the description is incomplete. It does not explain how contextLines affects output, what includeRule does, or how branch/pullRequest filter results. The return format is also unmentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so parameters are undocumented in the schema itself. The description adds minimal value by hinting at context lines ('source lines around the affected range'), but does not explain the roles of branch, pullRequest, or includeRule, leaving them underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a single SonarQube issue with surrounding source lines, using specific verb 'Get' and resource 'one SonarQube issue'. It effectively distinguishes from sibling tools like search_sonar_issues (multiple issues) or get_sonar_sources (raw source without issue context).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a specific issue with context lines but does not explicitly state when to use this over siblings. No exclusions or alternatives are provided, leaving the agent to infer based on the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sonar_sourcesGet source linesA
Get read-only SonarQube source lines for a component.
| Name | Required | Description | Default |
|---|---|---|---|
| component | Yes | ||
| from | No | ||
| to | No | ||
| branch | No | ||
| pullRequest | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions 'read-only,' indicating non-destructive behavior. However, with no annotations, it lacks detail on permissions, output format, or edge cases (e.g., empty results).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundant text, front-loaded with the essential action. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and no annotations, the description is too brief. It omits details on return value, optional vs required parameters, and usage constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has zero description coverage (0%), so description must compensate. It fails to explain the meaning of 'component,' 'from,' 'to,' 'branch,' or 'pullRequest,' offering little beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get read-only SonarQube source lines for a component,' specifying verb, resource, and context. It distinguishes from sibling tools by focusing on source lines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage when source lines are needed but provides no explicit guidance on when to use this tool versus alternatives (e.g., searching for source, fetching measures). No exclusions or context are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_sonar_issuesSearch SonarQube issuesC
Search read-only SonarQube issues through /api/issues/search.
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | No | ||
| projectName | No | ||
| branch | No | ||
| pullRequest | No | ||
| severities | No | ||
| statuses | No | ||
| types | No | ||
| impactSeverities | No | ||
| impactSoftwareQualities | No | ||
| inNewCodePeriod | No | ||
| resolved | No | ||
| pageSize | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the tool is 'read-only', which is a key behavioral trait. However, no annotations are provided, so the description carries the full burden. It fails to disclose other behaviors such as pagination behavior (the schema has pageSize with default 100, but not described), error handling, or rate limits. This is insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but at the expense of necessary detail. It is front-loaded with the action and resource, but the lack of structure and additional information makes it less effective. For 12 parameters, more detail is needed while remaining concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 12 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain the return format, sorting options, or any constraints like required permissions. An agent has insufficient context to use this tool reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the input schema provides no descriptions for any of the 12 parameters. The description also offers no explanation of parameters like projectKey, severities, or logic for filtering. Without any semantic help, an agent cannot correctly invoke this tool with proper parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search' and resource 'SonarQube issues', and notes it's read-only against a specific API endpoint. This adequately explains the tool's basic function. However, it does not differentiate from sibling tools like 'get_sonar_fix_plan' or 'search_sonar_projects', but the name itself is sufficiently specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't mention cases where another tool like 'get_sonar_issue_context' might be more appropriate. With no usage notes or exclusions, an agent lacks context for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_sonar_projectsSearch SonarQube projectsB
Find SonarQube project keys by project name or key.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| pageSize | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist; description lacks behavioral details such as pagination via pageSize, read-only nature, or what happens with empty queries. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no redundant information. Efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without annotations or output schema, description should cover pagination and result interpretation. It only covers query purpose, leaving pageSize and output undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. Description adds meaning for query (by name or key) but ignores pageSize, which has default and max. Incomplete parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool finds SonarQube project keys by name or key, using specific verb and resource. It distinguishes from sibling tools like search_sonar_issues which targets issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like get_quality_gate_status or get_component_measures. Lacks context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.2.0- First observed
get_component_measures - First observed
get_quality_gate_status - First observed
get_rule_details - First observed
get_sonar_fix_plan - First observed
get_sonar_issue_context - First observed
get_sonar_sources - First observed
search_sonar_issues - First observed
search_sonar_projects
TDQS
Scored across 8 tools
Each tool targets a distinct aspect of SonarQube (measures, quality gate, rules, issues, sources, projects) with no overlapping purposes. An agent can clearly differentiate between them.
Tools mostly follow a verb_noun pattern, but there is inconsistency in the use of the 'sonar' prefix: some include it (get_sonar_fix_plan) while others do not (get_component_measures). This mixed style reduces clarity.
Eight tools is well-scoped for a SonarQube API server, covering the core read operations without being excessive or insufficient.
The tool surface covers essential read-only operations (measures, quality gate, rules, issues, sources, projects). Minor gaps like a dedicated list_rules tool are present, but agents can work around using search_sonar_issues.
Maintenance
Related MCP Connectors
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
Read-only MCP server for AIStatusDashboard status, incidents, metrics, and fallback recommendations.
Read-only AI coding tools for change verification, release readiness, capacity, and guidance.
Read-only MCP server: let AI agents read your ORANO saved-video library, tasks, and memory.
Related MCP Servers
- FlicenseAqualityDmaintenanceA read-only MCP server that provides AI assistants with structured access to SonarQube projects, issues, metrics, and rules. It enables safe analysis of code quality and security findings through a set of validated, safety-first tools.6-
- AlicenseAqualityBmaintenanceAn MCP server for SonarQube that enables LLM agents to discover projects, analyze code quality metrics, check Quality Gate status, search issues with filters, and rank projects by worst-performing metrics. It provides read-only, safe access to SonarQube instances with structured outputs and error handling.551 PyPIMIT
- AlicenseAqualityDmaintenanceA Model Context Protocol (MCP) server for interacting with SonarQube code quality platform.31MIT
- AlicenseCqualityDmaintenanceA Python MCP server for SonarQube, enabling AI agents to query projects, issues, quality gates, coverage, and security hotspots.13MIT