MCP(Model Context Protocol)로 GitHub, Supabase, Slack 등 외부 서비스를 Claude 도구로 연결하여 프로젝트 컨텍스트를 자동 확장하는 방법.
MCP — 클로드의 손을 외부 세계로 뻗기
MCP(Model Context Protocol)는 Anthropic이 제안한 오픈 표준으로, AI 모델이 외부 데이터 소스와 도구에 연결되는 방식을 표준화합니다. 쉽게 말하면 "Claude Code에 플러그인을 설치하는 방법"입니다. GitHub 이슈를 직접 읽고, Supabase 데이터베이스에 직접 쿼리하고, Slack 메시지를 보내는 것이 모두 MCP 서버를 통해 가능합니다.
MCP 서버 연결 방법
// .claude/settings.json 또는 ~/.claude/settings.json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxx"
}
},
"supabase": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server-supabase@latest",
"--project-ref", "luzbijdvvrvbgjcduimk",
"--read-only"],
"env": {
"SUPABASE_ACCESS_TOKEN": "sbp_xxxx"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem",
"/Users/me/projects"]
}
}
}
설정 후 Claude Code를 재시작하면 새 도구들이 자동으로 활성화됩니다. /tools를 입력하면 현재 사용 가능한 MCP 도구 목록을 확인할 수 있습니다.
GitHub MCP — 이슈와 PR을 직접 처리
# GitHub MCP 연결 후 가능한 작업
"GitHub의 open 이슈 목록 가져와서 우선순위 분류해줘"
"PR #42 의 변경사항 리뷰하고 승인 코멘트 달아줘"
"마일스톤 'v2.0'에 속한 미완료 이슈들로 작업 계획 짜줘"
"이슈 #78 을 기반으로 새 브랜치 만들고 초기 구현 시작해줘"
GitHub 웹 UI를 열지 않고도 Claude와 대화하는 중에 이슈를 생성하고, PR을 만들고, 코드 리뷰를 수행할 수 있습니다. NUGUNA-HRD 프로젝트처럼 빠르게 기능을 추가하는 환경에서 특히 유용합니다.
Supabase MCP — 실시간 DB 연동
# Supabase MCP로 가능한 작업
"jobs 테이블에서 최근 일주일간 등록된 공고 수 알려줘"
"users 테이블 RLS 정책 현황 점검해줘"
"learning_lessons 테이블에서 is_published = false인 강 목록 보여줘"
"이 마이그레이션 SQL이 안전한지 실행 전에 explain analyze 해줘"
현재 이 NUGUNA-HRD 세션에서도 Supabase MCP가 활성화되어 있어 강의 콘텐츠를 SQL 없이 자연어로 조회하고 업데이트할 수 있습니다. --read-only 플래그를 사용하면 쓰기 접근을 차단해 안전하게 데이터를 탐색할 수 있습니다.
유용한 공식 MCP 서버들
@modelcontextprotocol/server-github — GitHub 이슈, PR, 브랜치
@supabase/mcp-server-supabase — Supabase DB, Edge Functions
@modelcontextprotocol/server-filesystem — 로컬 파일시스템 확장
@modelcontextprotocol/server-postgres — PostgreSQL 직접 연결
@modelcontextprotocol/server-slack — Slack 메시지, 채널
@modelcontextprotocol/server-google-maps — 위치 정보
@modelcontextprotocol/server-brave-search — 웹 검색
커스텀 MCP 서버 제작
팀 내부 API, 사내 위키, 특수 데이터베이스 등 공식 MCP 서버가 없는 서비스는 직접 만들 수 있습니다.
// 간단한 MCP 서버 (TypeScript)
import { Server } from '@modelcontextprotocol/sdk/server/index.js'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
const server = new Server({ name: "nuguna-api", version: "1.0.0" }, {
capabilities: { tools: {} }
})
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [{
name: "get_job_stats",
description: "공고별 지원자 통계 조회",
inputSchema: {
type: "object",
properties: {
job_id: { type: "string", description: "공고 ID" }
}
}
}]
}))
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === "get_job_stats") {
const stats = await fetchJobStats(request.params.arguments.job_id)
return { content: [{ type: "text", text: JSON.stringify(stats) }] }
}
})
const transport = new StdioServerTransport()
await server.connect(transport)
MCP 보안 고려사항
- 토큰 최소 권한: GitHub 토큰은 필요한 스코프만 부여. 읽기 전용 작업에는 read-only 토큰 사용.
- 환경변수 분리: MCP 설정의 API 키는 반드시 .env.local에서 로드, 설정 파일에 하드코딩 금지.
- read-only 우선: Supabase MCP는 가능하면 --read-only 플래그 적용. 쓰기 권한은 명시적 필요 시에만.
- 프롬프트 인젝션 주의: 외부 데이터(GitHub 이슈 내용, DB 데이터)에 악의적인 지시가 포함될 수 있으므로 신뢰할 수 없는 소스의 데이터를 그대로 실행하지 않도록 주의.
MCP의 진정한 가치는 Claude가 "당신의 프로젝트 전체를 아는 AI"가 된다는 점입니다. GitHub 이슈, DB 상태, 코드베이스, 팀 문서를 모두 연결하면 "이슈 #78 기반으로 기능 구현해줘"라는 한 줄이 이슈 읽기 → 코드 분석 → 구현 → PR 생성까지 이어집니다.
핵심 정리
- MCP는 AI-도구 연결 오픈 표준 — .claude/settings.json의 mcpServers 항목에 서버 추가하면 새 도구로 활성화
- GitHub·Supabase·Slack 등 공식 MCP 서버로 외부 서비스를 자연어 명령으로 직접 조작 가능
- 커스텀 MCP 서버로 사내 API·내부 도구 연결 가능 — 보안은 최소 권한 토큰 + read-only 우선 원칙
관련 검색어 · 클로드 코드 · Claude Code · MCP 설정 · Model Context Protocol · GitHub MCP · Supabase MCP 연동 · 클로드 외부 도구 연결