Model Context Protocol (MCP) 개요
-
MCP는 파운데이션 모델(Foundation Models)이 외부 정보에 접근할 수 있도록 하는 표준입니다.
-
요청-응답 방식으로 작동하며, 모델이 질문을 하고 서버가 응답하는 상호작용을 통해 외부 도구, 리소스 및 프롬프트를 활용합니다.
-
2022년 11월 25일에 출시되었으며, 빠르게 발전하고 있는 분야입니다.
Ruby 기반 MCP 서버 구축
-
fast_MCPGem을 활용하여 샌프란시스코의 안개를 확인하고 안개 관련 정보를 제공하는 ‘SF Fog MCP 서버’를 구축했습니다. -
안개 확인 도구와 지식 도구(wisdom tool)를 생성하고, 이를 MCP 서버에 등록한 후 Rack 미들웨어에 마운트하여 웹을 통해 접근 가능하도록 했습니다.
Ruby MCP Inspector 개발 동기
-
MCP 프로토콜에 대한 깊은 이해를 얻기 위함입니다.
-
Ruby 생태계 내에서 새로운 Gem을 탐색하고 기여할 기회를 모색했습니다.
-
MCP의 작동 방식에 대한 초기 혼란을 해소하고자 했습니다.
Inspector 아키텍처
MCP Inspector는 세 가지 주요 계층으로 설계되었습니다.
- 전송 계층 (Transport Layer): Ruby 클라이언트와 서버 간의 통신을 담당합니다.
- 표준 입출력 (Standard Input/Output):
Open3라이브러리를 사용하여 비동기 스트림 통신을 구현합니다. - HTTP:
FaradayGem을 활용하여 HTTP 연결을 처리합니다. - 스트리밍 HTTP:
RackGem과 같은 기본적인 스트림을 사용합니다. - 이러한 도구들은 이미 Ruby 개발에서 널리 사용되는 일반적인 기술임을 강조합니다.
- 표준 입출력 (Standard Input/Output):
- 데이터 계층 (Data Layer): 전송되는 데이터의 형식을 정의합니다.
- 간단한 JSON-RPC 형식을 사용하여 ID와 호출할 메서드를 포함합니다.
- 프레젠테이션 계층 (Presentation Layer): 사용자 인터페이스를 제공합니다.
- CLI (Command Line Interface):
thorGem을 사용하여list tools,resources,prompts와 같은 간단한 명령을 처리합니다. - 웹 인터페이스 (Web Interface): Rails Engine으로 구현되어 다른 Rails 애플리케이션에 쉽게 마운트할 수 있습니다.
- 성능 향상을 위해 MCP 서버와의 연결을 유지하는 ‘연결 풀(Connection Pool)’을 도입했습니다.
Turbo및 HTML을 활용하여 사용자 인터페이스를 구축했습니다.
- CLI (Command Line Interface):
MCP UI 통합 및 미래 방향
-
기존 Node Inspector가 동적으로 필드를 생성하는 방식에서 영감을 얻어, Shopify 및 monday.com 팀이 개발한 MCP UI(HTML 데이터를 와이어를 통해 전송)를 Inspector에 통합했습니다.
-
이를 통해 외부 링크 로드, HTML 폼 상호작용, 원격 DOM 객체 실행 등 동적인 UI 기능을 시연했습니다.
-
AI 에이전트와 스킬 생성: 최근 AI 에이전트의 부상과 Anthropic의 “Agents with Skills”, “Code Executions with MCPS” 블로그 게시물을 언급하며, MCP Inspector가 에이전트의 스킬 파일 생성에 기여할 수 있음을 강조했습니다.
- MCP는 데이터 및 도구 접근을 위한 연결 계층 역할을 하며, 스킬은 도구 사용에 대한 절차적 지식을 제공합니다.
- Cloud Code를 사용하여 MCP Inspector CLI 도구를 통해 MCP 서버의 스킬 파일을 자동으로 생성하는 데모를 선보였습니다. 이는 에이전트가 효율적으로 도구를 학습하고 활용할 수 있는 가능성을 보여줍니다.