Free

MCP란 무엇인가: Claude Code를 외부 세계와 연결하기

MCP의 작동 원리와 설정 방법을 설명하여 Claude Code가 MCP Server를 통해 데이터베이스, GitHub, Slack 등 외부 시스템에 연결하는 방법을 다룬다.


Claude Code가 기본으로 할 수 있는 일에는 경계가 있다. 로컬 파일 읽기/쓰기, 터미널 명령 실행, 내장 도구 호출. 하지만 실제 프로젝트에서는 데이터베이스 조회, Notion 문서 읽기, Slack 메시지 검색, 내부 API 호출이 필요한 경우가 많다.

MCP가 바로 이 문제를 해결한다.

MCP의 역할

MCP(Model Context Protocol)는 Anthropic이 제안한 오픈 프로토콜로, AI 모델이 외부 도구와 데이터 소스와 어떻게 통신하는지를 정의한다. Claude Code에 플러그인을 설치하는 것으로 이해하면 된다. 각 MCP Server는 독립적인 서비스로, 일련의 도구를 노출하고 Claude가 세션 중에 직접 호출할 수 있다.

Hooks(Claude가 동작을 실행할 때 스크립트를 트리거하는 것)와 달리, MCP는 Claude의 능력 경계를 능동적으로 확장한다: 연결한 것은 무엇이든 Claude가 조작할 수 있게 된다.

작동 원리

아키텍처는 간단하다:

Claude Code(Client)  ←→  MCP Server  ←→  외부 시스템
  1. 설정에서 MCP Server를 선언한다(로컬 프로세스 또는 원격 서비스)
  2. Claude Code 시작 시 해당 Server에 연결하고 노출된 도구 목록을 가져온다
  3. 세션 중 Claude는 내장 Read/Write/Bash를 호출하듯 해당 도구를 호출할 수 있다
  4. MCP Server가 요청을 처리하고 결과를 Claude에게 반환한다

전체 과정은 사용자에게 투명하다. 당신이 보는 것은 Claude가 "데이터베이스를 확인해 보겠습니다"라고 말하고 결과를 가져오는 것이고, 뒤에서는 MCP가 요청을 전달하고 있다.

MCP의 세 가지 기능 유형

MCP Server는 세 가지를 노출할 수 있다:

Tools(도구)
Claude가 능동적으로 호출할 수 있는 함수——"사용자 테이블 조회", "문서 검색", "Slack 메시지 전송" 등. 가장 많이 사용된다.

Resources(리소스)
Claude가 컨텍스트로 읽을 수 있는 구조화된 데이터——데이터베이스 schema, API 문서, 설정 파일 등.

Prompts(프롬프트 템플릿)
사용자가 직접 참조할 수 있는 미리 정의된 프롬프트 조각.

실제 사용에서는 90%의 경우가 Tools다.

빠른 시작: 기존 MCP Server 추가하기

공식 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 환경을 쓸 수 있다.

기존 MCP Server는 어디서 찾나

Anthropic이 공식 Server를 제공한다:

  • @modelcontextprotocol/server-filesystem — 파일 시스템 접근
  • @modelcontextprotocol/server-github — GitHub 작업 (PR, issue, 코드 검색)
  • @modelcontextprotocol/server-postgres — PostgreSQL 쿼리
  • @modelcontextprotocol/server-slack — Slack 메시지 읽기/쓰기
  • @modelcontextprotocol/server-google-maps — 지도 및 위치 정보

커뮤니티에는 Notion, Linear, Jira, 각종 데이터베이스를 다루는 서드파티 구현도 많다.

MCP vs Hooks: 무엇을 선택할까

Hooks MCP
트리거 방식 Claude가 특정 동작을 실행할 때 Claude가 능동적으로 호출
용도 기존 동작 가로채기/강화 새로운 능력 추가
대표 사례 저장 시 포맷팅, 커밋 전 검사 DB 조회, 외부 API 호출
설정 복잡도 낮음 중간

둘은 상호 보완적이다. Hooks는 "Claude가 일하는 방식"을 제어하고, MCP는 "Claude가 무엇을 할 수 있는지"를 제어한다.

다음 단계

이 글은 MCP의 개념 입문이다. 이후 글에서는 다음을 다룰 것이다:

  • Claude Code를 실제 PostgreSQL 데이터베이스(실제 schema)에 연결하기
  • 내부 도구와 API 연결하기
  • 처음부터 MCP Server 직접 만들기

이미 연결하고 싶은 시스템이 있다면, MCP Server 목록을 먼저 확인해보자. 이미 누군가가 만들어 놓았을 가능성이 높다.