MCP Server는 모델을 관리 및 서빙을 해주는 서버이다.

MCP Server는 모델을 관리 및 서빙을 해주는 서버이다.
Photo by Alejo Reinoso / Unsplash

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 서버에 다음 작업을 지시:
      1. createBranch(repo="my-repo", from="main", newBranch="feature/new-dashboard")
      2. 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, 등 거의 모든 언어모델과 호환

Read more

[책]Reshuffle: Who wins when AI restacks the knowledge economy

[책]Reshuffle: Who wins when AI restacks the knowledge economy

원래는 Amazon에 가서 Personal Knowledge Managment에 관한 책을 사려고 했다. Sketch Your Mind라는 책이었는데, 그 때 이 책 “Reshuffle”을 발견하였다. AI가 어떻게 Knowledge Economy를 흔들 것가? 라는 부제를 훑어보면서 저자가 쓴 다른 책을 보게 되었는데 거기에 내가 좋아했던 책을쓴 저자라는 것을 알게 되었다. 그래서 크게 고민하지 않고 구매를 하고

By Bongho, Lee
[책]올라운드투자, 누군가의 투자일기

[책]올라운드투자, 누군가의 투자일기

“올라운드 투자”라는 제목을 보았을 때는, “올라운드 플레이어”가 생각이 났다. “올라운드”라는 표현을 오랜만에 들어본 까닭이었다. 그럼에도 불구하고 이 책을 고른 것은 저자가 그간 보여준 컨텐츠에 대한 신뢰가 있던 까닭이었다. 컨텐츠를 다양하게 보는 편이지만 깊이가 아주 있지는 않았다. 여기서 깊이라 함은 기존 전문적인 정량적 분석의 내용의 수준을 말하는 것이다.

By Bongho, Lee
내가 놓치고 있던 미래, 먼저 온 미래를 읽고

내가 놓치고 있던 미래, 먼저 온 미래를 읽고

장강명 작가의 책은, 유학시절 읽고 처음이었다. 유학시절 "한국이 싫어서"라는 책은 동기부여가 상당히 되는 책이었다. 한국을 떠나 새로운 정채성을 학생으로서 Build up 해나가고 있던 상황에서 이 책은 제목부터 꽤 솔깃하였다. 물론 결말이 기억날 정도로 인상깊은 책은 아니었지만 말이다. 그렇게 시간이 흘러 장강명 작가의 책은 더 이상 읽지 않던

By Bongho, Lee