5. MCP (Model Context Protocol)

ChatGPT Plugins, Claude Tools, Copilot Extensions... 각 AI마다 도구 연동 방식이 달랐습니다. MCP(Model Context Protocol)는 Anthropic이 2024년 11월 오픈소스로 공개한 AI-도구 연동 표준 프로토콜입니다. 한 번 MCP 서버를 만들면 Claude, Cursor, VS Code Copilot 어디서든 쓸 수 있습니다.

1. MCP가 해결하는 문제

기존 방식의 문제: N × M 통합

AI 앱이 3개, 외부 서비스가 5개라면 15개의 커스텀 통합을 만들어야 했습니다. 각 AI가 각자의 방식으로 도구를 정의했기 때문입니다.
MCP는 표준 프로토콜을 정의합니다. 서비스는 MCP 서버를 한 번 구현하면 되고, AI 앱은 MCP 클라이언트를 한 번 구현하면 모든 MCP 서버와 연동됩니다 — N + M 통합.

2. MCP 아키텍처

MCP 3계층 구조
Host (Claude Desktop / Cursor)
사용자와 대화하는 AI 애플리케이션
↕ (내부)
MCP Client
Host 내부에 임베드됨. MCP 프로토콜로 서버와 통신
↕ (JSON-RPC over stdio / SSE)
MCP Server (여러분이 만드는 것)
Tool, Resource, Prompt를 노출하는 경량 서버
DB / API / 파일시스템 / 외부 서비스

3. MCP 3가지 기본 요소

요소역할예시
Tool LLM이 실행할 수 있는 함수. 서버 측 로직 실행. 부작용 있음 (DB 쓰기, API 호출 등) create_order(), search_products(), send_slack_message()
Resource LLM이 읽을 수 있는 데이터. 읽기 전용. URI로 식별됨 file://logs/app.log, db://orders/ORD-123, https://api.company.com/docs
Prompt 재사용 가능한 프롬프트 템플릿. 사용자/앱이 호출해서 컨텍스트를 조립할 때 씀 code_review(language, code), explain_error(stack_trace)
MCP 서버 구현 예시 (Python SDK)
from mcp.server import Server
from mcp.server.stdio import stdio_server
import mcp.types as types

server = Server("order-service")

@server.list_tools()
async def list_tools():
    return [types.Tool(
        name="get_order_status",
        description="주문 상태 조회",
        inputSchema={
            "type": "object",
            "properties": {
                "order_id": {"type": "string"}
            },
            "required": ["order_id"]
        }
    )]

@server.call_tool()
async def call_tool(name, arguments):
    if name == "get_order_status":
        order_id = arguments["order_id"]
        status = db.get_order(order_id)
        return [types.TextContent(
            type="text", text=str(status)
        )]

async def main():
    async with stdio_server() as streams:
        await server.run(*streams)

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())
MCP vs REST API — 언제 뭘 쓰나
// MCP를 써야 할 때:
// ✅ AI 앱(Claude Desktop, Cursor)이 직접
//    여러분 서비스 기능에 접근해야 할 때
// ✅ 표준 클라이언트 생태계 활용
// ✅ Tool + Resource + Prompt 모두 노출 시

// REST API를 써야 할 때:
// ✅ 일반 백엔드 → 프론트엔드 통신
// ✅ MSA 서비스 간 통신
// ✅ MCP 미지원 클라이언트 통합

// 실무 패턴:
// 기존 REST API 서비스가 있다면
// → MCP 서버가 REST API를 래핑해서 노출
// → AI 앱은 MCP로 접근
// → 일반 클라이언트는 REST로 접근

4. 면접 대비 핵심 Q&A

Q1. "MCP가 일반 Tool Calling과 다른 점은?"

일반 Tool Calling은 특정 AI(Claude API, OpenAI API)에 종속된 방식입니다. Claude용으로 만든 도구 정의는 GPT에서 그대로 쓸 수 없습니다. MCP는 AI 플랫폼에 독립적인 표준 프로토콜입니다. MCP 서버를 한 번 만들면 Claude Desktop, Cursor, Zed, VS Code 등 MCP를 지원하는 모든 클라이언트에서 동작합니다. 또한 Tool만이 아니라 Resource(읽기 전용 데이터)와 Prompt(템플릿)도 함께 노출할 수 있습니다.

Q2. "MCP 서버를 LINE Plus에서 구현한다면 어떤 것을 만들겠어요?"

LINE 서비스 특성을 고려하면 세 가지를 만들겠습니다. 첫째, 메시지 분석 Tool입니다. LINE 채팅 데이터를 쿼리해서 특정 키워드/사용 패턴 분석. 둘째, 내부 문서 Resource입니다. Confluence나 사내 위키를 Resource로 노출해서 AI가 최신 정책을 참고하도록. 셋째, 알림 발송 Tool입니다. LINE 알림 API를 Tool로 래핑해서 특정 조건 시 자동 메시지 발송. 이 모두가 기존 REST API를 MCP 서버로 래핑하면 수 시간 안에 구현 가능합니다.

핵심 한 줄

MCP = AI-도구 연동 표준 프로토콜. Tool(실행)/Resource(읽기)/Prompt(템플릿) 세 가지를 한 서버로 노출하면 모든 MCP 지원 AI 앱에서 사용 가능.