MCPs — 섬에서 대륙으로
이전 이야기에서: 지민은 Rules로 350줄 CLAUDE.md를 7개 파일로 해체했다. 코딩 스타일, 보안, 테스트, Git — 각각 독립적으로 관리되고, 필요할 때만 로드된다. 코드베이스 안에서 Claude는 전능해졌다. 그런데...
Harness = Tools + Knowledge + Context + Permissions
MCPs는 Tools 레이어를 외부 세계까지 확장한다. "표준화된 프로토콜로 모든 외부 서비스를 툴로"
"저는 접근할 수 없어요"
소연의 슬랙 메시지가 울렸다.
소연: 투자자 미팅이 잡혔어. 3주 후. 외부 서비스 연동 필요한 것들 정리해줘.
지민이 Stripe 결제 연동 버그를 고쳤다. 테스트도 통과했다. 자연스럽게 말했다.
나: 이 버그를 고쳤으니까 관련 GitHub 이슈 닫아줘
Claude: 저는 GitHub에 접근할 수 없어요.
나: 작업 완료됐으니까 Jira 티켓 Done으로 바꿔줘
Claude: 저는 Jira에 접근할 수 없어요.
나: 이 데이터로 분석해줘 (DB 조회)
Claude: 저는 데이터베이스에 접근할 수 없어요.
Claude는 로컬 파일 시스템 안에서만 살았다. 외부 세계는 벽 너머였다.
개발자들은 그 벽을 넘고 싶었다. 그런데 각 서비스마다 다른 API, 다른 인증 방식, 다른 데이터 형식... 매번 새로 붙이는 건 엄청난 작업이었다.
"표준화된 방식으로 외부 서비스를 Claude 툴로 만들 수 없을까?"
해결책의 탄생: "프로토콜을 만들자"
Agent Loop(Ch01)에서 배운 것을 떠올려보자. Claude는 "도구 목록"을 보고 필요한 도구를 골라 쓴다. MCP는 이 도구 목록에 외부 서비스 도구를 추가하는 것이다.
Claude가 쓸 수 있는 도구 목록:
MCP 이전:
Read → 파일 읽기
Write → 파일 쓰기
Bash → 터미널 실행
↑ 여기까지. 로컬 파일시스템만.
MCP 이후:
Read → 파일 읽기 ← 원래 있던 것
Write → 파일 쓰기 ← 원래 있던 것
Bash → 터미널 실행 ← 원래 있던 것
github__create_issue → GitHub 이슈 생성 ← MCP가 추가!
jira__close_ticket → Jira 티켓 닫기 ← MCP가 추가!
slack__send_message → Slack 메시지 ← MCP가 추가!
Claude 입장에서는 차이가 없다. Read로 파일을 읽든, github__create_issue로 이슈를 만들든, 같은 "도구 사용" 메커니즘이다. 새로운 학습이 필요 없다. 도구 목록이 늘어났을 뿐.
Anthropic은 **Model Context Protocol (MCP)**을 발표했다.
핵심 아이디어: 외부 서비스가 "MCP 서버"를 구현하면, Claude가 표준화된 방식으로 그 서비스를 툴로 쓸 수 있다.
비유하자면:
- USB 이전: 프린터마다 다른 포트, 다른 드라이버
- USB 이후: 모든 기기가 USB 하나로 연결됨
MCP는 AI와 외부 서비스 사이의 USB다.