MCP(Model Context Protocol) Server
- MCP Server는 이 Model Context Protocol을 기반으로 한 모델을 실제로 관리하고, 서빙하거나 호출 요청을 받아 처리하는 중앙 서버
MCP Server가 제공하는 기능
기능 |
설명 |
모델 로딩 및 등록 |
다양한 MCP 스펙으로 정의된 모델을 받아들이고 등록함 |
컨텍스트 관리 |
모델마다 필요한 입력/출력 타입, 버전 등을 정리해서 기억함 |
모델 실행 |
클라이언트가 요청하면, 해당 모델을 실행해 예측 결과 반환 |
버전 관리 |
여러 모델의 버전, 환경 등을 구분하고 서빙 가능 |
표준화된 API 제공 |
외부 시스템이 쉽게 호출할 수 있도록 통일된 방식으로 API를 노출 |
주로 쓰이는 상황
- 여러 AI 팀이 만든 모델을 하나의 플랫폼에서 통합 관리하고 싶을 때
- 모델 배포 시 다양한 프레임워크를 한 서버에서 처리하고 싶을 때
- 실험적 모델 서빙, 다중 버전 운영이 필요한 MLOps 환경
Concept
# model_context.py
class ModelContext:
def __init__(self, name, input_schema, output_schema):
self.name = name
self.input_schema = input_schema
self.output_schema = output_schema
# base_model.py
class BaseModel:
def __init__(self, context: ModelContext):
self.context = context
def predict(self, input_data):
raise NotImplementedError("Subclasses must implement this method.")
# dummy_model.py
from base_model import BaseModel
class DummyModel(BaseModel):
def predict(self, input_data):
# 간단한 더하기 연산 모델
return {"result": input_data["a"] + input_data["b"]}
# mcp_server.py
class MCPServer:
def __init__(self):
self.models = {}
def register_model(self, model_name, model_instance):
self.models[model_name] = model_instance
print(f"Model '{model_name}' registered with context: {model_instance.context.__dict__}")
def run_model(self, model_name, input_data):
model = self.models.get(model_name)
if not model:
raise ValueError(f"Model '{model_name}' not found.")
# 컨텍스트 기반 유효성 검사 생략 가능 (입출력 스펙 기반 확장 가능)
return model.predict(input_data)
# main.py
from model_context import ModelContext
from dummy_model import DummyModel
from mcp_server import MCPServer
# MCP 서버 생성
server = MCPServer()
# 모델 정의 및 등록
context = ModelContext(
name="AdderModel",
input_schema={"a": "int", "b": "int"},
output_schema={"result": "int"}
)
model = DummyModel(context)
server.register_model("adder", model)
# 모델 실행
input_data = {"a": 10, "b": 20}
result = server.run_model("adder", input_data)
print(result) # 출력: {'result': 30}
구체적 예시
- The GitHub MCP server를 설치하면 Model을 통해서 Github을 직접 제어할 수 있다.
- MCP 서버는 AI 모델이 GitHub을 “사용자처럼 조작”할 수 있도록 다리를 놓아주는 스마트 게이트웨이
시나리오
- 구성요소
- AI 모델 (예: GPT, Claude 등): 자연어 이해 및 문맥 처리 담당
- MCP 서버 (smithery.ai/github): GitHub 작업을 정의된 방식으로 처리
- GitHub API: 실제 리포지토리, 파일, 이슈, PR 등을 관리하는 백엔드
- 흐름
- [모델] → (명령 생성) → [MCP 서버] → (GitHub API 호출) → [GitHub 리포지토리]
- 예: "새 브랜치 만들어줘" → MCP 서버가 branch API 실행 → GitHub에 새 브랜치 생성
- 모델에게 이렇게 말하면:
"새로운 기능 브랜치 feature/new-dashboard
를 생성하고, README.md에 변경사항을 커밋해줘."
- 모델은 다음과 같이 행동:
- MCP 서버에 다음 작업을 지시:
createBranch(repo="my-repo", from="main", newBranch="feature/new-dashboard")
commitFile(repo="my-repo", branch="feature/new-dashboard", file="README.md", content="Updated for dashboard", message="Add dashboard update")
장점
장점 |
설명 |
✅ 모델이 직접 GitHub API를 알 필요 없음 |
추상화된 명령으로 충분 |
✅ 보안 분리 |
API 토큰은 MCP 서버에만 있음, 모델은 노출 안 됨 |
✅ 복잡한 작업도 자동화 |
PR 생성, 리뷰, 파일 구조 생성 등까지도 가능 |
✅ 다양한 모델과 연동 가능 |
Claude, GPT, 등 거의 모든 언어모델과 호환 |
|
|
Member discussion