Skip to main content

MCP 기초

**Model Context Protocol (MCP)**은 Anthropic이 만든 개방형 표준으로, AI 모델이 외부 데이터 소스 및 도구에 연결하는 방법을 정의합니다. 범용 어댑터라고 생각하세요 -- 모든 AI 애플리케이션이 모든 서비스에 대해 커스텀 통합을 구축하는 대신, MCP는 모든 AI 호스트가 MCP 호환 서버와 통신하는 데 사용할 수 있는 표준화된 프로토콜을 제공합니다.

Shopify 개발자에게 MCP는 특히 강력합니다. Claude Code(및 기타 AI 도구)가 Shopify의 API와 직접 상호작용하고, 문서를 읽고, 테마를 검증하고, 스토어 데이터를 관리할 수 있게 해줍니다 -- 모두 표준화되고 조합 가능한 인터페이스를 통해.

MCP가 존재하는 이유

MCP 이전에는 AI 모델을 외부 서비스에 연결하려면 모든 통합에 대해 커스텀 코드가 필요했습니다. Claude가 Shopify, GitHub, Slack과 상호작용하길 원하면 서로 다른 인증 흐름, 데이터 형식, 오류 처리 패턴을 가진 세 가지 별도의 커스텀 통합이 필요했습니다.

MCP는 단일 프로토콜로 이를 해결합니다:

  • 도구 개발자에게: 하나의 MCP 서버를 구축하면 모든 MCP 호환 AI 호스트에서 작동합니다
  • AI 호스트에게: MCP를 한 번 지원하면 전체 도구 생태계에 접근할 수 있습니다
  • 최종 사용자에게: 통합 코드를 작성하지 않고 도구를 조합할 수 있습니다
MCP는 오픈 소스입니다

MCP는 TypeScript, Python, Java, Kotlin, C#, Swift, Go에서 사용할 수 있는 SDK가 있는 개방형 사양입니다. 누구나 MCP 서버나 클라이언트를 구축할 수 있습니다. 사양 및 SDK는 modelcontextprotocol.io에서 사용할 수 있습니다.

아키텍처

MCP는 세 개의 구별되는 레이어를 가진 클라이언트-서버 아키텍처를 따릅니다:

세 가지 레이어

호스트: 사용자가 상호작용하는 애플리케이션입니다. Claude Code, Cursor, Claude Desktop, VS Code Copilot 등이 MCP 호스트의 예시입니다. 호스트는 사용자 인터페이스를 관리하고 AI 모델과 MCP 클라이언트 간의 조율을 담당합니다.

클라이언트: 호스트가 생성하며, 서버 연결당 하나의 클라이언트가 있습니다. 클라이언트는 프로토콜 협상, 기능 교환, 메시지 라우팅을 처리합니다. 클라이언트와 직접 상호작용하는 경우는 드물며 호스트가 관리합니다.

서버: 특정 기능을 노출하는 경량 프로그램입니다. Shopify MCP 서버는 상품 쿼리 도구, 문서 읽기 리소스, 일반적인 작업을 위한 프롬프트를 노출할 수 있습니다.

전송 유형

MCP는 클라이언트와 서버 간 통신을 위한 여러 전송 메커니즘을 지원합니다. 각 전송에는 서로 다른 장단점이 있습니다.

stdio (표준 입력/출력)

로컬 개발에 가장 일반적인 전송입니다. 호스트가 MCP 서버를 자식 프로세스로 생성하고 stdin/stdout을 통해 통신합니다.

stdio 전송 예시
# Claude Code가 이 프로세스를 생성하고 stdin/stdout을 통해 통신합니다
npx -y @anthropic-ai/shopify-dev-mcp@latest

장점: 간단한 설정, 네트워크 설정 불필요, 보안 (로컬 전용) 단점: 로컬 전용, 서버 인스턴스당 하나의 클라이언트 적합한 경우: 개발 도구, Claude Code, Cursor

SSE (Server-Sent Events)

스트리밍 응답을 위해 HTTP와 Server-Sent Events를 사용합니다. 서버가 웹 서비스로 실행됩니다.

SSE 전송 예시
# 서버가 URL에서 실행됩니다
http://localhost:3000/sse

장점: 네트워크 접근 가능, 다수의 클라이언트 연결 가능, 방화벽을 통과 단점: 더 복잡한 설정, HTTP 서버 필요 적합한 경우: 공유 팀 서버, 원격 접근

Streamable HTTP

표준 HTTP 요청과 선택적 스트리밍을 사용하는 최신 전송입니다. 프로덕션 배포에 권장되는 전송입니다.

HTTP 전송
# 서버 엔드포인트
http://localhost:3000/mcp

장점: 표준 HTTP 시맨틱, 배포 용이, stateful 및 stateless 작업 모두 지원 단점: 최신 전송으로 현재 도구 지원이 적음 적합한 경우: 프로덕션 배포, 클라우드 호스팅 서버

Shopify 개발에 어떤 전송을 사용할까요?

Claude Code를 사용한 로컬 개발에는 stdio를 사용하세요. 설정이 전혀 필요 없습니다 -- Claude Code를 MCP 서버 명령에 지정하기만 하면 나머지를 처리합니다. 팀 간에 MCP 서버를 공유하거나 원격으로 접근해야 할 때 SSE 또는 HTTP를 사용하세요.

MCP 프리미티브

MCP는 서버가 노출할 수 있는 네 가지 핵심 프리미티브를 정의합니다:

도구 (Tools)

도구는 AI 모델이 작업을 수행하기 위해 호출할 수 있는 함수입니다. 가장 일반적으로 사용되는 프리미티브입니다.

예시: Shopify 상품 검색 도구
{
"name": "search_products",
"description": "Search for products in the Shopify store by title, vendor, or tag",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search query string"
},
"limit": {
"type": "number",
"description": "Maximum results to return",
"default": 10
}
},
"required": ["query"]
}
}

주요 특성:

  • 모델이 제어: AI가 호출 시기를 결정합니다
  • 부작용이 있을 수 있음 (생성, 업데이트, 삭제)
  • 구조화된 결과를 반환
  • 명확하고 설명적인 이름과 설명이 필요

리소스 (Resources)

리소스는 컨텍스트에 로드할 수 있는 읽기 전용 데이터를 제공합니다. AI가 접근할 수 있는 파일이나 문서로 생각하세요.

예시: Shopify API 문서 리소스
{
"uri": "shopify://docs/admin-api/products",
"name": "Products API Documentation",
"mimeType": "text/markdown",
"description": "Complete reference for the Shopify Admin API Products endpoints"
}

주요 특성:

  • 애플리케이션이 제어: 호스트가 로드 시기를 결정합니다
  • 읽기 전용 (부작용 없음)
  • 정적(문서) 또는 동적(라이브 데이터)일 수 있음
  • 커스텀 스킴을 사용한 URI 기반 주소 지정 지원

프롬프트 (Prompts)

프롬프트는 사용자가 일반적인 작업을 수행하는 데 도움이 되는 미리 작성된 템플릿입니다. 사용자 대면 -- 제안이나 슬래시 명령으로 표시됩니다.

예시: Shopify 앱 스캐폴딩 프롬프트
{
"name": "scaffold_shopify_app",
"description": "Generate a complete Shopify app scaffold",
"arguments": [
{
"name": "app_type",
"description": "Type of app (remix, custom, hydrogen)",
"required": true
},
{
"name": "features",
"description": "Comma-separated list of features to include",
"required": false
}
]
}

주요 특성:

  • 사용자가 제어: 사용자가 명시적으로 선택
  • 메시지 템플릿을 반환 (원시 데이터가 아님)
  • 리소스의 동적 콘텐츠를 포함할 수 있음
  • 대화 시작 또는 워크플로우 트리거 역할

샘플링 (Sampling)

샘플링은 MCP 서버가 AI 모델에 텍스트 생성을 요청할 수 있게 합니다. 서버가 AI의 추론을 활용할 수 있는 에이전틱 서버 측 워크플로우를 가능하게 합니다.

주요 특성:

  • 서버 시작: 서버가 AI 완성을 요청
  • 인간 개입: 호스트는 사용자가 승인/거부할 수 있도록 해야 함
  • 서버 로직 내에서 다단계 추론을 가능하게 함
  • 복잡한 도구 오케스트레이션에 사용
샘플링은 고급 기능입니다

대부분의 Shopify MCP 서버는 샘플링을 사용하지 않습니다. 도구 실행의 일부로 복잡한 추론을 수행해야 하는 커스텀 MCP 서버를 구축할 때 주로 유용합니다. 기존 MCP 서버만 사용하는 경우 샘플링은 현재로서는 안전하게 건너뛸 수 있습니다.

MCP vs 기존 API 통합

MCP가 직접 API 통합과 어떻게 다른지 이해하면 각각을 언제 사용할지 명확해집니다.

항목직접 API 통합MCP 통합
설정API별 커스텀 코드표준화된 프로토콜
인증API별 인증 흐름서버가 처리
발견문서 읽기, 코드 작성자동 도구 발견
업데이트수동 코드 변경서버가 독립적으로 업데이트
조합성결합하기 어려움서버를 자유롭게 조합
AI 인식모델이 API 존재를 모름모델이 도구를 동적으로 발견

직접 API 호출을 사용할 때

  • 프로덕션 앱 코드: Shopify 앱은 MCP를 통하지 않고 Admin API를 직접 호출해야 합니다
  • 고성능 경로: MCP는 프로토콜 레이어를 추가합니다; 지연에 민감한 작업에서는 건너뛰세요
  • 단순하고 안정적인 통합: API 엔드포인트가 하나만 필요하면 MCP는 과도합니다

MCP를 사용할 때

  • AI 지원 개발: 개발 중 Claude Code가 Shopify와 상호작용
  • 다중 도구 워크플로우: Shopify 데이터를 다른 서비스(분석, CMS, 배송)와 결합
  • 탐색 및 프로토타이핑: 코드를 작성하지 않고 빠르게 API 작업 테스트
  • 문서 및 스키마 접근: Shopify 문서와 GraphQL 스키마를 AI 컨텍스트에 가져오기
MCP는 개발용이지 프로덕션용이 아닙니다

흔한 오해: MCP는 앱의 Shopify API 통합을 대체하는 것이 아닙니다. 프로덕션 앱은 인증된 클라이언트를 통해 Shopify Admin API를 직접 사용해야 합니다. MCP는 AI 어시스턴트에게 Shopify 생태계에 대한 구조화된 접근을 제공하여 개발 워크플로우를 향상시키는 도구입니다.

Shopify의 MCP 생태계

Shopify MCP 생태계에는 각각 다른 목적을 제공하는 여러 서버가 포함됩니다:

각 서버는 이 모듈의 다음 섹션에서 자세히 다룹니다.

첫 MCP 서버 설정하기

MCP 서버를 Claude Code에 추가하는 것이 얼마나 간단한지 빠르게 미리 보겠습니다:

Shopify Dev MCP 서버 추가
claude mcp add shopify-dev-mcp -s user -- npx -- -y @anthropic-ai/shopify-dev-mcp@latest

이 단일 명령으로 Shopify Dev MCP 서버가 전역으로 등록됩니다. 다음에 Claude Code를 시작하면 Shopify 문서 검색, GraphQL 스키마 인트로스펙션, 테마 검증에 자동으로 접근할 수 있습니다.

각 MCP 서버를 다음 페이지에서 자세히 다루겠습니다.

다음 단계

MCP 아키텍처와 프리미티브를 이해했으니, Shopify Dev MCP 서버로 진행하여 Shopify의 공식 MCP 서버를 설정하고 기능을 탐색하세요.