AWSKRUG #AIEngineering - MCP Hands-on Lab 참여 후기
요즘 MCP 관련해서 뭘 해보면 좋을까 생각하고 있었는데 우연히 AWSKRUG 에서 MCP 실습 세션이 열린다는 메일을 받고 바로 신청했다.
이번 AWSKRUG의 주제는 다음과 같이 나와있었다.
데스크톱에 Python 기반 MCP 서버를 구축하고 Claude Desktop, Amazon Q Developer CLI, Smithery에서 제공하는 오픈소스 MCP 서버를 연동해 도구 호출 기능을 구현해 봅니다. AWS CDK를 사용하여 MCP 서버를 AWS 환경에 배포하는 방법도 살펴봅니다.
우와 AWS 한국지사 라니..!
사실 예전 KRUG는 다양한 공간에서 했어서 AWS 회사로 가는건지 모르고 찾아갔는데 AWS 글자보고 당황함
전망도 좋고 그냥 여기 들어와본 것만으로도 좋았음
세션 시작을 기다리는 중
앞에 앉았어야 했다. 글씨가 작아서 잘 안보였다.
주신 링크타고 들어가니 이렇게 실습 자료도 상세하게 나와있었다.
2시간 동안 실습 1, 실습 2를 따라 했는데 실습 1 해보는 것 만으로도 MCP 서버를 어떻게 로컬에 구축하고 활용할 수 있는지 이해하기 충분했다.
본격적으로 들어가기 앞서서 MCP가 무엇인지 부터 간단하게 개념을 짚어보자.
MCP란?
Model Context Protocol: 애플리케이션이 LLM에 컨텍스트를 제공하는 방법을 표준화하는 개방형 프로토콜이다.
MCP는 2024년 11월에 생성형 AI 클로드를 만든 앤트로픽 회사에서 발표한 오픈 소스 프로토콜이다.
클로드는 MCP가 AI의 USB-C 포트와 같다고 설명했다. 다양한 하드웨어 연결 포트 규격들이 USB-C로 규격이 통일된 후 기기 호환이 가능해진 것 처럼 AI와 다양한 데이터 소스를 연결하는 일종의 표준화된 규약 같은 것이다.
현재 아주 잘 사용하고 있는 Cursor ai 코드 편집기가 MCP를 활용한 대표적인 사례이다.
코드 편집기 내부에서 클로드, GPT 등 다양한 생성형 AI에게 편집기에 열려있는 코드베이스를 바탕으로 질문을 하고 또 코드에 바로 적용할 수 있기 때문에 개발 업계의 혁신적인 변화가 아닐까 싶다.
그 중 오늘 실습에서 사용하게 될 Amazon Q Developer는 CLI 모델도 지원을 하고 있어서, CLI 환경에서 사용하기 적합한 AI 어시스턴트이다.
터미널에서 하는거라서 프로젝트를 시작할 때 사용하기 매우 좋다고 한다.
예를 들어 "이 프로젝트 구조 분석해줘.", "프로젝트 시작하는 스캐폴딩 해줘." 같은 작업을 할 때 매우 유리하다는 것!
https://aws.amazon.com/ko/q/?nc2=h_ql_prod_l1_q
AI 어시스턴트 - Amazon Q - AWS
Amazon Q는 조직의 작업 수행 방식을 혁신합니다. 개발자는 코딩, 테스트, 업그레이드, 문제 해결, 보안 검사와 같은 모든 작업에 사용할 수 있습니다. 비즈니스 사용자는 맞춤형 대화를 나누고, 문
aws.amazon.com
본격적으로 실습에 들어갔다.
[실습 1] 로컬 MCP 서버 구축 및 사용
위 그림과 같이 로컬에 있는 어떤 데이터 소스든 상관없이 MCP 서버와 연결해서 MCP 클라이언트에 조달이 가능하고, 유저가 MCP 클라이언트를 활용할 수 있다는 개념이다.
로컬 MCP 서버를 직접 구축하고 연결해보기 위해서 Amazon Q Developer CLI 를 우선 설치했다.
1. Amazon Q Developer CLI 설치하기
brew install amazon-q
q --version
2. Amazon Q Developer CLI 로그인하기
q login
여기서 Select login method 를 선택하고 Builder ID로 로그인 하는 방식으로 들어가야 한다.
3. Amazon Q로 채팅 세션 시작하기
q chat
다음 명령어들을 실제 내 터미널에 입력해서 나온 화면이다.
최종적으로 채팅 화면이 이렇게 나왔다면 세팅이 완료된 것!
4. uv 설치
uv 는 Python 패키지 설치 및 가상 환경 관리를 위한 빠른 도구
# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
설치가 완료되면 다음 명령어로 설치 여부를 확인합니다:
uv --version
예제 1: 로컬 환경에 Weather API MCP 서버 만들기
해당 실습에서는 아래 깃헙에서 제공하는 샘플 코드를 활용했다.
https://github.com/aws-samples/aws-kr-startup-samples
GitHub - aws-samples/aws-kr-startup-samples: A collection of AWS Korea Startup SA team materials for hands-on labs.
A collection of AWS Korea Startup SA team materials for hands-on labs. - aws-samples/aws-kr-startup-samples
github.com
git clone https://github.com/aws-samples/aws-kr-startup-samples.git
cd aws-kr-startup-samples/gen-ai/mcp-tutorial/module-01/part-01/src/example-1
나는 Python을 잘 활용하고 있지 않기 때문에 가상 환경 세팅이 필요했다.
Python 가상 환경을 설정하고 필요한 패키지를 설치하는 명령어를 입력한다.
uv venv
source .venv/bin/activate
uv add "mcp[cli]" httpx
위에서 받은 깃헙 레포지토리의 weather.py 파일에 필요한 코드들이 작성되어 있었다.
그리고 다음은 MCP를 json 으로 설정해야 하는 단계.
mcp는 보통 json 으로 configuration 한다고 한다.
Amazon Q Developer CLI는 두 가지 수준의 MCP 구성을 지원합니다.
- 글로벌 구성: ~/.aws/amazonq/mcp.json - 모든 워크스페이스에 적용
- 워크스페이스 구성: .amazonq/mcp.json - 현재 워크스페이스에만 해당
실습에서는 글로벌 구성으로 MCP 서버를 설정했다.
루트 경로에 ~/.aws/amazonq/mcp.json 파일을 아래처럼 생성했다.
{
"mcpServers": {
"weather": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/aws-kr-startup-samples/gen-ai/mcp-tutorial/module-01/part-01/src/example-1",
"run",
"weather.py"
]
}
}
}
여기서 /ABSOLUTE/PATH/TO 는 현재 자신의 경로를 pwd로 파악한 후 커스텀해야 한다.
여기까지 세팅이 완료되었다면? MCP 서버가 정상적으로 등록됐는지 CLI에서 /tools 명령어로 확인할 수 있다.
그리고 CLI 에 채팅으로 날씨 관련 궁금한 질문을 입력하니 다음과 같이 잘 뜨는 것을 확인할 수 있었다!!! 신기하네
여기까지 로컬에 작성한 파일 서버(weather.py)을 기준으로 MCP 를 활용해서 AI 와 연동한 작업이었다.
그렇다면 공개로 배포된 파일 서버, 데이터를 활용해서 연동할 수 있는 방법도 있다.
Smithery - Model Context Protocol Registry
@isnow890/naver-search-mcp A MCP server based on Naver Search API. Enables searching various content types (news, cafe, blogs, shopping, web search, etc.) and analyzing search/shopping trends via DataLab API. Shopping analytics provide consumer behavior pa
smithery.ai
라는 사이트에 들어가보면 다양한 MCP 서버들이 올라와 있는 것을 확인할 수 있다.
이어질 실습은 공개된 MCP 서버와 연동하는 방식이고 훨씬 빠르고 간편했다.
[실습 2] 공개 MCP 서버 Amazon Q Developer CLI 연동
이렇게 Smithery 웹 사이트에 weather 관련 서버를 검색하고
우측에 있는 install 탭에서 Amazon Q를 선택했다.
그러면 다음과 같이 입력할 수 있는 명령어가 나타난다.
npx -y @smithery/cli@latest install @mcp-examples/weather --client amazonq --key <YOUR_API_KEY>
위 명령어에는 API KEY가 포함되어 있지 않기 때문에 API KEY는 로그인하고 제공 받아야 함!
그리고 나서 /tools 명령어로 서버가 잘 연결이 되었는지 확인해 본다.
그리고 q chat 으로 대화박스를 열고, 원하는 질문을 하면 잘 대답해주는 것을 확인할 수 있음!
이렇게 Amazon Q Developer 에 MCP 서버를 연결하는 과정을 실습을 통해 이해할 수 있었다.
정리하자면,
LLM이 가진 지식적 한계를 넘어서기 위해 새로운 컨텍스트를 더 추가해주는 것이 바로 MCP 서버를 추가로 연결하는 작업이라고 볼 수 있다. 데이터 소스가 뭐든 상관없이 notion에 작성된 문서들, opsidian에 저장된 내 메모, 내 코드베이스 등 MCP 클라이언트는 동일한 규격으로 요청만 하면 컨텍스트를 얻어올 수 있다는 것이 혁신!
그러다보니 잘나가는 서비스들 (slack, github 등)은 mcp 서버를 다 공개하고 있고 이것들을 클로드나 커서에 붙여서 활용할 수 있다는 것이 장점이다.
개념 이해는 다 됐고 그럼 이제 클로드에 MCP를 연결해 봐야지~