MCP 클라이언트와 서버가 어떻게 함께 작동하는지 더 잘 이해하기 위해 CLI 기반 챗봇을 만들어 보겠습니다. 이 실습 프로젝트를 통해 MCP 아키텍처의 양쪽 측면 모두에 대한 실질적인 경험을 쌓을 수 있습니다.
설정이 완료되면, 클라이언트가 하는 일과 서버가 하는 일을 설명할 수 있어야 하고, 응답이 도구를 통해 온 것인지 모델에서 직접 온 것인지 구분할 수 있어야 합니다.
우리가 만들 것
우리의 챗봇은 사용자가 명령줄 인터페이스를 통해 문서 모음과 상호작용할 수 있게 해줍니다. 이 시스템은 두 가지 주요 구성 요소로 이루어져 있습니다:
- 사용자 상호작용을 처리하는 MCP 클라이언트
- 문서 작업을 관리하는 커스텀 MCP 서버

서버는 두 가지 필수 도구를 제공합니다: 하나는 문서 내용을 읽기 위한 것이고, 다른 하나는 문서를 업데이트하기 위한 것입니다. 모든 문서는 단순화를 위해 메모리에 저장되며, 데이터베이스는 필요하지 않습니다.
중요한 아키텍처 참고 사항
실제 프로젝트에서는 일반적으로 MCP 클라이언트나 MCP 서버 중 하나만 구현하며, 둘 다 구현하지는 않습니다. 다음과 같은 것을 만들 수 있습니다:
- 다른 개발자에게 서비스를 노출하기 위한 MCP 서버
- 기존 MCP 서버에 연결하기 위한 MCP 클라이언트

이 프로젝트에서는 순전히 교육 목적으로 두 구성 요소를 모두 구축하여, 이들이 어떻게 통신하고 함께 작동하는지 이해하고자 합니다.
프로젝트 설정
이 레슨 끝부분의 다운로드 섹션에서 cli_project.zip을 다운로드하여 원하는 개발 디렉터리에 압축을 풀어주세요. 프로젝트 폴더에서 코드 편집기를 여세요.
프로젝트에는 설정 지침이 포함된 포괄적인 README 파일이 들어 있습니다. 다음 단계를 따르세요:
.env파일에 Anthropic API 키를 추가하세요- UV(권장) 또는 pip를 사용하여 의존성을 설치하세요
- 스타터 애플리케이션을 실행하여 모든 것이 제대로 작동하는지 확인하세요
애플리케이션 실행하기
터미널에서 프로젝트 디렉터리로 이동하세요. main.py, mcp_client.py, mcp_server.py를 포함한 주요 프로젝트 파일들을 볼 수 있습니다.
애플리케이션을 시작하려면 다음 명령어 중 하나를 사용하세요:
# UV를 사용하는 경우(권장)
uv run main.py
# 표준 Python을 사용하는 경우
python main.py애플리케이션이 성공적으로 시작되면 채팅 프롬프트가 표시됩니다.
직접 기준선을 확인해 보세요. 눈으로 바로 검증할 수 있는 질문을 입력해 보세요. 예를 들어 "1+1은 뭐야?" 같은 질문입니다. 응답이 나타나는 것만으로 만족하지 마세요: 답이 실제로 2인지 확인하세요. 올바른 응답은 API 키, 의존성, 채팅 루프가 모두 제대로 작동한다는 것을 증명합니다.
그런 다음 "문서에는 뭐라고 적혀 있어?" 같은 두 번째 질문을 입력해 보세요. 어떤 답이 돌아오든, 아직 문서 도구를 만들지 않았으므로 그 도구에서 나온 답일 수는 없습니다. 이 응답은 모델이 스스로 답한 것입니다. 이 작업이 존재하게 되면 어떤 구성 요소가 그 작업을 담당하게 될지 주목하세요: 서버는 문서 작업을 관리하고, 클라이언트는 대화의 당신 쪽을 처리합니다.
이 확인 뒤에 있는 습관은 이렇습니다: 검증의 신중함을 틀렸을 때의 비용에 맞추는 것입니다. 여기서 설정이 잘못되면 그 위에 쌓이는 이후의 모든 레슨에 비용이 발생하지만, 확인하는 데는 질문 두 개면 충분합니다.
계속 간직할 가치가 있는 확인 습관
이 프로젝트를 넘어서도 계속 가져갈 행동은 이것입니다: API 프로젝트에 새로운 레이어를 추가할 때마다 - 도구든, 데이터 소스든, MCP 서버든 - 다음 레이어를 만들기 전에 이미 답을 알고 있는 질문 하나를 실행 중인 시스템에 던져보세요. 검증된 기준선만이 디버깅할 수 있는 유일한 기준선입니다.
기본 설정이 완료되었으니, 이제 MCP 기능을 구현하고 클라이언트와 서버가 Model Context Protocol을 통해 어떻게 통신하는지 탐구할 준비가 되었습니다.