Home MCP(Model Context Protocol)란?
Post
Cancel

MCP(Model Context Protocol)란?

개요

  • MCP(Model Context Protocol)는 AI 모델이 다양한 데이터 소스나 도구, 외부 시스템과 실시간으로 연결되어 정보를 주고받을 수 있게 만드는 표준 연결 프로토콜임
  • AI가 단순히 답변만 하는 것이 아니라 실제 데이터베이스 접근, 문서 변경, 이메일 전송 등 실제 행동까지 할 수 있는 진정한 AI 에이전트로 발전할 수 있게 함
  • 컴퓨터 통신에서의 HTTP 역할을 AI 분야에서 표준화한 것으로 이해할 수 있음
  • 기존의 개별 API 연동 방식보다 더 범용적이고 지속적인 연결과 작업을 가능하게 함

MCP의 개념과 역할

AI 에이전트의 진화

  • 과거의 AI 챗봇은 사용자의 질문에 답변만 제공했음

    1
    2
    
      사용자: "내일 회의 일정 알려줘"
      기존 AI: "죄송하지만 캘린더 접근 권한이 없습니다"
    
  • MCP가 적용된 AI는 실제 행동을 수행할 수 있음

    1
    2
    3
    4
    
      사용자: "내일 회의 일정 알려줘"
      MCP AI: "내일 오전 10시 팀 미팅, 오후 2시 고객 미팅이 있습니다"
      사용자: "팀 미팅 30분 앞당겨줘"
      MCP AI: "팀 미팅을 오전 9시 30분으로 변경했습니다"
    

USB-C와 같은 표준 연결 프로토콜

  • MCP는 USB-C처럼 다양한 외부 시스템, 도구, 데이터와 AI 모델을 표준화된 방식으로 연결시켜줌

image

  • 표준화된 연결
    • USB-C 하나로 모니터, 키보드, 저장장치를 연결하듯 MCP 하나로 다양한 시스템 연결
  • 양방향 통신
    • USB-C가 데이터와 전력을 양방향으로 전송하듯 MCP도 AI와 외부 시스템 간 양방향 정보 교환
  • 확장성
    • USB-C 호환 기기가 계속 늘어나듯 MCP 서버도 지속적으로 확장 가능

오픈 표준 기반

  • MCP는 오픈 표준(open standard) 기반이므로 여러 AI 모델과 애플리케이션에서 자유롭게 사용할 수 있음
  • 특정 회사나 플랫폼에 종속되지 않고 누구나 MCP 서버를 개발하고 배포할 수 있음
  • GitHub에 공개된 수많은 MCP 서버 예제와 커뮤니티 기여를 활용할 수 있음

MCP의 주요 구성요소

image

호스트 (Host)

  • AI 애플리케이션의 컨테이너 및 관리자 역할을 수행함
  • 여러 MCP 클라이언트 인스턴스를 생성하고 관리함
  • 보안 정책을 설정하고 권한을 제어함
  • ex) Claude Desktop, Cursor IDE, Zed Editor
1
2
3
4
호스트 (Claude Desktop)
├── MCP 클라이언트 1: 파일 시스템 접근
├── MCP 클라이언트 2: 데이터베이스 연결
└── MCP 클라이언트 3: 외부 API 호출
  • 보안 정책
    • 파일 읽기: 허용
    • 파일 쓰기: 승인 필요
    • 데이터베이스 쓰기: 제한

MCP 클라이언트 (Client)

  • 호스트 내에 생성되어 MCP 서버와 연결을 담당함
  • 프로토콜 협상 및 메시지 라우팅을 수행함
  • 서버로부터 받은 응답을 호스트(AI 모델)에게 전달함
  • 통신 흐름
    • AI 모델이 “파일 목록 보여줘” 요청
    • MCP 클라이언트가 요청을 파싱
    • 적절한 MCP 서버에 요청 전달
    • 서버 응답을 받아 AI 모델에게 전달
    • AI 모델이 사용자에게 결과 제공

MCP 서버 (Server)

  • 실제 데이터와 도구 기능을 제공함
  • 클라이언트 요청에 따라 정보를 반환하고 작업을 수행함
  • 독립적으로 실행되며 여러 클라이언트가 동시에 연결 가능함
  • 크게 세 가지 기능을 제공함
    • Resources
      • 데이터 조회 (파일 읽기, 데이터베이스 쿼리 등)
    • Tools
      • 작업 수행 (파일 쓰기, 이메일 전송 등)
    • Prompts
      • 템플릿 제공 (자주 사용하는 명령어 패턴 등)
1
2
3
4
5
6
7
8
9
10
11
12
13
class FileSystemMCPServer:
    def list_resources(self):
        return ["file:///workspace/README.md", "file:///workspace/src/main.py"]
    
    def read_resource(self, uri):
        return open(uri.path).read()
    
    def list_tools(self):
        return ["write_file", "delete_file", "create_directory"]
    
    def execute_tool(self, tool_name, arguments):
        if tool_name == "write_file":
            return self.write_file(**arguments)

MCP와 기존 API 방식의 차이

기존 API 연동 방식

1
2
3
4
5
6
7
8
9
10
11
12
13
// 각 서비스마다 개별 API 연동 필요
const googleCalendar = new GoogleCalendarAPI(credentials);
const slack = new SlackAPI(token);
const notion = new NotionAPI(apiKey);

// AI가 각 API 사용법을 개별적으로 학습해야 함
function addCalendarEvent() {
  // Google Calendar 전용 로직
}

function sendSlackMessage() {
  // Slack 전용 로직
}

MCP 방식

1
2
3
4
5
6
7
8
9
10
11
12
13
// MCP 클라이언트 하나로 모든 서버 접근
const mcpClient = new MCPClient();

// 표준화된 인터페이스
await mcpClient.callTool("calendar_server", "add_event", {
  title: "팀 미팅",
  time: "2025-11-01 10:00"
});

await mcpClient.callTool("slack_server", "send_message", {
  channel: "general",
  text: "회의 시작합니다"
});

주요 차이점

구분기존 APIMCP
연결 방식각 API마다 개별 연동표준화된 단일 프로토콜
학습 비용서비스마다 새로운 API 학습한 번 배우면 모든 서버 사용
유지보수API 변경 시 코드 수정서버만 업데이트하면 됨
확장성새 서비스 추가 시 전체 재작업새 MCP 서버만 추가
컨텍스트 유지요청마다 컨텍스트 재전송지속적인 연결로 컨텍스트 유지

실제 활용 사례

업무 자동화

1
2
3
4
5
6
7
사용자: "다음 주 월요일 오전 10시에 팀 회의 잡아줘"
AI: Google Calendar MCP 서버를 통해 일정 등록
     → "다음 주 월요일 오전 10시에 팀 회의가 등록되었습니다"

사용자: "그 시간에 회의실 예약도 해줘"
AI: 회의실 관리 MCP 서버 호출
     → "회의실 A가 예약되었습니다"
1
2
3
4
5
사용자: "오늘 회의 내용을 Notion에 정리해줘"
AI: 1. 회의 녹음 파일을 MCP 파일 서버에서 읽음
    2. 내용을 분석하고 요약
    3. Notion MCP 서버를 통해 페이지 생성
    4. Slack MCP 서버로 팀원들에게 공유

데이터 분석

1
2
3
4
5
6
7
8
9
10
사용자: "지난달 매출 TOP 10 제품 알려줘"
AI: PostgreSQL MCP 서버를 통해 쿼리 실행
    SELECT product_name, SUM(amount) as total
    FROM sales
    WHERE date >= '2025-10-01' AND date < '2025-11-01'
    GROUP BY product_name
    ORDER BY total DESC
    LIMIT 10
    
    → 결과를 자연어로 설명하고 시각화
1
2
3
4
5
6
사용자: "이번 분기 실적 리포트 만들어줘"
AI: 1. 데이터베이스에서 분기별 데이터 조회
    2. Excel 파일 생성 (MCP 파일 서버)
    3. 차트 이미지 생성
    4. Confluence 페이지로 리포트 작성
    5. 관계자들에게 이메일 발송

개발 워크플로우

1
2
3
4
5
6
사용자: "PROJ-123 티켓의 PR 리뷰해줘"
AI: 1. Jira MCP 서버에서 티켓 내용 조회
    2. GitHub MCP 서버에서 PR 코드 분석
    3. 코딩 컨벤션 체크
    4. 리뷰 코멘트 자동 작성
    5. Slack으로 개발자에게 알림
1
2
3
4
5
6
사용자: "이 에러 로그 분석해서 Jira 티켓 만들어줘"
AI: 1. 파일 시스템에서 에러 로그 읽기
    2. 스택 트레이스 분석
    3. 유사한 과거 이슈 검색
    4. Jira에 버그 티켓 자동 생성
    5. 담당자 자동 할당

MCP 서버의 종류와 범위

서버 등록 범위

  • MCP 서버는 세 가지 범위로 등록할 수 있음
    • Local (로컬)
      • 현재 프로젝트 디렉토리에만 적용됨
      • 프로젝트별로 다른 설정 사용 가능
      • .mcp.json 파일로 관리
    • Project (프로젝트)
      • 워크스페이스 전체에 적용됨
      • 팀원들과 설정 공유 가능
      • .vscode/mcp.json 또는 .cursor/mcp.json으로 관리
    • User (사용자)
      • 사용자의 모든 프로젝트에서 사용 가능
      • 개인 설정 및 인증 정보 포함
      • ~/.config/mcp/servers.json으로 관리
1
2
3
4
5
6
7
8
{
  "mcpServers": {
    "project-db": {
      "command": "node",
      "args": ["./mcp-servers/database.js"]
    }
  }
}

통신 방식

  • 표준 입출력 (stdio)
1
2
3
4
5
6
7
8
{
  "mcpServers": {
    "filesystem": {
      "command": "mcp-server-filesystem",
      "args": ["--root", "/Users/username/workspace"]
    }
  }
}
  • HTTP/WebSocket
1
2
3
4
5
6
7
8
9
10
11
{
  "mcpServers": {
    "remote-api": {
      "url": "https://api.example.com/mcp",
      "auth": {
        "type": "bearer",
        "token": "your-token-here"
      }
    }
  }
}
Contents

Google Colab 환경의 Matplotlib 한글 폰트 깨짐 현상

Cursor에서 MCP로 Jira/Confluence 연동하기