MCP(Model Context Protocol)로 Claude Code에 GitHub·Slack·DB 연결하기 — AI가 외부 시스템에 직접 액션하는 방법
Claude Code를 쓰면서 "이 PR에 코멘트 좀 달아줘" 하고 싶었던 적 있으신가요? 저도 처음엔 그냥 AI가 코드를 짜주는 정도로만 쓰다가, MCP를 알게 된 뒤부터 생각이 완전히 바뀌었습니다. "이슈 #42에 관련 PR 초안 만들어줘"라고 입력했더니 Claude가 GitHub API를 직접 호출해서 PR을 열어주는 걸 보고 나서는, 이건 패러다임 자체가 다르다는 걸 바로 느꼈습니다.
그게 어떻게 가능한 걸까요? 핵심은 MCP(Model Context Protocol)입니다. Anthropic이 2024년 11월에 오픈소스로 공개한 표준 프로토콜로, AI와 외부 시스템 사이의 통신 방식을 통일된 규격으로 정의합니다. 흔히 "AI를 위한 USB-C"라고 비유하는데, 시스템마다 별도 통합 코드를 짤 필요 없이 JSON 몇 줄로 어떤 도구든 붙일 수 있다는 뜻입니다. 이 글에서는 GitHub, Slack, PostgreSQL을 Claude Code에 연결하는 구체적인 설정 파일과, 실무에서 반드시 챙겨야 할 보안 체크리스트까지 함께 다룹니다.
지금이 특히 좋은 시점인 이유가 있습니다. 2025년 12월 Anthropic이 MCP를 Linux Foundation 산하 Agentic AI Foundation에 이전하면서 특정 벤더 종속 우려가 많이 줄었고, OpenAI·Google DeepMind·Microsoft도 지원을 추가해 사실상 업계 공통 인프라가 됐습니다. 2026년 5월 기준 공식 레지스트리에만 등록된 서버가 9,600개가 넘습니다. 지금 익혀두면 AI 도구가 바뀌어도 이 지식은 그대로 씁니다.
핵심 개념
MCP의 구조: 세 개의 레이어
MCP는 크게 세 가지 구성요소로 이루어져 있습니다.
| 구성요소 | 역할 | 예시 |
|---|---|---|
| MCP Host | AI 클라이언트, 사용자와 대화하며 도구를 호출 | Claude Code, Claude Desktop, Cursor |
| MCP Server | 외부 시스템과의 연결을 담당하는 경량 프로세스 | server-github, server-slack, server-postgres |
| Transport Layer | Host↔Server 간 통신 방식 | stdio(로컬), Streamable HTTP(원격 표준), SSE(레거시) |
저도 처음엔 "서버"라는 말에 어딘가 배포를 해야 한다고 생각했는데, 로컬 방식(stdio)은 그냥 npx 명령어 하나로 실행되는 프로세스입니다. 별도 서버 인프라가 없어도 됩니다.
Transport 방식 선택 기준: 로컬 개발이나 개인 도구는
stdio가 간단하고 빠릅니다. 팀 공유나 CI/CD 환경처럼 원격 접근이 필요한 경우엔 Streamable HTTP를 권장합니다. MCP 2025-03-26 스펙부터 원격 표준 전송 방식으로 추가된 방식이고, 기존 HTTP/SSE는 레거시 경로로 분류되어 가고 있습니다.
Claude Code에 MCP 서버 등록하는 두 가지 방법
사전 준비: MCP 서버의 대부분은
npx를 사용하므로 Node.js 18 이상이 설치되어 있어야 합니다.
방법 1: CLI로 즉시 등록 (HTTP 방식)
claude mcp add -s user --transport http github \
https://api.githubcopilot.com/mcp \
-H "Authorization: Bearer YOUR_GITHUB_PAT"여기서 -s user는 scope를 user로 지정한다는 뜻입니다. project 스코프는 현재 프로젝트 내에서만 동작하지만, user로 지정하면 Claude Code를 실행하는 모든 프로젝트에서 이 MCP 서버를 사용할 수 있습니다.
방법 2: .mcp.json 파일로 프로젝트 단위 관리 (stdio 방식)
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PAT}"
}
}
}
}두 방법은 동작 결과가 비슷해 보여도 실제로 완전히 다른 Transport를 씁니다. 방법 1은 HTTP를 통해 GitHub의 원격 MCP 엔드포인트에 직접 연결하고, 방법 2는 로컬에서 npx로 서버 프로세스를 띄운 뒤 stdio로 통신합니다. 팀원과 설정을 공유하려면 .mcp.json을 프로젝트 루트에 두는 방식이 편리합니다. 단, 토큰 값이 담긴 .mcp.json은 그대로 커밋하지 않고, 환경변수 참조(${GITHUB_PAT}) 형태만 저장소에 올리는 것이 좋습니다.
실전 적용
예시 1: GitHub — PR 자동화부터 코드 검색까지
처음 GitHub MCP를 설정하고 "현재 열려 있는 이슈 목록 보여줘"라고 입력했을 때, Claude가 실제로 GitHub API를 호출해서 이슈 목록을 가져오는 걸 보고 제법 놀랐습니다. 아래 설정에는 GITHUB_TOOLSETS를 추가했는데, 이걸 지정하면 Claude가 사용할 수 있는 GitHub 기능의 범위를 제한할 수 있어서 실무에서 특히 유용합니다.
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PAT}",
"GITHUB_TOOLSETS": "repos,issues,pull_requests"
}
}
}
}GitHub PAT 발급: GitHub Settings → Developer settings → Personal access tokens에서 필요한 권한만 선택해 발급하는 것을 권장합니다.
repo,issues,pull_requests범위면 대부분의 작업이 가능합니다.
등록하고 나면 Claude Code 대화창에서 이런 자연어 명령이 바로 GitHub API 호출로 이어집니다.
| 자연어 명령 | 실제 동작 |
|---|---|
| "main 브랜치 대비 변경 파일 목록 알려줘" | GitHub API로 diff 조회 |
| "이슈 #42에 대한 PR 초안 만들어줘" | PR 생성 API 호출 |
| "최근 열린 이슈 중 bug 라벨 붙은 것들 보여줘" | 이슈 필터링 조회 |
| "이 PR에 리뷰 코멘트 달아줘" | Pull Request Review API 호출 |
실무에서 자주 맞닥뜨리는 상황인데, 이슈 번호를 주면 관련 커밋을 찾아서 PR 설명까지 자동으로 채워주는 게 생각보다 꽤 유용합니다. 릴리즈 노트 초안 작성에도 즐겨 씁니다.
예시 2: Slack — GitHub 알림 채널 자동 연동
Slack MCP 서버를 추가하면 채널 메시지 전송, 채널 목록 조회, 특정 메시지 검색 등이 가능해집니다.
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "${SLACK_BOT_TOKEN}",
"SLACK_TEAM_ID": "T0XXXXXXX"
}
}
}
}SLACK_TEAM_ID는 Slack 웹에서 워크스페이스에 접속했을 때 주소창에 표시되는 https://app.slack.com/client/T0XXXXXXX/...에서 T로 시작하는 부분을 그대로 쓰면 됩니다. Bot Token은 Slack API 앱 페이지에서 앱을 만든 뒤 OAuth & Permissions 메뉴에서 발급할 수 있습니다.
GitHub MCP와 Slack MCP를 함께 등록했을 때 진가가 드러납니다. 팀에서 Slack 연동 후 가장 먼저 만든 자동화가 바로 이 패턴이었는데, 단일 Claude Code 대화 안에서 이런 워크플로가 한 번에 완성됩니다.
사용자: "feature/login 브랜치 빌드 실패 확인하고
#dev-alerts 채널에 요약 메시지 보내줘"
Claude:
1. [GitHub MCP] 해당 브랜치의 최근 CI 상태 조회
2. [GitHub MCP] 실패한 스텝·에러 로그 가져오기
3. [Slack MCP] #dev-alerts 채널에 요약 메시지 전송예전에는 이걸 구현하려면 Zapier나 별도 스크립트를 짰을 텐데, 이제는 자연어 한 줄로 됩니다. 두 MCP가 같은 대화 컨텍스트 안에서 체이닝된다는 게 핵심입니다.
예시 3: PostgreSQL — 자연어로 DB 쿼리하기
솔직히 이 부분이 처음에 좀 무섭기도 했습니다. AI가 직접 DB에 쿼리를 날린다는 게요. 한 가지 미리 짚어둘 점이 있는데, @modelcontextprotocol/server-postgres는 기본적으로 쓰기 쿼리도 실행할 수 있습니다. 읽기 전용으로 제한하려면 서버 설정이 아니라 DB 계정 권한 자체를 제한해야 합니다. 그래서 연결 전에 전용 읽기 전용 계정을 먼저 만드는 것부터 시작하는 것이 훨씬 안전합니다.
PostgreSQL에서 읽기 전용 계정을 만드는 SQL:
CREATE USER mcp_user WITH PASSWORD 'your_password';
GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_user;그런 다음, 이 계정의 connection string을 환경변수로 관리합니다.
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"${DATABASE_URL}"
]
}
}
}DATABASE_URL은 postgresql://mcp_user:your_password@localhost:5432/mydb 형태로 설정하면 됩니다. 등록 후 Claude Code에서 이렇게 물어볼 수 있습니다.
"users 테이블에서 최근 7일간 가입한 사용자 수를 집계해줘"
"주문 테이블의 스키마 구조를 설명해줘"
"월별 매출 추이를 쿼리로 만들고 결과 보여줘"Claude가 직접 SQL을 생성하고 실행한 뒤 결과를 돌려줍니다. 읽기 전용 계정을 쓰면 실수로 DELETE 쿼리가 실행될 걱정을 덜 수 있어서 마음이 훨씬 편합니다.
장단점 분석
장점
| 항목 | 내용 |
|---|---|
| 표준화 | 한 번 서버를 만들면 Claude Code, Cursor, VS Code Copilot 등 여러 AI 클라이언트가 공통으로 사용 가능 |
| 개발 속도 | 시스템별 커스텀 통합 코드 없이 JSON 몇 줄로 새 도구 연결 완료 |
| 멀티 에이전트 협업 | 복수의 AI 에이전트가 동일한 MCP 서버를 공유하며 협업 가능 |
| 생태계 | 공식 레지스트리에 9,600개 이상의 서버, 주요 벤더 1st-party 지원 |
| 벤더 독립성 | Linux Foundation 이전으로 특정 벤더 종속 우려 해소 |
단점 및 주의사항
| 항목 | 내용 |
|---|---|
| 자격증명 집중화 | 여러 서비스 토큰이 한 곳에 모여 단일 침해점 발생 위험 — 환경변수 분리, Vault 등 시크릿 매니저 활용을 권장합니다 |
| Prompt Injection | 악의적으로 조작된 메시지가 MCP 서버에 의도치 않은 작업을 실행시킬 수 있음 — 입력 유효성 검증, 민감 작업 전 확인 단계 추가가 필요합니다 |
| OAuth 구현 결함 | 공개 MCP 서버 중 상당수가 보안 취약점을 보유 — 공식 서버 우선 사용, 코드 리뷰를 권장합니다 |
| 공급망 위협 | 검증되지 않은 서드파티 패키지의 툴 포이즈닝 위험 — 패키지 출처·유지보수 이력 확인이 필수입니다 |
| 거버넌스 공백 | 엔터프라이즈급 감사 로그·접근 제어가 프로토콜이 아닌 개별 구현에 의존 |
엔터프라이즈 도입 시 최소 요구 통제
엔터프라이즈 환경에서 MCP를 도입한다면, 프로토콜이 기본 제공하지 않는 아래 여섯 가지를 팀에서 직접 챙겨야 합니다.
- OAuth 2.0 인증 — 자격증명을 AI 컨텍스트 외부에 저장해 토큰 유출 시 피해 범위를 제한합니다.
- RBAC/ABAC 인가 — 역할·속성 기반으로 각 MCP 도구 호출 권한을 세분화해, 특정 사용자가 특정 도구만 쓸 수 있게 제한합니다.
- 어트리뷰션 수준 감사 로그 — "누가, 언제, 어떤 AI 명령으로 어떤 작업을 했는지"를 추적할 수 있어야 컴플라이언스 대응이 가능합니다.
- 경로·스코프 제한 — MCP 서버가 접근할 수 있는 API 엔드포인트와 데이터 범위를 최소화합니다.
- Rate Limiting — 비정상적인 요청 폭발을 막아 외부 API 과금 및 DoS 리스크를 완화합니다.
- 민감도 레이블 평가 — 쿼리 결과나 메시지 내용이 기밀 데이터를 포함하는지 분류하고 차단하는 레이어가 필요합니다.
실무에서 가장 흔한 실수
-
토큰을
.mcp.json에 하드코딩하는 경우 — 환경변수(${GITHUB_PAT}) 형태로 분리하고, 토큰 값이 없는 템플릿만 저장소에 커밋하는 패턴을 활용하면 됩니다. -
서드파티 MCP 서버를 검증 없이 바로 사용하는 경우 — 저도 공급망 위협 사례를 접하고 나서는 서드파티 서버를 바로 설치하던 습관을 바꿨습니다. 알려진 사례에 따르면 검증되지 않은 MCP 패키지가 상당 기간 탐지되지 않고 민감 데이터를 유출할 수 있습니다.
@modelcontextprotocol/*공식 서버나github/github-mcp-server같은 벤더 1st-party를 우선적으로 쓰고, 서드파티는 코드를 먼저 살펴보는 편이 훨씬 안전합니다. -
DB MCP에 관리자 계정을 그대로 연결하는 경우 —
@modelcontextprotocol/server-postgres는 쓰기 쿼리도 실행할 수 있습니다. 실수로DELETE나DROP이 실행되는 상황을 막으려면, 위 예시처럼GRANT SELECT만 부여한 전용 계정을 만들어 연결하는 것이 안전한 출발점입니다.
마치며
MCP는 AI에게 외부 시스템을 직접 다루는 손을 붙여주는 기술입니다. Linux Foundation으로 거버넌스가 이전되고, OpenAI·Google까지 지원하는 공통 인프라가 된 지금, 지금 익혀두면 어떤 AI 도구로 전환하더라도 이 지식은 그대로 남습니다. 생태계가 빠르게 성숙하는 지금 시점이 진입 비용이 가장 낮은 때이기도 합니다.
지금 바로 시작해볼 수 있는 3단계:
-
GitHub MCP부터 연결해 보시면 좋습니다. 프로젝트 루트에
.mcp.json을 만들고GITHUB_PAT환경변수만 설정하면 됩니다. "현재 열려 있는 이슈 목록 보여줘"라고 입력해 보시면 바로 동작을 확인할 수 있습니다. GitHub가 없어도 PostgreSQL만 단독으로 연결하는 것으로 시작해도 충분합니다. -
Slack MCP를 추가해 GitHub와 체이닝해 보시면 효과가 더 뚜렷합니다. 두 MCP가 같은 대화 컨텍스트 안에서 어떻게 협력하는지를 직접 보는 게 가장 빠른 이해 방법입니다.
-
DB를 연결할 때는 읽기 전용 계정 생성부터 시작하세요.
CREATE USER mcp_user와GRANT SELECT로 전용 계정을 먼저 만들고, 그 connection string을${DATABASE_URL}로 관리하면 마음 편히 쓸 수 있습니다.
참고 자료
- Introducing the Model Context Protocol | Anthropic — MCP 공개 발표 원문. 설계 배경과 철학을 확인할 수 있습니다.
- Connect Claude Code to tools via MCP | Claude Code Docs — Claude Code에서의 MCP 설정 공식 문서.
- Connect to external tools with MCP | Claude API Docs
- Model Context Protocol — Official Example Servers — Slack, PostgreSQL 등 공식 MCP 서버 목록.
- Model Context Protocol Servers | GitHub
- GitHub MCP Server | github/github-mcp-server — GitHub 공식 MCP 서버 소스코드 및 설치 가이드.
- GitHub MCP Server Install Guide for Claude
- The 2026 MCP Roadmap | Model Context Protocol Blog — Streamable HTTP 등 스펙 변경과 향후 방향 확인에 유용합니다.
- MCP Security Best Practices | modelcontextprotocol.io — 보안 설정 공식 가이드.
- The Security Risks of Model Context Protocol (MCP) | Pillar Security — 공급망 위협과 OAuth 결함 사례 분석.
- Model Context Protocol (MCP): Understanding security risks and controls | Red Hat
- MCP Adoption Statistics 2026 | Digital Applied
- Connect Claude Code to GitHub, Slack, and Databases with MCP | Code Velocity Academy