ChatGPT Plugins, Claude Tools, Copilot Extensions... 각 AI마다 도구 연동 방식이 달랐습니다. MCP(Model Context Protocol)는 Anthropic이 2024년 11월 오픈소스로 공개한 AI-도구 연동 표준 프로토콜입니다. 한 번 MCP 서버를 만들면 Claude, Cursor, VS Code Copilot 어디서든 쓸 수 있습니다.
AI 앱이 3개, 외부 서비스가 5개라면 15개의 커스텀 통합을 만들어야 했습니다.
각 AI가 각자의 방식으로 도구를 정의했기 때문입니다.
MCP는 표준 프로토콜을 정의합니다. 서비스는 MCP 서버를 한 번 구현하면 되고,
AI 앱은 MCP 클라이언트를 한 번 구현하면 모든 MCP 서버와 연동됩니다 — N + M 통합.
| 요소 | 역할 | 예시 |
|---|---|---|
| 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) |
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를 써야 할 때:
// ✅ AI 앱(Claude Desktop, Cursor)이 직접
// 여러분 서비스 기능에 접근해야 할 때
// ✅ 표준 클라이언트 생태계 활용
// ✅ Tool + Resource + Prompt 모두 노출 시
// REST API를 써야 할 때:
// ✅ 일반 백엔드 → 프론트엔드 통신
// ✅ MSA 서비스 간 통신
// ✅ MCP 미지원 클라이언트 통합
// 실무 패턴:
// 기존 REST API 서비스가 있다면
// → MCP 서버가 REST API를 래핑해서 노출
// → AI 앱은 MCP로 접근
// → 일반 클라이언트는 REST로 접근
일반 Tool Calling은 특정 AI(Claude API, OpenAI API)에 종속된 방식입니다. Claude용으로 만든 도구 정의는 GPT에서 그대로 쓸 수 없습니다. MCP는 AI 플랫폼에 독립적인 표준 프로토콜입니다. MCP 서버를 한 번 만들면 Claude Desktop, Cursor, Zed, VS Code 등 MCP를 지원하는 모든 클라이언트에서 동작합니다. 또한 Tool만이 아니라 Resource(읽기 전용 데이터)와 Prompt(템플릿)도 함께 노출할 수 있습니다.
LINE 서비스 특성을 고려하면 세 가지를 만들겠습니다. 첫째, 메시지 분석 Tool입니다. LINE 채팅 데이터를 쿼리해서 특정 키워드/사용 패턴 분석. 둘째, 내부 문서 Resource입니다. Confluence나 사내 위키를 Resource로 노출해서 AI가 최신 정책을 참고하도록. 셋째, 알림 발송 Tool입니다. LINE 알림 API를 Tool로 래핑해서 특정 조건 시 자동 메시지 발송. 이 모두가 기존 REST API를 MCP 서버로 래핑하면 수 시간 안에 구현 가능합니다.
MCP = AI-도구 연동 표준 프로토콜. Tool(실행)/Resource(읽기)/Prompt(템플릿) 세 가지를 한 서버로 노출하면 모든 MCP 지원 AI 앱에서 사용 가능.