𝗠𝗼𝗱𝗲𝗹 𝗖𝗼𝗻𝘁𝗲𝘅𝘁 𝗣𝗿𝗼𝘁𝗼𝗰𝗼𝗹 𝗘𝘅𝗽𝗹𝗮𝗶𝗻𝗲𝗱 (모델 컨텍스트 프로토콜 설명)
LLM을 데이터베이스나 API에 연결하려면 글루 코드(glue code)를 작성해야 합니다. 특정 모델을 위해 코드를 작성하고 나면, 다음 모델을 위해 똑같은 작업을 다시 작성해야 하죠. 이는 통합 과정을 매우 복잡하게 만듭니다.
Model Context Protocol(MCP)은 이 문제를 해결합니다. MCP는 AI를 위한 USB-C 포트와 같은 역할을 합니다. 기기마다 맞춤형 케이블을 사용하는 대신, 모두가 하나의 표준 커넥터를 사용하는 방식입니다.
MCP는 통합의 공식을 M x N에서 M + N으로 바꿉니다.
- 도구 제작자는 하나의 MCP 서버를 작성합니다.
- 애플리케이션 제작자는 하나의 MCP 클라이언트를 추가합니다.
- MCP를 지원하는 모든 호스트는 어떤 서버든 사용할 수 있습니다.
아키텍처에는 세 가지 역할이 있습니다:
• 호스트(Host): Claude Code나 IDE와 같이 사용자가 사용하는 AI 앱입니다. 어떤 서버에 연결할지 결정합니다. • 클라이언트(Client): 호스트 내부의 커넥터입니다. 서버와의 연결을 유지합니다. • 서버(Server): 사용자가 구축하는 프로그램입니다. 도구(tools), 데이터(data) 또는 프롬프트(prompts)를 제공합니다.
다음 세 가지 주요 프리미티브(primitives)를 사용합니다:
- 도구(Tools): 이메일 전송이나 데이터베이스 쿼리와 같이 모델이 작업을 수행하기 위해 호출하는 함수입니다.
- 리소스(Resources): 파일이나 로그와 같이 앱이 컨텍스트로 가져오는 읽기 전용 데이터입니다.
- 프롬프트(Prompts): 사용자가 특정 작업을 트리거하는 데 도움이 되는 재사용 가능한 템플릿입니다.
FastMCP SDK를 사용하여 Python으로 서버를 구축할 수 있습니다. 다음은 간단한 예시입니다:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("demo-tools")
@mcp.tool()
def word_count(text: str) -> int:
"""Count the words in a text."""
return len(text.split())
@mcp.resource("notes://team")
def team_notes() -> str:
"""Expose team notes."""
return "Release freeze starts Friday."
@mcp.prompt()
def code_review(language: str, code: str) -> str:
"""Template for reviewing code."""
return f"Review this {language} code: {code}"
if __name__ == "__main__":
mcp.run()
서버를 구축할 때는 다음 규칙을 유념하세요:
- 보안: 파괴적인 작업을 수행하는 도구에는 사용자 승인 절차를 사용하세요. 모든 인수를 검증해야 합니다.
- 컨텍스트: 도구 설명을 짧게 유지하세요. 설명이 길어지면 토큰 예산이 소모됩니다.
- 오류: 모델이 스스로 실수를 바로잡을 수 있도록 명확한 메시지를 반환하세요.
MCP는 도구를 재사용 가능한 자산으로 만듭니다. 한 번만 작성하면 모든 모델이 사용할 수 있습니다.
Source: https://dev.to/galian/model-context-protocol-explained-build-your-first-mcp-server-in-python-ian
Optional learning community: https://t.me/GyaanSetuAi