codingstairs
노트에듀라이프연락
⌕검색⌘K
koen

Navigation

  • Intro
  • Blog
  • Life

연락하기

로그인 없이도 보낼 수 있어요. 답변이 필요하면 이메일을 함께 적어 주세요.

  • 익명 폼으로 의견 남기기 →
  • ✉ warragon112@gmail.com
  • 카카오톡 오픈채팅 ↗

© 2026 codingstairs

  • 노트
  • 에듀
  • 검색
  • 라이프
  • 연락
  • 약관
  • RSS
  • GitHub
노트›agent-tooling

MCP — Model Context Protocol

2026-04-28 게시· 2026-05-18 갱신·0회 조회

MCP — Model Context Protocol

Model Context Protocol (MCP) 은 LLM 클라이언트가 외부 데이터·도구·프롬프트와 표준화된 방식으로 연결하기 위한 프로토콜입니다. Anthropic 이 2024 년 11 월에 공개했고 이후 다른 AI 도구·IDE 가 빠르게 채택했습니다.

1. MCP 에 대한 이야기

MCP 는 Anthropic 이 2024 년 11 월 25 일 공개한 오픈 프로토콜입니다. 공식 사이트는 modelcontextprotocol.io, 명세·SDK 는 github.com/modelcontextprotocol 조직. 같은 외부 서비스에 대해 클라이언트마다 다른 통합을 만들지 않도록 표준화하려는 시도가 출발점.

비교 비유로 자주 쓰이는 표현이 "USB-C 같은 인터페이스" — AI 클라이언트 측 한 번의 통합으로 여러 서버에 붙고, 서버 측 한 번의 구현으로 여러 클라이언트에서 쓰일 수 있다는 의미.

2. 구성 요소

역할 의미
Host LLM 을 실제로 띄우는 응용프로그램 (Claude Desktop · Cursor).
Client Host 안에서 한 서버와 1:1 로 연결을 유지하는 컴포넌트.
Server 자원·도구·프롬프트를 노출하는 외부 프로세스.

한 Host 가 여러 Client 를 가질 수 있고, 각 Client 는 한 Server 와 연결.

3. JSON-RPC 2.0 기반

MCP 메시지는 JSON-RPC 2.0 명세를 따릅니다. 요청·응답·통지 (notification) 의 세 가지 메시지 형식, 표준화된 필드 (id · method · params · result · error).

핸드셰이크 흐름:

Client → initialize (프로토콜 버전 · 역량)
Server → initializeResult (지원 기능)
Client → notifications/initialized
…이후 정상 요청·응답 교환

4. 3 대 Primitive

MCP 는 서버가 호스트에게 노출할 수 있는 세 종류의 원시 자원을 정의합니다.

Resources — 읽기 전용 데이터 (파일 · DB row · 문서). URI 로 식별하고 resources/list · resources/read 로 가져옵니다. 모델이 컨텍스트에 직접 넣을 수 있는 자료.

Tools — 호출 가능한 함수. JSON Schema 로 입력 형식을 선언하고 모델이 호출 인자를 생성하면 호스트가 tools/call 로 실행. 부수 효과 (파일 쓰기 · API 호출) 를 포함.

Prompts — 재사용 가능한 프롬프트 템플릿. 인자를 받아 메시지 시퀀스를 만듭니다. 워크플로 단축키.

Primitive 통제권 메모
Resources 애플리케이션 컨텍스트로 어떻게 쓸지 호스트가 결정.
Tools 모델 모델이 호출 결정, 호스트가 승인·실행.
Prompts 사용자 사람이 명시적으로 선택.

호스트도 서버에게 sampling (LLM 에 다시 묻기) · roots (접근 가능한 파일 루트) 같은 기능을 제공할 수 있습니다.

5. 트랜스포트

트랜스포트 위치 메모
STDIO 로컬 프로세스 간 서버를 자식 프로세스로 띄우고 stdin/stdout 으로 JSON-RPC.
Streamable HTTP 원격 HTTP + 서버측 스트리밍. 2025 년 도입돼 옛 SSE 방식 점차 대체.

옛 명세에서는 별도의 SSE 트랜스포트가 있었으나 이후 Streamable HTTP 로 통합됐습니다. 트랜스포트가 달라도 메시지 형식은 같습니다.

6. 다른 길들

MCP 가 자리 잡기 전부터 도구 호출은 다음 모양으로 다뤄지고 있었습니다:

  • 함수 호출 — OpenAI · Anthropic · Google 의 모델별 형식. 표준이 다름.
  • OpenAPI / REST — 일반 HTTP API 를 LLM 에 직접 연결.
  • LangChain Tools — 라이브러리 측 추상화.
  • 플러그인 (ChatGPT plugin, 종료) — 단일 호스트 종속.

MCP 는 이 자리 위에 호스트 중립적 표준을 더하려는 시도.

7. 서버 등록 · SDK

대부분의 MCP 클라이언트는 mcp.json 또는 mcpServers 섹션을 통해 서버를 등록합니다.

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
    }
  }
}

공식 SDK — TypeScript · Python · Java · C# · Go · Rust · Kotlin · Swift. 서버 작성은 보통 수십 줄에서 시작 (도구 정의 + 핸들러 + 실행 진입점).

modelcontextprotocol/servers 저장소에 다양한 레퍼런스 서버 (파일시스템 · git · Postgres · SQLite · fetch · time).

8. 보안 모델

사용자 동의 — 명세는 동의 (consent) 와 통제 (control) 를 강하게 강조. 호스트는 도구 호출·자원 접근에 사용자 승인 인터페이스를 제공해야 하고, 모델 출력만 보고 무조건 실행해서는 안 된다는 권고.

격리 — 서버는 보통 별도 프로세스 (STDIO) 또는 별도 호스트 (HTTP) 에 격리. 서버 자체의 권한·시스템 접근 범위는 호스트와 분리.

인증 — 원격 트랜스포트의 인증은 OAuth 2.0 등 표준 방식. 명세 갱신을 그때그때 확인.

알려진 위협:

  • 신뢰되지 않은 서버가 악의적 도구·데이터를 노출할 가능성.
  • 도구 결과 안에 숨은 프롬프트 인젝션.
  • 환경 변수·자격증명을 서버에 그대로 전달.
  • 너무 광범위한 파일시스템 권한.

호스트 측의 권한 화면 · 서버 화이트리스트 · 도구 별 승인이 보완 장치.

9. 자주 걸리는 자리

버전 호환 — 명세가 활발히 바뀌고 있습니다. 호스트·서버·SDK 의 프로토콜 버전이 어긋나면 일부 기능이 동작하지 않을 수 있음.

STDIO 와 환경 변수 — STDIO 서버는 호스트가 시키는 환경에서 켜집니다. 자격증명 전달·로그 위치를 잘 설계.

도구 결과의 인젝션 — 외부 도구가 반환한 텍스트 안에 모델 지시가 숨어 있을 수 있습니다. 호스트의 시스템 프롬프트에 신뢰 경계 명시.

너무 많은 도구 — 컨텍스트가 도구 정의로 가득 차면 모델 성능이 떨어집니다. 작업별 서버 묶음.

HTTP 인증·CORS — 원격 서버는 평범한 웹 보안 이슈가 그대로 적용.

로깅·관측 — JSON-RPC 메시지를 그대로 로그에 남기면 민감 정보가 흘러나갈 수 있음.

에러 경계 — 서버가 죽으면 클라이언트가 매끄럽게 재연결하도록 설계.

하고픈 말

MCP 는 LLM 클라이언트와 외부 도구의 표준 인터페이스로 빠르게 자리 잡고 있습니다. USB-C 비유처럼 한 번의 통합으로 여러 호스트에서 쓰일 수 있다는 점이 매력입니다. 명세가 활발히 바뀌므로 호스트·서버·SDK 의 프로토콜 버전 호환을 운영의 첫 점검 항목으로.

Next

  • mcp-clients
  • mcp-context7

Model Context Protocol · MCP Specification · MCP GitHub · Anthropic — Introducing MCP (2024-11) · 공식 서버 모음 · TypeScript SDK · Python SDK 를 참고합니다.

agent-tooling 카테고리의 다른 글

카테고리 전체 보기 →
  • Google Stitch — 자연어로 UI 디자인 (Gemini 2.5)
  • AI Web IDE — Replit · Bolt.new · v0 · Lovable · Google AI Studio Build
  • AI 브라우저 보조 — Atlas · Comet · Edge Copilot · Dia · Brave Leo · Chrome Gemini
  • AI 워크플로 도구 — n8n · Dify · LangFlow · Flowise · Make · Zapier
  • AI 코딩 CLI — Claude Code · Gemini CLI · Codex CLI · Aider · Plandex · OpenCode
  • AI 코딩 IDE — Cursor · Windsurf · Kiro · Trae · Antigravity 등