Claude Code MCP로 자율 DevOps 파이프라인 구축하기
GitHub·Slack·Sentry를 Model Context Protocol로 연결하는 실전 가이드
프로덕션 오류가 발생했을 때 당신은 몇 개의 탭을 오가는가? Sentry에서 스택 트레이스를 확인하고, GitHub에서 관련 커밋을 추적하고, Slack으로 팀에 알림을 보내는—이 흐름에 20분이 지나 있는 경험은 대부분의 개발자에게 익숙하다. Model Context Protocol(MCP)과 Claude Code 서브에이전트를 조합하면, 이 전체 흐름이 CLI에서 단 하나의 자연어 명령으로 완결된다.
MCP(Model Context Protocol)는 AI 시스템과 외부 도구 간 통합 방식을 표준화하는 오픈 프로토콜이다. 기존에는 각 SaaS 도구를 연결하려면 별도의 커스텀 통합 코드를 작성해야 했지만, MCP는 "AI용 USB 포트"처럼 단일 인터페이스로 수천 개의 도구를 연결한다. Claude Code(Anthropic의 CLI 기반 코딩 에이전트)는 여기에 서브에이전트 기능을 더해, 독립적인 역할을 가진 여러 에이전트가 병렬·직렬로 협력하는 멀티에이전트 자율 파이프라인을 지원한다.
이 글을 읽고 나면 GitHub·Slack·Sentry를 Claude Code에 연결하는 설정법, 오류 감지부터 PR 생성·팀 알림까지 자동화하는 파이프라인 패턴, 그리고 프로덕션 도입 전 반드시 알아야 할 보안 고려사항까지 실전 코드와 함께 갖추게 된다. 이 글은 Claude Code를 이미 사용하고 있는 개발자를 주요 독자로 한다.
핵심 개념
MCP 아키텍처: Host · Client · Server
MCP는 세 가지 역할로 구성된다.
| 역할 | 예시 | 역할 설명 |
|---|---|---|
| Host | Claude Code, Cursor | AI 애플리케이션. 여러 MCP 클라이언트를 동시에 실행 |
| Client | Host 내부 컴포넌트 | 사용자 요청을 JSON-RPC 2.0 형식으로 변환하여 서버에 전달 |
| Server | GitHub MCP, Sentry MCP | 외부 도구에 대한 접근을 제공하는 경량 서버 |
JSON-RPC 2.0: 원격 프로시저 호출을 JSON 형식으로 정의한 경량 프로토콜. 요청과 응답이 모두 JSON 객체로 직렬화되어 전송된다. MCP의 모든 도구 호출은 이 형식 위에서 동작한다.
통신 방식은 실행 환경에 따라 두 가지다. 로컬 프로세스와는 stdio를, 원격 서버와는 Streamable HTTP를 사용한다. Streamable HTTP는 2025년 3월 이후 MCP 스펙에서 채택된 명칭이므로, 구버전 MCP 서버를 사용할 경우 SSE(Server-Sent Events) 기반의 http 타입이 적용될 수 있다. 연결하려는 서버의 스펙 버전을 먼저 확인하는 것이 좋다.
MCP가 제공하는 3가지 Primitive
MCP 서버는 세 가지 기본 기능(Primitive)을 제공한다. 이 글은 실제 DevOps 파이프라인에서 가장 핵심적인 Tools를 중심으로 다루며, Resources와 Prompts는 개념 수준에서 소개한다.
| Primitive | 역할 | 동작 방식 |
|---|---|---|
| Tools | AI가 직접 호출하는 액션 함수 | create_issue, send_message 등 외부 시스템을 조작 |
| Resources | AI 컨텍스트에 주입되는 데이터 | file:///logs/deploy.log 같은 URI로 AI가 직접 읽음 |
| Prompts | 재사용 가능한 프롬프트 템플릿 | 코드 리뷰 양식, 인시던트 요약 템플릿 등을 표준화 |
Claude Code 서브에이전트: 병렬·직렬 실행 모델
서브에이전트는 메인 에이전트가 독립적인 작업을 위임하는 별도의 에이전트 인스턴스다. 각 서브에이전트는 격리된 컨텍스트 창을 가지며, 부모 대화의 MCP 도구를 기본으로 상속받는다. 병렬 실행이 지원되며, 동시에 실행 가능한 최대 수는 Claude Code 공식 릴리스 노트에서 최신 수치를 확인하는 것을 권장한다.
서브에이전트 간 데이터 전달의 핵심은 파일 시스템이다. 이전 서브에이전트가 결과를 임시 파일로 기록하면, 메인 에이전트가 이를 다음 서브에이전트의 태스크 프롬프트에 포함시켜 전달한다.
메인 에이전트
├── 서브에이전트 A: 스펙 작성 → spec-output.md 저장
├── 서브에이전트 B: spec-output.md 읽어 아키텍처 검토 → adr-output.md 저장
└── 서브에이전트 C: spec + adr 기반으로 코드 구현 + PR 생성컨텍스트 격리의 이점: 각 서브에이전트는 자신의 태스크에만 집중하므로 불필요한 컨텍스트 소모가 없다. 이는 비용 절감과 실행 집중도 향상을 동시에 가져온다.
실전 적용
기본 MCP 서버 연결 설정
프로젝트 루트의 .claude/settings.json에 MCP 서버를 등록한다. 아래는 GitHub(stdio), Sentry(HTTP), Slack(stdio) 세 가지를 동시에 연결하는 예시다.
{
"mcpServers": {
"github": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "$GITHUB_TOKEN"
}
},
"sentry": {
"type": "http",
"url": "https://mcp.sentry.dev/mcp"
},
"slack": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@slackapi/slack-mcp-plugin"],
"env": {
"SLACK_BOT_TOKEN": "$SLACK_BOT_TOKEN"
}
}
}
}| 설정 항목 | 설명 |
|---|---|
type: "stdio" |
로컬에서 npx로 서버 프로세스를 실행하고 표준 입출력으로 통신 |
type: "http" |
원격 HTTP 엔드포인트에 직접 연결. 공식 클라우드 서버가 있는 경우 사용 |
env 환경변수 |
토큰 값은 반드시 환경변수 참조($VAR_NAME) 형식으로 전달. 값 직접 입력 절대 금지 |
Sentry 인증 주의사항: https://mcp.sentry.dev/mcp는 OAuth 인증을 사용한다. Claude Code가 처음 연결할 때 브라우저 OAuth 흐름을 안내하며, CI 환경이나 셀프 호스팅 환경에서는 SENTRY_AUTH_TOKEN 환경변수를 설정하고 stdio 방식의 로컬 Sentry MCP 서버(getsentry/sentry-mcp)를 대신 사용할 수 있다.
Slack 패키지명 확인: @slackapi/slack-mcp-plugin은 slackapi/slack-mcp-plugin 레포지토리 기준의 패키지명이다. 설치 전 npm 레지스트리에서 최신 공식 패키지명을 반드시 확인하는 것을 권장한다.
설정 후 Claude Code를 재시작하면 자연어로 도구를 즉시 호출할 수 있다.
$ claude
> 최근 프로덕션 Sentry 오류 목록 보여줘
⏺ 도구 호출: sentry__get_issues (프로젝트: my-app, 환경: production)
최근 24시간 오류 8건 조회됨:
- SENTRY-1234: TypeError: Cannot read property 'id' of undefined (42회 발생)
- SENTRY-1235: UnhandledPromiseRejection in payment service (17회 발생)
...자율 CI/CD 모니터링 파이프라인
Sentry 오류 감지부터 Slack 알림까지 전 과정을 단일 명령으로 자동화하는 패턴이다.
[Sentry MCP] 프로덕션 오류 감지
↓
서브에이전트: 스택 트레이스 분석 및 근본 원인 파악
↓
[GitHub MCP] 관련 커밋 조회 → 수정 PR 자동 생성
↓
[Slack MCP] #incidents 채널에 장애 요약 + PR 링크 알림.claude/CLAUDE.md에 파이프라인 행동 규칙을 정의하면 에이전트가 일관되게 동작한다.
## 오류 대응 파이프라인 규칙
1. Sentry 오류 확인 시 반드시 관련 커밋 히스토리를 GitHub에서 조회할 것
2. PR 생성 전 테스트 코드가 포함되었는지 확인할 것
3. PR 생성 후 즉시 #incidents Slack 채널에 요약 메시지를 전송할 것
4. 프로덕션 DB에 대한 직접 쓰기 작업은 절대 수행하지 말 것이 규칙이 정의된 상태에서 다음 한 마디면 전체 파이프라인이 실행된다.
$ claude
> SENTRY-1234 스택 트레이스 분석해서 수정 PR 만들어줘3단계 프로덕션 개발 파이프라인
독립적인 역할을 가진 세 서브에이전트가 직렬로 연결되어 사양 작성부터 PR 제출까지 자동화하는 패턴이다. 단일 명령으로 전체 파이프라인이 시작된다.
$ claude
> 사용자 인증 모듈에 OAuth 2.0 지원을 추가하는 작업을 진행해줘내부적으로 다음과 같이 분기된다. 각 단계의 결과물은 파일 시스템을 통해 다음 서브에이전트로 전달된다.
메인 에이전트
│
├─ [pm-spec 서브에이전트]
│ 역할: 태스크를 읽어 수용 기준이 담긴 구조화된 스펙 작성
│ 도구: Confluence MCP (스펙 문서 저장), Jira MCP (티켓 연동)
│ 출력: spec-output.md → 파일 시스템에 저장
│
├─ [architect-review 서브에이전트] ← spec-output.md 수신
│ 역할: 스펙을 플랫폼 제약에 맞게 검토,
│ 아키텍처 결정 기록(ADR, Architecture Decision Record) 생성
│ 도구: 내부 지식베이스 MCP, GitHub MCP (기존 코드 컨텍스트 조회)
│ 출력: adr-output.md → 파일 시스템에 저장
│
└─ [implementer-tester 서브에이전트] ← spec-output.md + adr-output.md 수신
역할: 코드·테스트 작성, 문서 업데이트, PR 제출
도구: GitHub MCP (쓰기 권한만 허용)서브에이전트별 도구 접근을 제한하려면 --allowedTools 플래그를 사용한다. Claude Code에서 MCP 도구는 mcp__서버명__도구명 네임스페이스 형식으로 지정한다.
# implementer 서브에이전트는 PR 생성·파일 푸시만 허용
claude --allowedTools "mcp__github__create_pull_request,mcp__github__push_files"멀티 도구 컨텍스트 유지 워크플로우
단일 세션에서 컨텍스트 전환 없이 여러 도구를 순차 호출하는 패턴이다. 기존에는 탭 4개를 오가며 수동으로 처리하던 작업이 단일 대화 흐름으로 완결된다.
$ claude
> users 테이블에서 지난 7일간 로그인 실패 횟수가 10회 이상인 계정 조회해줘
⏺ 도구 호출: postgres__query
결과: 37개 계정 조회됨 (user_id, failure_count, last_attempt 포함)
> 이 계정들 관련 Sentry 오류가 있는지 확인해줘
⏺ 도구 호출: sentry__search_issues (이전 쿼리의 user_id 목록 기반 필터링)
결과: 12건의 관련 오류 발견 — 주로 "Invalid session token" 패턴
> 관련 이슈를 Jira에 P1 티켓으로 생성하고 보안팀 Slack 채널에 알려줘
⏺ 도구 호출: jira__create_issue + slack__post_message (동시 실행)
Jira: SEC-4521 생성 완료
Slack: #security-team 알림 전송 완료이전 쿼리 결과가 다음 도구 호출의 컨텍스트로 자동 유지된다는 점이 이 패턴의 핵심이다.
장단점 분석
장점
| 항목 | 내용 |
|---|---|
| 표준화 | 도구별 커스텀 통합 코드 불필요. MCP 서버가 존재하면 설정 한 줄로 연결 |
| 컨텍스트 지속성 | 여러 도구를 오가는 동안 이전 결과가 다음 작업에 자동으로 활용됨 |
| 병렬 처리 | 서브에이전트의 동시 실행으로 순차 작업 대비 속도 대폭 향상 |
| 확장성 | 공개 MCP 서버 5,800개 이상 존재(공식 통계 기준). 내부 전용 커스텀 서버 구축도 용이 |
| 생태계 | GitHub Copilot, CloudBees 등 주요 DevOps 플랫폼이 MCP를 핵심 확장 메커니즘으로 채택 |
단점 및 주의사항
| 항목 | 내용 | 대응 방안 |
|---|---|---|
| 보안 집중 공격 | MCP 서버는 여러 서비스의 인증 토큰을 한 곳에 보유 — 고가치 공격 타깃이 됨 | 최소 권한 원칙 적용, 토큰 범위를 Read-only로 제한 |
| 프롬프트 인젝션 | GitHub 이슈 본문·Slack 메시지 등 외부 콘텐츠가 AI 행동을 조작 가능 | 외부 입력을 AI 지시문과 분리하여 처리 |
| Tool Poisoning | 서드파티 MCP 서버에 악성 코드 삽입 사례 발생 (Red Hat 보안 보고서 참조) | 공식 레포지토리의 오픈소스 코드 직접 감사 |
| 공급망 리스크 | MCP 레지스트리가 보안 심사 없이 게재 허용 | Anthropic 공식 서버 또는 검증된 조직의 서버만 사용 |
| 과도한 자율성 | 에이전트가 명시적 제한을 벗어나 파괴적 작업을 수행할 수 있음 | CLAUDE.md에 금지 행동 명시, 중요 작업에 인간 승인 단계 추가 |
| 레이턴시 | 원격 MCP 서버 의존 시 응답 지연 발생 가능 | 로컬 stdio 서버 우선 사용, 타임아웃 설정 |
프롬프트 인젝션(Prompt Injection): 외부 데이터(GitHub 이슈 본문, Slack 메시지 등)에 숨겨진 지시문이 AI에게 의도치 않은 행동을 유발하는 공격. MCP를 통해 AI가 외부 콘텐츠를 직접 읽는 경우 특히 주의가 필요하다. 자세한 위협 분석은 arXiv 논문을 참고하라.
실무에서 가장 흔한 실수
- 토큰을 설정 파일에 하드코딩하는 것:
.claude/settings.json에 토큰 값을 직접 입력하면 git에 노출된다."GITHUB_TOKEN": "ghp_abc123..."형식 대신 반드시"GITHUB_TOKEN": "$GITHUB_TOKEN"형식으로 환경변수를 참조해야 한다. - 서브에이전트에 과도한 권한을 부여하는 것: 모든 서브에이전트가 쓰기·삭제 권한을 갖도록 설정하면 한 번의 오작동이 프로덕션 데이터를 망가뜨린다.
--allowedTools플래그로 역할별 최소 권한만 부여해야 한다. 조회 전용 서브에이전트는 읽기 도구만, 구현 서브에이전트는 쓰기 도구만 허용하는 식이다. - CLAUDE.md 없이 서브에이전트를 운영하는 것: 행동 규칙 없이 실행하면 에이전트마다 동작이 달라지고 예측 불가능한 결과가 나온다. "프로덕션 DB 직접 쓰기 금지", "PR 생성 전 테스트 포함 확인", "완료 후 Slack 알림 필수" 같은 운영 원칙을
.claude/CLAUDE.md에 파이프라인 시작 전 반드시 먼저 정의해야 한다.
마치며
지금 바로 시작할 수 있는 3단계:
- GitHub MCP 연결: 아래 설정을
.claude/settings.json에 추가하고 Claude Code를 재시작한다."최근 열린 PR 목록 보여줘"한 마디로 동작을 확인할 수 있다. { "mcpServers": { "github": { "type": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_TOKEN": "$GITHUB_TOKEN" } } } }- Sentry 연결 및 오류 대응 자동화:
sentry항목을 settings.json에 추가하고 첫 연결 시 안내되는 OAuth 인증을 완료한 후,"최근 프로덕션 오류 분석해서 수정 PR 만들어줘"파이프라인을 테스트한다. - CLAUDE.md로 에이전트 행동 규칙 정의: 프로덕션 DB 직접 쓰기 금지, PR 생성 전 테스트 포함 확인, 완료 후 Slack 알림 필수 등 팀의 운영 원칙을
.claude/CLAUDE.md에 문서화하여 에이전트의 자율성을 안전하게 확장한다.
다음 글: MCP 커스텀 서버를 직접 구축하는 방법 — Node.js로 사내 레거시 시스템을 MCP 서버로 래핑하여 Claude Code와 연결하기
참고 자료
- Introducing the Model Context Protocol | Anthropic
- Claude Code 공식 MCP 연결 가이드 | Claude Code Docs
- Claude Code 서브에이전트 공식 문서 | Claude Code Docs
- MCP 공식 스펙 (2025-11-25) | modelcontextprotocol.io
- modelcontextprotocol/servers — 레퍼런스 MCP 서버 모음 | GitHub
- Sentry 공식 MCP 서버 문서 | Sentry Docs
- getsentry/sentry-mcp | GitHub
- slackapi/slack-mcp-plugin | GitHub
- Agentic AI in DevOps — MCP 활용 사례 | CloudBees
- MCP 보안 리스크와 통제 | Red Hat
- MCP 보안 위협 분석 논문 | arXiv
- What is Model Context Protocol (MCP)? | IBM
- Understanding Skills, Agents, Subagents, and MCP in Claude Code | Colin McNamara
- VoltAgent/awesome-claude-code-subagents | GitHub