MCP의 작동 원리와 설정 방법을 설명하여 Claude Code가 MCP Server를 통해 데이터베이스, GitHub, Slack 등 외부 시스템에 연결하는 방법을 다룬다.
Claude Code가 기본으로 할 수 있는 일에는 경계가 있다. 로컬 파일 읽기/쓰기, 터미널 명령 실행, 내장 도구 호출. 하지만 실제 프로젝트에서는 데이터베이스 조회, Notion 문서 읽기, Slack 메시지 검색, 내부 API 호출이 필요한 경우가 많다.
MCP가 바로 이 문제를 해결한다.
MCP(Model Context Protocol)는 Anthropic이 제안한 오픈 프로토콜로, AI 모델이 외부 도구와 데이터 소스와 어떻게 통신하는지를 정의한다. Claude Code에 플러그인을 설치하는 것으로 이해하면 된다. 각 MCP Server는 독립적인 서비스로, 일련의 도구를 노출하고 Claude가 세션 중에 직접 호출할 수 있다.
Hooks(Claude가 동작을 실행할 때 스크립트를 트리거하는 것)와 달리, MCP는 Claude의 능력 경계를 능동적으로 확장한다: 연결한 것은 무엇이든 Claude가 조작할 수 있게 된다.
아키텍처는 간단하다:
Claude Code(Client) ←→ MCP Server ←→ 외부 시스템
전체 과정은 사용자에게 투명하다. 당신이 보는 것은 Claude가 "데이터베이스를 확인해 보겠습니다"라고 말하고 결과를 가져오는 것이고, 뒤에서는 MCP가 요청을 전달하고 있다.
MCP Server는 세 가지를 노출할 수 있다:
Tools(도구)
Claude가 능동적으로 호출할 수 있는 함수——"사용자 테이블 조회", "문서 검색", "Slack 메시지 전송" 등. 가장 많이 사용된다.
Resources(리소스)
Claude가 컨텍스트로 읽을 수 있는 구조화된 데이터——데이터베이스 schema, API 문서, 설정 파일 등.
Prompts(프롬프트 템플릿)
사용자가 직접 참조할 수 있는 미리 정의된 프롬프트 조각.
실제 사용에서는 90%의 경우가 Tools다.
공식 Filesystem MCP를 예로 들면, 이 Server는 Claude가 작업 디렉토리 외부의 파일 시스템에 접근할 수 있게 해준다.
설치
npm install -g @modelcontextprotocol/server-filesystem
설정
~/.claude/settings.json 편집:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/yourname/Documents"
]
}
}
}
확인
Claude Code를 재시작하고 시도:
/Users/yourname/Documents 아래의 모든 PDF 파일 목록을 보여줘
Claude가 "파일 시스템에 접근할 수 없습니다"라고 하는 대신 결과를 반환하면, MCP가 작동하고 있는 것이다.
{
"mcpServers": {
"서비스 이름": {
"command": "시작 명령",
"args": ["인수 목록"],
"env": {
"API_KEY": "xxx"
}
}
}
}
command + args: Claude Code가 MCP Server 프로세스를 시작하는 명령env는 API 키 등 민감한 설정을 전달하는 데 사용; 코드에 하드코딩하지 말 것MCP 설정은 우선순위 낮은 순으로 세 곳에 둘 수 있다:
| 위치 | 파일 | 사용 시점 |
|---|---|---|
| 전역 | ~/.claude/settings.json |
모든 프로젝트에서 쓸 도구 |
| 프로젝트 | .claude/settings.json |
이 프로젝트 전용 |
| 로컬 오버라이드 | .claude/settings.local.json |
개인 설정, git에 커밋하지 않음 |
데이터베이스 연결, 내부 API 같은 프로젝트 전용 MCP는 프로젝트 설정에 두고 코드와 함께 커밋한다. 팀원이 클론하면 바로 같은 MCP 환경을 쓸 수 있다.
Anthropic이 공식 Server를 제공한다:
커뮤니티에는 Notion, Linear, Jira, 각종 데이터베이스를 다루는 서드파티 구현도 많다.
| Hooks | MCP | |
|---|---|---|
| 트리거 방식 | Claude가 특정 동작을 실행할 때 | Claude가 능동적으로 호출 |
| 용도 | 기존 동작 가로채기/강화 | 새로운 능력 추가 |
| 대표 사례 | 저장 시 포맷팅, 커밋 전 검사 | DB 조회, 외부 API 호출 |
| 설정 복잡도 | 낮음 | 중간 |
둘은 상호 보완적이다. Hooks는 "Claude가 일하는 방식"을 제어하고, MCP는 "Claude가 무엇을 할 수 있는지"를 제어한다.
이 글은 MCP의 개념 입문이다. 이후 글에서는 다음을 다룰 것이다:
이미 연결하고 싶은 시스템이 있다면, MCP Server 목록을 먼저 확인해보자. 이미 누군가가 만들어 놓았을 가능성이 높다.