성공지식백과 로고성공지식백과
바이브 코딩MCPClaude CodeAI도구개발환경자동화

MCP(Model Context Protocol) 완전 가이드

1 조회
공유:

AI 에이전트가 GitHub를 열람하고, 데이터베이스를 조회하고, 웹을 검색하려면 무언가가 연결고리 역할을 해줘야 합니다. MCP(Model Context Protocol)는 바로 그 연결고리를 표준화한 오픈 프로토콜입니다. Anthropic이 2024년 11월 공개한 이후, 2026년 현재 200개 이상의 서버 구현체가 존재하며 Claude Code, Cursor, Windsurf, VS Code 등 주요 AI 도구들이 기본 지원합니다.

이 가이드는 MCP의 핵심 개념부터 Claude Code에서의 실제 설정, 인기 서버 목록, 직접 서버를 만드는 방법, 그리고 보안 주의사항까지 한 문서에 정리합니다. WSL + Windows 환경을 기준으로 설명합니다.

🔌

표준 연결 규약

AI 앱이 어떤 외부 도구와도 일관된 방식으로 통신하도록 규격을 정의합니다

🏗️

호스트·클라이언트·서버 구조

AI 앱(호스트)이 클라이언트를 생성해 MCP 서버에 연결하는 3계층 구조입니다

stdio / Streamable HTTP

로컬 프로세스는 stdio, 원격 서버는 Streamable HTTP 전송 방식을 사용합니다

🛡️

보안 설계 필수

도구 오염·프롬프트 인젝션 위험이 있어 최소 권한 원칙과 신뢰 검증이 중요합니다

MCP란 무엇인가

MCP(Model Context Protocol)는 AI 애플리케이션이 외부 데이터 소스·도구·서비스와 표준화된 방식으로 통신하기 위한 오픈소스 프로토콜입니다. 흔히 "AI 앱의 USB-C"라 불립니다. USB-C가 어떤 기기든 동일한 포트로 연결하듯, MCP는 어떤 AI 앱이든 동일한 프로토콜로 어떤 외부 시스템에든 연결할 수 있게 합니다.

MCP 이전에는 각 AI 도구가 GitHub, Slack, 데이터베이스 등을 연결하기 위해 각자 별도의 플러그인을 개발해야 했습니다. 서비스가 10개면 플러그인도 10개, 도구가 5개면 총 50가지 연동을 각각 만들어야 했습니다. MCP는 이 구조를 "AI 앱 1개 + MCP 서버 N개"로 단순화합니다. 서버 하나만 MCP 규격에 맞게 만들면, MCP를 지원하는 모든 AI 앱이 그 서버를 사용할 수 있습니다.

MCP 서버가 제공하는 세 가지 기본 요소

요소설명예시
Tools(도구)AI가 호출해 실제 동작을 수행하는 실행 함수파일 쓰기, API 호출, DB 쿼리
Resources(리소스)AI에게 컨텍스트 정보를 제공하는 읽기 전용 데이터 소스파일 내용, DB 레코드, API 응답
Prompts(프롬프트)언어 모델과의 상호작용을 구조화하는 재사용 가능 템플릿시스템 프롬프트, few-shot 예시
MCP 서버 기본 요소(Primitives)

아키텍처: 호스트·클라이언트·서버

MCP는 명확한 3계층 클라이언트-서버 아키텍처를 따릅니다. 공식 문서 기준으로 각 계층의 역할은 다음과 같습니다.

계층역할예시
MCP Host(호스트)하나 이상의 MCP 클라이언트를 생성·관리하는 AI 애플리케이션Claude Code, Claude Desktop, VS Code
MCP Client(클라이언트)MCP 서버와의 전용 연결을 유지하며 컨텍스트를 가져오는 컴포넌트호스트 내부에 자동 생성됨
MCP Server(서버)도구·리소스·프롬프트를 제공하는 프로그램. 로컬 또는 원격 실행filesystem, GitHub, Supabase MCP 서버
MCP 아키텍처 참여자

중요한 점은 호스트가 서버마다 별도의 클라이언트를 생성한다는 것입니다. Claude Code(호스트)가 GitHub MCP 서버와 Supabase MCP 서버를 동시에 쓴다면, 내부적으로 두 개의 클라이언트 객체가 각각 독립적인 연결을 유지합니다.

두 개의 프로토콜 레이어

MCP는 내부적으로 두 레이어로 구성됩니다. 데이터 레이어는 JSON-RPC 2.0 기반 메시지 구조와 의미론을 정의하며, 도구·리소스·프롬프트 같은 핵심 기본 요소와 수명 주기 관리를 포함합니다. 전송 레이어는 클라이언트와 서버 사이의 실제 통신 채널과 인증을 담당합니다. 데이터 레이어가 내부 레이어라면 전송 레이어는 외부 레이어입니다.

전송 방식: stdio vs Streamable HTTP

MCP는 두 가지 표준 전송 방식을 지원합니다. 어느 방식을 써도 메시지 형식은 동일하게 JSON-RPC 2.0을 사용합니다. 로컬 도구 통합에는 stdio, 클라우드 서비스 연동에는 Streamable HTTP를 씁니다.

항목stdioStreamable HTTP
통신 방식표준 입출력 스트림(stdin/stdout)HTTP POST + 선택적 SSE 스트리밍
실행 위치로컬 머신 프로세스원격 서버 (클라우드 서비스 등)
네트워크 오버헤드없음 (최적 성능)있음
인증 방식없음 (같은 머신이므로)Bearer 토큰, API 키, OAuth 2.0 등
다중 클라이언트보통 1:1 연결여러 클라이언트 동시 지원
사용 예filesystem, Context7, 로컬 DBGitHub Copilot MCP, Sentry, Notion
MCP 전송 방식 비교
⚠️SSE 전송은 deprecated

이전에 사용하던 SSE(Server-Sent Events) 전송 방식은 공식적으로 deprecated 처리되었습니다. 새로 서버를 연결할 때는 Streamable HTTP 방식을 사용하세요. 기존 SSE 서버도 가능하면 HTTP로 전환하는 것을 권장합니다.

Claude Code에서 MCP 설정하기

Claude Code는 claude mcp add 명령어 하나로 MCP 서버를 연결합니다. 설정은 세 가지 스코프(local, project, user)로 나뉘며, 원격 HTTP 서버와 로컬 stdio 서버 두 방식 모두 지원합니다.

MCP 설정 전 확인사항

  • Claude Code가 설치되어 있습니다 (claude --version으로 확인)
  • Node.js 18 이상이 설치되어 있습니다 (node --version으로 확인)
  • WSL 환경에서 작업 중입니다
  • 연결할 MCP 서버의 이름 또는 URL을 알고 있습니다

스크롤 근처에서 인터랙션이 활성화됩니다.

원격 HTTP 서버 연결

클라우드 기반 서비스는 Streamable HTTP 방식으로 연결합니다. 공식 권장 방식입니다.

원격 HTTP 서버 추가
$ claude mcp add --transport http notion https://mcp.notion.com/mcp
✓ Added MCP server: notion

$ claude mcp add --transport http github https://api.githubcopilot.com/mcp/
✓ Added MCP server: github

$ claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
✓ Added MCP server: sentry

로컬 stdio 서버 연결

로컬 파일 시스템이나 시스템에 직접 접근해야 하는 서버는 stdio 방식으로 연결합니다. -- 뒤에 실행할 명령어를 적습니다.

로컬 stdio 서버 추가 (WSL/Linux)
$ claude mcp add --transport stdio filesystem -- npx -y @modelcontextprotocol/server-filesystem /home/daniel/projects
✓ Added MCP server: filesystem

$ claude mcp add --transport stdio memory -- npx -y @modelcontextprotocol/server-memory
✓ Added MCP server: memory

$ claude mcp add --transport stdio context7 -- npx -y @upstash/context7-mcp
✓ Added MCP server: context7
ℹ️WSL 환경 안내

WSL(Windows Subsystem for Linux) 환경에서는 위 명령어를 그대로 사용할 수 있습니다. WSL에서 실행하는 Claude Code의 MCP 설정은 Linux 파일 시스템에 저장됩니다. 순수 Windows(네이티브 cmd)에서 실행한다면 npx 앞에 'cmd /c'를 추가해야 하지만, WSL이라면 해당 없습니다.

환경변수가 필요한 서버 연결

환경변수와 함께 서버 추가
$ claude mcp add --transport stdio \
  --env GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxxx \
  github-local \
  -- npx -y @modelcontextprotocol/server-github
✓ Added MCP server: github-local

$ claude mcp add --transport http \
  --header "Authorization: Bearer your-api-key" \
  secure-api https://api.example.com/mcp
✓ Added MCP server: secure-api

서버 관리 명령어

명령어설명
claude mcp list연결된 모든 MCP 서버 목록 확인
claude mcp get <이름>특정 서버의 상세 정보 확인
claude mcp remove <이름>서버 제거
/mcp (Claude Code 내)세션 안에서 서버 상태 확인 및 OAuth 인증
claude mcp add-from-claude-desktopClaude Desktop 설정에서 서버 가져오기
claude mcp reset-project-choices프로젝트 스코프 서버 승인 초기화
claude mcp 관리 명령어

설정 스코프: local · project · user

스코프저장 위치공유 범위언제 쓰나
local (기본값)~/.claude.json (프로젝트 경로 아래)나만, 현재 프로젝트만개인 실험 서버, 민감한 자격증명
project.mcp.json (프로젝트 루트, Git 포함)팀 전체, 해당 프로젝트팀 공유 서버, 프로젝트 필수 도구
user~/.claude.json나만, 모든 프로젝트개인 유틸리티, 자주 쓰는 범용 서버
MCP 서버 스코프 비교
MCP 스코프 지정 예시
# user 스코프: 모든 프로젝트에서 사용
claude mcp add --transport http --scope user hubspot https://mcp.hubspot.com/anthropic

# project 스코프: .mcp.json에 저장, 팀 공유
claude mcp add --transport http --scope project paypal https://mcp.paypal.com/mcp

# local 스코프 (기본값): 현재 프로젝트에서만
claude mcp add --transport http stripe https://mcp.stripe.com

인기 MCP 서버 목록

2026년 현재 MCP 서버 레지스트리에는 수천 개의 서버가 등록되어 있습니다. 그 중 개발자들이 실제로 많이 사용하는 핵심 서버들을 정리했습니다. 공식 Anthropic MCP 레지스트리에서 Claude Code와 호환되는 최신 서버 목록을 확인할 수 있습니다.

⚠️서드파티 서버 주의

Anthropic이 검증하지 않은 서드파티 MCP 서버는 신뢰 여부를 직접 판단해야 합니다. 특히 외부 콘텐츠를 가져오는 서버는 프롬프트 인젝션 위험이 있습니다. 공식 레지스트리에 등재된 서버라도 설치 전 소스 코드를 확인하는 것이 좋습니다.

개발 생산성 서버

서버설명연결 명령어
Context7라이브러리 공식 문서를 버전별로 실시간 조회. React, Next.js 등 수백 개 지원claude mcp add --transport http context7 https://mcp.context7.com/mcp
GitHub (공식)PR 리뷰, 이슈 관리, 코드 검색. GitHub Copilot과 통합된 공식 서버claude mcp add --transport http github https://api.githubcopilot.com/mcp/
Filesystem로컬 파일 읽기·쓰기·검색. 접근 허용 디렉터리를 명시적으로 지정claude mcp add --transport stdio filesystem -- npx -y @modelcontextprotocol/server-filesystem /경로
Memory지식 그래프 기반 영구 메모리. 세션 간 정보를 기억할 때 사용claude mcp add --transport stdio memory -- npx -y @modelcontextprotocol/server-memory
Sentry에러 조회, 스택 트레이스 분석, 배포 영향 확인claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
개발 생산성 MCP 서버

데이터 & 검색 서버

서버설명비고
SupabaseSupabase 테이블 생성·조회, Edge Function 배포, 데이터 관리Supabase 프로젝트 필요
Brave SearchBrave의 독립 인덱스 기반 실시간 웹 검색. 공식 문서·릴리스 노트 검색에 유용API 키 필요 (무료 티어 제공)
PostgreSQLPostgreSQL DB 자연어 쿼리. 읽기 전용 DSN 권장DSN 연결 문자열 필요
NotionNotion 페이지 읽기·쓰기, 데이터베이스 조회OAuth 인증 필요
Slack채널 메시지 읽기·전송, 파일 공유Bot 토큰 필요
데이터 & 검색 MCP 서버

업무 자동화 서버

서버설명비고
Playwright브라우저 자동화, 스크린샷, 웹 테스트 실행로컬 stdio 방식
Jira / Asana이슈 조회·생성·업데이트, 프로젝트 관리각 서비스 API 키 필요
Google DriveDrive 파일 검색·읽기, Docs·Sheets 접근OAuth 2.0 인증 필요
Figma디자인 파일 읽기, 컴포넌트 목록 조회Figma 토큰 필요
Gmail이메일 초안 생성·전송, 받은 편지함 읽기OAuth 2.0 인증 필요
업무 자동화 MCP 서버

직접 MCP 서버 만들기

원하는 MCP 서버가 없거나 사내 내부 시스템에 연결해야 한다면 직접 만들 수 있습니다. MCP는 TypeScript, Python, Java, Kotlin, C# 등 여러 언어의 공식 SDK를 제공합니다. 여기서는 가장 널리 쓰이는 TypeScript SDK 기준으로 최소한의 stdio 서버 예시를 보여드립니다.

프로젝트 초기화

MCP 서버 프로젝트 초기화
$ mkdir my-mcp-server && cd my-mcp-server
$ npm init -y
$ npm install @modelcontextprotocol/sdk
$ npm install -D typescript @types/node

기본 프로젝트 구조

my-mcp-server/
  src/
    index.ts
  package.json
  tsconfig.json

스크롤 근처에서 인터랙션이 활성화됩니다.

최소 서버 코드 (TypeScript)

src/index.ts
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { z } from 'zod';

// 서버 인스턴스 생성
const server = new McpServer({
  name: 'my-mcp-server',
  version: '1.0.0',
});

// 도구(Tool) 등록: 두 숫자를 더하는 계산기
server.tool(
  'add',
  { a: z.number(), b: z.number() },
  async ({ a, b }) => ({
    content: [{ type: 'text', text: String(a + b) }],
  })
);

// 리소스(Resource) 등록: 간단한 텍스트 데이터 제공
server.resource(
  'greeting',
  'greeting://hello',
  async (uri) => ({
    contents: [{ uri: uri.href, text: '안녕하세요! 이것은 MCP 리소스 예시입니다.' }],
  })
);

// stdio 전송으로 서버 시작
async function main() {
  const transport = new StdioServerTransport();
  await server.connect(transport);
  console.error('MCP 서버 실행 중...'); // stderr에 로그 출력
}

main().catch(console.error);

빌드 및 Claude Code에 연결

빌드 후 Claude Code에 등록
$ npx tsc
$ claude mcp add --transport stdio my-server -- node /절대경로/my-mcp-server/dist/index.js
✓ Added MCP server: my-server
💡개발 중 디버깅 팁

MCP Inspector를 사용하면 브라우저에서 서버와 직접 상호작용하며 테스트할 수 있습니다. 'npx @modelcontextprotocol/inspector node dist/index.js' 명령으로 실행하면 포트 6274에서 인스펙터 UI가 열립니다.

보안 주의사항

MCP 서버는 AI 모델에 강력한 능력을 부여하는 만큼, 잘못 설정하면 심각한 보안 위험을 초래합니다. 2026년 현재 연구 결과에서는 도구 오염(Tool Poisoning)과 프롬프트 인젝션이 주요 공격 벡터로 식별되었습니다.

주요 보안 위협

위협설명대응
도구 오염 (Tool Poisoning)악의적인 서버가 도구 설명(description)에 숨겨진 명령을 삽입. 사용자에겐 보이지 않지만 AI가 실행신뢰된 서버만 설치. 도구 설명 hash 검증
프롬프트 인젝션 (Prompt Injection)외부 콘텐츠(웹페이지, 파일)에 AI에게 보내는 악성 지시를 삽입외부 콘텐츠를 가져오는 서버 주의. 입력 검증
Rug Pull 공격처음엔 정상 동작하다 신뢰를 얻은 뒤 도구 동작을 악의적으로 변경도구 설명 변경 시 알림 설정. 버전 고정
과도한 권한서버에 필요 이상의 접근 권한을 부여하면 침해 시 피해 확대최소 권한 원칙 적용. DB는 읽기 전용 DSN
MCP 주요 보안 위협

보안 모범 사례

MCP 보안 체크리스트

  • 신뢰할 수 없는 출처의 MCP 서버는 설치하지 않습니다
  • DB 서버는 읽기 전용 연결 문자열을 사용합니다
  • 파일 서버는 접근 허용 디렉터리를 최소한으로 지정합니다
  • 파일·웹 콘텐츠를 가져오는 서버는 프롬프트 인젝션 위험을 인지합니다
  • 민감한 작업(자격증명, 외부 통신, 파일 시스템)은 사람이 직접 확인합니다
  • project 스코프 .mcp.json은 팀 전체가 내용을 인지하고 버전 관리합니다
  • 서버 도구 설명이 변경되면 변경 내용을 검토합니다

스크롤 근처에서 인터랙션이 활성화됩니다.

⚠️프로젝트 스코프 서버 승인 절차

.mcp.json 파일을 통해 팀에 서버를 공유할 때, Claude Code는 보안을 위해 프로젝트 스코프 서버 사용 전 승인을 요청합니다. 승인 내역을 초기화하려면 'claude mcp reset-project-choices' 명령을 사용합니다. 팀 내 의도하지 않은 서버가 자동 연결되는 것을 방지하는 중요한 장치입니다.

자주 묻는 질문 (FAQ)

MCP와 일반 API 호출의 차이는 무엇인가요?

일반 API 호출은 AI가 특정 URL에 직접 HTTP 요청을 보내는 방식입니다. MCP는 이보다 한 단계 위에 있는 표준 프로토콜로, AI가 어떤 도구가 있는지 동적으로 발견(tools/list)하고 실행(tools/call)할 수 있습니다. 또한 MCP 서버는 단순 데이터 반환뿐 아니라 리소스, 프롬프트 템플릿, 실시간 알림도 제공합니다. 즉, MCP는 AI-도구 통신을 위한 더 풍부하고 표준화된 계약입니다.

MCP 서버가 시작되지 않거나 'Connection closed' 오류가 나옵니다.

가장 흔한 원인은 두 가지입니다. 첫째, nvm을 사용하는 경우 Claude Code가 실행하는 셸 환경에서 node/npx를 찾지 못할 수 있습니다. 이 경우 절대 경로를 사용하거나, nvm이 비대화형 셸에서도 로드되도록 설정합니다. 둘째, 순수 Windows 환경(WSL 아님)에서 npx를 직접 실행하면 오류가 납니다. 이 경우 'cmd /c npx ...' 형태로 래핑해야 합니다. WSL 환경이라면 이 문제는 발생하지 않습니다.

MCP_TIMEOUT이나 MAX_MCP_OUTPUT_TOKENS는 어떻게 설정하나요?

환경변수로 설정합니다. 'MCP_TIMEOUT=10000 claude'처럼 claude 실행 앞에 붙이면 MCP 서버 시작 타임아웃을 밀리초 단위로 지정할 수 있습니다. 서버가 느리게 시작되면 늘려주세요. 'MAX_MCP_OUTPUT_TOKENS=50000 claude'는 MCP 도구 출력이 10,000 토큰을 초과할 때 발생하는 경고를 억제하고 한도를 높입니다.

여러 MCP 서버를 동시에 사용하면 느려지나요?

MCP 서버 자체는 필요한 시점에 도구를 호출할 때만 통신합니다. 서버가 많다고 항상 느려지지는 않습니다. 다만 stdio 서버는 Claude Code가 시작할 때 프로세스를 함께 실행하므로, 불필요한 서버는 제거하는 것이 좋습니다. 세 개 서버가 실용적인 균형점으로 자주 언급됩니다(예: GitHub + Context7 + 검색 서버).

팀 전체에 동일한 MCP 서버를 배포하려면 어떻게 하나요?

프로젝트 루트에 .mcp.json 파일을 만들고 Git에 커밋합니다. 'claude mcp add --scope project ...' 명령을 사용하면 자동으로 이 파일이 생성됩니다. 팀원이 레포지토리를 클론하면 동일한 MCP 서버 설정을 공유합니다. API 키 같은 민감한 값은 .mcp.json에 직접 넣지 말고 환경변수 치환 문법('${API_KEY}')을 사용하세요.

OAuth 인증이 필요한 원격 서버는 어떻게 연결하나요?

'claude mcp add --transport http sentry https://mcp.sentry.dev/mcp'로 서버를 먼저 추가합니다. 이후 Claude Code 세션 안에서 '/mcp' 명령을 입력하면 OAuth 인증 메뉴가 나타납니다. 브라우저에서 로그인하면 토큰이 안전하게 저장되며, 이후에는 자동으로 갱신됩니다.

스크롤 근처에서 인터랙션이 활성화됩니다.


MCP는 AI 에이전트가 실제 업무 도구와 연결되는 방식을 근본적으로 바꾸고 있습니다. 성공지식백과에서는 인기 MCP 서버별 심화 설정 가이드와 실전 워크플로우를 계속 업데이트할 예정입니다.

관련 글

AI 자동화 하네스 완전 가이드 — 프롬프팅과 컨텍스트 엔지니어링으로 AI 워크플로우 구축하기 (2026년 3월 기준)

AI 하네스는 단순 프롬프트를 넘어, 프롬프팅·컨텍스트·도구·검증을 하나의 파이프라인으로 묶은 자동화 시스템입니다. Claude Code와 CLAUDE.md를 중심으로 실전 하네스를 직접 설계하고 운영하는 방법을 처음부터 끝까지 정리했습니다.

7 조회

성공지식백과 주간 뉴스레터

AI 도구의 최신 소식과 실전 활용법을 매주 받아보세요.