SonarQube MCP Server

공식

SonarQube Server 또는 Cloud와의 원활한 통합을 제공하며, 에이전트 컨텍스트 내에서 직접 코드 스니펫 분석을 가능하게 합니다.

문서

SonarQube MCP 서버

Build Quality Gate Status

SonarQube MCP 서버는 코드 품질 및 보안을 위해 SonarQube Server 또는 Cloud와의 원활한 통합을 가능하게 하는 Model Context Protocol (MCP) 서버입니다. 또한 에이전트 컨텍스트 내에서 직접 코드 스니펫 분석을 지원합니다.

빠른 설정

보안 모범 사례

🔒 중요: SonarQube 토큰은 민감한 자격 증명입니다. 다음 보안 관행을 따르세요:

CLI 명령어 사용 시:

  • 명령줄 인수에 토큰을 하드코딩하지 마세요 – 셸 히스토리에 저장됩니다
  • 환경 변수 사용 – 명령어 실행 전에 환경 변수에 토큰을 설정하세요

구성 파일 사용 시:

  • 버전 관리에 토큰을 커밋하지 마세요
  • 가능한 경우 구성 파일에서 환경 변수 치환을 사용하세요

🚀 구성 생성

시작하는 가장 빠른 방법은 SonarQube MCP 서버 구성 생성기 – 선호하는 AI 에이전트 클라이언트에 바로 사용할 수 있는 구성을 생성하는 대화형 도구입니다.

수동 설정

직접 구성하는 것을 선호하는 경우, sonarsource/sonarqube-mcp의 컨테이너 이미지를 사용하는 것이 가장 간단한 방법입니다. 자동 업데이트를 위해 sonarsource/sonarqube-mcp을 사용하거나( --pull=always 포함), 재현 가능한 배포를 위해 버전 태그(예: sonarsource/sonarqube-mcp:1.19.0.2785)로 고정하세요. 로컬에서 빌드하려면 아래를 읽어보세요.

참고: 아래 예제에서는 docker을 사용하지만, 모든 OCI 호환 컨테이너 런타임(예: Podman, nerdctl)이 작동합니다. docker를 선호하는 도구로 바꾸기만 하면 됩니다.

Antigravity

SonarQube MCP 서버는 Antigravity MCP 스토어에서 사용할 수 있습니다. 다음 지침을 따르세요:

  1. 에이전트 사이드 패널을 엽니다
  2. 오른쪽 상단의 점 세 개(...)를 클릭하고 MCP 서버를 선택합니다
  3. SonarQube을 검색하고 설치를 선택합니다
  4. 필요한 SonarQube 사용자 토큰을 제공합니다. SonarQube Cloud의 경우 조직 키를, SonarQube Server에 연결하는 경우 SonarQube URL을 제공할 수도 있습니다.

SonarQube Cloud US의 경우 URL을 https://sonarqube.us로 설정하세요.

또는 mcp_config.json을 통해 서버를 수동으로 구성할 수 있습니다:

  • SonarQube Cloud에 연결하려면:

에이전트 사이드 패널에서 점 세 개(...) -> MCP 스토어 -> MCP 서버 관리 -> 원시 구성 보기를 클릭하고 다음을 추가합니다:

{
  "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>"
      }
    }
  }
}

SonarQube Cloud US의 경우 "SONARQUBE_URL": "https://sonarqube.us"env 섹션에, "-e", "SONARQUBE_URL"args 배열에 수동으로 추가하세요.

  • 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
  • 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

SonarQube Cloud US의 경우 명령어에 --env SONARQUBE_URL=https://sonarqube.us을 추가하세요.

  • 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

~/.codex/config.toml에 있는 구성 파일을 수동으로 편집하고 다음 구성을 추가하세요:

  • 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>" }

SonarQube Cloud US의 경우 "SONARQUBE_URL" = "https://sonarqube.us"env 섹션에, "-e", "SONARQUBE_URL"args 배열에 추가하세요.

  • 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
  • SonarQube Cloud에 연결하려면:

Install for SonarQube Cloud

SonarQube Cloud US의 경우 설치 후 MCP 구성의 env 섹션에 "SONARQUBE_URL": "https://sonarqube.us"을 수동으로 추가하세요.

  • SonarQube Server에 연결하려면:

Install for SonarQube Server

Gemini CLI

참고: Gemini CLI 확장 프로그램이 sonarqube-agent-plugins 리포지토리로 이동되었습니다. 앞으로는 여기에서 설치하세요.

다음 명령어를 사용하여 MCP 서버 확장 프로그램을 설치할 수 있습니다:

gemini extensions install https://github.com/SonarSource/sonarqube-agent-plugins

Gemini를 시작하기 전에 필요한 환경 변수를 설정해야 합니다:

필수 환경 변수:

  • SonarQube Cloud의 경우:

    • SONARQUBE_TOKEN - SonarQube Cloud 토큰
    • SONARQUBE_ORG - 조직 키
    • SONARQUBE_URL - (선택 사항) SonarQube Cloud US의 경우 https://sonarqube.us로 설정
  • SonarQube Server의 경우:

    • SONARQUBE_TOKEN - SonarQube Server USER 토큰
    • SONARQUBE_URL - SonarQube Server URL

설치가 완료되면 확장 프로그램은 <home>/.gemini/extensions/sonarqube/gemini-extension.json 아래에 설치됩니다.

GitHub Copilot CLI

Copilot CLI를 시작한 후 다음 명령어를 실행하여 SonarQube MCP 서버를 추가하세요:

/mcp add

MCP 서버에 대한 다양한 정보를 제공해야 하며, 탭을 사용하여 필드 간에 이동할 수 있습니다.

  • 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: *

SonarQube Cloud US의 경우 Arguments에 -e, SONARQUBE_URL를, Environment Variables에 SONARQUBE_URL=https://sonarqube.us을 추가하세요.

  • 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: *

구성 파일은 ~/.copilot/mcp-config.json에 있습니다.

GitHub Copilot 코딩 에이전트

GitHub Copilot 코딩 에이전트는 CI/CD에서 직접 SonarQube MCP 서버를 활용할 수 있습니다.

Copilot 환경에 시크릿을 추가하려면 Copilot 문서를 따르세요. COPILOT_MCP_ 접두사가 붙은 시크릿만 MCP 구성에 사용할 수 있습니다.

GitHub 리포지토리에서 Settings -> Copilot -> Coding agent로 이동하여 MCP 구성 섹션에 다음 구성을 추가하세요:

  • 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": ["*"]
    }
  }
}

SonarQube Cloud US의 경우 "-e", "SONARQUBE_URL"args 배열에, "SONARQUBE_URL": "COPILOT_MCP_SONARQUBE_URL"env 섹션에 추가한 다음 시크릿 COPILOT_MCP_SONARQUBE_URL=https://sonarqube.us을 설정하세요.

  • 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

작업 공간 디렉터리에 .kiro/settings/mcp.json 파일을 생성하고(이미 존재하는 경우 편집) 다음 구성을 추가하세요:

  • 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": []
    }
  }
}

SonarQube Cloud US의 경우 "-e", "SONARQUBE_URL"args 배열에, "SONARQUBE_URL": "https://sonarqube.us"env 섹션에 추가하세요.

  • 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

다음 버튼을 사용하여 VS Code 내에서 설치 프로세스를 간소화할 수 있습니다.

Install for SonarQube Cloud

SonarQube Cloud US의 경우 설치 후 MCP 구성의 env 섹션에 "SONARQUBE_URL": "https://sonarqube.us"을 수동으로 추가하세요.

Install for SonarQube Server

Windsurf

SonarQube MCP 서버는 Windsurf 플러그인으로 사용할 수 있습니다. 다음 지침을 따르세요:

  1. Windsurf 설정 > Cascade > MCP 서버를 열고 MCP 마켓플레이스 열기를 선택합니다
  2. Cascade MCP 마켓플레이스에서 sonarqube을 검색합니다
  3. SonarQube MCP 서버를 선택하고 설치를 선택합니다
  4. 필요한 SonarQube 사용자 토큰을 추가합니다. 그런 다음 SonarQube Cloud에 연결하려면 조직 키를, SonarQube Server 또는 Community Build에 연결하려면 SonarQube URL을 추가합니다.

SonarQube Cloud US의 경우 URL을 https://sonarqube.us로 설정하세요.

Zed

Zed의 확장 보기로 이동하여 SonarQube MCP Server를 검색합니다. 확장 프로그램을 설치할 때 필요한 환경 변수를 제공하라는 메시지가 표시됩니다:

  • SonarQube Cloud 사용 시:
{
  "sonarqube_token": "YOUR_SONARQUBE_TOKEN",
  "sonarqube_org": "SONARQUBE_ORGANIZATION_KEY",
  "docker_path": "DOCKER_PATH"
}

SonarQube Cloud US의 경우 구성에 "sonarqube_url": "https://sonarqube.us"을 추가하세요.

  • SonarQube Server 사용 시:
{
  "sonarqube_token": "YOUR_SONARQUBE_USER_TOKEN",
  "sonarqube_url": "YOUR_SONARQUBE_SERVER_URL",
  "docker_path": "DOCKER_PATH"
}

docker_path은 docker 실행 파일의 경로입니다. 예시:

Linux/macOS: /usr/bin/docker 또는 /usr/local/bin/docker

Windows: C:\Program Files\Docker\Docker\resources\bin\docker.exe

💡 팁: 최신 기능과 수정 사항을 확보하려면 정기적으로 또는 문제를 보고하기 전에 최신 이미지를 가져오는 것이 좋습니다.

수동 설치

MCP 서버 구성 파일에 다음 스니펫을 복사하여 SonarQube MCP 서버를 수동으로 설치할 수 있습니다:

  • 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>"
    }
  }
}
  • 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>"
    }
  }
}

SonarQube for IDE와의 통합

SonarQube MCP 서버는 SonarQube for IDE와 통합하여 개발 워크플로우를 더욱 향상시키고, IDE 내에서 직접 더 나은 코드 분석 및 인사이트를 제공할 수 있습니다.

구성

SonarQube for IDE를 사용할 때 SONARQUBE_IDE_PORT 환경 변수를 올바른 포트 번호로 설정해야 합니다. SonarQube for VS Code에는 올바른 포트 구성을 자동으로 설정하는 빠른 설치 버튼이 포함되어 있습니다.

예를 들어, 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>"
    }
  }
}

Linux의 컨테이너에서 MCP 서버를 실행할 때 컨테이너는 localhost에서 실행 중인 SonarQube for IDE 임베디드 서버에 액세스할 수 없습니다. 컨테이너가 SonarQube for IDE 서버에 연결할 수 있도록 하려면 컨테이너 실행 명령어에 --network=host 옵션을 추가하세요.

구성

환경에 따라 특정 환경 변수를 제공해야 합니다.

기본

MCP 서버를 실행할 때 다음 변수를 추가해야 합니다:

환경 변수설명
STORAGE_PATHSonarQube MCP 서버가 파일을 저장할 쓰기 가능한 디렉터리의 필수 절대 경로(예: 생성, 업데이트 및 지속성 용도), 컨테이너 이미지 사용 시 자동으로 제공됨
SONARQUBE_PROJECT_KEY선택적 기본 프로젝트 키. 설정하면 프로젝트 키가 필요한 모든 도구가 이 값을 자동으로 사용하며, projectKey 매개변수가 스키마에서 완전히 제거됩니다. 단일 프로젝트에서 작업할 때 유용합니다.
SONARQUBE_IDE_PORTSonarQube MCP 서버를 SonarQube for IDE와 연결하는 데 사용되는 64120에서 64130 사이의 선택적 포트 번호.
SONARQUBE_DEBUG_ENABLEDtrue로 설정하면 디버그 로깅이 활성화됩니다. 디버그 로그는 로그 파일과 STDERR에 모두 기록됩니다. 연결 또는 구성 문제 해결에 유용합니다. 기본값: false.
SONARQUBE_LOG_TO_FILE_DISABLEDtrue로 설정하면 디스크에 로그를 쓰는 것을 완전히 비활성화합니다. STORAGE_PATH/logs/ 아래에 로그 파일이 생성되지 않습니다. 파일 로깅이 바람직하지 않은 컨테이너화된 또는 임시 환경에서 유용합니다. 기본값: false.

작업 공간 마운트 (컨텍스트 부풀림 감소)

기본적으로 분석 도구 analyze_code_snippet은 에이전트가 전체 파일 콘텐츠를 fileContent 인수로 전달해야 합니다. 대용량 파일이나 세션에서 많은 파일을 분석할 때 이는 컨텍스트 창 사용량과 비용을 크게 증가시킵니다. 해결책: 프로젝트 디렉터리를 컨테이너의 /app/mcp-workspace에 마운트하세요. 이 마운트가 감지되면 서버는 프로젝트 상대 경로인 filePath 인수를 사용하여 디스크에서 직접 파일을 읽습니다 — 파일 내용이 에이전트 컨텍스트를 통과하지 않습니다.

{
  "args": [
    "run", "-i", "--rm", "--init", "--pull=always",
    "-e", "SONARQUBE_TOKEN",
    "-e", "SONARQUBE_ORG",
    "-v", "/path/to/your/project:/app/mcp-workspace",
    "sonarsource/sonarqube-mcp"
  ]
}

마운트가 활성화된 경우:

  • 조직에 자격이 있으면 run_advanced_code_analysis을(를) 사용할 수 있습니다
  • analyze_code_snippet: filePath이(가) 필요하며 fileContent은(는) 사용되지 않습니다 — 서버가 동일한 방식으로 파일을 확인합니다

선택적 도구 집합 활성화

기본적으로 컨텍스트 오버헤드를 줄이기 위해 중요한 도구 집합만 활성화됩니다. 필요에 따라 추가 도구 집합을 활성화할 수 있습니다.

환경 변수설명
SONARQUBE_TOOLSETS활성화할 도구 집합의 쉼표로 구분된 목록입니다. 설정하면 이 도구 집합만 사용할 수 있습니다. 설정하지 않으면 기본 중요 도구 집합이 활성화됩니다(analysis, issues, projects, quality-gates, rules, duplications, measures, security-hotspots, dependency-risks, coverage, cag). 참고: projects 도구 집합은 다른 작업을 위한 프로젝트 키를 찾는 데 필요하므로 항상 활성화됩니다. 컨텍스트 증강 도구는 stdio 모드에서만 사용할 수 있으며 조직 자격이 필요합니다. Streamable HTTP 모드에서 클라이언트는 SONARQUBE_TOOLSETS HTTP 헤더를 전송하여 요청별로 이를 더 좁힐 수 있지만, 서버가 시작된 도구 집합 이상으로 활성화할 수는 없습니다(아래 Streamable HTTP 전송 참조).
SONARQUBE_READ_ONLYtrue(으)로 설정하면 모든 쓰기 작업(예: 이슈 상태 변경)을 비활성화하는 읽기 전용 모드가 활성화됩니다. 이 필터는 둘 다 설정된 경우 SONARQUBE_TOOLSETS과(와) 누적됩니다. 기본값: false. Streamable HTTP 모드에서 클라이언트는 SONARQUBE_READ_ONLY HTTP 헤더를 전송하여 개별 요청을 읽기 전용으로 추가 제한할 수 있지만, 서버 수준의 읽기 전용 제한을 해제할 수는 없습니다(아래 Streamable HTTP 전송 참조).
사용 가능한 도구 집합
도구 집합설명
분석analysis코드 분석 도구 (로컬 분석 및 고급 원격 분석)
이슈issuesSonarQube 이슈 검색 및 관리
보안 핫스팟security-hotspots보안 핫스팟 검색 및 검토
프로젝트projectsSonarQube 프로젝트 찾아보기 및 검색
품질 게이트quality-gates품질 게이트 및 해당 상태 접근
규칙rulesSonarQube 규칙 찾아보기 및 검색
소스sources소스 코드 및 SCM 정보 접근
중복duplications프로젝트 전반의 코드 중복 찾기
측정값measures메트릭 및 측정값 검색 (측정값 및 메트릭 도구 모두 포함)
언어languages지원되는 프로그래밍 언어 나열
포트폴리오portfolios포트폴리오 및 엔터프라이즈 관리 (Cloud 및 Server)
시스템system시스템 관리 도구 (Server 전용)
웹훅webhooks웹훅 관리
종속성 위험dependency-risks종속성 위험 및 보안 이슈 분석 (SCA)
커버리지coverage테스트 커버리지 분석 및 개선 도구
컨텍스트 증강cag컨텍스트 증강 도구 (stdio 모드 전용, 조직 자격 필요)
에이전트 준비 상태agentic-readiness에이전트 준비 상태 평가 도구 (SonarQube Cloud, 조직 자격 필요)

예시

분석, 이슈 및 품질 게이트 도구 집합 활성화 (SonarQube Cloud와 함께 Docker 사용):

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

참고: projects 도구 집합은 항상 자동으로 활성화되므로 SONARQUBE_TOOLSETS에 포함할 필요가 없습니다.

읽기 전용 모드 활성화 (SonarQube Cloud와 함께 Docker 사용):

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

전체 기능을 활성화하려면 서버를 시작하기 전에 다음 환경 변수를 설정해야 합니다:

환경 변수설명필수
SONARQUBE_TOKENSonarQube Cloud 토큰
SONARQUBE_ORGSonarQube Cloud 조직
SONARQUBE_URL사용자 지정 SonarQube Cloud URL (기본값: https://sonarcloud.io). SonarQube Cloud US에 사용: https://sonarqube.us아니요

예시:

  • SonarQube Cloud: SONARQUBE_TOKENSONARQUBE_ORG만 필요합니다
  • SonarQube Cloud US: SONARQUBE_TOKEN, SONARQUBE_ORGSONARQUBE_URL=https://sonarqube.us 설정

SonarQube Server

환경 변수설명필수
SONARQUBE_TOKENSonarQube Server USER 토큰
SONARQUBE_URLSonarQube Server URL

⚠️ SonarQube Server 연결에는 USER 유형의 토큰이 필요하며 프로젝트 토큰이나 글로벌 토큰을 사용하면 제대로 작동하지 않습니다.

💡 구성 팁 (stdio 모드): SONARQUBE_ORG의 존재 여부에 따라 SonarQube Cloud 또는 Server에 연결하는지 결정됩니다. SONARQUBE_ORG이(가) 설정되어 있으면 SonarQube Cloud가 사용되고, 그렇지 않으면 SonarQube Server가 사용됩니다.

전송 모드

MCP 사양StdioStreamable HTTP의 두 가지 전송 메커니즘을 정의합니다. SonarQube MCP 서버는 둘 다 지원합니다:

MCP 전송서버 모드일반적인 사용
Stdio기본값 (SONARQUBE_TRANSPORT 없음)서버를 하위 프로세스로 시작하는 로컬 MCP 클라이언트 (Cursor, Claude Code, VS Code 등)
Streamable HTTPSONARQUBE_TRANSPORT=http 또는 https원격 또는 다중 사용자 배포; 클라이언트가 HTTP(S)를 통해 /mcp에 연결 (예: 자체 호스팅 서버 URL을 사용하는 Windsurf)

참고: Streamable HTTP는 현재 MCP 네트워크 전송입니다. 이전 MCP 버전의 구형 SSE 전용 HTTP 전송은 더 이상 사용되지 않으며 지원되지 않습니다.

1. Stdio (기본값 - 로컬 개발에 권장)

대부분의 MCP 클라이언트에서 사용되는 로컬 개발 및 단일 사용자 설정에 권장되는 모드입니다.

예시 - SonarQube Cloud와 함께 Docker 사용:

{
  "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 (Streamable HTTP)

암호화되지 않은 Streamable HTTP 전송입니다. 다중 사용자 배포에는 대신 HTTPS를 사용하세요.

⚠️ 권장하지 않음: 로컬 개발에는 Stdio를, 다중 사용자 프로덕션 배포에는 **HTTPS (Streamable HTTP)**를 사용하세요.

환경 변수설명기본값
SONARQUBE_TRANSPORTStreamable HTTP 전송을 활성화하려면 http(으)로 설정설정 안 됨 (stdio)
SONARQUBE_HTTP_PORT포트 번호 (1024-65535)8080
SONARQUBE_HTTP_HOST바인딩할 호스트 (보안을 위해 기본값은 localhost)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSCORS에 허용되는 쉼표로 구분된 브라우저 출처 (예: https://my-app.example.com)설정 안 됨
SONARQUBE_MCP_IN_CONTAINER컨테이너 내부에서 실행 중일 때 true(으)로 설정합니다. 공식 Docker 이미지는 이를 자동으로 설정합니다. 다른 OCI 런타임(Podman, Kubernetes, Nomad 등)을 사용할 때는 직접 설정하세요.false
참고: 스트리밍 가능 HTTP 모드(HTTP 또는 HTTPS)에서 서버는 상태를 유지하지 않습니다. 각 클라이언트 요청에는 사용자 자신의 SonarQube 토큰을 담은 Authorization: Bearer <token> 헤더가 포함되어야 합니다. SonarQube Cloud의 경우 조직은 다음과 같이 결정됩니다.
  • 서버 시작 시 SONARQUBE_ORG이 설정되어 있으면 모든 요청이 해당 조직으로 라우팅됩니다. 클라이언트는 SONARQUBE_ORG 헤더를 보내서는 안 됩니다. 보내면 오류가 발생합니다.
  • 서버 시작 시 SONARQUBE_ORG이 설정되어 있지 않으면 각 클라이언트는 모든 요청에 SONARQUBE_ORG 헤더를 반드시 제공해야 합니다. 클라이언트는 요청별로 SONARQUBE_TOOLSETS 및/또는 SONARQUBE_READ_ONLY 헤더를 제공하여 표시되는 도구 범위를 좁힐 수도 있습니다. 이는 서버 수준 구성에 추가 필터링을 적용하며, 범위를 줄일 수만 있고 확장할 수는 없습니다. 요청 간에 세션 상태는 유지되지 않습니다.

지원 중단됨: SONARQUBE_TOKEN 요청 헤더는 하위 호환성을 위해 계속 허용되지만 향후 버전에서 제거될 예정입니다. Authorization: Bearer <token>으로 마이그레이션하십시오.

3. HTTPS (TLS를 통한 스트리밍 가능 HTTP) (다중 사용자 프로덕션 배포에 권장)

TLS 암호화를 사용하는 보안 스트리밍 가능 HTTP 전송입니다. SSL 인증서가 필요합니다.

프로덕션 환경에 권장: 여러 사용자를 위해 스트리밍 가능 HTTP를 통해 MCP 서버를 배포할 때는 HTTPS를 사용하십시오. 서버는 보안을 위해 기본적으로 127.0.0.1(localhost)에 바인딩됩니다.

환경 변수설명기본값
SONARQUBE_TRANSPORTTLS를 통한 스트리밍 가능 HTTP 전송을 활성화하려면 https으로 설정설정 안 됨 (stdio)
SONARQUBE_HTTP_PORT포트 번호 (일반적으로 HTTPS의 경우 8443)8080
SONARQUBE_HTTP_HOST바인딩할 호스트 (보안을 위해 기본값은 localhost)127.0.0.1
SONARQUBE_HTTP_ALLOWED_ORIGINSCORS에 허용되는 쉼표로 구분된 브라우저 출처 (예: https://my-app.example.com)설정 안 됨
SONARQUBE_MCP_IN_CONTAINER컨테이너 내부에서 실행 중일 때 true로 설정합니다. 공식 Docker 이미지는 이를 자동으로 설정합니다. 다른 OCI 런타임(Podman, Kubernetes, Nomad 등)을 사용할 때는 직접 설정하십시오.false

SSL 인증서 구성 (선택 사항):

환경 변수설명기본값
SONARQUBE_HTTPS_KEYSTORE_PATH키 저장소 파일 경로 (.p12 또는 .jks)/etc/ssl/mcp/keystore.p12
SONARQUBE_HTTPS_KEYSTORE_PASSWORD키 저장소 비밀번호sonarlint
SONARQUBE_HTTPS_KEYSTORE_TYPE키 저장소 유형 (PKCS12 또는 JKS)PKCS12

예시 - SonarQube Cloud를 사용하는 Docker:

참고: 컨테이너에서 실행할 때는 컨테이너가 모든 인터페이스에서 수신 대기하고 런타임의 포트 매핑이 작동하도록 SONARQUBE_HTTP_HOST=0.0.0.0를 설정하고, 서버가 컨테이너 내부에 있음을 알리도록 SONARQUBE_MCP_IN_CONTAINER=true을 설정하십시오. 공식 Docker 이미지는 후자를 자동으로 설정합니다. 다른 OCI 런타임(Podman, Kubernetes, Nomad 등)을 사용할 때는 직접 설정하십시오. 호스트 측 포트 플래그는 컨테이너 외부에서 서버에 접근할 수 있는 주체를 제어합니다. SONARQUBE_HTTP_HOST=0.0.0.0는 서버가 컨테이너 내부에서 수신 대기하는 위치만 제어합니다. 브라우저 CORS는 기본적으로 localhost 출처를 계속 허용합니다.

로컬 머신에서 실행되는 서버의 경우 (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

네트워크에서 접근 가능한 서버의 경우 (원격 배포):

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

클라이언트 구성 (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"
      }
    }
  }
}

클라이언트 구성 (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"
      }
    }
  }
}

참고: SONARQUBE_TOOLSETSSONARQUBE_READ_ONLY은 특정 요청에 대해 서버 수준 도구 집합의 범위를 좁히는 선택적 요청별 헤더입니다. 이들은 범위를 줄일 수만 있으며, 서버가 시작된 구성을 넘어 도구 집합을 활성화하거나 제한을 해제할 수는 없습니다.

참고: 로컬 개발의 경우 대신 Stdio 전송(기본값)을 사용하십시오. HTTPS 스트리밍 가능 HTTP는 적절한 SSL 인증서를 갖춘 다중 사용자 프로덕션 배포를 위한 것입니다.

서비스 엔드포인트

스트리밍 가능 HTTP 모드(http 또는 https)에서 실행할 때 서버는 /mcp의 MCP 엔드포인트 외에도 몇 가지 인증되지 않은 서비스 엔드포인트를 노출합니다. 이는 서비스 간 사용(모니터링, 오케스트레이션, 클라이언트 호환성 확인)을 위한 것이며 Authorization 헤더가 필요하지 않습니다.

엔드포인트메서드설명예시 응답
/healthGET활성 상태 프로브. 서버가 요청을 수락하면 빈 본문과 함께 200 OK을 반환합니다.(빈 본문)
/infoGETMCP 서버 버전을 JSON으로 반환합니다. 배포된 서버 버전을 확인하는 데 유용합니다.{"version":"1.16.0"}

이러한 엔드포인트는 Stdio 전송으로 실행할 때는 사용할 수 없습니다.

사용자 정의 인증서

SonarQube Server가 자체 서명된 인증서 또는 사설 인증 기관(CA)의 인증서를 사용하는 경우, 자동으로 설치될 사용자 정의 인증서를 컨테이너에 추가할 수 있습니다.

구성

볼륨 마운트 사용

컨테이너 실행 시 인증서가 포함된 디렉터리를 마운트합니다.

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

지원되는 인증서 형식

컨테이너는 다음 인증서 형식을 지원합니다.

  • .crt 파일 (PEM 또는 DER 인코딩)
  • .pem 파일 (PEM 인코딩)

인증서를 사용한 MCP 구성

사용자 정의 인증서를 사용할 때 인증서를 마운트하도록 MCP 구성을 수정할 수 있습니다.

{
  "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>"
    }
  }
}

프록시

SonarQube MCP 서버는 표준 Java 프록시 시스템 속성을 통해 HTTP 및 SOCKS5 프록시를 지원합니다.

구성

HTTP/HTTPS 프록시

Java 시스템 속성을 사용하여 프록시 설정을 구성할 수 있습니다. 이는 환경 변수로 설정하거나 JVM 인수로 전달할 수 있습니다.

일반 프록시 속성:

속성설명예시
http.proxyHostHTTP 프록시 호스트 이름proxy.example.com
http.proxyPortHTTP 프록시 포트8080
https.proxyHostHTTPS 프록시 호스트 이름proxy.example.com
https.proxyPortHTTPS 프록시 포트8443
http.nonProxyHosts프록시를 우회하는 호스트 (파이프로 구분)localhost|127.0.0.1|*.internal.com

HTTP/HTTPS 프록시 인증:

속성설명예시
http.proxyUserHTTP 프록시 사용자 이름myuser
http.proxyPasswordHTTP 프록시 비밀번호mypassword
https.proxyUserHTTPS 프록시 사용자 이름myuser
https.proxyPasswordHTTPS 프록시 비밀번호mypassword

SOCKS5 프록시

SOCKS5 프록시가 지원됩니다.

속성설명기본값예시
socksProxyHostSOCKS5 프록시 호스트 이름localhost
socksProxyPortSOCKS5 프록시 포트10801080
java.net.socks.usernameSOCKS5 사용자 이름 (인증 필요 시)myuser
java.net.socks.passwordSOCKS5 비밀번호 (인증 필요 시)mypassword

도구

분석

  • analyze_code_snippet - SonarQube 분석기로 파일 콘텐츠를 분석하여 코드 품질 및 보안 문제를 식별합니다. 정확성을 위해 항상 전체 파일 콘텐츠를 분석합니다. 선택적으로 결과를 특정 코드 조각으로 필터링합니다.

    사용법:

    • 작업 영역이 마운트된 경우 (권장): filePath(프로젝트 상대 경로)을 전달합니다. 서버가 파일을 직접 읽어 파일 콘텐츠가 에이전트 컨텍스트 창에서 제외됩니다.
    • 작업 영역 마운트 없이: 전체 파일 분석을 위해 완전한 fileContent을 전달합니다 (모든 이슈 보고).
    • 선택적 codeSnippet을 추가하여 결과를 필터링합니다. 조각 내의 이슈만 보고됩니다 (조각 위치 자동 감지).

    매개변수:

    • projectKey - SonarQube 프로젝트 키 - 필수 문자열 (SONARQUBE_PROJECT_KEY이 정의된 경우 무시됨)
    • filePath - 분석할 파일의 프로젝트 상대 경로 (예: src/main/java/MyClass.java). 작업 영역이 /app/mcp-workspace에 마운트된 경우 사용됩니다. - 문자열
    • fileContent - 문자열로 된 전체 파일 콘텐츠. 작업 영역이 마운트되지 않은 경우 필수입니다. - 문자열
    • codeSnippet - 이슈를 필터링할 코드 조각 (fileContent의 콘텐츠와 일치해야 함) - 문자열
    • language - 코드 언어 (예: 'java', 'python', 'js', 'ts', 'tsx', 'jsx') - 문자열
    • scope - 파일 범위: MAIN 또는 TEST (기본값: MAIN) - 문자열

    지원 언어: Java, Kotlin, Python, Ruby, Go, JavaScript (js, jsx), TypeScript (ts, tsx), JSP, PHP, XML, HTML, CSS, CloudFormation, Kubernetes, Terraform, Azure Resource Manager, Ansible, Docker, Secrets detection

SonarQube for IDE 통합이 활성화된 경우:

  • analyze_file_list - SonarQube for IDE를 사용하여 현재 작업 디렉터리의 파일을 분석합니다. 이 도구는 실행 중인 SonarQube for IDE 인스턴스에 연결하여 파일 목록에 대한 코드 품질 분석을 수행합니다.

    • file_absolute_paths - 분석할 절대 파일 경로 목록 - 필수 문자열[]
  • toggle_automatic_analysis - SonarQube for IDE 자동 분석을 활성화 또는 비활성화합니다. 활성화되면 SonarQube for IDE가 작업 디렉터리에서 파일이 수정될 때 자동으로 분석합니다. 비활성화되면 자동 분석이 꺼집니다.

    • enabled - 자동 분석 활성화 또는 비활성화 - 필수 부울

SonarQube Cloud 조직에 고급 분석이 활성화된 경우:

작업 영역이 /app/mcp-workspace에 마운트되어 있어야 합니다.

  • run_advanced_code_analysis - SonarQube Cloud에서 단일 파일에 대한 고급 코드 분석을 실행합니다. 조직은 MCP 구성에서 추론됩니다.
    • projectKey - 프로젝트 키 - 필수 문자열 (SONARQUBE_PROJECT_KEY이 정의된 경우 무시됨)
    • branchName - 최신 분석 컨텍스트를 검색하는 데 사용되는 브랜치 이름 - 필수 문자열
    • filePath - 분석할 파일의 프로젝트 상대 경로 (예: src/main/java/MyClass.java). - 필수 문자열
    • fileScope - 파일이 속한 범위 정의: 'MAIN' 또는 'TEST' (기본값: MAIN) - 문자열

커버리지

  • search_files_by_coverage - 커버리지 기준으로 정렬된 프로젝트 내 파일을 검색합니다(오름차순 - 커버리지가 가장 낮은 파일 우선). 이 도구는 테스트 커버리지 개선이 필요한 파일을 식별하는 데 도움을 줍니다.

    • projectKey - 검색할 프로젝트 키 - 필수 문자열 (SONARQUBE_PROJECT_KEY가 정의된 경우 무시됨)
    • branch - 선택적 장기 브랜치 이름(예: main, develop). 유효한 이름을 찾으려면 list_branches를 사용하세요 - 문자열
    • pullRequest - 선택적 풀 리퀘스트 키/ID. 유효한 키를 찾으려면 list_pull_requests를 사용하세요 - 문자열
    • maxCoverage - 최대 커버리지 임계값(0-100). 이 값 이하의 커버리지를 가진 파일만 반환합니다 - 숫자
    • pageIndex - 페이지 인덱스(1부터 시작, 기본값: 1) - 숫자
    • pageSize - 페이지 크기(기본값: 100, 최대: 500) - 숫자
  • get_file_coverage_details - 특정 파일에 대한 라인별 커버리지 정보를 가져옵니다. 여기에는 커버되지 않은 정확한 라인과 부분적으로 커버된 브랜치가 포함됩니다. 이 도구는 테스트 커버리지를 추가해야 할 정확한 위치를 식별하는 데 도움을 줍니다. search_files_by_coverage를 통해 커버리지가 낮은 파일을 식별한 후 사용하세요.

    • key - 파일 키(예: my_project:src/foo/Bar.java) - 필수 문자열
    • branch - 선택적 장기 브랜치 이름(예: main, develop). 유효한 이름을 찾으려면 list_branches를 사용하세요 - 문자열
    • pullRequest - 선택적 풀 리퀘스트 키/ID. 유효한 키를 찾으려면 list_pull_requests를 사용하세요 - 문자열
    • from - 분석할 첫 번째 라인(1부터 시작, 기본값: 1) - 숫자
    • to - 분석할 마지막 라인(포함). 지정하지 않으면 모든 라인이 반환됩니다 - 숫자

종속성 위험

참고: 종속성 위험은 SonarQube Advanced Security가 활성화된 SonarQube Server 2025.4 Enterprise 이상에 연결할 때만 사용할 수 있습니다.

  • search_dependency_risks - 분석된 프로젝트, 애플리케이션 또는 포트폴리오에 나타나는 릴리스와 쌍을 이루는 SonarQube 프로젝트의 소프트웨어 구성 분석 이슈(종속성 위험)를 검색합니다.
    • projectKey - 프로젝트 키 - 필수 문자열 (SONARQUBE_PROJECT_KEY가 정의된 경우 무시됨)
    • branch - 선택적 장기 브랜치 이름(예: main, develop). 유효한 이름을 찾으려면 list_branches를 사용하세요 - 문자열
    • pullRequest - 선택적 풀 리퀘스트 키/ID. 유효한 키를 찾으려면 list_pull_requests를 사용하세요 - 문자열
    • pageIndex - 선택적 페이지 인덱스(1부터 시작, 기본값: 1) - 정수
    • pageSize - 선택적 페이지 크기. 0보다 크고 500보다 작거나 같아야 합니다(기본값: 100) - 정수

엔터프라이즈

참고: 엔터프라이즈는 SonarQube Cloud에 연결할 때만 사용할 수 있습니다.

  • list_enterprises - 액세스 권한이 있는 SonarQube Cloud에서 사용 가능한 엔터프라이즈를 나열합니다. 이 도구를 사용하여 다른 도구와 함께 사용할 수 있는 엔터프라이즈 ID를 찾으세요.
    • enterpriseKey - 결과를 필터링할 선택적 엔터프라이즈 키 - 문자열

이슈

  • change_sonar_issue_status - SonarQube 이슈의 상태를 "accept", "falsepositive" 또는 "reopen"으로 변경합니다.

    • key - 이슈 키 - 필수 문자열
    • status - 새로운 이슈 상태 - 필수 열거형 {"accept", "falsepositive", "reopen"}
  • search_sonar_issues_in_projects - 내 조직의 프로젝트에서 SonarQube 이슈를 검색합니다.

    • projects - 선택적 Sonar 프로젝트 목록 - 문자열[]
    • branch - 선택적 장기 브랜치 이름(예: main, develop). 유효한 이름을 찾으려면 list_branches를 사용하세요 - 문자열
    • pullRequest - 선택적 풀 리퀘스트 키/ID. 유효한 키를 찾으려면 list_pull_requests를 사용하세요 - 문자열
    • severities - 필터링할 선택적 심각도 목록. 가능한 값: INFO, LOW, MEDIUM, HIGH, BLOCKER - 문자열[]
    • impactSoftwareQualities - 필터링할 선택적 소프트웨어 품질 목록. 가능한 값: MAINTAINABILITY, RELIABILITY, SECURITY - 문자열[]
    • issueStatuses - 필터링할 선택적 이슈 상태 목록. 가능한 값: OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED, IN_SANDBOX - 문자열[]
    • issueKey - 특정 이슈를 가져오기 위한 선택적 이슈 키 - 문자열
    • p - 선택적 페이지 번호(기본값: 1) - 정수
    • ps - 선택적 페이지 크기. 0보다 크고 500보다 작거나 같아야 합니다(기본값: 100) - 정수

보안 핫스팟

  • search_security_hotspots - SonarQube 프로젝트에서 보안 핫스팟을 검색합니다.

    • projectKey - 프로젝트 또는 애플리케이션 키 - 필수 문자열 (SONARQUBE_PROJECT_KEY가 정의된 경우 무시됨)
    • hotspotKeys - 검색할 특정 보안 핫스팟 키의 쉼표로 구분된 목록 - 문자열[]
    • branch - 선택적 장기 브랜치 이름(예: main, develop). 유효한 이름을 찾으려면 list_branches를 사용하세요 - 문자열
    • pullRequest - 선택적 풀 리퀘스트 키/ID. 유효한 키를 찾으려면 list_pull_requests를 사용하세요 - 문자열
    • files - 필터링할 선택적 파일 경로 목록 - 문자열[]
    • status - 선택적 상태 필터: TO_REVIEW, REVIEWED - 문자열
    • resolution - 선택적 해결 필터: FIXED, SAFE, ACKNOWLEDGED - 문자열
    • sinceLeakPeriod - 누수 기간(신규 코드) 이후 생성된 핫스팟 필터링 - 부울
    • onlyMine - 나에게 할당된 핫스팟만 표시 - 부울
    • p - 선택적 페이지 번호(기본값: 1) - 정수
    • ps - 선택적 페이지 크기. 0보다 크고 500보다 작거나 같아야 합니다(기본값: 100) - 정수
  • show_security_hotspot - 규칙 세부 정보, 코드 컨텍스트, 흐름 및 주석을 포함하여 특정 보안 핫스팟에 대한 자세한 정보를 가져옵니다.

    • hotspotKey - 보안 핫스팟 키 - 필수 문자열
  • change_security_hotspot_status - 상태를 변경하여 보안 핫스팟을 검토합니다. REVIEWED로 표시할 때는 해결 방법(FIXED, SAFE 또는 ACKNOWLEDGED)을 지정해야 합니다.

    • hotspotKey - 보안 핫스팟 키 - 필수 문자열
    • status - 새 상태 - 필수 열거형 {"TO_REVIEW", "REVIEWED"}
    • resolution - 상태가 REVIEWED일 때의 해결 방법 - 열거형 {"FIXED", "SAFE", "ACKNOWLEDGED"}
    • comment - 선택적 검토 주석 - 문자열

언어

  • list_languages - 이 SonarQube 인스턴스에서 지원되는 모든 프로그래밍 언어를 나열합니다.
    • q - 언어 키/이름을 일치시킬 선택적 패턴 - 문자열

측정값

  • get_component_measures - 컴포넌트(프로젝트, 디렉터리, 파일)에 대한 SonarQube 측정값을 가져옵니다.
    • projectKey - 프로젝트 키 - SONARQUBE_PROJECT_KEY이 구성되지 않은 경우 필수 문자열_
    • branch - 선택적 장기 브랜치 이름(예: main, develop). 유효한 이름을 찾으려면 list_branches를 사용하세요 - 문자열
    • metricKeys - 검색할 선택적 메트릭 키(예: ncloc, complexity, violations, coverage) - 문자열[]
    • pullRequest - 선택적 풀 리퀘스트 키/ID. 유효한 키를 찾으려면 list_pull_requests를 사용하세요 - 문자열

메트릭

  • search_metrics - SonarQube 메트릭을 검색합니다.
    • p - 선택적 페이지 번호(기본값: 1) - 정수
    • ps - 선택적 페이지 크기. 0보다 크고 500보다 작거나 같아야 합니다(기본값: 100) - 정수

포트폴리오

  • list_portfolios - 필터링 및 페이지 매김 옵션을 사용하여 SonarQube에서 사용 가능한 엔터프라이즈 포트폴리오를 나열합니다.

    SonarQube Server의 경우:

    • q - 이름 또는 키로 포트폴리오를 필터링할 선택적 검색 쿼리 - 문자열
    • favorite - true인 경우 즐겨찾는 포트폴리오만 반환합니다 - 부울
    • pageIndex - 선택적 1부터 시작하는 페이지 번호(기본값: 1) - 정수
    • pageSize - 선택적 페이지 크기, 최대 500(기본값: 100) - 정수

    SonarQube Cloud의 경우:

    • enterpriseId - 엔터프라이즈 uuid. 'favorite' 매개변수가 true 값으로 제공된 경우에만 생략할 수 있습니다 - 문자열
    • q - 이름으로 포트폴리오를 필터링할 선택적 검색 쿼리 - 문자열
    • favorite - 'enterpriseId' 매개변수가 생략된 경우 true여야 합니다. true인 경우 로그인한 사용자가 즐겨찾는 포트폴리오만 반환합니다. 'draft'가 true인 경우 true일 수 없습니다 - 부울
    • draft - true인 경우 로그인한 사용자가 생성한 초안만 반환합니다. 'favorite'가 true인 경우 true일 수 없습니다 - 부울
    • pageIndex - 가져올 페이지의 선택적 인덱스(기본값: 1) - 정수
    • pageSize - 가져올 페이지의 선택적 크기(기본값: 50) - 정수

프로젝트

  • search_my_sonarqube_projects - SonarQube 프로젝트를 찾습니다. 응답은 페이지로 매겨집니다.

    • page - 선택적 페이지 번호 - 문자열
  • list_branches - 프로젝트의 장기 브랜치를 나열합니다(예: main, develop, master). SonarQube Cloud에서는 LONG 브랜치만, SonarQube Server에서는 BRANCH 항목만 반환합니다 — 다른 도구의 branch 매개변수에 사용하기에 안전한 이름입니다. 풀 리퀘스트의 경우 list_pull_requests를 대신 사용하세요.

    • projectKey - 프로젝트 키(예: my_project) - 필수 문자열 (SONARQUBE_PROJECT_KEY가 정의된 경우 무시됨)
  • list_pull_requests - 프로젝트의 모든 풀 리퀘스트를 나열합니다. 커버리지, 이슈 또는 품질을 분석하기 전에 사용 가능한 풀 리퀘스트를 찾으려면 이 도구를 사용하세요. 다른 도구(예: search_files_by_coverage, get_file_coverage_details)와 함께 사용할 수 있는 풀 리퀘스트 키/ID를 반환합니다. 장기 브랜치의 경우 list_branches를 대신 사용하세요.

    • projectKey - 프로젝트 키(예: my_project) - 필수 문자열 (SONARQUBE_PROJECT_KEY가 정의된 경우 무시됨)

품질 게이트

  • get_project_quality_gate_status - SonarQube 프로젝트의 품질 게이트 상태를 가져옵니다.

    • analysisId - 선택적 분석 ID - 문자열
    • branch - 선택적 장기 브랜치 이름(예: main, develop). 유효한 이름을 찾으려면 list_branches를 사용하세요 - 문자열
    • projectId - 선택적 프로젝트 ID - 문자열
    • projectKey - 선택적 프로젝트 키 - 문자열
    • pullRequest - 선택적 풀 리퀘스트 키/ID. 유효한 키를 찾으려면 list_pull_requests를 사용하세요 - 문자열
  • list_quality_gates - 내 SonarQube의 모든 품질 게이트를 나열합니다.

규칙

  • show_rule - SonarQube 규칙에 대한 자세한 정보를 표시합니다.
    • key - 규칙 키 - 필수 문자열

중복

  • search_duplicated_files - SonarQube 프로젝트에서 코드 중복이 있는 파일을 검색합니다. 기본적으로 모든 페이지에 걸쳐 중복된 모든 파일을 자동으로 가져옵니다(최대 10,000개 파일). 중복이 있는 파일만 반환합니다.

    • projectKey - 프로젝트 키 - 필수 문자열 (SONARQUBE_PROJECT_KEY가 정의된 경우 무시됨)
    • branch - 선택적 장기 브랜치 이름(예: main, develop). 유효한 이름을 찾으려면 list_branches를 사용하세요 - 문자열
    • pullRequest - 선택적 풀 리퀘스트 키/ID. 유효한 키를 찾으려면 list_pull_requests를 사용하세요 - 문자열
    • pageSize - 수동 페이지 매김을 위한 페이지당 선택적 결과 수(최대: 500). 지정하지 않으면 중복된 모든 파일을 자동으로 가져옵니다 - 정수
    • pageIndex - 수동 페이지 매김을 위한 선택적 페이지 번호(1부터 시작). 지정하지 않으면 중복된 모든 파일을 자동으로 가져옵니다 - 정수
  • get_duplications - 파일의 중복을 가져옵니다. 파일의 프로젝트에 대한 찾아보기 권한이 필요합니다.

    • key - 파일 키 - 필수 문자열
    • branch - 선택적 장기 브랜치 이름(예: main, develop). 유효한 이름을 찾으려면 list_branches를 사용하세요 - 문자열
    • pullRequest - 선택적 풀 리퀘스트 키/ID. 유효한 키를 찾으려면 list_pull_requests를 사용하세요 - 문자열

소스

  • get_raw_source - SonarQube에서 소스 코드를 원시 텍스트로 가져옵니다. 파일에 대한 '소스 코드 보기' 권한이 필요합니다.

    • key - 파일 키 - 필수 문자열
    • branch - 선택적 장기 브랜치 이름 (예: main, develop). 유효한 이름을 찾으려면 list_branches을 사용하세요 - 문자열
    • pullRequest - 선택적 풀 리퀘스트 키/ID. 유효한 키를 찾으려면 list_pull_requests을 사용하세요 - 문자열
  • get_scm_info - SonarQube 소스 파일의 SCM 정보를 가져옵니다. 파일 프로젝트에 대한 소스 코드 보기 권한이 필요합니다.

    • key - 파일 키 - 필수 문자열
    • commits_by_line - 값이 false이면 SCM 커밋별로 줄을 그룹화하고, true이면 각 줄에 대한 커밋을 표시합니다 - 문자열
    • from - 반환할 첫 번째 줄. 1부터 시작 - 숫자
    • to - 반환할 마지막 줄 (포함) - 숫자

시스템

참고: 시스템 도구는 SonarQube Server에 연결할 때만 사용할 수 있습니다.

  • get_system_health - SonarQube Server 인스턴스의 상태를 가져옵니다. GREEN (완전 작동), YELLOW (사용 가능하지만 주의 필요), 또는 RED (작동 불가)를 반환합니다.

  • get_system_info - JVM 상태, 데이터베이스, 검색 인덱스 및 설정을 포함한 SonarQube Server 시스템 구성에 대한 자세한 정보를 가져옵니다. 'Administer' 권한이 필요합니다.

  • get_system_logs - SonarQube Server 시스템 로그를 일반 텍스트 형식으로 가져옵니다. 시스템 관리 권한이 필요합니다.

    • name - 가져올 로그의 선택적 이름. 가능한 값: access, app, ce, deprecation, es, web. 기본값: app - 문자열
  • ping_system - SonarQube Server 시스템에 ping을 보내 살아 있는지 확인합니다. 일반 텍스트로 'pong'을 반환합니다.

  • get_system_status - SonarQube Server에 대한 상태 정보를 가져옵니다. 상태 (STARTING, UP, DOWN, RESTARTING, DB_MIGRATION_NEEDED, DB_MIGRATION_RUNNING), 버전 및 id를 반환합니다.

웹훅

  • create_webhook - SonarQube 조직 또는 프로젝트에 대한 새 웹훅을 생성합니다. 지정된 프로젝트에 대한 'Administer' 권한 또는 전역 'Administer' 권한이 필요합니다.

    • name - 웹훅 이름 - 필수 문자열
    • url - 웹훅 URL - 필수 문자열
    • projectKey - 프로젝트별 웹훅을 위한 선택적 프로젝트 키 - 문자열
    • secret - 웹훅 페이로드 보안을 위한 선택적 웹훅 시크릿 - 문자열
  • list_webhooks - SonarQube 조직 또는 프로젝트의 모든 웹훅을 나열합니다. 지정된 프로젝트에 대한 'Administer' 권한 또는 전역 'Administer' 권한이 필요합니다.

    • projectKey - 프로젝트별 웹훅을 나열하기 위한 선택적 프로젝트 키 - 문자열

컨텍스트 증강

아키텍처 도구
  • search_by_signature_patterns - 정규식 패턴을 사용하여 선언 시그니처로 코드 요소(클래스, 메서드, 인터페이스 등)를 찾습니다.

    • include_code_regex_list - 시그니처와 일치시킬 정규식 패턴 목록 - 필수 문자열[]
    • exclude_code_regex_list - 결과에서 제외할 정규식 패턴 목록 - 문자열[]
    • include_glob - 파일 필터 글로브 패턴 (예: *.java) - 문자열
    • exclude_glob - 파일 제외 글로브 패턴 - 문자열
    • fields - 응답에 포함할 필드의 쉼표로 구분된 목록 - 문자열
    • limit - 반환할 최대 결과 수 (기본값: 10) - 정수
    • regex_lists_operator - 여러 패턴 결합 방법: OR (기본값) 또는 AND - 문자열
  • search_by_body_patterns - 정규식 패턴을 사용하여 구현 본문으로 코드 요소를 찾습니다. API나 패턴이 실제로 사용되는 위치를 찾는 데 유용합니다.

    • include_code_regex_list - 코드 본문에서 일치시킬 정규식 패턴 목록 - 필수 문자열[]
    • exclude_code_regex_list - 결과에서 제외할 정규식 패턴 목록 - 문자열[]
    • include_glob - 파일 필터 글로브 패턴 - 문자열
    • exclude_glob - 파일 제외 글로브 패턴 - 문자열
    • fields - 응답에 포함할 필드의 쉼표로 구분된 목록 - 문자열
    • limit - 반환할 최대 결과 수 (기본값: 10) - 정수
    • regex_lists_operator - 여러 패턴 결합 방법: OR (기본값) 또는 AND - 문자열
  • get_upstream_call_flow - 주어진 함수를 호출하는 함수를 추적합니다. 모든 호출자와 진입점을 찾고, 시그니처 변경 시 무엇이 중단되는지 이해하는 데 유용합니다.

    • fqn - 함수의 정규화된 이름 - 필수 문자열
    • depth - 호출 체인 깊이 (0=함수만, 1=직접 호출자 등) - 정수
    • fields - 응답에 포함할 필드의 쉼표로 구분된 목록 - 문자열
  • get_downstream_call_flow - 주어진 함수가 호출하는 함수를 추적합니다. 영향 분석 및 실행 흐름 이해에 유용합니다.

    • fqn - 함수의 정규화된 이름 - 필수 문자열
    • depth - 호출 체인 깊이 (0=함수만, 1=직접 피호출자 등) - 정수
    • fields - 응답에 포함할 필드의 쉼표로 구분된 목록 - 문자열
  • get_source_code - 정규화된 이름으로 코드 요소의 전체 소스 코드(시그니처 및 본문)를 가져옵니다.

    • fqn - 요소의 정규화된 이름 - 필수 문자열
    • fields - 응답에 포함할 필드의 쉼표로 구분된 목록 - 문자열
  • get_type_hierarchy - 클래스 유사 구조(클래스, 인터페이스, 열거형, 레코드, 예외, 구조체)에 대한 전체 상속 계층 구조를 가져옵니다. 상속 트리 이해 및 리팩토링에 필수적입니다.

    • fqn - 클래스 유사 구조의 정규화된 이름 - 필수 문자열
    • fields - 응답에 포함할 필드의 쉼표로 구분된 목록 - 문자열
  • get_references - 클래스 또는 모듈에 대한 직접 인바운드 및 아웃바운드 코드 참조를 가져옵니다. 직접(비전이적) 참조만 반환합니다.

    • fqn - 클래스 또는 모듈의 정규화된 이름 - 필수 문자열
    • fields - 응답에 포함할 필드의 쉼표로 구분된 목록 - 문자열
  • get_current_architecture - 경로 접두사 및 깊이로 필터링된 계층적 아키텍처 그래프를 가져옵니다. 모듈 구조 및 상위 수준 종속성 탐색에 유용합니다.

    • depth - 계층 깊이 (0=루트만, 1=루트 + 자식 등) - 필수 정수
    • path_prefix - 노드 필터링을 위한 선택적 경로 접두사 (예: com.example.service) - 문자열
    • ecosystem - 필터링할 선택적 에코시스템 (java, cs, py, js, ts) - 문자열
  • get_intended_architecture - 어떤 모듈이 다른 모듈에 종속될 수 있는지 지정하는 사용자 정의 아키텍처 제약 조건을 가져옵니다.

가이드라인 도구
  • get_guidelines - SonarQube 프로젝트 이슈, 카탈로그 카테고리 또는 둘의 조합을 기반으로 코딩 가이드라인을 가져옵니다.
    • mode - 가이드라인 검색 모드: project_based, category_based 또는 combined - 필수 문자열
    • categories - 카테고리 이름 목록 (category_basedcombined 모드에 필수) - 문자열[]
    • languages - SonarQube 리포지토리 키 형식의 대상 언어 목록 (categories이 제공될 때 필수) - 문자열[]
    • file_paths - 가이드라인을 필터링할 선택적 파일 경로 목록 - 문자열[]
서드파티 종속성 도구
  • check_dependency - 서드파티 종속성을 추가하거나 업데이트하기 전에 보안 취약점, 공급망 멀웨어 및 라이선스 준수 여부를 확인합니다.
컨텍스트 증강 환경 변수
변수설명필수기본값
SONARQUBE_URLSonarQube Cloud URLhttps://sonarcloud.io
SONARQUBE_TOKEN인증 토큰없음
SONARQUBE_ORGSonarQube Cloud의 조직 키없음
SONARQUBE_PROJECT_KEYSonarQube Cloud의 프로젝트 키없음
SONAR_SQ_BRANCH명시적 SonarQube 브랜치 재정의 *아니요없음
SONARQUBE_DEBUG_ENABLED디버그 로깅 활성화 (문제 해결용)아니요False
SONAR_LOG_LEVEL로깅 상세 수준 (TRACE, DEBUG, INFO, WARNING, ERROR)아니요INFO
  • git을 사용하지 않거나 git 브랜치 이름이 SonarQube의 브랜치 이름과 일치하지 않을 때 제공해야 합니다.
프로젝트별 구성 (권장)

먼저, 프로젝트에 유효한 개인 액세스 토큰 (PAT)을 사용하여 SONARQUBE_TOKEN 환경 변수를 내보냅니다.

# macOS/Linux (Bash/Zsh)
export SONARQUBE_TOKEN="{<YourUserToken>}"

그런 다음, 컨텍스트 증강 서버가 소스 파일에 직접 액세스할 수 있도록 프로젝트 작업 공간을 마운트합니다:

{
  "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"
      }
    }
  }
}

중요: 프로젝트 범위 구성에서는 env 블록에 SONARQUBE_TOKEN를 넣지 마십시오. 환경 변수(export SONARQUBE_TOKEN=...)로 내보내십시오. Docker는 -e SONARQUBE_TOKEN를 통해 이를 컨테이너로 전달합니다.

에이전틱 준비 상태

참고: 에이전틱 준비 상태 도구는 SonarQube Cloud에서만 사용할 수 있으며 조직에 대해 기능이 활성화되어 있어야 합니다.

  • start_agentic_readiness_assessment - 프로젝트에 대한 에이전틱 준비 상태 평가를 시작합니다. PENDING 상태와 assessmentId을 즉시 반환합니다. 결과를 폴링하려면 get_agentic_readiness_assessment를 사용하십시오.

    • projectKey - 프로젝트 키 - 필수 문자열 (SONARQUBE_PROJECT_KEY이 정의된 경우 무시됨)
    • branch - 평가할 브랜치. 생략하면 프로젝트의 기본 브랜치를 사용합니다 - 문자열
  • get_agentic_readiness_assessment - 평가 결과를 검색합니다. 상태가 COMPLETED, FAILED 또는 INTERRUPTED이 될 때까지 동일한 assessmentId으로 다시 호출하십시오. 완료되면 전체 수준과 권장 조치 및 증거가 포함된 영역별 분석 결과를 반환합니다.

    • assessmentId - start_agentic_readiness_assessment에서 반환된 평가 ID - 필수 문자열
  • list_agentic_readiness_assessments - 프로젝트의 모든 평가를 최신 순으로 나열합니다. 전체 영역 수준 결과를 보려면 get_agentic_readiness_assessment를 사용하십시오.

    • projectKey - 평가를 나열할 프로젝트 키 - 필수 문자열 (SONARQUBE_PROJECT_KEY이 정의된 경우 무시됨)
    • branch - 브랜치 이름으로 평가 필터링. 생략하면 모든 브랜치의 평가를 나열합니다 - 문자열
    • pageIndex - 1 기반 페이지 인덱스 (기본값: 1) - 숫자
    • pageSize - 페이지당 항목 수, 최대 100 (기본값: 50) - 숫자

예시 프롬프트

SonarQube MCP 서버를 설정한 후, 일반적인 실제 시나리오에 대한 몇 가지 예시 프롬프트입니다:

실패한 품질 게이트 수정하기
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?
사전 릴리스 및 사전 병합 점검
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?
코드 품질 개선
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?
이슈 이해 및 수정
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?
보안 및 의존성 관리
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.
코드 리뷰 지원
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.
프로젝트 상태 모니터링
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?
팀 협업
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?

빌드

sonarsource/sonarqube-mcp 컨테이너 이미지를 사용하는 것이 좋습니다.

Docker 없이 독립형 JAR로 서버를 실행하려면 SonarSource 바이너리 저장소에서 사전 빌드된 릴리스를 다운로드하세요. 모든 릴리스 버전은 sonarqube-mcp-server-<version>.jar로 게시됩니다(예: sonarqube-mcp-server-1.19.0.2785.jar).

JAR에서 실행

바이너리 저장소에서 원하는 버전의 JAR을 다운로드한 후, Java 21 이상으로 실행하도록 MCP 클라이언트를 구성하세요:

  • 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>"
    }
  }
}
  • 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>"
    }
  }
}
소스에서 빌드

SonarQube MCP 서버를 빌드하려면 Java Development Kit (JDK) 버전 21 이상이 필요합니다.

다음 Gradle 명령을 실행하여 프로젝트를 정리하고 애플리케이션을 빌드하세요:

./gradlew clean build -x test

JAR 파일은 build/libs/에 생성됩니다.

의존성을 추가하거나 업데이트한 후에는 잠금 파일을 다시 생성하세요:

./gradlew :dependencies --write-locks
./gradlew :its:dependencies --write-locks

위의 JAR에서 실행 구성을 사용하고, <path_to_sonarqube_mcp_server_jar>build/libs/의 JAR로 지정하세요.

문제 해결

애플리케이션 로그는 기본적으로 STORAGE_PATH/logs/mcp.log 파일에 기록됩니다. 파일 로깅을 완전히 비활성화하려면 SONARQUBE_LOG_TO_FILE_DISABLED=true을 설정하세요.

일반적인 문제

"기능이 작동하지 않음" 또는 "도구/기능 누락"

오래된 Docker 이미지를 실행 중일 수 있습니다. Docker는 이미지를 로컬에 캐시하므로 자동으로 업데이트를 받지 않습니다.

해결책: 최신 버전으로 업데이트하세요:

docker pull sonarsource/sonarqube-mcp

최신 이미지를 가져온 후 MCP 클라이언트를 다시 시작하여 업데이트된 버전을 사용하세요.

선택적으로, docker run 명령에 --pull=always 플래그를 추가하여 항상 최신 버전을 확인하고 가져오도록 할 수 있습니다:

docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG sonarsource/sonarqube-mcp

"특정 버전으로 고정하고 싶습니다"

sonarsource/sonarqube-mcp에서 사용 가능한 태그를 찾아 원하는 버전을 참조하세요:

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

MCP 클라이언트 구성에서 sonarsource/sonarqube-mcp 대신 sonarsource/sonarqube-mcp:<version>을 사용하고 --pull=always을 제거하여 Docker가 자동으로 이미지를 업그레이드하지 않도록 하세요.

데이터 및 원격 측정

이 서버는 익명의 사용 데이터를 수집하여 제품 개선을 위해 SonarSource에 전송합니다. 소스 코드나 IP 주소는 수집되지 않으며, SonarSource는 이 데이터를 다른 누구와도 공유하지 않습니다. 원격 측정 수집은 다음 시스템 속성 또는 환경 변수로 비활성화할 수 있습니다: TELEMETRY_DISABLED=true. 수집되는 데이터 샘플을 보려면 여기를 클릭하세요.

라이선스

Copyright 2025 SonarSource.

SONAR Source-Available License v1.0에 따라 라이선스가 부여됩니다. 이 문서를 준수하여 SonarQube MCP 서버를 사용하는 것은 비경쟁 목적에 해당하므로 SSAL에 따라 허용됩니다.

MCP를 통한 SonarQube 사용은 SonarQube Cloud 서비스 약관 또는 SonarQube Server 이용 약관의 적용을 받으며, 여기에는 결과 데이터를 내부 소프트웨어 개발 목적으로만 사용하는 것이 포함됩니다.