MCP란 무엇인가: AI의 USB-C 포트
1편에서 다룬 ACP(Agent Client Protocol)가 에디터와 에이전트 사이의 통신 규격이라면, MCP(Model Context Protocol)는 AI 에이전트와 외부 세계를 연결하는 규격이다. ACP가 에이전트의 “입과 귀”라면, MCP는 에이전트의 “손과 발”이다.
MCP 공식 문서는 이를 “AI 애플리케이션의 USB-C 포트”라고 표현한다. USB-C가 전자기기 연결을 표준화한 것처럼, MCP는 AI 애플리케이션이 외부 시스템에 연결하는 방법을 표준화한다.
Anthropic이 2024년 말 오픈소스로 공개한 이 프로토콜은 이제 Claude, ChatGPT, VS Code, JetBrains 등 주요 AI 도구에서 지원하는 사실상의 표준이 되었다.
MCP 아키텍처: Host, Client, Server
MCP의 구조는 명확하게 3개 참여자로 나뉜다.
- MCP Host: AI 애플리케이션 (예: Claude Desktop, VS Code, Claude Code). 하나 이상의 MCP Client를 관리
- MCP Client: Host 안에서 MCP Server와 연결을 유지하는 컴포넌트. Server마다 별도의 Client 인스턴스 생성
- MCP Server: 외부 데이터/도구를 AI에게 제공하는 프로그램. 로컬 또는 원격 실행
예를 들어 VS Code가 Sentry MCP 서버와 파일시스템 MCP 서버에 동시에 연결하면, VS Code(Host)는 각각의 서버에 대해 별도의 MCP Client를 생성한다. 각 Client는 자기 Server와 독립적인 연결을 유지한다.
MCP가 제공하는 3가지 핵심 기능
MCP 서버는 AI에게 3가지 종류의 “맥락(Context)”을 제공할 수 있다.
1. Resources (데이터 소스)
파일, 데이터베이스, API 응답 등 AI가 참조할 수 있는 데이터를 노출한다.
// 예: 파일시스템 MCP 서버가 제공하는 리소스
{
"uri": "file:///home/user/project/README.md",
"name": "README",
"mimeType": "text/markdown"
}
2. Tools (도구)
AI가 실제로 실행할 수 있는 함수를 제공한다. 검색, 계산, API 호출, 파일 수정 등.
// 예: GitHub MCP 서버의 도구
{
"name": "create_issue",
"description": "GitHub 저장소에 이슈를 생성합니다",
"inputSchema": {
"type": "object",
"properties": {
"repo": { "type": "string" },
"title": { "type": "string" },
"body": { "type": "string" }
}
}
}
3. Prompts (워크플로우)
특정 작업에 최적화된 프롬프트 템플릿을 제공한다. 사용자가 선택하면 미리 정의된 워크플로우가 실행된다.
통신 방식: STDIO vs Streamable HTTP
MCP는 두 가지 전송 방식을 지원한다.
| 구분 | STDIO | Streamable HTTP |
|---|---|---|
| 실행 위치 | 로컬 (같은 머신) | 원격 (클라우드/서버) |
| 클라이언트 수 | 1개 (단일 연결) | 다수 (멀티 클라이언트) |
| 시작 방식 | Host가 서브프로세스로 실행 | 독립 서버로 실행 |
| 대표 예시 | 파일시스템, 로컬 DB | Sentry, GitHub, Slack |
실전: 어떤 MCP 서버들이 있나
이미 수백 개의 MCP 서버가 존재한다. 주요 카테고리별로 정리하면 다음과 같다.
개발 도구
- GitHub: 이슈/PR 생성, 코드 검색, 저장소 관리
- Sentry: 에러 추적, 성능 모니터링 데이터 접근
- PostgreSQL/MySQL: 데이터베이스 직접 쿼리
- Docker: 컨테이너 관리, 이미지 빌드
생산성
- Google Drive/Calendar/Gmail: 구글 워크스페이스 전체 연동
- Notion: 페이지 읽기/쓰기, 데이터베이스 쿼리
- Slack: 메시지 전송, 채널 관리
- Obsidian: 노트 검색, 편집
데이터/분석
- Brave Search: 웹 검색
- Puppeteer/Playwright: 웹 브라우징, 스크래핑
- AWS/GCP: 클라우드 인프라 관리
MCP vs 기존 방식: 왜 표준이 필요했나
MCP 이전에는 각 AI 도구가 외부 서비스와 연동하려면 개별 플러그인이나 API 통합을 직접 구현해야 했다. ChatGPT 플러그인, Claude의 도구 호출 등 모두 각자의 방식으로 동작했다.
문제는 명확했다.
- N개의 AI 앱이 M개의 서비스와 연동하려면 N x M개의 통합이 필요
- 각 통합마다 인증, 에러 처리, 데이터 포맷이 전부 다름
- 새 AI 앱이 나오면 모든 서비스 통합을 처음부터 다시 구축
MCP는 이를 N + M으로 줄인다. AI 앱은 MCP Client만 구현하면 모든 MCP Server에 접근 가능하고, 서비스는 MCP Server만 만들면 모든 AI 앱에서 사용된다.
Claude Desktop에서 MCP 서버 설정하기
실제로 MCP를 사용하는 가장 쉬운 방법은 Claude Desktop이다. 설정 파일 하나로 MCP 서버를 추가할 수 있다.
// claude_desktop_config.json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/documents"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
}
}
}
}
이 설정만 추가하면 Claude가 로컬 파일을 읽고, GitHub 이슈를 생성하고, PR을 리뷰할 수 있게 된다. 코드 한 줄 작성 없이.
MCP 서버 직접 만들기
MCP 서버를 만드는 것도 간단하다. Python SDK를 사용한 최소 예제를 보자.
# my_mcp_server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("My Server")
@mcp.tool()
def get_weather(city: str) -> str:
"""도시의 현재 날씨를 반환합니다."""
# 실제로는 날씨 API 호출
return f"{city}의 현재 날씨: 맑음, 15도"
@mcp.resource("config://app")
def get_config() -> str:
"""앱 설정을 반환합니다."""
return "debug=true, version=1.0"
if __name__ == "__main__":
mcp.run()
이것만으로 Claude, VS Code, 그 외 모든 MCP 호환 AI 앱에서 날씨 조회와 설정 확인 기능을 사용할 수 있다.
MCP가 바꾸는 미래
MCP의 진짜 가치는 생태계에 있다. 하나의 MCP 서버를 만들면, Claude에서도, ChatGPT에서도, VS Code에서도, JetBrains에서도 동작한다. 개발자는 AI 앱마다 플러그인을 따로 만들 필요가 없다.
2026년 현재, MCP 서버 생태계는 폭발적으로 성장하고 있다. Anthropic이 시작했지만, OpenAI, Google, Microsoft 모두 MCP를 지원하거나 호환 프로토콜을 개발하고 있다. AI 에이전트가 세상과 소통하는 표준 언어가 만들어지고 있는 것이다.
다음 편 예고
다음 3편에서는 ACP와 MCP를 실전에서 함께 사용하는 방법을 다룬다. Zed 에디터에서 Claude Agent(ACP)를 설정하고, MCP 서버를 연결해서 파일 시스템, GitHub, 데이터베이스를 AI가 직접 다루는 환경을 구축해본다.