클로드(Claude)를 개발한 Anthropic이 발표한 개방형 표준으로, LLM이 외부 데이터나 도구에 접근하는 방법을 정의
Scope
- MCP Specification: 클라이언트 측과 서버 측에 대한 구현 요구사항
- MCP SDK: 어떤 프로그래밍 언어에서 MCP를 구현하는 SDK
- SDK: Software Development Toolkit의 약자
- MCP Development Tools: MCP Inspector를 포함한 MCP 서버와 클라이언트를 개발하기 위한 도구
- MCP Inspector: MCP 서버를 테스트하고 디버깅하는 툴
- MCP Reference Server Implementations: MCP 서버에 대한 레퍼런스 구현
MCP의 구조
-
MCP는 클라이언트-서버 구조를 따름
- 각 MCP 클라이언트는 해당하는 MCP 서버와 1대1 연결
-
MCP 호스트: 하나 이상의 MCP 클라이언트들을 조화시키고, 관리하는 AI 애플리케이션
-
MCP 클라이언트: 한 MCP 서버에 대해 연결을 유지하고, MCP 호스트가 사용할 컨텍스트를 MCP 서버에서 얻어오는 컴포넌트
-
MCP 서버: MCP 클라이언트에 컨텍스트를 제공하는 프로그램
- MCP 서버는 로컬로 구성할 수도, 원격으로 구성할 수도 있음

- VS Code의 예시
- VS Code: MCP 호스트
- VS Code의 런타임이 MCP 클라이언트를 생성하여 MCP 서버에 연결
레이어
MCP는 두 개의 레이어로 구성됨
- 데이터 레이어
- 클라이언트-서버 통신을 위한 JSON-RPC 2.0 기반의 프로토콜 정의
- RPC: 원격 프로시저 호출 (Remote Procedure Call)의 약자
- 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게 하는 프로세스 간 통신 기술
- JSON-RPC 2.0: JSON-RPC 2.0 Specification
- 생애 주기 관리
- 핵심 primitives (도구, 자원, 프롬프트, 알림 등)
- 전송 레이어
- 클라이언트-서버 간 데이터 교환을 가능하게 하는 커뮤니케이션 매커니즘 및 채널을 정의
- 전송-특정 연결 establishment, 메시지 프레이밍, 인증
데이터 레이어가 내부 레이어, 전송 레이어가 외부 레이어인 개념
데이터 레이어
데이터 레이어는 JSON-RPC 2.0 기반의 프로토콜을 구현하며 이 프로토콜은 메시지 구조와 의미를 정의함
데이터 레이어는 아래를 포함
- 생애주기 관리: 클라이언트와 서버 간의
- 연결 시작, capability negotiation, 연결 종료
- capability negotiation: 두 시스템 간에 서로 사용 가능한 기능 정보를 교환하는 프로세스
- 서버 기능: 서버가 핵심 기능을 제공할 수 있게 함
- AI 액션을 위한 도구, 컨텍스트 데이터를 위한 자원, 상호작용 템플릿을 위한 프롬프트 (클라이언트에게 올 수도 있고 클라이언트에게 줄 수도 있음)
- 클라이언트 기능: 서버가 클라이언트에게 호스트 LLM으로부터 샘플링 요청, 사용자 입력 요청, 또는 클라이언트에 로그 메시지를 남기게 할 수 있음
- 유틸리티 기능: 실시간 업데이트에 대한 알림, 긴 작업의 진행도 추적 등의 추가적인 기능 지원
전송 레이어
클라이언트와 서버 간의 통신 채널, 인증을 관리함
MCP Participants 간의 연결 establishment, 메시지 프레이밍, 안전한 통신 처리
아래의 전송 매커니즘을 지원
- 표준 입출력 전송: 같은 기기 내의 로컬 프로세스 간 표준 입출력 스트림을 사용하여 프로세스간 직접 통신. 네트워크 오버헤드가 발생하지 않음
- 스트림 가능한 HTTP 전송: HTTP Post 방식을 사용해 클라이언트에서 서버로 메시지 전송. Bearer 토큰, API 키를 포함한 표준 HTTP 인증 방식을 지원함. MCP에서는 인증 토큰을 얻기 위해 OAuth를 사용하는 것을 권장
MCP 써보기: Context7
라이브러리의 최신 정보를 컨텍스트로 제공하는 MCP 서버
MCP 서버 세팅 (로컬)
영어: upstash/context7: Context7 MCP Server -- Up-to-date code documentation for LLMs and AI code editors
한국어: context7/docs/README.ko.md at master · upstash/context7
위 링크에 설치 방법이 적혀 있음
클로드 데스크탑 기준으로 claude_desktop_config.json 파일에 아래 내용 추가
파일 위치 찾는법: 클로드 데스크탑 실행 -> 설정 -> 데스크톱 앱의 개발자 -> 로컬 MCP 서버의 구성 편집 클릭
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
}
}
}
context7 MCP 서버 사용
프롬프트 끝에 use context7 붙이면 끝
파이썬의 GIL을 우회하여 멀티스레딩을 사용하는 방법에 대해 알려줘. use context7
- 클로드가 MCP 서버를 통해 라이브러리들의 정보를 얻어옴
https://context7.com/api/v1/search?query=라이브러리 이름으로 요청 보내고, 검색 결과를 포맷팅해서 반환
- 소스 코드
- 필요한 기능을 제공하는 라이브러리를 찾아서 해당 ID를 가진 라이브러리 관련 문서를 얻어옴
https://context7.com/api/v1/라이브러리 id
- Query Parameter로
tokens (토큰 수 ), topic (주제), type (기본값: txt)
- 헤더로 요청 출처, mcp 클라이언트 ip 등 담아서 요청 보내고, 반환된 응답의 텍스트 반환
- 소스 코드
- 클로드가 앞서 얻은 정보들을 바탕으로 대답(컨텐츠) 생성
참고 문서