GitHub MCP 서버로 이슈·PR·코드 검색을 AI 에이전트에 연결하기

원격·로컬 설정, 도구 묶음(toolsets) 선택, 읽기 전용 모드와 토큰 범위

핵심 요약

  1. GitHub MCP 서버는 원격(api.githubcopilot.com/mcp/)과 Docker 로컬 실행 두 방식을 제공한다.
  2. GITHUB_TOOLSETS로 필요한 기능 묶음만 켜 모델의 도구 선택지를 줄인다.
  3. 쓰기가 필요 없으면 GITHUB_READ_ONLY=true로 읽기 전용 운영을 기본값으로 둔다.
  4. 토큰은 필요한 저장소와 범위로 최소화하고 설정 파일에 직접 쓰지 않는다.

AI 에이전트가 코드뿐 아니라 이슈 내용과 PR 리뷰 코멘트까지 볼 수 있으면, "이 버그와 관련된 이슈와 최근 PR을 찾아 원인을 정리해 줘" 같은 요청을 한 번에 처리할 수 있다. GitHub 공식 MCP 서버는 저장소, 이슈, PR, Actions 등을 도구로 제공한다. 이 글은 서버 연결 방법과 함께, 필요한 기능만 켜고 쓰기 권한을 막는 설정을 중심으로 정리한다. GitHub Actions 기반 리뷰 자동화와 비교해 보려면 GitHub Actions AI 코드 리뷰 봇 글을 함께 본다.

원격 서버와 로컬 서버 중 고르기

방식연결 대상인증적합한 경우
원격 서버https://api.githubcopilot.com/mcp/클라이언트의 OAuth 흐름 또는 토큰설치 없이 빠르게 시작
로컬 서버(Docker)ghcr.io/github/github-mcp-server 이미지개인 액세스 토큰(GITHUB_PERSONAL_ACCESS_TOKEN)도구 묶음·읽기 전용 등 세부 설정, 사내 정책상 로컬 실행

1단계: 원격 서버 연결(VS Code 예)

{
  "servers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/"
    }
  }
}

원격 서버는 별도 설치가 필요 없다. 연결 후 클라이언트가 안내하는 인증 절차를 마치면 계정 권한 범위 안에서 도구를 쓸 수 있다.

2단계: 로컬 Docker 실행과 도구 묶음 선택

로컬 실행에서는 환경 변수로 동작을 세밀하게 조정할 수 있다. 특히 GITHUB_TOOLSETS(또는 --toolsets)로 필요한 기능 묶음만 켜는 것이 중요하다. 도구가 많을수록 모델이 고를 선택지가 늘어 엉뚱한 도구를 호출할 가능성도 커지기 때문이다.

{
  "mcp": {
    "servers": {
      "github": {
        "command": "docker",
        "args": [
          "run", "-i", "--rm",
          "-e", "GITHUB_PERSONAL_ACCESS_TOKEN",
          "-e", "GITHUB_TOOLSETS",
          "-e", "GITHUB_READ_ONLY",
          "ghcr.io/github/github-mcp-server"
        ],
        "env": {
          "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}",
          "GITHUB_TOOLSETS": "context,repos,issues,pull_requests",
          "GITHUB_READ_ONLY": "true"
        }
      }
    }
  }
}

README에 나온 도구 묶음에는 context(권장), repos, issues, pull_requests, actions, code_security, dependabot, discussions, notifications, orgs, projects 등이 있다. 버그 조사용이라면 context,repos,issues,pull_requests 정도로 시작하고, CI 실패 분석이 필요할 때 actions를 추가한다.

3단계: 읽기 전용 모드와 토큰 범위

GITHUB_READ_ONLY=true(또는 --read-only)를 설정하면 쓰기 작업 도구가 비활성화된다. 이슈 생성, 코멘트 작성, 병합 같은 동작이 필요 없다면 읽기 전용으로 운영하는 것이 기본값이어야 한다.

토큰 범위(README 권장)용도줄이는 방법
repo저장소 작업세분화 토큰(fine-grained)으로 필요한 저장소만 선택
read:packagesDocker 이미지 접근이미지 접근이 필요 없으면 제외
read:org조직 팀 정보조직 정보가 필요 없으면 제외

MCP 보안 모범 사례는 넓은 범위의 토큰이 유출되면 피해 범위가 커진다며 최소 권한 범위에서 시작하라고 권한다. 토큰은 설정 파일에 직접 쓰지 말고 클라이언트의 입력 변수나 비밀 관리 기능으로 주입하며, 만료일을 짧게 둔다.

4단계: 활용 요청 예시

  1. "payment-api 저장소에서 지난 2주간 열린 이슈 중 timeout 관련 이슈를 찾아 요약해 줘" — 이슈 검색과 요약.
  2. "PR #482의 리뷰 코멘트 중 해결되지 않은 것만 목록으로 정리해 줘" — PR 리뷰 상태 확인.
  3. "최근 실패한 main 브랜치 워크플로의 실패 단계와 로그 요약을 보여 줘" — actions 묶음 필요.
  4. "이 함수가 다른 저장소에서도 쓰이는지 조직 코드 검색으로 찾아 줘" — 저장소 검색.

모두 읽기 작업이므로 읽기 전용 모드에서 동작한다. 이슈 본문이나 PR 코멘트에는 외부인이 쓴 텍스트가 섞일 수 있어, 그 안에 숨은 지시문이 에이전트를 조종하려 할 수 있다는 점도 기억한다. 이 때문에 쓰기 작업을 켤 때는 호출마다 사람이 승인하도록 클라이언트를 설정한다.

팀 단위로 도입할 때 정할 규칙

결정 항목권장 기본값이유
서버 실행 방식개인별 로컬 Docker 또는 원격 서버 중 하나로 통일설정 차이로 인한 동작 차이 방지
도구 묶음context,repos,issues,pull_requests조사 작업에 필요한 최소 범위
쓰기 권한읽기 전용, 필요한 사람만 별도 설정자동 이슈 생성·코멘트 남발 방지
토큰 수명짧은 만료일과 정기 교체유출 시 피해 기간 단축
설정 공유토큰을 뺀 설정 파일만 저장소에 커밋비밀값 노출 방지

연결 후 점검

  • 도구 목록에 켜 둔 묶음의 도구만 보이는지 확인한다.
  • 읽기 전용 모드에서 이슈 생성 요청을 보내 거부되는지 확인한다.
  • 토큰이 접근할 수 있는 저장소 범위가 의도와 같은지 GitHub 설정 화면에서 확인한다.
  • AI가 만든 PR을 리뷰하는 기준은 AI 생성 코드 리뷰 규칙 글과 맞춘다.

초보자가 자주 실수하는 포인트

  • 모든 도구 묶음을 켜서 모델이 불필요한 도구를 호출하는 경우
  • 조직 전체 저장소에 쓰기 권한이 있는 토큰을 그대로 쓰는 경우
  • 토큰을 설정 JSON에 평문으로 저장해 저장소에 커밋하는 경우
  • 이슈·PR 본문의 외부 텍스트를 신뢰해 쓰기 작업을 자동 승인하는 경우

체크리스트

  • 필요한 도구 묶음만 활성화했는가
  • 읽기 전용 모드가 기본으로 설정됐는가
  • 토큰 범위와 접근 저장소를 최소화했는가
  • 토큰이 입력 변수나 비밀 관리 기능으로 주입되는가
  • 쓰기 작업에 호출별 승인이 걸려 있는가

자주 묻는 질문

원격 서버에서도 도구 묶음을 줄일 수 있나요?

README는 로컬 실행 기준으로 플래그와 환경 변수를 설명한다. 원격 서버에서 지원하는 설정 방식은 README의 원격 서버 안내를 확인한다.

읽기 전용 모드에서도 코드 검색은 되나요?

검색과 조회는 읽기 작업이므로 읽기 전용 모드에서도 쓸 수 있다.

조직 저장소에 쓰려면 무엇이 필요한가요?

토큰이 해당 조직 저장소에 접근 권한을 가져야 하며, 조직 정책에 따라 토큰 승인이 필요할 수 있다.

참고 자료 · 검증 기준

위 자료와 내용을 대조한 날짜: . 도구·서비스 정책은 이후 바뀔 수 있으므로 적용 전 공식 문서를 다시 확인하세요.

이 글은 위 참고 자료를 바탕으로 정리했으며, 내용은 운영 과정에서 순차적으로 보완될 수 있습니다.