MCP(Model Context Protocol) 완전 가이드 - AI 에이전트 도구 연결 표준 2026년
MCP란 무엇인가
MCP(Model Context Protocol)는 Anthropic이 2024년 말 발표한 오픈 표준으로, AI 모델이 외부 도구·데이터·서비스와 상호작용하는 방식을 통일한 프로토콜입니다. USB-C가 다양한 기기 간 연결을 표준화한 것처럼, MCP는 AI 에이전트와 외부 시스템 사이의 연결을 표준화합니다.
MCP 이전에는 각 AI 도구가 파일 시스템, 데이터베이스, API 등에 접근하는 방식이 제각각이었습니다. 개발자가 Claude Code용 플러그인을 만들면 Cursor나 다른 도구에서는 동작하지 않았습니다. MCP는 이 문제를 해결해 한 번 만든 MCP 서버를 표준을 지원하는 어떤 AI 클라이언트에서도 사용할 수 있게 했습니다.
MCP 아키텍처
MCP는 클라이언트-서버 구조입니다.
MCP 호스트(Host): Claude Desktop, Claude Code, Cursor 등 사용자가 직접 사용하는 AI 클라이언트입니다.
MCP 클라이언트(Client): 호스트 내부에서 MCP 서버와 통신하는 컴포넌트입니다.
MCP 서버(Server): 특정 도구나 데이터를 AI에게 제공하는 프로그램입니다. 파일 시스템 서버, GitHub 서버, Slack 서버 등이 있습니다.
[사용자] → [Claude Code / Claude Desktop] → [MCP 클라이언트]
↕
[MCP 서버 1: 파일 시스템]
[MCP 서버 2: GitHub]
[MCP 서버 3: Slack]
Claude Code에서 MCP 서버 설정
Claude Code는 MCP 서버를 프로젝트별 또는 전역으로 설정할 수 있습니다.
전역 MCP 서버 추가
# 파일 시스템 서버 추가
claude mcp add filesystem npx @modelcontextprotocol/server-filesystem /path/to/allowed/directory
# GitHub 서버 추가
claude mcp add github npx @modelcontextprotocol/server-github \
--env GITHUB_TOKEN=your_token_here
# Slack 서버 추가
claude mcp add slack npx @modelcontextprotocol/server-slack \
--env SLACK_BOT_TOKEN=your_bot_token
프로젝트별 MCP 설정 (.mcp.json)
프로젝트 루트에 .mcp.json 파일을 만들면 팀원 모두가 동일한 MCP 서버를 사용할 수 있습니다.
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "./src"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}
설정 확인
# 현재 연결된 MCP 서버 목록
claude mcp list
# 특정 서버 상태 확인
claude mcp get filesystem
Claude Desktop에서 MCP 서버 설정
Claude Desktop은 claude_desktop_config.json으로 MCP 서버를 설정합니다.
macOS 경로: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows 경로: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/Users/username/Documents"
]
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "your_api_key"
}
}
}
}
설정 후 Claude Desktop을 재시작하면 새 MCP 서버가 연결됩니다.
주요 공식 MCP 서버
| 서버 | 기능 | 설치 |
|---|---|---|
| filesystem | 로컬 파일 읽기/쓰기 | @modelcontextprotocol/server-filesystem |
| github | 저장소·이슈·PR 관리 | @modelcontextprotocol/server-github |
| brave-search | 웹 검색 | @modelcontextprotocol/server-brave-search |
| slack | 메시지 읽기/전송 | @modelcontextprotocol/server-slack |
| postgres | PostgreSQL 쿼리 | @modelcontextprotocol/server-postgres |
| puppeteer | 브라우저 자동화 | @modelcontextprotocol/server-puppeteer |
| memory | 영속 기억 저장 | @modelcontextprotocol/server-memory |
직접 MCP 서버 개발하기
TypeScript로 간단한 MCP 서버를 만드는 예시입니다. 현재 날씨를 반환하는 도구를 제공하는 서버입니다.
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import {
CallToolRequestSchema,
ListToolsRequestSchema,
} from '@modelcontextprotocol/sdk/types.js';
const server = new Server(
{ name: 'weather-server', version: '1.0.0' },
{ capabilities: { tools: {} } }
);
// 도구 목록 반환
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
{
name: 'get_weather',
description: '특정 도시의 현재 날씨를 반환합니다',
inputSchema: {
type: 'object',
properties: {
city: { type: 'string', description: '도시 이름' },
},
required: ['city'],
},
},
],
}));
// 도구 실행
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === 'get_weather') {
const city = request.params.arguments?.city as string;
// 실제 날씨 API 호출 로직
return {
content: [{ type: 'text', text: `${city}의 현재 날씨: 맑음, 22°C` }],
};
}
throw new Error('Unknown tool');
});
// 서버 시작
const transport = new StdioServerTransport();
await server.connect(transport);
서버 실행 후 Claude Desktop claude_desktop_config.json에 등록하면 Claude에서 get_weather 도구를 사용할 수 있습니다.
MCP의 세 가지 핵심 기능
도구(Tools): AI가 실행할 수 있는 함수들입니다. 파일 쓰기, API 호출, 데이터베이스 쿼리 등이 해당합니다.
리소스(Resources): AI가 읽을 수 있는 데이터 소스입니다. 파일 내용, API 응답, 데이터베이스 레코드 등입니다. 도구와 달리 부작용 없이 데이터를 제공합니다.
프롬프트(Prompts): 미리 정의된 프롬프트 템플릿입니다. 팀 공통 작업 방식을 표준화하는 데 활용됩니다.
MCP와 Function Calling의 차이
기존 OpenAI Function Calling과 MCP의 가장 큰 차이는 재사용성입니다. Function Calling은 특정 API 호출 형식에 종속되어 있어 AI 모델이 바뀌면 코드를 수정해야 합니다. MCP는 표준 프로토콜이라 Claude, GPT, Gemini 등 어떤 MCP 지원 클라이언트에서도 동일한 서버를 사용할 수 있습니다.
또한 MCP 서버는 독립 프로세스로 실행되어 언어·프레임워크 제약이 없습니다. Python, Go, Rust 등 어떤 언어로도 개발 가능합니다.
실무 활용 예시
코드 리뷰 자동화: GitHub MCP 서버로 PR 목록을 읽어와 Claude에게 리뷰를 요청합니다.
"오늘 생성된 PR들을 GitHub에서 가져와서 각각 코드 품질을 리뷰해줘"
문서 동기화: Notion이나 Confluence MCP 서버로 내부 문서를 읽어 Claude에게 질문합니다.
"우리 팀 온보딩 문서를 읽고 신입 개발자가 첫날에 해야 할 일 체크리스트를 만들어줘"
데이터 분석: PostgreSQL MCP 서버로 데이터베이스에 직접 쿼리를 실행합니다.
"지난 달 사용자 가입 추이를 분석하고 이상 패턴이 있으면 알려줘"
마치며
MCP는 AI 에이전트 생태계의 인프라입니다. 지금 당장 Claude Code나 Claude Desktop에서 파일 시스템 MCP 서버를 연결해보는 것을 시작점으로 추천합니다. 로컬 파일을 Claude가 읽고 수정하는 경험이 MCP의 가능성을 가장 직관적으로 보여줍니다.
Claude Code에서 MCP를 포함한 다양한 고급 기능은 Claude Code 완전 가이드에서 체계적으로 학습할 수 있습니다. n8n과 MCP를 결합하면 더욱 강력한 자동화가 가능합니다 — n8n 자동화 가이드도 함께 참고하세요.