Skip to main content
Glama
dozzman
by dozzman
README.md
# SonarCloud MCP Server

An MCP server that provides tools for fetching SonarCloud issues related to pull requests.

**Example prompt:**
> Fetch the list of OPEN or ACCEPTED issues from sonarcloud for this PR, which are assigned to **\_\_me\_\_**, fix them and push the changes to this PR.

Emphasis on the **\_\_me\_\_** part, which is a special value in the sonarcloud API to reference the current user (token owner). You can stick this in your `.claude/tools` folder as `sonarcloud-issues.md` to have a shortcut which requests claude code to fetch and fix issues from SonarCloud.


## Features

- Fetch issues from SonarCloud for specific pull requests
- Filter by organization, project, and PR number
- Supports authentication via API token
- Returns formatted issue data with severity, type, and location information

## Installation

### Prerequisite: Generate a SonarCloud API token
Follow the instructions in the [SonarCloud documentation](https://docs.sonarsource.com/sonarqube-cloud/managing-your-account/managing-tokens/) to generate a SonarCloud API token.

### Option 1: Docker (Recommended)

```bash
# Build the Docker image
npm run docker:build

# Or build directly
docker build -t sonarcloud-mcp .
```

### Option 2: Local Installation

```bash
npm ci
npm run build
```

## Usage

### Docker Usage
Run via docker:
```bash
docker run -i --rm \
  -e SONARCLOUD_TOKEN=your_token_here \
  -e SONARCLOUD_ORGANISATION=your_organisation_here \
  -e SONARCLOUD_PROJECT_KEY=your_project_key_here \
  sonarcloud-mcp
```

### Local Usage

Export the required environment variables and run the server:
```bash
export SONARCLOUD_TOKEN=your_token_here
export SONARCLOUD_ORGANISATION=your_organisation_here
export SONARCLOUD_PROJECT_KEY=your_project_key_here
npm start
```

### Environment Variables

- `SONARCLOUD_TOKEN`: Your SonarCloud API token (required)j
- `SONARCLOUD_ORGANISATION`: Your SonarCloud organization key (optional, can be passed as a parameter)
- `SONARCLOUD_PROJECT_KEY`: Your SonarCloud project key (optional, can be passed as a parameter)


## Claude Desktop / Claude Code Integration

### Docker Configuration (Recommended)

Add to your `claude_desktop_config.json` or `claude.json`:

```json
{
  "mcpServers": {
    "sonarcloud": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SONARCLOUD_TOKEN",
        "-e",
        "SONARCLOUD_ORGANISATION",
        "-e",
        "SONARCLOUD_PROJECT_KEY",
        "sonarcloud-mcp"
      ],
      "env": {
        "SONARCLOUD_TOKEN": "<your token here>",
        "SONARCLOUD_ORGANISATION": "<your organisation here>",
        "SONARCLOUD_PROJECT_KEY": "<your project key here>"
      }
    }
  }
}
```

### Local Configuration

Add to your `claude_desktop_config.json` or `claude.json`:

```json
{
  "mcpServers": {
    "sonarcloud-mcp": {
      "command": "node",
      "args": [
        "/path/to/sonarcloud_mcp/dist/index.js"
      ],
      "env": {
        "SONARCLOUD_TOKEN": "<your token here>",
        "SONARCLOUD_ORGANISATION": "<your organisation here>",
        "SONARCLOUD_PROJECT_KEY": "<your project key here>"
      }
    }
  }
}
```

### Available Tools
- `fetch_sonarcloud_issues`: Fetches SonarCloud issues for a specific pull request.

TDQS

B3.2/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one fetches issues, the other provides a summary. There is no overlap or ambiguity between them.

Naming Consistency5/5

Both tools follow a consistent 'verb_noun' naming pattern (fetch_sonarcloud_issues, summarize_sonarcloud_issues), making the naming predictable and clear.

Tool Count3/5

With only 2 tools, the server feels thin. While it may serve a narrow purpose, the tool count is at the borderline of being insufficient for a typical server scope.

Completeness3/5

The tools cover fetching and summarizing issues for a PR, but are missing operations like retrieving details for a single issue or listing all issues for a project. The surface is notably incomplete for broader SonarCloud operations.

Maintenance

ActivityInactive
ResponsivenessNo issues