오픈소스를 위한 기초 상식

MCP(Model Context Protocol), 정말 혁신적인 기술일까?

지나가는 프로도 2025. 6. 4. 00:14

AI와 프로그래밍에 관심 있는 분들이라면 최근 MCP(Model Context Protocol)라는 용어를 자주 접하셨을 텐데요. "AI가 외부 도구와 연결되는 혁신적인 기술"이라고 홍보되고 있지만, 개발자 입장에서 보면 과연 얼마나 새로운 것일까요?

MCP란 무엇인가?

 

MCP는 AI 모델이 외부 데이터와 도구에 안전하게 접근할 수 있도록 하는 표준화된 프로토콜입니다.

간단히 말하면:

 
[AI 모델] ↔ [MCP 클라이언트] ↔ [MCP 서버들]
                                  ├── 파일 시스템
                                  ├── 데이터베이스  
                                  ├── API들
                                  └── 외부 프로그램들

AI가 "파일을 읽어줘"라고 요청하면, MCP 클라이언트가 파일 시스템 MCP 서버에 요청을 보내고, 결과를 AI에게 반환하는 구조입니다.

실제 구현은 어떻게 될까?

1. 기본적인 MCP 서버 구성

 
python
from mcp.server import Server
import subprocess
import requests

server = Server("my-program-controller")

@server.call_tool()
async def run_photoshop_script(script_content: str):
    # Photoshop 스크립트 실행
    with open("temp_script.jsx", "w") as f:
        f.write(script_content)
    
    result = subprocess.run([
        "osascript", "-e",
        'tell application "Adobe Photoshop 2024" to do javascript file "temp_script.jsx"'
    ], capture_output=True, text=True)
    
    return result.stdout

@server.call_tool()
async def control_local_ai(model: str, prompt: str):
    # Ollama 제어
    response = requests.post('http://localhost:11434/api/generate', 
        json={
            'model': model,
            'prompt': prompt,
            'stream': False
        })
    return response.json()['response']

2. 범용 커넥터 만들기

 
python
@server.call_tool()
async def universal_connector(service: str, method: str, **kwargs):
    if service == "photoshop":
        return await photoshop_action(method, kwargs)
    elif service == "database":
        return await database_query(method, kwargs)
    elif service == "api":
        return await api_call(method, kwargs)
    elif service == "local_ai":
        return await local_ai_call(method, kwargs)
    # 무엇이든 연결 가능

 

그런데 잠깐... 이게 새로운 건가?

여기서 중요한 질문이 나옵니다. 이게 기존 파이썬 코딩과 뭐가 다른가요?

기존 방식

 
python
# 내가 직접 코드 작성하고 실행
def process_image(path):
    img = cv2.imread(path)
    result = some_processing(img)
    return result

result = process_image("photo.jpg")  # 내가 직접 실행

MCP 방식

 
python
# 같은 코드를 MCP 도구로 래핑
@mcp_tool
def process_image(path):
    img = cv2.imread(path)
    result = some_processing(img)
    return result

# AI가 "사진을 처리해줘"라고 하면 알아서 실행

기술적으로는 거의 동일합니다. 파이썬으로 할 수 있는 모든 것이 MCP로도 가능하죠.

그럼 MCP의 진짜 가치는 뭘까?

핵심은 **"누가 실행하느냐"**의 차이입니다.

기존 방식의 한계

  • 개발자가 모든 경우의 수를 미리 코딩해야 함
  • 사용자가 코드를 이해하고 직접 실행해야 함
  • 복잡한 작업 체인을 수동으로 연결해야 함

MCP의 장점

  • AI가 상황에 맞는 도구를 자동 선택
  • 자연어로 복잡한 작업 체인 실행
  • 여러 도구를 지능적으로 조합
  • 비개발자도 고급 기능 사용 가능

실제 활용 시나리오

 
사용자: "어제 찍은 사진들을 정리하고, 가장 좋은 3장을 선별해서 
        인스타그램용으로 리사이즈한 다음 자동으로 업로드해줘"

AI의 실행 과정:
1. 파일 시스템에서 어제 사진들 찾기
2. 이미지 품질 분석 도구로 사진 평가
3. 상위 3장 선별
4. 이미지 처리 도구로 리사이즈
5. SNS API로 자동 업로드

이 과정을 기존 방식으로 하려면 개발자가 모든 단계를 미리 예상하고 코딩해야 하지만, MCP를 사용하면 AI가 각 도구를 상황에 맞게 조합해서 실행합니다.

MCP의 현실적인 제약사항

1. 프로그램 연동의 한계

  • 대부분의 데스크톱 앱은 직접적인 외부 제어 API를 제공하지 않음
  • GUI 자동화 도구나 스크립팅이 필요한 경우가 많음
  • 프로그램별로 서로 다른 접근 방식 필요

2. 보안 및 안정성

  • 시스템 권한이 필요한 작업들
  • 프로그램 충돌 위험
  • 복잡한 작업일수록 오류율 증가

 

알아야 할 것들

MCP 서버 설치

 
bash
# Python으로 MCP 서버 설치
pip install mcp

# 또는 npm으로
npm install @modelcontextprotocol/sdk

현실적인 대안들

  • 이미지 처리: OpenCV, Pillow 등 Python 라이브러리
  • 문서 작업: LibreOffice API, Microsoft Graph API
  • 브라우저 자동화: Selenium, Playwright
  • 로컬 AI 연동: Ollama API, LM Studio API

결론: MCP는 혁신인가, 진화인가?

기술적 혁신: 아니다. 파이썬으로 할 수 있는 것들을 표준화된 방식으로 래핑한 것.

사용성 혁신: 맞다. AI가 도구들을 지능적으로 조합해서 사용할 수 있게 해주는 것.

MCP의 진짜 가치는 **"AI가 내 도구들을 똑똑하게 사용할 수 있게 해주는 인터페이스"**라는 점입니다.

개발자 입장에서는 새로운 기술이라기보다는, 기존 도구들을 AI가 활용할 수 있게 해주는 **표준화된 래퍼(wrapper)**라고 보는 게 정확합니다.

파이썬 실력이 있다면 MCP 없이도 뭐든 만들 수 있지만, MCP를 사용하면 그 도구들을 AI가 자동으로 활용할 수 있다는 점에서 의미가 있다고 볼 수 있겠네요.