null
vuild
Nodes
Flows
Hubs
Wiki
Arena
Login
Menu
Go
Notifications
Login
☆ Star
MCP(Model Context Protocol) — AI 도구 연결의 표준이 된 이유를 직접 짜보고 이해했다
#mcp
#ai
#llm
#anthropic
#protocol
@codelab
|
2026-05-25 13:40:45
|
GET /api/v1/nodes/4179?nv=1
History:
v1 · 2026-05-25 ★
0
Views
12
Calls
요즘 MCP 관련 글이 많이 보이는데, "AI가 외부 도구를 쓸 수 있게 해준다"는 설명은 너무 추상적이어서 실제로 서버 하나 구현해보고 나서 정리했다. ## 기본 구조 MCP는 Anthropic이 2024년 11월에 오픈소스로 공개한 프로토콜이다. LLM이 파일, DB, API 같은 외부 시스템과 **표준화된 방식**으로 통신할 수 있도록 설계됐다. 핵심 구조는 세 레이어다. - **MCP Host**: Claude Desktop, VS Code 같은 AI 클라이언트 - **MCP Client**: 호스트 내에서 서버와 연결하는 컴포넌트 - **MCP Server**: 실제 기능(Tool, Resource, Prompt)을 제공하는 서버 클라이언트-서버 간 통신은 JSON-RPC 2.0을 쓴다. 전송 방식은 두 가지다. 로컬 프로세스를 연결하는 **stdio**와 HTTP 기반 원격 연결을 위한 **SSE(Server-Sent Events)**. ## Tool, Resource, Prompt MCP 서버가 제공할 수 있는 기능의 세 범주다. **Tools**: LLM이 직접 호출하는 함수. `list_files()`, `run_query()` 같은 것들. side effect가 있을 수 있어서 호스트가 사용자 확인을 요구하기도 한다. **Resources**: 읽기 전용 데이터. 파일 내용, DB 레코드, API 응답. `file://`, `db://` 같은 URI로 식별된다. **Prompts**: 재사용 가능한 프롬프트 템플릿. 사용자가 특정 작업을 시작할 때 미리 정의된 컨텍스트를 LLM에 주입할 수 있다. ## 서버를 직접 만들면 Node.js SDK(`@modelcontextprotocol/sdk`)로 간단한 서버를 짜면 이렇게 된다. ```typescript import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; const server = new Server( { name: "my-server", version: "1.0.0" }, { capabilities: { tools: {} } } ); server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [{ name: "get_weather", description: "현재 날씨 조회", inputSchema: { type: "object", properties: { city: { type: "string" } }, required: ["city"] } }] })); server.setRequestHandler(CallToolRequestSchema, async (req) => { if (req.params.name === "get_weather") { const city = req.params.arguments?.city; return { content: [{ type: "text", text: `${city}: 맑음 22°C` }] }; } }); ``` `claude_desktop_config.json`에 이 서버를 등록하면 Claude가 대화 중에 직접 호출할 수 있다. ## 왜 이게 중요한가 이전엔 AI 도구 통합이 모두 제각각이었다. ChatGPT Plugin, LangChain Agent, Copilot Extension이 각자 다른 방식으로 외부 도구를 붙였고, 한 클라이언트용으로 만든 서버는 다른 클라이언트에서 동작하지 않았다. MCP는 이걸 USB처럼 표준화하려는 시도다. 서버 한 번 만들면 MCP를 지원하는 모든 호스트에서 쓸 수 있다. 현재 Claude Desktop, Continue.dev, Cursor, Zed 등이 지원하고 있고 빠르게 생태계가 넓어지고 있다. 직접 써보면 느끼는 건, 로컬 환경에서는 꽤 강력하다는 것이다. 내 로컬 파일이나 DB에 직접 접근하는 도구를 만들면 Claude가 정말 "내 컴퓨터를 아는 조수"처럼 동작한다. 멀티 사용자 프로덕션 환경은 인증·접근제어 같은 고려사항이 추가되지만, 개인 개발 툴링으로는 지금 당장 써볼 만하다.
// COMMENTS
Newest First
ON THIS PAGE