[00:00]
MCP 서버에 대해 계속 들어오셨을 텐데요
[00:02]
트렌드로 등장한 이후로
[00:04]
많은 구현 영상들을 보셨을 겁니다
[00:07]
제가 직접 많은 영상을 만들기도 했죠
[00:09]
오늘은 여러분께 실제로
[00:11]
MCP 서버를 구현하고
[00:13]
원하는 대로 설정하는 방법을 알려드리겠습니다
[00:15]
이것은 일반적인 튜토리얼이 아닙니다
[00:17]
코딩을 가르치지는 않을 거예요
[00:18]
대신 MCP 서버가
[00:20]
어떤 개념으로 작동하는지 설명하고
[00:22]
AI를 활용해서
[00:25]
적절한 컨텍스트를 제공하여
[00:27]
MCP 서버를 생성하는 방법을 알려드리겠습니다
[00:30]
그럼 시작해볼까요
[00:32]
여기 모델 컨텍스트 프로토콜의
[00:34]
문서가 있습니다. 보시면
[00:36]
파이썬, 타입스크립트, 자바,
[00:38]
코틀린 등 다양한 언어를 위한 SDK가 있습니다
[00:40]
여러분이 선호하거나 편한 언어를
[00:43]
선택하시면 됩니다
[00:45]
저는 파이썬 SDK로
[00:47]
진행하도록 하겠습니다
[00:50]
파이썬 SDK GitHub 리포지토리를 열어보면
[00:52]
설치 가이드 외에도
[00:54]
상당히 탄탄한 퀵 스타트 가이드가 있습니다
[00:56]
이 가이드는 MCP 서버 구축의 기초를 설명하며
[00:59]
이 기본 개념만 이해하시면
[01:01]
원하는 어떤 것이든 만들 수 있습니다
[01:03]
pip을 사용해서 설치할 수 있는데
[01:06]
터미널을 열고
[01:08]
이 명령어만 입력하시면
[01:10]
MCP 라이브러리가 설치됩니다
[01:12]
그 다음 Cursor로 이동해서
[01:14]
새 폴더를 만들고 파이썬 파일을 생성하세요
[01:17]
간단히 설명해드리면
[01:19]
새 파이썬 파일을 만들고
[01:22]
보시는 것처럼
[01:23]
라이브러리를 임포트했습니다
[01:25]
이 라이브러리는 MCP 클래스를 제공하는데
[01:28]
이를 사용해 MCP 서버를 생성했습니다
[01:30]
이 데코레이터를 사용해
[01:33]
달러를 파운드로 변환하는 함수를 정의했죠
[01:35]
이 함수는 제공된 소스에서
[01:37]
입력을 받아 처리하고 원하는 출력을 반환합니다
[01:40]
현재는 고정 환율을 사용해
[01:42]
변환된 금액을 반환하고 있습니다
[01:44]
여기 이 부분이
[01:46]
모델의 컨텍스트인데, 도구의 기능을
[01:49]
이해하는데 도움을 줍니다
[01:50]
도구의 설명이라고 생각하시면 됩니다
[01:52]
이 컨텍스트는 모델이
[01:54]
다양한 상황에서 어떤 도구를 사용할지
[01:56]
결정하는 데 도움을 줍니다
[01:59]
이것을 정의한 후에는
[02:01]
설정으로 가서 MCP 섹션으로 이동해
[02:03]
새 MCP 서버를 만들면 되는데
[02:06]
그전에 파일 경로를 복사하세요
[02:17]
MCP 메뉴에서 이름은
[02:20]
원하는 대로 지으시면 됩니다
[02:22]
우리의 첫 MCP라고 해볼까요
[02:25]
타입은 command로 그대로 두시고
[02:27]
실제 명령어는 MCP run 뒤에
[02:29]
파일 경로를 입력하시면 됩니다
[02:32]
추가를 클릭하면 도구가 추가되고
[02:35]
보시는 것처럼 달러를 파운드로
[02:37]
변환하는 도구가 성공적으로 추가되었습니다
[02:39]
이제 Cursor의 에이전트가 이를 사용할 수 있죠
[02:42]
한번 테스트해볼까요
[02:44]
에이전트를 열고 20달러를
[02:47]
파운드로 변환해달라고 요청해보겠습니다
[02:50]
이제 응답을 생성해보죠
[02:53]
MCP 도구를 사용하여
[02:56]
우리가 제공한 금액을 매개변수로 전달하고
[02:58]
호출하는 것을 확인할 수 있습니다
[03:02]
[03:05]
함수가 이를 처리하고 결과를 반환하면
[03:07]
그 결과가 채팅창에 표시됩니다.
[03:09]
이것이 MCP 서버가 작동하는 아주 기본적인 예시입니다.
[03:12]
본질적으로 이는 단순한 입력-출력
[03:14]
프로세스로 생각할 수 있으며,
[03:17]
도구를 효율적으로 구축하고 사용할 수 있게 해줍니다.
[03:19]
더 실용적인 구현으로 넘어가기 전에
[03:21]
한 가지 말씀드리고 싶은 것은, 실제로
[03:23]
이 모든 것을 직접 구축하거나 문법을 배울 필요가 없다는 점입니다.
[03:27]
사용하고 있는 SDK의 문서를 제공하여
[03:29]
컨텍스트를 제공할 수 있습니다.
[03:31]
그러면 문서는 어떻게 얻을 수 있을까요?
[03:33]
문서는 실제로 README 파일 안에 있습니다.
[03:35]
보시다시피 전체 README가 문서 역할을 합니다.
[03:39]
도구에 대한 문서 외에도
[03:41]
이미지 문서, 프롬프트, 리소스 등이 포함되어 있습니다.
[03:46]
이 문서를 Cursor에 제공하려면
[03:49]
먼저 문서로 추가해야 합니다. README 파일의 주소를 가져오세요.
[03:51]
전체 GitHub 저장소가 아닌
[03:53]
README 파일 자체의 주소인지 확인하세요.
[03:56]
전체 저장소는
[03:58]
유용하지 않고
[04:00]
컨텍스트 크기만 증가시킬 뿐입니다.
[04:02]
링크를 얻은 후에는 Cursor의
[04:05]
기능 섹션으로 가서
[04:07]
문서 섹션으로 스크롤을 내려 새 문서를 추가하세요.
[04:09]
링크를 붙여넣으면 인덱싱하고 저장합니다.
[04:12]
또한 이름을 지정해야 하는데,
[04:14]
예를 들어, 저는 이미 제 것을
[04:17]
'Python MCP SDK'라는 이름으로 추가했습니다.
[04:20]
이는 Cursor 내에서 컨텍스트를 제공하는 데 도움이 됩니다.
[04:23]
Composer에서 사용하려면 단순히 문서를 참조하고
[04:25]
추가한 문서를 선택하면 됩니다.
[04:27]
이후에는 해당 문서를 컨텍스트로 사용하여
[04:30]
무엇이든 구축할 수 있습니다. 만약
[04:32]
한 단계 더 나아가서
[04:34]
문서를 더욱 접근하기 쉽게 만들고 싶다면
[04:36]
학습이나 질문을 위해
[04:38]
LLM이 읽을 수 있는 데이터로 변환할 수 있습니다.
[04:41]
GitHub로 가서 URL의 'hub'를
[04:44]
'nest'로 바꾸면 GitIngest가 열립니다.
[04:47]
이는 정말 유용한 도구로,
[04:48]
GitHub 저장소나 적어도
[04:51]
지정한 부분을 LLM을 위한
[04:53]
완전한 지식 베이스로 변환해줍니다.
[04:55]
변환이 완료되면 출력을 복사해서
[04:57]
아무 LLM에나 제공하면 질문하거나
[05:00]
쉽게 학습할 수 있습니다. 자, 이제
[05:02]
기본 예제를 봤으니
[05:04]
더 유용한 것을 만들어보겠습니다.
[05:06]
오픈소스 웹 크롤러인 Crawl for AI를 사용하여
[05:09]
MCP를 만들어보겠습니다.
[05:12]
설치 방법은
[05:14]
여기 있고 정말 간단합니다.
[05:15]
시스템에 직접 설치하거나
[05:17]
가상 환경에 설치하면 됩니다.
[05:20]
패키지 충돌을 피하고 싶다면 가상 환경을 추천합니다.
[05:22]
앞서 말씀드렸듯이 이것은
[05:24]
튜토리얼이 아니라 AI를 활용해
[05:26]
작업을 수행하는 방법을 보여드리는 것입니다.
[05:28]
그들이 제공한 URL에서 데이터를 추출하는
[05:30]
간단한 스크립트가 있습니다.
[05:33]
이 스크립트를 Cursor에 붙여넣었고,
[05:35]
여기 있습니다. 먼저 제대로 작동하는지 확인했고,
[05:37]
확인 후에 Cursor에 이런 프롬프트를 주었습니다.
[05:40]
이 파일을 보고 함수를 가져와서
[05:42]
이미 MCP 구조가 있는
[05:44]
첫 번째 MCP 파일에 구현하도록 요청했습니다.
[05:46]
또한 MCP 구조를 가진 파일에
[05:49]
링크를 매개변수로 받도록 지시했습니다.
[05:51]
이는 곧
[05:54]
AI 모델에 링크를 제공하면
[05:56]
이 함수를 통해 실행되고
[05:58]
결과를 마크다운 파일로 반환합니다.
[06:00]
이렇게 얻은 추출된 데이터로
[06:03]
원하는 작업을 할 수 있습니다.
[06:05]
보시다시피 Crawl for AI 웹 도구가
[06:07]
Cursor 에이전트에서 사용 가능합니다.
[06:09]
같은 파일에 있기 때문에
[06:11]
주소를 변경할 필요가 없습니다.
[06:13]
테스트를 해보면, Cursor 웹사이트 링크를
[06:15]
제공하고 크롤링을 요청했더니
[06:17]
사이트의 섹션들을
[06:19]
나열해주었습니다.
[06:21]
각 섹션에 대한 간단한 설명과 함께
[06:24]
실제 출력을 살펴보겠습니다.
[06:25]
전달된 매개변수는
[06:27]
Cursor 웹사이트 링크였고
[06:29]
결과로 사이트의 구조와
[06:32]
내용을 모두 받았습니다.
[06:34]
웹사이트의 텍스트는 추출되었지만
[06:36]
HTML 태그나 다른 요소들과 같은
[06:38]
전체 구조는 받지 못했습니다.
[06:40]
이를 얻으려면 설정을 변경하거나
[06:42]
Crawl for AI 문서를 참조해야 합니다.
[06:44]
이렇게 하면 MCP 서버를 확장하여
[06:47]
단순히 웹사이트를 크롤링하는 것뿐만 아니라
[06:49]
정확한 복제에 필요한
[06:51]
데이터를 제공하여
[06:53]
랜딩 페이지 복제 과정을 거의 즉각적으로
[06:55]
처리할 수 있습니다.
[06:58]
지금까지 본 것은 제가 로컬에 설치한
[07:00]
도구를 사용한 것이지만
[07:03]
API로도 작업할 수 있습니다.
[07:05]
예를 들어, Figma API 문서가
[07:07]
여기 있는데, 특히 Get File 엔드포인트를
[07:10]
보면 설명되어 있습니다.
[07:12]
Figma 파일 URL에서
[07:14]
이 엔드포인트에 필요한 매개변수를
[07:16]
직접 추출하는 방법이 나와있습니다.
[07:19]
이것을 Cursor의 에이전트에 전달하면
[07:21]
자동으로 매개변수를 추출하는 코드를 생성하고
[07:23]
MCP 서버를 구현해 줍니다.
[07:25]
앞서 언급했듯이
[07:28]
이것을 단순한 입출력 시스템으로
[07:29]
생각하면 됩니다.
[07:32]
이 방식을 사용하면 거의 모든 것에 대해
[07:34]
MCP 서버를 만들 수 있습니다.
[07:36]
로컬 도구든 API 엔드포인트든 상관없이요.
[07:39]
생각해보세요.
[07:41]
API가 있는 모든 플랫폼을
[07:43]
에이전트로 제어할 수 있다는 건 정말 놀랍죠.
[07:46]
이 영상이 도움이 되었길 바랍니다.
[07:48]
이를 활용하여 자신만의 MCP 서버를 구현하고
[07:50]
생산성을 향상시킬 수 있습니다.
[07:53]
좋아요와 구독 눌러주시고
[07:56]
알림 설정도 해주시면
[07:58]
새 영상을 가장 먼저 보실 수 있습니다.