근데 파고들수록 달랐다. MCP(Model Context Protocol)는 AI와 외부 세계 사이의 표준 통신 규약이다. AI가 내 파일 시스템에 접근하고, GitHub 레포를 읽고, 데이터베이스에 쿼리를 날리도록 만드는 “공용 언어”라고 보면 된다.
이전엔 어땠을까? 도구마다 제각각이었다. ChatGPT 플러그인은 OpenAI 방식, Claude는 Claude 방식, Cursor는 Cursor 방식. 개발자가 같은 기능을 플랫폼마다 따로 만들어야 했다. 마치 USB 규격이 제조사마다 달랐던 시절처럼, 비효율이 쌓였다.
MCP는 그걸 바꾼다.
Anthropic이 2024년 11월에 공개했고(Anthropic 공식 발표), 2025년 11월 1주년에 대규모 스펙 업데이트(비동기 작업·상태 비저장·서버 인증)가 나왔다. 지금은 Anthropic이 Linux Foundation 산하 Agentic AI Foundation(AAIF)에 기증해 오픈 표준으로 운영 중이다. (출처: Anthropic, 2025) Block, OpenAI, Google, Microsoft, AWS가 모두 공동 창립자다(출처: [Anthropic 공식 발표](https://www.anthropic.com/news/donating-the-model-context-protocol-and-establishing-of-the-agentic-ai-foundation), 2025).
기존 함수 호출(Function Calling)과 뭐가 다른지 궁금할 거다. 핵심 차이는 딱 하나다.
구분
Function Calling
MCP
표준화
플랫폼마다 다름
단일 오픈 표준
서버 재사용
불가
가능 (한 번 만들면 어디서든)
연결 방식
모델에 직접 바인딩
독립 서버로 분리
생태계
폐쇄적
오픈소스 공유 가능
한마디로, USB-C 등장 전후 차이다.
Step 2. 핵심 구조 5가지 — Host·Server·Client·Resource·Tool
구조 얘기가 지루할 수 있는데, 이건 진짜 알아야 나중에 안 헷갈린다.
MCP란 AI 애플리케이션(Host)이 외부 데이터 제공자(Server)와 표준 방식으로 대화하게 해주는 프로토콜이다.
핵심 컴포넌트 5가지
Host: MCP를 사용하는 AI 앱. Claude Desktop, Claude Code, Cursor 같은 것들
Client: Host 안에 내장된 연결 관리자. 서버 1개당 Client 1개가 붙는다
Server: 실제 데이터나 기능을 제공하는 프로그램. 내 PC에서 돌아갈 수도, 원격 서버일 수도 있다
Resource: 서버가 제공하는 데이터 (파일 내용, DB 조회 결과, API 응답 등 — GET 방식)
Tool: 서버가 제공하는 실행 가능한 기능 (파일 쓰기, 검색, 코드 실행 등 — POST 방식)
왜 그럴까? Host-Client-Server를 왜 굳이 3단계로 나눌까? 하나의 AI 앱이 동시에 여러 서버(파일 시스템, GitHub, Slack, DB)에 연결해야 하기 때문이다. Client가 각 서버를 독립적으로 관리하면 충돌 없이 병렬로 연결된다.
통신 방식은 JSON-RPC 2.0 기반이다. 처음 연결 시 Capability Negotiation(능력 협상)을 한다. 서버가 “나는 Tool과 Resource를 제공할 수 있어”라고 선언하면, Client가 그걸 확인하고 세션을 맺는다.
Prompt도 있다. Tool(행동)·Resource(데이터)·Prompt(템플릿) 세 가지가 서버가 제공하는 원시(primitive)다. Prompt는 AI와의 대화 패턴을 재사용 가능하게 만드는 것. 예를 들어 “이 파일을 코드 리뷰해줘” 같은 대화 시작 템플릿을 서버에서 제공할 수 있다.
Step 3. 실제로 어떻게 쓰나 — Claude Desktop·Cursor 설정
이론보다 실전이 중요하다.
Claude Desktop에서 파일 시스템 연결하기
Claude Desktop을 설치했다면 `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) 또는 `%APPDATA%\Claude\claude_desktop_config.json` (Windows)을 열면 된다.
“`json
{
“mcpServers”: {
“filesystem”: {
“command”: “npx”,
“args”: [
“-y”,
“@modelcontextprotocol/server-filesystem”,
“/Users/username/Documents”
]
}
}
}
“`
저장하고 Claude Desktop 재시작. 이제 Claude가 지정한 Documents 폴더를 직접 읽고 쓸 수 있다. 대화창에 “Documents 폴더에 있는 파일 목록 보여줘”라고 치면 실제로 조회해온다.
Cursor에서 GitHub MCP 연결하기
Cursor Settings → MCP 탭으로 가면 된다. 2025년 4월부터 `@modelcontextprotocol/server-github` npm 패키지는 지원이 종료됐고, 공식 Docker 이미지를 쓰는 게 권장된다.
“`json
{
“mcpServers”: {
“github”: {
“command”: “docker”,
“args”: [
“run”,
“-i”,
“–rm”,
“-e”,
“GITHUB_PERSONAL_ACCESS_TOKEN”,
“ghcr.io/github/github-mcp-server”
],
“env”: {
“GITHUB_PERSONAL_ACCESS_TOKEN”: “your_token_here”
}
}
}
}
“`
이렇게 하면 Cursor에서 “이 레포의 최근 PR 목록 보여줘”, “이슈 #123 내용 요약해줘” 같은 걸 자연어로 할 수 있다. 토큰 발급은 GitHub Settings → Developer Settings → Personal access tokens에서.
Step 4. 커스텀 MCP 서버 만들기 (Python 예시)
이게 진짜 재미있는 부분이다.
MCP 서버 개발은 장시간 타이핑이 기본이라, 기계식 키보드처럼 키 입력 피드백이 명확한 장비가 집중력 유지에 꽤 도움이 된다.
오픈소스 프로젝트에서 내부 API를 Claude Code에 연동하는 작업을 해본 적이 있다. MCP 서버 하나 만들어서 붙이니까, 자연어로 API 호출이 됐다. 설정 파일 뒤지고 curl 치던 시간이 반으로 줄었다.
설치
“`bash
pip install mcp
또는 uv 사용 (권장)
uv add mcp
“`
기본 서버 예시 — 날씨 도구 제공
“`python
from mcp.server.fastmcp import FastMCP
FastMCP: 빠르게 서버 만드는 고수준 API
mcp = FastMCP(“my-weather-server”)
@mcp.tool()
def get_weather(city: str) -> str:
“””도시 이름으로 현재 날씨를 조회합니다.”””
실제로는 날씨 API 호출
return f”{city}의 현재 날씨: 맑음, 22°C”
@mcp.resource(“config://app-settings”)
def get_app_settings() -> str:
“””앱 설정을 Resource로 제공합니다.”””
return ‘{“version”: “1.0”, “debug”: false}’
if __name__ == “__main__”:
mcp.run()
“`
코드가 짧다. 놀랍다. `@mcp.tool()` 데코레이터 하나면 함수가 AI가 호출할 수 있는 Tool이 된다. 타입 힌트(type hint)가 도구 설명서 역할을 한다. docstring이 AI에게 “이 도구는 이렇게 쓰는 거야”라고 알려준다.
Claude Desktop에 내 서버 연결하기
“`json
{
“mcpServers”: {
“my-weather”: {
“command”: “python”,
“args”: [“/path/to/my_server.py”]
}
}
}
“`
이게 전부다. 파이썬 파일 경로만 넣으면 Claude Desktop이 서버를 자동으로 실행하고 연결한다.
공식 Python SDK 문서와 예제는 [modelcontextprotocol/python-sdk](https://github.com/modelcontextprotocol/python-sdk)에 있다. FastMCP 고수준 API뿐만 아니라 저수준 Server API도 제공해서 복잡한 케이스도 처리 가능하다.
Step 5. 공식 서버 생태계 — 바로 써먹을 수 있는 것들
직접 만들기 전에, 이미 있는 거 쓰는 게 맞다.
[modelcontextprotocol/servers](https://github.com/modelcontextprotocol/servers) GitHub에 공식 레퍼런스 서버들이 모여 있다. 대표적인 것만 추리면 이렇다.
서버
기능
한 줄 요약
filesystem
파일 읽기/쓰기
지정 폴더 내 파일 전체 제어
git
Git 조작
커밋 로그·diff·브랜치 관리
sqlite
SQLite DB
자연어로 쿼리 실행
fetch
웹 콘텐츠
URL 가져와서 LLM 친화적으로 변환
memory
지식 그래프
대화 간 정보 지속 저장
sequential-thinking
추론 강화
단계적 사고 체인 구성
time
시간·타임존
시간 계산 및 변환
서드파티로는 주목할 만한 게 몇 개 있다.
Playwright MCP — Microsoft가 만든 브라우저 자동화 서버다. AI가 웹 브라우저를 직접 조작한다. 스크린샷 없이 DOM 접근성 트리로 상호작용해서 가볍다. ([microsoft/playwright-mcp](https://github.com/microsoft/playwright-mcp))
AWS Labs MCP — AWS 서비스들(S3·Lambda·CloudWatch 등)을 MCP로 제어하는 공식 서버 모음. ([awslabs/mcp](https://github.com/awslabs/mcp))
더 많은 서버를 찾고 싶다면 [MCP 공식 예제 페이지](https://modelcontextprotocol.io/examples)를 보면 된다. 커뮤니티가 엄청나게 빠르게 서버를 쌓고 있다. 2026년 현재 수천 개 이상의 MCP 서버가 공개돼 있다.
왜 이렇게 빨리 늘었을까? 한 번 만든 서버가 Claude, Cursor, 다른 MCP 지원 앱 어디서든 쓰이기 때문이다. 개발자 입장에선 한 번 만들면 시장이 통째로 열린다.
💡 사람들이 함께 묻는 질문
MCP 서버를 만들려면 어떤 언어를 써야 하나요?
Claude Desktop에서 MCP 서버가 인식이 안 될 때는?
MCP와 LangChain Tools의 차이는 무엇인가요?
원격 MCP 서버는 어떻게 보안을 설정하나요?
Step 6. 주의할 점 — 보안·인증·한계
여기까지 읽고 “당장 다 연결해야겠다”는 생각이 든다면, 잠깐만.
보안 — 가장 중요한 것부터
MCP 서버는 로컬에서 실행되지만, 그 권한 범위를 명확히 설정해야 한다.
파일 시스템 서버는 반드시 접근 허용 폴더를 최소한으로 지정해야 한다. 루트 디렉토리(`/`)를 통째로 주는 건 위험하다.
외부 서버(원격 MCP)는 2025년 11월 스펙에서 서버 인증(Server Identity) 기능이 추가됐다. 하지만 아직 모든 클라이언트가 구현을 완료한 건 아니다. 외부 원격 MCP 서버를 연결할 땐 반드시 신뢰할 수 있는 출처인지 확인할 것.
인증 토큰 관리
GitHub, Slack, Notion 같은 서비스를 연결할 때 Personal Access Token이 필요하다. 이 토큰을 JSON 설정 파일에 평문으로 넣는 건 좋지 않다. 환경 변수를 쓰는 게 맞다.
“`bash
.env 파일 또는 시스템 환경 변수로 관리
export GITHUB_PERSONAL_ACCESS_TOKEN=”ghp_xxxx”
“`
현재 한계들
솔직히 말하면, MCP가 완벽한 건 아니다.
레이트 리밋 문제: AI가 Tool을 반복 호출할 때 외부 API 레이트 리밋에 걸릴 수 있다. 서버 측에서 요청 간격을 조절하는 로직이 필요하다.
긴 컨텍스트 문제: Resource로 받아온 데이터가 너무 크면 AI의 컨텍스트 창을 금방 채운다. 데이터를 페이지네이션하거나 요약해서 제공하는 게 좋다.
에러 처리: MCP 서버가 비정상 종료되면 클라이언트가 멈추는 경우가 있다. 서버에 try-except를 꼼꼼히 넣어야 한다.
Windows 환경: `npx` 기반 서버가 Windows에서 경로 문제를 일으키는 케이스가 아직 있다. WSL2 환경에서 실행하면 대부분 해결된다.
⚠️ 주의
MCP 서버에 연결된 도구는 AI의 판단으로 실행된다. 파일 삭제, DB 업데이트 같은 되돌리기 어려운 작업을 하는 Tool은 반드시 “사용자 확인” 단계를 넣거나, 처음엔 읽기 전용(Read-only)으로만 시작하는 걸 권장한다.
최종 체크리스트 — MCP 도입 전 확인할 것
기본 설정
Claude Desktop과 터미널·에디터를 동시에 펼쳐두려면 32인치 4K 모니터 정도 화면이 있어야 쾌적하게 작업이 돌아간다.
[ ] MCP 지원 클라이언트 설치 (Claude Desktop, Claude Code, Cursor 등)
[ ] Node.js 18+ 또는 Python 3.10+ 설치 (서버 실행 환경)
[ ] 연결할 서버의 공식 GitHub README 읽기
보안
[ ] 파일 시스템 서버: 접근 폴더 최소 범위로 제한
[ ] API 토큰: 환경 변수 사용, 평문 JSON 금지
[ ] 외부 원격 서버: 출처 신뢰성 확인
운영
[ ] 서버 에러 로그 모니터링 경로 파악
[ ] 데이터 변경 Tool은 되돌리기 가능 여부 확인
[ ] 레이트 리밋 있는 API는 재시도 로직 포함 여부 확인
✍️ 작성자: 류민서 | AI 에디터 · 테크 리뷰어
AI·테크 전문 에디터 4년, ChatGPT·Claude 등 AI 도구 200종 이상을 직접 리뷰한 전문가입니다. 생성형 AI 트렌드·활용법·도구 비교를 실사용 경험 기반으로 전달합니다.
류민서의 실전 메모
오픈소스 프로젝트에서 내부 문서 검색 API를 Claude Code에 연동하는 작업에서 MCP를 처음 실전 도입했다. 기존엔 API 명세 문서를 열어두고 수동으로 curl을 치거나, 파라미터를 AI에게 붙여넣기 했다. 단순 반복이었다.
MCP 서버를 하나 만들어서 내부 API를 Tool로 노출했더니, Claude Code가 필요한 엔드포인트를 스스로 호출하기 시작했다. 세팅 시간은 2시간 정도 걸렸는데, 이후 같은 팀원들이 서버 하나를 그대로 가져다 각자 환경에 연결했다. MCP의 “한 번 만들면 어디서나” 장점을 직접 체험한 케이스였다.
한 가지 팁: 처음엔 Read-only Tool만 만들어서 시작하라. AI가 예상치 못한 방식으로 Tool을 조합하는 경우가 생각보다 많다. 쓰기 권한은 충분히 검증한 뒤에 추가하는 게 훨씬 안전하다.
MCP는 AI를 “채팅 도구”에서 “실제로 일하는 에이전트”로 업그레이드하는 핵심 인프라다. 지금 당장 Claude Desktop에 파일 시스템 서버 하나 연결해보는 것부터 시작해보자.
📌 핵심 요약: MCP = AI와 외부 세계 사이의 USB-C. 한 번 만든 서버는 Claude, Cursor, 어디서든 쓴다.
관련 글
[AI 에이전트 도입했다가 망한 기업들이 놓친 것 — 거버넌스 핵심 3가지](https://knowhub.fun/2026-ai-agent-governance-guide/)
[구글 AI 2026 총정리 — Gemini 진화부터 TPU 아이언우드까지](https://knowhub.fun/2026-google-ai-gemini-tpu-ironwood-io/)
공신력 출처
[MCP 공식 문서](https://modelcontextprotocol.io) — modelcontextprotocol.io
[MCP 공식 GitHub 조직](https://github.com/modelcontextprotocol) — github.com/modelcontextprotocol
[Anthropic MCP 발표 원문](https://www.anthropic.com/news/model-context-protocol) — anthropic.com