Skip to main content
Glama
amamirugi

GitHub MCP Wrapper

by amamirugi

GitHub MCP Wrapper for claude.ai

claude.ai 웹/앱의 커스텀 커넥터에서 공식 GitHub MCP 서버에 붙기 위한 OAuth 래퍼.

왜 필요한가

claude.ai 커스텀 커넥터는 MCP OAuth 스펙(protected-resource 메타데이터, DCR, PKCE, https://claude.ai/api/mcp/auth_callback 콜백)을 따르는 서버만 붙는다. GitHub OAuth App을 그대로 꽂으면 이 디스커버리 흐름을 못 맞춰서 토큰 없이 호출 → 401 → "토큰 없음" 에러로 떨어진다.

이 래퍼는 앞단에서 claude.ai가 요구하는 OAuth를 충족하고(게이트는 비밀번호 하나), 통과하면 네 GitHub PAT를 달아서 공식 GitHub MCP(api.githubcopilot.com/mcp/)로 프록시한다. 공식 서버의 전체 툴셋(레포·이슈·PR·Actions·gist 읽기/쓰기)을 그대로 쓴다.

상태 저장은 서명된 토큰(HMAC-SHA256)으로 처리 → DB·외부 서비스 불필요.

Related MCP server: remote-mcp-oauth-github

1. GitHub PAT 발급

github.com/settings/tokens 에서 발급.

  • Classic: repo, read:org, workflow, gist (쓰기까지 원하면 이 정도)

  • Fine-grained: 대상 레포 + Contents/Issues/Pull requests/Actions = Read and write

발급된 토큰 문자열을 복사해둔다.

2. Vercel 배포

이 폴더를 GitHub 레포에 올린 뒤 Vercel에서 Import, 또는 CLI:

npm i -g vercel
vercel
vercel --prod

배포되면 도메인이 나온다. 예: https://gh-mcp-wrapper.vercel.app

환경변수 (Vercel → Project → Settings → Environment Variables)

이름

GITHUB_PAT

1단계에서 발급한 토큰

AUTH_PASSWORD

커넥터 연결 시 입력할 비밀번호 (직접 정함)

SIGNING_SECRET

긴 랜덤 문자열 (openssl rand -hex 32)

세 개 다 넣고 재배포(vercel --prod).

동작 확인

curl https://<도메인>/.well-known/oauth-authorization-server

JSON에 authorization_endpoint, token_endpoint, registration_endpoint가 보이면 정상.

3. claude.ai 커넥터 추가

설정 → 커넥터 → 커스텀 커넥터 추가:

  • 이름: 아무거나 (예: GitHub)

  • 원격 MCP 서버 URL: https://<도메인>/mcp

  • 고급 설정의 OAuth 클라이언트 ID / 시크릿: 비워둔다 (DCR이 처리)

추가 → 연결(Connect) → 브라우저에 비밀번호 입력창 → AUTH_PASSWORD 입력 → 승인되면 툴 활성화.

엔드포인트

경로

역할

/.well-known/oauth-protected-resource

RFC 9728 메타데이터

/.well-known/oauth-authorization-server

AS 메타데이터

/register

Dynamic Client Registration

/authorize

비밀번호 게이트 + 코드 발급

/token

코드/리프레시 → 액세스 토큰

/mcp

토큰 검증 후 공식 GitHub MCP로 프록시

주의

  • claude.ai 커스텀 커넥터 OAuth 자체에 알려진 버그가 있다(인증 후 후속 요청에 Authorization 헤더 누락 등). 래퍼가 정상이어도 claude.ai 쪽 이슈로 한 번에 안 붙을 수 있다. 그 경우 커넥터 삭제 후 재추가, 새 대화에서 재시도.

  • PAT는 GitHub에서 만료/스코프 조정 가능. 만료되면 Vercel 환경변수만 교체.

  • 단일 사용자 전제. URL이 노출돼도 비밀번호가 게이트지만, SIGNING_SECRETAUTH_PASSWORD는 충분히 길게.

Related MCP Connectors

Related MCP Servers