몇 분 만에 MCP 서버 구축 및 배포하기 (완전 가이드)

채널 아이콘
Cole Medin 구독자 78,300명

요약

이 영상은 Model Context Protocol(MCP) 서버를 프로덕션 환경에 바로 사용할 수 있도록 TypeScript 기반 템플릿과 모범 사례를 단계별로 설명한다. GitHub OAuth 인증, Sentry 모니터링, 스트리밍 HTTP 전송, Cloudflare Workers 배포 방법을 모두 다루며 보안 체크리스트를 적용해 안전한 서버를 만드는 법을 소개한다. 또한 AI 코딩 어시스턴트를 활용하여 동일한 템플릿을 활용해 원하는 MCP 서버를 빠르게 자동 생성하는 팁을 제공한다.

주요 키워드

Model Context Protocol Anthropic Cloudflare Workers streamable HTTP transport GitHub OAuth TypeScript Wrangler CLI Sentry 보안 체크리스트 AI 코딩 어시스턴트

하이라이트

  • 🔑 MCP 서버를 프로덕션 환경에 바로 적용할 수 있는 TypeScript 템플릿을 제공한다
  • ⚡️ Anthropic의 MCP 개선 사항: 스트리밍 HTTP 전송, OAuth 인증, 보안 가이드 문서
  • 🚀 Cloudflare Workers와 Wrangler CLI를 이용해 무료로 원클릭 배포 가능
  • 📌 GitHub OAuth 연동으로 특정 사용자만 도구를 호출하도록 세밀한 권한 관리
  • 🔒 보안 체크리스트 기반으로 SQL 검증, 리소스 수명 주기 관리 등 백엔드 모범 사례 적용
  • 🌟 Sentry를 활용해 프로덕션 MCP 서버의 에러와 성능을 실시간 모니터링
  • 🛠️ 예제를 통해 Postgres 데이터베이스와 연동된 채팅형 MCP 도구 세 가지(테이블 조회·읽기·쓰기) 구현
  • 🚀 AI 코딩 어시스턴트를 활용해 템플릿을 바탕으로 맞춤형 MCP 서버를 자동 생성 가능

용어 설명

MCP (Model Context Protocol)

AI 에이전트가 외부 도구와 상호 작용하도록 표준화된 API 프로토콜

streamable HTTP transport

실시간 스트리밍을 지원하는 HTTP 전송 방식으로 대량 요청 시 확장성 제공

OAuth (Open Authorization)

제3자 서비스 인증·권한 부여를 위한 표준 프로토콜

Wrangler CLI

Cloudflare Workers를 로컬에서 개발·배포할 수 있게 해 주는 커맨드라인 도구

Sentry

애플리케이션 에러와 성능을 실시간으로 모니터링·알림해 주는 플랫폼

[00:00:00] 도입 및 개요

MCP 서버의 필요성과 초기 문제점을 설명하고, 이 영상에서 TypeScript 템플릿을 활용해 프로덕션 준비된 MCP 서버를 순차적으로 구축·배포할 계획을 안내한다.

MCP 서버는 널리 사용되고 있지만 실제로 프로덕션 준비가 된 MCP를 구축하고 배포하는 방법을 아는 사람은 거의 없습니다. 이 영상에서는 누구나 사용할 수 있는 템플릿을 통해 이를 간단하게 구현하는 방법을 다룹니다.
[00:00:11] MCP 프로토콜과 현황

Anthropic이 발표한 Model Context Protocol의 개념과 AI 에이전트에 외부 도구 연결이 주는 이점을 소개하고, 3월부터 급속도로 확산된 배경을 짚어본다.

Anthropic이 작년 11월 출시한 모델 컨텍스트 프로토콜(MCP)은 AI 에이전트와 외부 도구를 연결하는 혁신적인 방법입니다. 이는 Cursor, Claude 같은 코딩 어시스턴트에게 시스템과 데이터 접근을 통한 슈퍼파워를 제공합니다.
[00:00:35] 초기 MCP의 한계

보안 취약점, 인증 부재, 미흡한 문서화, 원격 배포 불가 등 초기 MCP 서버가 ‘장난감’ 수준이었던 한계를 정리한다.

MCP는 올해 3월부터 폭발적으로 성장하여 모든 곳에서 채택되고 있습니다. 하지만 초기에는 보안 취약점, 인증 부재, 부족한 문서화, 원격 배포 불가능 등의 문제로 여전히 장난감 수준이었습니다.
[00:01:06] Anthropic의 개선 사항

스트리밍 HTTP 전송, OAuth 인증 구현(OAuth), 보안 모범 사례 문서, Cloudflare 기반 원격 MCP 배포 기능 등 프로덕션 인프라 강화 내용을 설명한다.

과거에는 MCP 서버를 직접 실행하려면 개인 컴퓨터에 다운로드하고 호스팅해야 했습니다. 하지만 이제 모든 것이 바뀌었습니다. 모든 사람이 Cloud Code에 집중하는 동안, Anthropic은 조용히 우리가 기다려온 MCP용 프로덕션 인프라를 구축해왔습니다.
Anthropic은 확장 가능한 스트리밍 HTTP 전송 방식, OAuth 인증, 보안 모범 사례 문서화, Cloudflare 같은 플랫폼과의 엔터프라이즈급 원격 배포 등을 통해 MCP를 멀리 밀어붙이고 있습니다.
Anthropic은 최근 Claude, Cloud Code, MCP로 압도적인 성과를 거두고 있습니다. 이제 처음부터 프로덕션 준비가 된 MCP 서버를 구축하는 정확한 방법을 보여드리겠습니다. 이것이 모든 AI 에이전트에 힘을 실어주게 될 미래의 방법입니다.
[00:01:48] 전체 로드맵 안내

TypeScript MCP 서버 구축, GitHub OAuth 인증, Sentry 모니터링, Cloudflare Workers 배포, AI 코딩 어시스턴트 활용 순으로 진행할 학습 여정을 제시한다.

이 포괄적인 템플릿은 MCP 서버에 도구 추가, 인증, 모니터링, 보안, 배포 처리 등의 모든 모범 사례를 포함합니다. 단순한 튜토리얼이 아닌 원하는 어떤 MCP 서버든 구축할 수 있는 완전한 블루프린트입니다.
함께 구축하고 Cloudflare에 배포한 후, AI 코딩 어시스턴트를 사용하여 이를 시작점으로 원하는 것을 구축하는 방법까지 보여드리겠습니다.
[00:02:35] 사전 준비 사항

Node.js 설치, Cloudflare 무료 계정·Wrangler CLI 설정, GitHub OAuth 앱 등록, Postgres 데이터베이스 연결정보 확보, 레포지토리 클론과 의존성 설치 과정을 안내한다.

프로덕션 환경에서 사용할 수 있도록 Cloudflare에 배포하며, 새로운 스트리밍 가능한 HTTP 전송 계층과 레거시 SSE를 지원하는 방법을 소개합니다.
PostgreSQL 데이터베이스와 함께 작동하는 실용적인 MCP 서버를 구축하여 데이터베이스 테이블 조회, 읽기 전용 쿼리, 쓰기 작업을 수행할 수 있도록 합니다.
GitHub OAuth를 통해 특정 사용자만이 쓰기 작업 도구에 접근할 수 있도록 인증과 권한 부여를 구현합니다.
TypeScript가 MCP 구축과 Cloudflare 배포를 위한 최고의 언어가 되고 있다는 점을 강조하며, 템플릿 사용을 위한 실행 방법을 설명합니다.
Node.js, Cloudflare 무료 계정, GitHub 계정, PostgreSQL 데이터베이스라는 네 가지 전제 조건을 소개합니다.
Wrangler CLI 설치 및 로그인, 저장소 복제, npm install을 통한 의존성 설치 등 환경 설정 과정을 안내합니다.
주요 MCP 서버 구현에 앞서 MCP의 핵심 작동 원리를 이해하기 위한 기본 예제를 먼저 다루겠다고 예고합니다.
[00:05:03] MCP 작동 원리 핵심

TypeScript 기반 MCP 서버의 구조를 살펴보며 mcp-server 인스턴스 생성, 도구(tool) 등록, 표준 입출력 및 HTTP/SSE 전송 계층 정의로 간단한 API 엔드포인트 역할을 구현함을 이해한다.

MCP 서버 구축에 필요한 추가 복잡성 계층(권한 부여, 모니터링, Cloudflare 배포)을 설명하며, TypeScript MCP SDK 문서를 기반으로 한 기본 예제를 소개합니다.
TypeScript로 MCP 서버를 구축하는 핵심 구조를 설명합니다. MCP 서버 임포트, 전송 계층 설정, 서버 인스턴스 생성, 도구 등록의 과정을 통해 AI 에이전트를 위한 API 엔드포인트를 만드는 방법을 다룹니다.
MCP의 본질이 새로운 것이 아니라 기존 API를 AI 에이전트에 특화된 표준으로 재포장한 것임을 강조하며, 보안 모범 사례도 기존과 동일하다고 설명합니다.
실제 구현 예제로 simplemath.ts를 소개합니다. Cloudflare와 함께 작동하도록 조정된 기본 MCP 서버로, agent/mcp를 사용하여 메인 클래스를 구축하고 도구를 초기화하는 방법을 보여줍니다.
[00:06:45] 간단한 수학 서버 데모

Cloudflare 로컬 데브 환경에서 간단한 사칙연산 도구를 제공하는 MCP 서버를 띄우고, Cloud Desktop(또는 Cursor)에서 연결·테스트하는 과정을 직접 시연한다.

기본 수학 연산(더하기, 빼기, 곱하기, 나누기) 도구의 구현을 설명하며, 레거시 목적을 위한 SSE와 새로운 streamable HTTP 전송 방식을 모두 지원하는 서버 구성을 다룹니다.
MCP 서버의 기본 구성을 설명합니다. SSE 레거시 목적과 스트리밍 가능한 HTTP를 위한 새로운 전송 방식이 포함되어 있습니다.
Wrangler 설정이 완료되었다면 간단한 명령어만으로 MCP 서버를 실행할 수 있습니다. 클론한 저장소에서 Wrangler dev 명령어를 실행하면 됩니다.
MCP 서버가 실행되면 Cursor, Claude, Claude Desktop 등 모든 MCP 클라이언트에서 연결할 수 있습니다.
Claude Desktop에서 MCP 설정 방법을 시연합니다. 파일 > 설정 > 개발자 메뉴에서 구성을 편집하여 MCP 서버를 연결합니다.
localhost 8789와 /mcp 엔드포인트를 사용하여 스트리밍 가능한 HTTP 연결을 설정합니다. 구성 변경 후 Claude Desktop을 재시작해야 합니다.
[00:09:06] .dev.vars 환경 변수 설정

GitHub 클라이언트 ID/시크릿, 암호화 키, 데이터베이스 URL, Sentry DSN 등 필수 환경 변수를 .dev.vars에 지정해 로컬 개발 환경을 구성한다.

계산 도구를 사용한 실제 테스트를 진행합니다. 임의의 숫자 곱셈 계산을 요청하고 Claude Desktop이 커스텀 MCP 서버 사용 권한을 요청합니다.
MCP 서버 연결과 계산 도구가 정상적으로 작동함을 확인합니다. 이제 GitHub 인증, 보안, 모니터링 등 고급 기능을 추가할 차례입니다.
강의 계획을 설명합니다. MCP 서버 실행 방법, 작동 원리, Cloudflare 배포를 통한 프로덕션 환경 구축, 그리고 AI 코딩 어시스턴트 활용 방법을 순차적으로 다룰 예정입니다.
AI 코딩 어시스턴트가 템플릿을 받아 원하는 MCP 서버를 만들어줄 수 있다고 설명합니다. 이미 Wrangler가 설치되고 구성되어 있으며, 패키지들이 설치되고 레포지토리가 복제된 상태입니다.
환경 변수 설정을 위해 파일을 복사해서 .dev.vars로 이름을 바꿔야 합니다. 이는 .env 파일과 같지만 Cloudflare 워커에 더 특화된 형태입니다.
설정해야 할 4개의 환경 변수를 설명합니다: GitHub 클라이언트 ID와 시크릿, 암호화 키, 그리고 데이터베이스 URL입니다. 데이터베이스는 Supabase, Neon, 또는 직접 호스팅한 PostgreSQL 등 어떤 플랫폼이든 사용할 수 있습니다.
GitHub OAuth 앱을 만드는 방법을 설명합니다. GitHub 설정 > 개발자 설정 > OAuth 앱으로 이동하여 새 앱을 만들면 클라이언트 ID와 시크릿을 받을 수 있습니다. 이는 MCP 인증을 위한 중요한 구성 요소입니다.
모든 설정이 완료되었으므로 Wrangler dev 명령을 실행해서 MCP 서버를 실행할 수 있습니다. 이전 간단한 예제와 유사하게 프로덕션 환경의 시뮬레이션된 버전을 로컬에서 실행합니다.
[00:11:39] 보안 체크리스트 및 모범 사례

lifecycle 관리(리소스 수명 주기), 모듈식 단일 책임 도구 설계, SQL 검증·위험 패턴 차단, 로깅·에러 처리, 권한(Role-Based Access) 적용 흐름을 살펴본다.

포트가 간단한 예제와 다르므로 Claude Desktop 구성에서 포트를 8788로 변경해야 합니다. MCP 클라이언트를 재시작하면 새로운 MCP 서버가 나타납니다.
PostgreSQL용 데이터베이스 도구 3개를 확인할 수 있습니다. 데이터베이스에 대한 질문을 하면 GitHub OAuth 과정을 거쳐야 합니다. 브라우저에서 GitHub 로그인 페이지가 열리고 MCP를 사용하기 전에 인증을 받아야 합니다.
GitHub 인증을 통해 MCP 서버로 가는 게이트웨이가 있다는 점이 핵심입니다. 이제 인증이 있는 상태에서 MCP 서버를 보호하는 방법은 무궁무진합니다.
인증 플로우를 보여주며 클로드 코드에서 데이터베이스 19개 테이블이 있음을 확인합니다. 사용자 프로필 테이블을 쿼리하여 3개의 테스트 계정 레코드를 성공적으로 조회합니다.
MCP 서버 구축을 위한 Cloudflare AI 저장소의 GitHub OAuth 데모를 소개합니다. 원격 MCP 서버 구축과 다양한 공급자 인증 확장에 대한 유용한 리소스들을 제공합니다.
[00:14:06] GitHub OAuth 통합

Cloudflare Oauth Provider를 활용해 서버 측 인증 로직을 자동화하고, 요청마다 GitHub 사용자 검증 후 권한에 따라 도구 노출 여부를 제어하는 방법을 설명한다.

MCP 보안 체크리스트의 중요성을 강조하며, AI 코딩 어시스턴트에게 이 체크리스트를 프롬프트로 제공하는 프로 팁을 공유합니다. MCP 서버는 본질적으로 에이전트를 위한 API이므로 백엔드 인프라의 보안 관행을 따라야 합니다.
수명 관리를 통한 데이터베이스 통합의 중요성을 설명합니다. 보안 체크리스트에서 강조하는 수명 관리를 통해 데이터베이스 연결과 같은 서버 리소스를 적절히 관리하고 우아하게 종료할 수 있습니다.
MCP 서버 설계 시 모듈화된 단일 목적 도구와 명확한 설명의 중요성을 강조하며, 대형 언어 모델의 혼란을 방지하는 방법을 설명합니다.
GitHub OAuth를 통한 역할 기반 액세스 제어와 민감한 도구 보호, SQL 쿼리 검증 및 정화, Sentry 모니터링 등의 보안 모범 사례를 소개합니다.
Cloudflare Workers를 선택한 이유와 함께 핵심 관행들을 정리하며, 복잡한 프로덕션 서버가 앞서 다룬 간단한 예제와 유사한 구조를 가지는 이유를 설명합니다.
허용된 GitHub 사용자 목록을 통한 민감한 쓰기 쿼리 도구 액세스 제어 방법을 보여주며, 프로덕션 환경에서는 데이터베이스 활용의 필요성을 언급합니다.
Cloudflare agents 패키지의 MCP 에이전트 사용과 서버 설정, 그리고 라이프스팬 관리를 통한 데이터베이스 연결의 우아한 종료 방법을 설명합니다.
라이프스팬 관리의 중요성과 보안 체크리스트에서의 생명주기 관리 개념을 강조하며, 데이터베이스 인스턴스의 전체 생명주기 사용과 정리 작업의 필요성을 설명합니다.
도구 설명이 대형 언어 모델의 프롬프트 일부로 사용되는 중요성을 강조하며, 에이전트가 도구를 언제, 어떻게 사용할지 결정하는 핵심 컨텍스트 역할을 설명합니다.
MCP 서버에서 데이터베이스 인스턴스를 가져오고 테이블을 나열하는 도구를 구현하며, LLM에 전달되는 정보를 JSON 형식으로 잘 포맷하는 것이 중요하다고 설명합니다.
읽기 전용 SQL 쿼리 실행 도구를 통해 보안 모범 사례를 구현하는 방법을 보여주며, 위험한 패턴을 검증하고 AI 코딩 어시스턴트가 이런 보안 사항들을 따르도록 하는 것이 중요하다고 강조합니다.
[00:18:37] Sentry로 프로덕션 모니터링

Cloudflare Workers용 Sentry 프로젝트 설정(DSN 발급), withSentry 래퍼 적용, 에러·트레이스 수집, 알림 설정까지 실제 대시보드 활용 예시를 설명한다.

GitHub OAuth 인증 시스템을 설정하여 사용자의 GitHub 사용자명을 확인하고, 허용된 사용자 목록에 있는 경우에만 특정 도구를 노출시키는 권한 관리 시스템을 구현합니다.
SQL 쿼리 검증과 실행 과정에서 오류 처리를 구현하며, catch 블록을 사용해 오류를 우아하게 처리하고 MCP 서버가 에이전트를 통해 사용자에게 명확한 오류 메시지를 전달하도록 합니다.
Cloudflare OAuth 제공업체를 사용하는 장점을 설명하며, MCP 서버 확장과 배포뿐만 아니라 인증의 서버 측면도 처리해주어 구현해야 할 로직을 크게 줄여준다고 소개합니다.
GitHub OAuth 설정에 대한 설명으로, 구글 OAuth 같은 대안도 가능하지만 현재는 GitHub 클라이언트 측 설정과 서버 측 처리 방식을 사용한다고 설명합니다.
API 핸들러 구조를 소개하며 SSE용, streamable HTTP용 핸들러와 authorize, register 엔드포인트를 설명하고 Cloudflare 문서를 참고할 것을 권장합니다.
GitHub 인증 설정이 간단하며 AI 코딩 어시스턴트를 활용해 다른 OAuth 제공업체로 쉽게 변경할 수 있다고 설명합니다.
[00:20:21] Cloudflare Workers 배포

Wrangler CLI로 KV 네임스페이스 생성(인증 상태 저장), secrets 설정(환경 변수 배포), wrangler deploy 명령으로 원격 MCP 서버를 클라우드에 배포하는 과정을 안내한다.

Sentry 모니터링 소개로, Sentry가 비디오를 후원하며 프로덕션 환경에서 MCP 서버 모니터링을 위한 최고의 플랫폼이라고 설명합니다.
Sentry 설정 방법을 설명하며 sentry.io에서 무료 티어로 Cloudflare Workers JavaScript 프로젝트를 생성하고 DSN을 환경 변수로 사용하는 과정을 다룹니다.
Sentry 대시보드 기능을 시연하며 트레이스 확인, 로그와 메타데이터 조회, 지속 시간 확인, 오류 발생 시 이메일 알림 등의 기능을 소개합니다.
프로덕션 환경에서 모니터링의 중요성을 강조하며 Sentry 설정을 위한 파일 교체 방법을 설명합니다. index_sentry와 index.ts 파일을 바꿔서 사용하는 방법을 제시합니다.
화자가 MCP 서버 모니터링을 위해 참조한 가이드에 대해 설명합니다. 이 가이드는 Cloudflare의 GitHub OAuth 예제를 기반으로 하며, 프로덕션 환경에서 MCP 서버를 모니터링하는 방법을 다룹니다.
Sentry를 사용한 모니터링 설정에 대해 설명합니다. 오류 처리 함수와 OAuth 공급자를 Sentry로 래핑하는 방법을 보여주며, 성공적인 호출과 오류를 모두 추적할 수 있다고 설명합니다.
Sentry 플랫폼의 장점을 설명합니다. MCP 서버뿐만 아니라 모든 백엔드 애플리케이션 모니터링에 유용하며, 화자는 AI 에이전트 모니터링에도 사용한다고 언급합니다. 에이전트 모니터링에는 Langfuse를, 백엔드 인프라와 RAG 파이프라인에는 Sentry를 사용한다고 설명합니다.
모범 사례를 따르는 MCP 서버를 Cloudflare로 프로덕션에 배포하는 과정을 시작합니다. 먼저 KV(키-값) 저장소를 생성해야 하며, 이는 GitHub으로 인증된 사용자를 추적하는 OAuth 관리용 미니 데이터베이스 역할을 합니다.
Wrangler CLI를 사용해 KV namespace를 생성하는 명령어를 설명합니다. 생성 후 고유한 KV ID를 얻을 수 있으며, 이를 Cloudflare 대시보드의 스토리지 섹션에서도 확인할 수 있습니다. 이 ID를 wrangler.json 파일의 플레이스홀더에 입력하면 배포 준비가 완료됩니다.
Wrangler deploy 명령어를 사용하여 Cloudflare Workers에 MCP 서버를 배포하는 과정을 시작합니다. 모든 설정이 완료되어 매우 빠르게 클라우드에 배포할 수 있습니다.
배포가 완료되어 프로덕션 URL을 얻었습니다. 이 URL을 사용해 Claude Desktop이나 다른 MCP 클라이언트와 연결할 수 있으며, Workers and Pages 탭에서도 확인할 수 있습니다.
[00:25:35] 프로덕션 서버 테스트

배포된 URL을 MCP 클라이언트 설정에 반영하고, GitHub 인증 절차를 거쳐 테이블 조회·레코드 삽입 등의 도구 호출을 실행해 실제 작동을 검증한다.

프로덕션 URL을 복사하여 Claude Desktop 설정에 적용합니다. /mcp 엔드포인트를 추가할 수 있지만, GitHub 인증이 없으면 Invalid token 오류가 발생합니다.
프로덕션 환경에서 환경 변수를 설정하는 과정을 설명합니다. 로컬에서는 .dev.vars를 사용했지만, 이제는 클라우드에 secrets를 저장해야 합니다.
대시보드에서 직접 설정하거나 wrangler secret put 명령어를 사용하여 명령줄에서 secrets를 설정할 수 있습니다. 재배포 없이도 모든 secrets가 적용됩니다.
설정이 완료되어 Claude Desktop을 재시작하고 최신 URL을 적용합니다. 이제 데이터베이스 테이블을 조회하는 테스트를 준비하며, GitHub 인증 팝업이 나타나는 것을 확인할 수 있습니다.
GitHub OAuth 인증 과정을 실시간으로 시연하며, 승인 버튼을 클릭하고 GitHub 계정 연결을 완료합니다.
원격 MCP 서버를 사용하여 데이터베이스 테이블 조회를 실행하며, 로컬 환경과 동일하게 19개의 테이블을 성공적으로 가져옵니다.
보호된 GitHub OAuth 도구를 사용하여 프로젝트 테이블에 AI 기반 레시피 생성기 레코드를 추가하고, Supabase 대시보드에서 성공적으로 확인합니다.
[00:28:18] 결론 및 활용 팁

프로덕션 준비된 MCP 서버 구축 전체 과정을 정리하고, AI 코딩 어시스턴트를 활용해 템플릿을 커스텀·자동화하는 방법과 추가 리소스를 안내하며 마무리한다.

Cloudflare에 배포된 MCP 서버의 메트릭을 확인하며, 27개의 요청이 처리되었음을 보여주고 MCP 핸드셰이킹 프로세스로 인한 다수의 요청을 설명합니다.
완성된 MCP 서버의 주요 성과를 정리하며, 도구와 생명주기, 보안, 모니터링 등의 모범 사례를 구현하고 원격 MCP로 배포했다고 설명합니다.
AI 코딩 어시스턴트 활용 방법을 제안하며, GitHub 저장소를 컨텍스트로 사용하여 Claude나 Cursor 같은 도구가 MCP 서버를 자동으로 생성할 수 있다고 설명합니다.
요즘 모든 사람들이 MCP 서버를 사용하고 있지만
실제로 프로덕션 준비가 된
MCP를 구축하고 배포하는 방법을 아는 사람은 거의 없습니다.
이것이 바로 이 영상에서
처음부터 다룰 내용입니다.
그리고 여러분이 지금 당장 사용할 수 있는
템플릿을 사용해서
놀라울 정도로 간단하게 만들어보겠습니다.
Anthropic이 지난 11월에
모델 컨텍스트 프로토콜을 출시했을 때
정말 인상적이었습니다.
마침내 우리의 AI 에이전트를 외부 도구와 연결할 수 있는
방법이 생겼습니다.
이것은 우리의 에이전트와
Cursor와 Claude 같은 코딩 어시스턴트에게
우리의 시스템과 데이터에 연결해서
슈퍼파워를 제공하는 방법입니다.
그리고 MCP는 올해 3월부터
정말 폭발적으로 성장했습니다.
모든 사람이 주목하고 있었고
지금도 여전히 주목받고 있으며
모든 곳에서 채택되고 있습니다.
하지만 처음 인기를 끌었을 때
여전히 큰 문제가 있었습니다.
본질적으로 아직 장난감 수준이었습니다.
보안 취약점이 있었고
인증이 없었으며
문서화는 기껏해야
부족한 상태였고
원격 MCP 서버를 배포할 방법이 없었습니다.
직접 실행하려면
MCP 서버를 다운로드해서
자신의 컴퓨터에 호스팅해야 했습니다.
하지만 친구들, 이제 모든 것이 바뀌었습니다.
모든 사람이 Cloud Code에
집중하고 있는 동안
그리고 그럴 만한 이유가 있지만
Anthropic은 조용히
우리 모두가 기다려온
MCP를 위한 프로덕션 인프라를
구축해왔습니다.
그들은 실제로 확장 가능한
프로토콜을 위한 새로운 전송 방식인
스트리밍 HTTP를 가지고 있습니다.
정말 간단하게 만들어주는
Cloudflare 같은 플랫폼과 함께 말이죠.
그래서 Anthropic은 정말로
MCP를 멀리 밀어붙이고 있습니다.
그리고 제가 말씀드리고 싶은 것은
그들이 최근에 Claude, Cloud Code,
그리고 MCP로 정말 압도적인 성과를
거두고 있다는 것입니다.
지금부터 저는 여러분께
프로덕션 준비가 된 MCP 서버를
처음부터 구축하는 방법을
정확히 보여드리겠습니다.
이것이 우리가 모든 AI 에이전트에
힘을 실어주게 될 미래의 방법입니다.
그리고 이것은 여러분을 위해
제가 만든 이 매우 포괄적인
템플릿으로 시작됩니다.
이것이 오늘 우리가 다룰 내용입니다.
그리고 여기서 저는 MCP 서버에
도구를 추가하고 인증과
모니터링, 보안, 배포를
처리하는 모든 모범 사례를
따르고 있습니다.
이것은 단순한 튜토리얼이 아닙니다.
이것은 여러분이 가져다가
원하는 어떤 MCP 서버든
구축하는 데 사용할 수 있는
완전한 블루프린트입니다.
우리는 함께 구축하고,
Cloudflare에 배포하고,
그리고 AI 코딩 어시스턴트를 사용해서
이것을 시작점으로 사용하여 원하는 것을 구축하는 방법까지 보여드리겠습니다.
프로덕션 환경에서 사용할 수 있도록 배포할 것입니다. 그리고 Cloudflare에 배포할 예정입니다.
Cloudflare가 이 영상을 후원하는 것은 아닙니다.
그들은 단순히
원격 MCP 배포를 위한 최고의 플랫폼일 뿐입니다.
그리고 저는 특히 이 플랫폼을 다뤄달라는
많은 요청을 받았습니다. 그래서 드디어
여기 있습니다. 또한 우리는
새로운 스트리밍 가능한 HTTP 전송 계층을 지원할 것이고
그리고 레거시 목적으로
SSE를 지원할 것입니다. 그리고 이 템플릿을 위해
매우 간단하지만 여전히 실용적인 데모를 만들기 위해
우리는 기본적인 MCP 서버를 구축하고 있습니다.
이것은 PostgreSQL 데이터베이스와 함께 작동합니다.
데이터베이스와 채팅하는 것과 같은
MCP 서버입니다. 그래서 여러분은
PostgreSQL 계정에 대한 연결 정보를 제공하기만 하면 됩니다.
이것에 대해서는 조금 후에 다루겠습니다.
그리고 우리는 세 가지 도구를 가지고 있습니다.
하나는 데이터베이스에 있는 모든 테이블을 나열할 수 있는 것입니다.
데이터베이스에 있는 모든 테이블을 나열할 수 있습니다.
다른 하나는 읽기 전용 쿼리를 실행하는 것입니다.
데이터베이스에서 쿼리를 실행하고 그 다음은
쓰기 작업을 실행하는 것입니다. 그리고
여기서 GitHub OAuth가 등장합니다.
왜냐하면 우리는
이 MCP 도구를 보호하는 인증을 가질 것이기 때문입니다.
구체적으로 말하면, 특정 GitHub 사용자들만이
이 도구를 보고 사용할 수 있습니다.
그리고 우리가 이것을
TypeScript MCP 서버로 구축하는 이유는
TypeScript가 MCP 구축을 위한 최고의 언어가 되고 있기 때문입니다.
저는 제 채널에서 TypeScript를 충분히 다루지 않았고
또한 이것은 최고의 프로그래밍 언어입니다.
언어이며 원격 MCP를 구축하는 데 사용할 수 있습니다.
Cloudflare에 배포하고 싶은 것들을 말입니다.
그리고 이 템플릿을 직접 실행하는 것은
매우 간단합니다.
여기에는 네 가지 전제 조건이 있습니다.
우리가 여기서 가지고 있는 것들입니다.
먼저 Node.js를 설치해야 합니다.
그다음 Cloudflare 계정이 필요합니다.
무료 tier를 사용하면 됩니다.
이것은 이 전체 데모에서 작동할 것입니다.
그래서 cloudflare.com으로 가서
무료 계정을 만들면 됩니다.
참고로 이 전체 영상의 모든 것은 무료입니다.
그리고 OAuth를 위한 GitHub 계정이 필요합니다.
그리고 당연히 이 특정 MCP 서버를 위한 PostgreSQL 데이터베이스가 필요합니다.
이 모든 전제 조건이 준비되면
그러면 Wrangler CLI를 설치할 수 있습니다.
이것은 우리가 Cloudflare와 함께 작업할 수 있는 방법입니다.
컴퓨터의 명령줄에서 말입니다.
그래서 npm install -g로 글로벌 설치하면 됩니다.
wrangler를 설치하고, 그다음 wrangler login 명령을 실행합니다.
이것은 브라우저에서 Cloudflare로 연결해서
인증을 진행합니다.
그래서 이제 CLI가
새로운 Cloudflare 계정으로 인증되었습니다.
그리고 마지막으로 해야 할 일은
이 저장소를 복제하는 것입니다.
좋습니다. 그래서 여기 위로 가서
git clone을 하고
이것이 여러분의 URL입니다.
그리고 npm install 명령을 실행하여
모든 의존성을 설치할 수 있습니다.
여기서 우리 Wrangler Cloudflare Worker 프로젝트를 위한
의존성들을 설치합니다.
그러면 준비가 완료됩니다.
이 비디오의 주요 MCP 서버 구현에 들어가기 전에
한 가지 더 놓치고 싶지 않은 것이 있습니다.
여러분과 함께 해야 할 것이 있기 때문입니다.
여기서 견고한 기초를 설정해야 합니다.
MCP가 핵심 수준에서 어떻게 작동하는지 이해하는 것입니다.
그래서 제가 먼저 다루고 싶은 기본 예제가
이 저장소에 있습니다.
그러면 권한 부여, 모니터링, 그리고 Cloudflare 배포와 같은 추가 복잡성 계층을 추가해보겠습니다.
이 기본 예제에서는
GitHub 페이지에 있는 문서를 많이 참고했습니다.
이것은 TypeScript MCP SDK용 문서입니다.
이 링크와 제가 준비한 주요 템플릿 모두 설명란에 포함시켜드리겠습니다.
실제로 제가 이 비디오에서 다루는 모든 내용을
설명란에 링크해드릴 겁니다.
여러분에게는 정말 보물같은 자료가 될 거예요.
하지만 이건 정말 중요합니다.
MCP 서버를 구성하는 핵심 요소를 놓치면 안 됩니다.
TypeScript를 사용해서 MCP 서버를 임포트하고
사용하는 전송 계층도 임포트해야 합니다.
여기서는 아주 기본적인 예제를 위해
standard IO를 사용하고 있습니다.
물론 나중에는 streamable HTTP와
SSE를 사용하도록 업그레이드할 예정입니다.
원격 MCP에는 이것이 더 필요합니다.
어쨌든, 서버의 인스턴스를 만들고
도구를 등록할 수 있습니다.
이것이 바로 이 비디오에서 집중할 부분입니다.
이들은 모두 우리 서버가 노출하는 기능들입니다.
그리고 샘플링과 리소스 같은
다른 작업들도 할 수 있습니다.
MCP 서버에는 다양한 구성 요소가 있습니다.
그리고 원하는 전송 방식을 정의하고
서버를 시작하기만 하면 됩니다.
이제 본질적으로 API 엔드포인트를 갖게 됩니다.
하지만 이것은 웹사이트용이 아니라
AI 에이전트를 위한 것입니다.
이것을 명심하는 것이 정말 중요합니다.
우리가 여기서 구축하는 모든 것은
새로운 것이 아닙니다.
보안에 관한 모범 사례들도
새로운 것이 아닙니다.
모든 것이 그냥 API입니다.
하지만 AI 에이전트에 특화된 표준으로 재포장된 것입니다.
MCP는 그것이 전부입니다.
하지만 그것만으로도 매우 강력합니다.
이것이 바로 우리의 빠른 시작이고
제가 여기서 보여드리고 싶은 것입니다.
우리 템플릿 저장소를 로컬에 복제했습니다.
그리고 여기에 simplemath.ts가 있습니다.
이것이 Cloudflare와 함께 작동하도록 조정된
매우 기본적인 MCP 서버입니다.
그리고 이것을 기반으로 전체 구현을 만들어보겠습니다.
agent/mcp는
실제로 Cloudflare에서 가져온 것입니다.
이것은 그들의 에이전트 서비스입니다.
이것을 사용해서 MCP 서버의
메인 클래스를 구축합니다.
그리고 GitHub 페이지에서 봤던 것처럼
서버를 정의합니다.
그리고 모든 도구를 초기화합니다.
그냥 this.server.tool입니다.
도구에 이름을 지정하고 인수도 정의합니다.
AI 에이전트가 언제 어떻게 도구를 사용할지
알 수 있도록 설명을 추가할 수도 있습니다.
이것도 나중에 다루겠습니다.
그리고 함수 정의 자체가
AI 에이전트나 코딩 어시스턴트 또는
다른 무엇이든 이 MCP 서버에서
도구를 호출할 때마다 실행될 것입니다.
이것은 매우 기본적인 구현으로
더하기, 빼기, 곱하기, 나누기를 원하는
숫자들을 전달할 수 있는 도구입니다.
그리고 여기 아래쪽에서는
레거시 목적을 위해 SSE와 함께
이 MCP 서버를 제공할 예정입니다.
그리고 일반적인 .serve도 있습니다.
이것은 streamable HTTP를 위한 것으로
목적으로 사용됩니다. 그리고 /mcp는 일반적인
serve입니다. 이것은 스트리밍 가능한
HTTP를 위한 새로운 전송 방식입니다. 그래서
이제 readme로 돌아가서
여러분이 이미 Wrangler를 이런 단계들로
설정해 두셨다면, 이제 해야 할 일은
MCP 서버 구성을 지정하면서 Wrangler dev
명령어를 실행하는 것뿐입니다. 우리의 간단한 버전 말이죠.
이 저장소를 클론한 디렉토리에서
이 명령어를 실행하기만 하면 됩니다.
그러면 짜잔, 우리의 MCP 서버가
이제 실행되고 있고, 어떤 MCP 클라이언트든
연결할 준비가 되었습니다.
Cursor, Claude, Claude Desktop,
뭐든지 말이죠. 지금 Claude Desktop으로
예시를 보여드리겠습니다.
Claude Desktop을 열어봤습니다.
계산 도구가 있는 math MCP 서버를
볼 수 있습니다. 그리고 이것을 설정하기 위해
해야 했던 것은 왼쪽 위 파일, 설정,
개발자로 가는 것뿐이었습니다.
여기서 MCP 구성을 입력합니다.
구성 편집을 클릭하면 됩니다.
그러면 이런 폴더가 나타납니다.
그리고 Claude Desktop 구성을
열 수 있습니다. 이걸 열어보겠습니다.
여기에 많은 새 줄이 있습니다.
그래서 제 비밀 키들과 다른 MCP들을
볼 수 없습니다. 하지만 이것에 연결하기 위해
npxmcp remote를 입력하고
localhost 8789를 입력합니다.
왜냐하면 이것이 현재 실행 중인 URL이기 때문입니다.
스트리밍 가능한 HTTP를 사용하려면
/mcp 엔드포인트가 될 것입니다.
이렇게 MCP 서버에 연결하는 것입니다.
이제 테스트해볼 수 있습니다.
이것을 닫겠습니다. 그런데
구성을 추가하면 Claude Desktop을
다시 시작해야 합니다.
이제 계산 도구를 사용해서
계산하라고 말할 수 있습니다.
그리고 임의의 숫자에 임의의 숫자를
곱하라고 하겠습니다.
여기서 명시적으로 하고 있는 이유는
도구를 사용하는지 확인하고 싶기 때문입니다.
이것을 보내겠습니다.
그러면 Claude Desktop이 우리의
커스텀 MCP 서버를 사용할 권한을
요청할 것입니다.
제 경우엔 이미 승인했지만
여러분에게는 권한을 요청할 것입니다.
그리고 여기 있습니다. 계산 도구를
사용했습니다. 두 숫자가 곱해졌고
우리의 응답이 나왔습니다.
정말, 정말 좋아 보입니다.
이것이 매우 높은 수준에서 본 MCP입니다.
이제 GitHub 인증, 보안, 모니터링 등
재미있는 것들을 추가해보겠습니다.
여기 게임 플랜이 있습니다.
정확한 순서를 알려드리겠습니다.
먼저 이 MCP 서버를 직접 실행하는
방법을 보여드리겠습니다. 매우 쉽습니다.
그런 다음 모든 것이 어떻게 작동하는지
살펴보겠습니다. 공유할 핵심 자료들도
있습니다. 그리고 모든 것을 Cloudflare에
배포해서 MCP를 위한 프로덕션
환경을 만들어보겠습니다.
마지막으로 인트로에서 약속한 대로
AI 코딩 어시스턴트를 사용하는 방법을
보여드리겠습니다. 그래서 여러분이
이 템플릿을 가져다가 AI 코딩
어시스턴트에게 주면 원하는 MCP 서버를
만들어낼 수 있습니다.
그리고 여기서 이 지점에서
여러분은 이미 Wrangler를 설치하고
원하는 MCP 서버를 만들어줄 것입니다. 이제
여러분은 이미 Wrangler를
설치하고 구성했습니다. 패키지들을
설치했고, 레포지토리를
복제했습니다. 이제 환경 변수
설정으로 넘어갈 수 있습니다. 그래서
이 파일을 복사해서
.dev.vars로 이름을 바꿔주면 됩니다.
이건 .env 파일과 같지만
Cloudflare 워커에 더 특화된 것입니다. 그리고
설정해야 할 환경 변수는
총 4개뿐입니다. 먼저
GitHub 클라이언트 ID와
시크릿 암호화 키, 그리고
데이터베이스 URL이 필요합니다. 플랫폼에 따라
이것은 어떤 PostgreSQL
플랫폼이든 될 수 있습니다. Supabase일 수도
있고, Neon일 수도 있고, PostgreSQL을 직접 호스팅할 수도 있습니다.
이 환경 변수를 위한 연결 문자열을 가져오면 됩니다.
그리고 특히
GitHub OAuth 앱을 가져오는 방법은
GitHub에서 우상단의 설정으로 가서
개발자 설정으로 내려가서
OAuth 앱을 클릭하면 됩니다.
여기서 새 앱을 만들 수 있고
그러면 클라이언트 ID와
시크릿을 받을 수 있습니다. 설정하기
매우 쉽습니다. 이것은
MCP 인증을 위한 것입니다. 매우 중요한 구성 요소입니다.
그리고 암호화 키의 경우,
원하는 값으로
설정하면 됩니다. 모든 것을 설정하기 매우 쉽습니다.
그리고 나중에 Sentry를 다뤄서
프로덕션에서 MCP 모니터링을 추가할 것입니다.
그게 전부입니다. 이제
모든 것이 준비되었습니다. 이제 Wrangler dev 명령을 실행해서
MCP 서버를 실행시킬 수 있습니다.
이미 다룬 간단한 예제와
매우 유사할 것입니다. 모든 것이
친숙하게 보이도록 의도적으로
그렇게 했습니다. 우리는
프로덕션 환경의 시뮬레이션된
버전을 실행하고 있습니다.
여기서는 Cloudflare MCP
서버, 원격 MCP를 실행하고 있지만
로컬 머신의 터미널에서
실행되고 있습니다. 포트는 간단한
예제와 다릅니다. 그래서
Claude Desktop 구성으로
돌아가거나 Cursor나 Claude처럼
사용하는 MCP 클라이언트의 구성으로 가서
포트를 8788로 변경하면 됩니다.
그리고 MCP 클라이언트를 재시작하면 됩니다.
이미 Claude Desktop에서
그렇게 했습니다. 이제 여기에
새로운 MCP 서버가 있습니다. 아마 이름을
math에서 바꿔야 할 것 같지만
어쨌든, 여기를 클릭하면
PostgreSQL용 데이터베이스 도구
3개가 있습니다. 그래서
'내 DB에 어떤 테이블들이 있나요?'같은 질문을 할 수 있습니다.
지금 이렇게 할 때, 이미
GitHub OAuth 과정을 거쳐서
이 도구 사용을 승인했습니다. 하지만
여러분에게 일어날 일은
브라우저에서 페이지가 열려서
이 MCP를 사용하기 전에 GitHub로
로그인하는 것입니다. 이것이
아름다운 점입니다. 이제 GitHub
인증을 통해 MCP 서버로 가는
게이트웨이가 있습니다. 그리고
MCP 서버를 보호하는 방법은
무궁무진합니다. 이제 인증이
인증 기능을 앞에 두고 있습니다. 그래서
몇 가지 스크린샷을 보여드리겠습니다
실제로 어떻게 보이는지
그 플로우를 진행하는 과정을 말이죠. 그러면 다시
클로드 코드로 돌아가서 여기서 보시는 것은
데이터베이스에 19개의 테이블이 있다고 나와 있습니다. 그리고 이것은
정말 정말 좋아 보입니다. 그리고 우리는
여기서 다른 것도 테스트해볼 수 있습니다. 저는
이렇게 말해보겠습니다.
제 사용자 프로필 테이블에 어떤 레코드가 있나요?
그러면 이것이 특정 테이블을 쿼리할 것입니다
여기서 말이죠. 실행될 때까지 잠시 기다려보겠습니다
이것을. 네, 잘 됩니다. 사용자 프로필에서 전체 선택
정말 좋아 보입니다. 그리고
지금 3개의 레코드만 있습니다
제가 생성한 테스트 계정들로만
이 수퍼베이스에서 말이죠. 이것은 제
프로덕션 수퍼베이스나 그런 것이 아닙니다. 그래서
네, 여기까지입니다. 이것은 정말 정말
잘 작동합니다. 이제 제가 어떻게
이 MCP 서버를 구축했는지, 그리고 여기에 들어가는 모든 모범 사례들을
알아보겠습니다. 시작하는 것은
제가 여러분을 위해 이 템플릿을 만들 때
시작점으로 사용한 리소스입니다
Cloudflare가 그들의 AI 저장소에서
여기 이 데모를 가지고 있습니다. GitHub OAuth로
원격 MCP 서버를 구축하는 것입니다. 이것은
저를 시작하게 해준 환상적인 리소스입니다
앞서 말했듯이, 설명란에
리소스의 금광이 있을 것입니다
그래서 이것은 설명란에 링크될 것이고
Cloudflare의 다른 정말 도움이 되는 문서들과 함께
원격 MCP 서버 구축에 관한 것들 말이죠. 그리고 또한 그들은
특별히 인증에 관한 섹션도 있습니다
이것은 만약 여러분이
GitHub을 넘어서 확장하고 싶다면 확인하기 좋습니다
다른 공급자들에 대한 인증을 추가하고 싶다면
Google이나 X 같은 것들 말이죠
그래서 이것들은 훌륭한 리소스들입니다. 그리고
마지막으로 중요한 것은
MCP의 보안 체크리스트에 대해 이야기하고 싶습니다
그래서 이것은 제가 모든 모범 사례들을 결정하는 데 사용한 것입니다
제가 MCP 서버를 구축하기 위해 따라야 하는
모범 사례들을 말이죠. 그래서
여기서 정말 프로 팁입니다. 여러분은 이
리소스를 가져갈 수 있습니다. 다시 말하지만
설명란에 링크되어 있습니다. 여러분은 이
체크리스트를 살펴보고, 여기의 모든 것을 복사해서
AI 코딩 어시스턴트에게 주는 프롬프트의 일부로
그냥 붙여넣기만 하면 됩니다
MCP 서버를 구축하라고 할 때
이런 것들을 따르라고 하는 것입니다. 그리고
그것이 제가 한 일입니다. 그리고 여러분은 아마도
여러분의 서버에 적용되지 않을 수도 있는
이런 것들 중 일부를 빼낼 수도 있습니다. 여기의 모든 것이
매우 적용 가능한 것은 아니니까요
하지만 이것은 정말 좋은 시작점입니다
모든 보안 관행들에 대해 여러분의 눈을 뜨게 하는
MCP 서버뿐만 아니라 중요한 것들
정말로 모든 백엔드 인프라에 대해서 말이죠. 제 말은
정말로, 제가 말했듯이, MCP 서버들은
그냥 에이전트를 위한 API입니다. 그래서
네, 이것을 따르는 것이 정말 중요합니다
그리고 그것이 제가 한 일입니다
여기에는 상당히 많은 규칙들이 있지만
모든 것이 제가 readme 상단에 있는 것으로 귀결됩니다
여기서 말이죠. 그래서 우리는
수명 관리가 있는 데이터베이스 통합을 원합니다
보안 체크리스트는 수명에 대해 많이 이야기하므로
우리는 서버의 데이터베이스 연결 같은 리소스들을 관리하고
우아하게 종료할 수 있습니다. 우리는
그런 것들을 원합니다
모듈화되고 단일 목적을 가진 도구들을 만들어야 합니다. 그래야 대형 언어 모델이
우리 MCP 서버를 사용할 때 혼란스러워하지 않거든요.
그리고 설명(description)은 정말
중요합니다. 이 부분은 잠시 후에
더 자세히 다뤄보겠습니다. 우리는 GitHub OAuth를 사용한
역할 기반 액세스 제어를 원합니다.
특히 데이터베이스에 쓰기 쿼리를 실행하는 것과 같은
민감한 도구들을 보호하기 위해서죠.
그리고 보안 모범 사례들도 필요합니다.
이 서버에서 실행하는 SQL 쿼리를
검증하고 정화하는 것 같은 것들이죠.
프로덕션 환경에서 Sentry로 모니터링하는 것도
정말 중요합니다. 그리고
원격 MCP를 배포할 수 있는
클라우드 플랫폼이 있어야 확장성에 좋습니다.
그래서 우리는 Cloudflare
Workers를 선택했습니다. 이런 것들이
제가 여기서 따르고 있는 핵심 관행들이에요.
이제 우리 서버를 빠르게
살펴보겠습니다. 그리고 이런 것들이
언제 적용되는지 설명해드리겠습니다.
이제 보실 내용들은 아까 다뤘던
간단한 예제와 매우 유사하게
보일 것입니다. 이건 의도적으로
그렇게 했습니다. 권한 부여나
Cloudflare 배포 준비 같은
다른 계층들을 추가하는 것에
천천히 익숙해지실 수 있도록
말이에요. 먼저 상단에 있는
이 리스트를 보시면,
민감한 쓰기 쿼리 도구를 사용할 수 있는
허용된 GitHub 사용자들의 목록입니다.
당연히 프로덕션 환경에서는
데모를 넘어서려면 이 목록을
데이터베이스 어딘가에 두고 싶을 것입니다.
저는 단순함을 위해 이렇게 했을 뿐입니다.
하지만 원리는 같습니다.
Cloudflare agents 패키지에서
가져온 MCP 에이전트를 사용하고
서버를 설정합니다. 그리고
라이프스팬의 일부로
서버를 종료할 때 메모리 누수가
발생하지 않도록 데이터베이스를
우아하게 종료시키고 싶습니다.
이 작동 방식은 서버를
시작할 때 - 여기서 보여드리겠습니다 -
서버를 시작하면 데이터베이스
인스턴스를 가져옵니다.
그리고 이를 MCP의 전체 생명주기 동안
사용합니다. 이건 제가
사람들이 항상 놓치는 걸 보는 부분입니다.
라이프스팬은 정말 중요합니다.
보안 체크리스트에서 다루는
항목 중 하나입니다. 그들은
이를 생명주기 관리라고 부르는데,
종료, 리소스 정리하기 같은
전체 개념이 있습니다.
데이터베이스 같은 것들 말이죠.
그게 바로 우리가 여기서 하는 일입니다.
데이터베이스 인스턴스를 가져와서 서버의
전체 생명주기 동안 사용합니다.
그리고 서버가 종료될 때
정리작업을 수행합니다. 그리고 도구를
초기화할 때 여기서
도구 설명이 중요해집니다.
지금 보고 계신 것은 실제로
이 MCP 서버를 활용하는
대형 언어 모델의 프롬프트 일부로
사용됩니다. 이건 정말 중요하게 기억해야 할 점입니다.
이 컨텍스트는 에이전트가 이 도구를
언제, 어떻게 사용해야 하는지
알기 위해 핵심적입니다. 따라서
MCP 서버의 모든 도구에 대해
그 다음 단일 데이터베이스
인스턴스를 가져오고 있습니다. 이것은 우리 DB에 있는 모든
테이블을 나열하는 도구입니다. 그리고
여기서 매우 잘 정리된
형식의 문자열을 반환하고 있습니다. 쿼리에서
받은 모든 정보를 포함해서요.
이것도 중요한 점 중 하나인데
이 정보가 다시 LLM으로 전달되기 때문입니다.
그래서 이를 신중하게 다뤄야 합니다.
매우 깔끔하게 포맷되어 있는지 확인하세요.
그리고 우리는 여기서 JSON 형식으로
작업하고 있습니다. 그리고 다른 도구들의 경우에도
매우 유사합니다. 이것은 읽기 전용
SQL 쿼리를 실행하는 도구입니다. 그리고 이것은
보안 모범 사례를 구현하는 예시입니다.
우리는 SQL 쿼리를 검증하고 있습니다.
어떤 모습인지 보여드리겠습니다.
우리는 위험한 패턴을 찾고 있고
이런 것들을 발견하면 도구 호출을 실패시킵니다.
이것은 단순한 예시일 뿐이지만
MCP 서버의 보안을 구현할 때
생각해야 할 요소들의 종류를 보여줍니다.
그리고 제가 말했듯이 실제로 어떤 종류의
백엔드 인프라를 구축하든
마찬가지입니다. 그리고 AI
코딩 어시스턴트가 이런 종류의
사항들을 따르도록 해야 합니다.
이런 서버를 구축하는 데 사용할 때도 마찬가지입니다.
여기서 아래로 스크롤하여
해당 도구의 나머지 부분을 건너뛰겠습니다.
여기서 GitHub 인증으로 들어갑니다.
서버에 GitHub OAuth를 설정하면
어떤 모습인지 보여드리겠습니다.
이 파일 끝에서 확인할 수 있습니다.
여기 이 값이 있습니다, this.props.login.
이것은 우리 사용자에 대한 모든 정보를 가지고 있고
로그인은 구체적으로 GitHub 사용자명을 제공합니다.
따라서 우리는 그들이 이 허용된 사용자
목록에 있는지 확인할 수 있습니다.
만약 그렇다면, 이 도구를 노출시킵니다.
그렇지 않으면, 이 도구를 사용자가
MCP 클라이언트를 통해 서버를 사용할 때
옵션으로 제공하지 않습니다.
하지만 허용된 사용자라면, 이것을 제공합니다.
우리는 다시 SQL 쿼리를 검증하고
있습니다. 우리는 SQL 쿼리를 다시 검증하고
있습니다. 이를 실행하여 안전한 작업인지 확인하고
그 다음에
쿼리 실행 결과를
반환합니다. 그리고 우리는 모든 도구에
catch 블록을 사용한 오류 처리를 추가하고
있습니다. 오류를 우아하게 처리하는 것이 중요합니다.
MCP 서버가 오류 메시지를 반환하도록
하는 것도 좋습니다. 그러면 에이전트가
사용자에게 다시 전달하여
정확히 무엇이 잘못되었는지 알려줄 수 있습니다.
이것으로 우리 도구들에 대한
모든 설명이 끝났습니다. 그리고
맨 끝에 여기서 우리는 이 OAuth
제공업체를 사용하고 있습니다.
Cloudflare에서 가져온 것입니다.
Cloudflare의 장점 중 하나는
MCP 서버를 확장하고 배포하는 것을
쉽게 만들어줄 뿐만 아니라
실제로 인증의 서버 측면도
처리해준다는 것입니다.
Cloudflare의 OAuth 제공업체를 사용하지 않는다면
구현해야 할 로직이 훨씬 많아집니다.
그래서 여기서 구현해야 할 클라이언트 측
작업들이 여전히 일부 있습니다.
관심이 있으시다면 이것을 살펴보실 수 있습니다.
또한 이것을 다른 방식으로 변경할 수도 있습니다.
이것과 함께 작동하도록 말입니다.
구글 OAuth 같은 것으로 대신 작업할 수도 있습니다. 하지만
우리의 경우에는 GitHub 클라이언트 측에서 설정하고
서버가 나머지 부분을 처리하도록 구성했습니다. 그래서
우리는 API 핸들러들을 가지고 있습니다. SSE용으로 하나와
streamable HTTP용으로 하나를 가지고 있습니다. 그리고
authorize와 register 엔드포인트들이 여기에 있습니다.
Cloudflare 문서를 참고하여 이 모든 것을 설정하는 방법을
알 수 있습니다. 그리고 GitHub 핸들러가 있습니다.
이것은 모든 클라이언트 측 OAuth 로직입니다.
그리고 마지막으로 토큰 엔드포인트가 있습니다.
이것이 GitHub 인증에 관한 모든 것입니다.
설정하는 것이 이렇게 쉽습니다. 그리고 언제든지
AI 코딩 어시스턴트를 사용할 수 있습니다.
이것을 가리키고 GitHub 핸들러를 가리켜서
이것을 구글로 바꾸거나 X로 바꾸라고 말하면
확실히 그렇게 할 수 있습니다. 그리고
배포하기 전에 다루고 싶은 마지막 항목은
readme로 돌아가서, 마지막으로 다루고 싶은 것은
모니터링입니다. 이것을 선택적인 기능으로
만들었습니다. Sentry가 실제로 이 비디오를
후원하고 있습니다. 그들이 프로덕션 환경에서
MCP 서버를 모니터링하는 방법을 보여주기 위해
저와 파트너십을 맺고 있습니다. 하지만 어쨌든
이것을 다루고 싶었습니다. 그리고 Sentry는
정말로 최고의 플랫폼입니다. 제가 아는 유일한
플랫폼으로, 애플리케이션 모니터링을 MCP 서버와
통합하는 것을 매우 쉽게 만들어줍니다.
제 대시보드를 보면 정말 멋집니다.
sentry.io로 가서 무료 티어로도 작동합니다.
새 프로젝트를 만들기만 하면 되고, 특히
프로젝트 타입은 새 프로젝트 생성을 클릭하면
Cloudflare Workers JavaScript를 검색하면 됩니다.
이것이 Sentry용으로 생성하는 타입입니다.
환경 변수로 사용하는 DSN을 얻게 됩니다.
그러면 내 MCP에 대한 list tables 사용과 같은
트레이스들이 들어오는 것을 볼 수 있습니다.
이것을 클릭하면 이 쿼리와 함께 발생한
로그와 모든 메타데이터를 볼 수 있습니다.
지속 시간을 볼 수 있고, 오류가 발생하면
이메일도 받게 됩니다. 여기서 볼 수 있는 것처럼
이것은 받게 되는 이메일의 예시입니다.
그래서 문제가 발생할 때 알림 설정이 되어 있습니다.
프로덕션 환경에서 이런 종류의 모니터링을 갖는 것은
정말 강력합니다. 특히 Cloudflare에 배포한 후에는
더욱 중요합니다. Sentry를 설정하려면
이 환경 변수, DSN을 추가하기만 하면 됩니다.
무료 티어로 가입한 후 Sentry 대시보드에서
그것을 얻을 수 있습니다. 그리고 이 두 파일을
바꾸기만 하면 됩니다. 이것을 index_sentry 같은
이름으로 바꾸고, 이것을 index.ts로 바꾸면 됩니다.
프로덕션 모니터링을 위해 Sentry를 활성화하려면
여기에 별도 버전을 마련해뒀습니다.
MCP의 프로덕션 모니터링을 위해서요.
여기서는 자세히 다루지 않겠습니다.
제가 한 일은 이 가이드를 따른 것입니다.
설명란에도 링크를 걸어둘 예정입니다.
프로덕션 환경에서 MCP 서버를 모니터링하는 것과
관련된 내용입니다. 그리고 그들이
프로덕션 환경에서 MCP 서버를 모니터링하는 방법을
보여주기 위해 저와 파트너십을 맺고 있습니다.
이 환경 변수, DSN을 추가하기만 하면 됩니다.
무료 티어로 가입한 후 Sentry 대시보드에서
그것을 얻을 수 있습니다. 그리고 이 두 파일을
바꾸기만 하면 됩니다. 이것을 index_sentry 같은
이름으로 바꾸고, 이것을 index.ts로 바꾸면 됩니다.
프로덕션 모니터링을 위해 Sentry를 활성화하려면
여기에 별도 버전을 마련해뒀습니다.
MCP의 프로덕션 모니터링을 위해서요.
여기서는 자세히 다루지 않겠습니다.
제가 한 일은
제가 한 일은
제가 한 일은
여기서는 자세히 다루지 않겠습니다.
제가 한 일은
링크에 포함할 이 가이드를 따라했습니다. 이 가이드는 프로덕션 환경에서 MCP 서버를 모니터링하는 방법을 다루고 있습니다.
모니터링
실제로 그들은 Cloudflare의 GitHub OAuth 예제를 기반으로 했습니다.
그리고 그 안에서 모니터링을 통합하는 방법을 보여주었습니다.
정말, 정말 편리합니다.
제게는 정말 잘 맞았습니다.
이 자료를 찾아서 정말 기쁩니다.
하지만 네, 우리는 Sentry를 설정합니다.
발생할 수 있는 모든 오류를 처리하는 함수가 있습니다.
그래서 Sentry 대시보드에서 추적할 수 있습니다.
그리고 여기 아래로 내려가면
OAuth 공급자를 Sentry로 래핑해야 합니다.
그래서 그냥 sentry.withSentry입니다.
그냥 npm 패키지를 설치하고 있습니다.
그리고 우리의 워커를 래핑합니다.
이것은 기본적으로 같은 방식으로 설정됩니다.
Sentry가 없는 버전에서와 같습니다.
그래서 우리는 여기서 이 래퍼를 만들고 있습니다.
우리의 도구에서 발생하는 모든 오류를 감시할 것입니다.
그리고 그것들을 Sentry에 로그로 남깁니다.
성공적인 호출들과 마찬가지로 말입니다.
그래서 당신은 높은 수준에서 모든 것을 볼 수 있습니다.
들어오는 모든 것들을
MCP 서버의 모든 추적을 말입니다.
네, Sentry는 정말 멋진 플랫폼입니다.
MCP 서버뿐만 아니라
모든 종류의 백엔드 애플리케이션을 모니터링하는 데
사용하는 것을 적극 권장합니다.
저는 프로덕션 환경에서 AI 에이전트를 모니터링하는 데도
Sentry를 사용합니다.
그리고 저는 Langfuse를
에이전트 모니터링을 위한 플랫폼으로 더 구체적으로 사용하지만
제 전체 백엔드 인프라와
RAG 파이프라인에 대해서는
Sentry가 그런 종류의 모니터링을 위한 훌륭한 옵션입니다.
그래서 이제 우리는 모든 모범 사례를 따르는
MCP 서버를 가지고 있습니다.
Cloudflare와 함께 프로덕션에 배포할 수 있습니다.
우리가 해야 할 첫 번째 일은
이미 Wrangler가 설정되어 있습니다.
그래서 우리는 프로덕션 환경에서
설정하기 위해 몇 가지 명령을 실행해야 합니다.
그래서 제 터미널을
다시 열었습니다. 먼저 KV 또는 키-값 저장소를 만들어야 합니다.
이것은 GitHub으로 이미 인증된 모든 사용자를
추적하는 데 사용됩니다.
그리고 그것은 OAuth를 관리하는
우리의 미니 데이터베이스 같은 것입니다.
그래서 wrangler KV namespace create
그리고 우리 KV 스토어의 이름은
oauth-kv가 될 것입니다.
이 명령을 실행하지 않겠습니다.
이미 생성되어 있기 때문입니다.
하지만 한 번 실행하면
여기서 출력이 나올 것입니다.
고유한 KV ID를 제공할 것입니다.
그것을 복사하고 싶을 것입니다.
잠시 후에 그것으로 무엇을 할지 볼 것입니다.
이 KV가 생성된 후 이 ID를 얻을 수 있는 다른 방법은
Cloudflare 대시보드의
스토리지와 데이터베이스의 KV 섹션으로 가면
바로 여기서 볼 수 있습니다.
그래서 여기서 ID를 복사하면 됩니다.
그래서 그 ID를 가지고 wrangler.json으로 가세요.
여기에 KV ID를 위한 플레이스홀더가 있을 것입니다.
당신의 고유한 식별자로 바꾸면 됩니다.
그것을 가지고 나면 이제
readme로 돌아가서 배포할 준비가 되었습니다.
배포해 보겠습니다. 이제 Wrangler deploy를 실행하면 됩니다.
정말 간단합니다. 이제 모든 설정이 완료되어서
Cloudflare Workers에 배포할 수 있습니다.
이제 MCP 서버가 클라우드에서
원격으로 실행될 것입니다.
Wrangler deploy를 실행하면 정말 빠르게 처리됩니다.
Cloudflare Worker 환경에 업로드하기만 하면 되니까요.
엄청나게 빠릅니다. 그리고 완료되었습니다.
이제 원격 MCP 서버의 프로덕션 URL을 얻었습니다.
정말 멋지네요. 이제 이 URL을 사용해서
Claude Desktop과 연결할 수 있습니다.
또는 다른 MCP 클라이언트를 사용해서
로컬에서 실행할 때와 똑같이 연결할 수 있습니다.
그리고 이 URL을 얻는 다른 방법은
Workers and Pages 탭으로 들어가서
Compute Workers에서 확인할 수 있습니다.
여기서 모든 Cloudflare Workers를 볼 수 있습니다.
지금은 MCP 서버만 있네요.
지금은 MCP 서버만 있습니다.
여기 있는 Visit 링크를 클릭하면
404 Not Found라고 나올 것입니다.
하지만 이것이 우리의 프로덕션 URL입니다.
이것을 복사할 수 있습니다.
/mcp 엔드포인트를 추가할 수도 있습니다.
Invalid token이라고 나올 것입니다.
당연히 GitHub으로 인증되지 않았으니까요.
하지만 이것이 우리의 URL입니다.
이것을 복사해서 Claude Desktop 설정이나
사용하고 있는 MCP 클라이언트에
입력하면 됩니다.
이제 이 URL을 이렇게 바꿔주겠습니다.
완료되었습니다.
이제 프로덕션 MCP 서버에 연결되었습니다.
정말 멋지네요.
실제로 테스트하기 전에 마지막으로
해야 할 일은 프로덕션 환경에서
환경 변수를 설정하는 것입니다.
로컬에서 실행할 때는 .dev.vars에서
설정했습니다.
이제는 실제로 이 secrets를
클라우드에 저장해야 합니다.
원한다면 대시보드에서
관리할 수도 있습니다.
방법은 워커를 클릭하고
여기서 모든 요청과 메트릭,
모니터링을 확인할 수 있습니다.
설정으로 들어가면
모든 secrets를 볼 수 있습니다.
여기서 수동으로 설정할 수도 있고
readme에 있는 명령어를 따라서
명령줄에서 모든 secrets를 설정할 수도 있습니다.
wrangler secret put을 사용하고
client ID처럼 secret 이름을 입력하면
프롬프트가 나타나면 값을 입력하면 됩니다.
대시보드에서 볼 수 있듯이
이미 설정해 놓았기 때문에
여기서는 하지 않겠습니다.
하지만 이 과정을 거치면
다시 배포할 필요 없이
모든 secrets가 준비됩니다.
이제 MCP에 연결할 준비가 되었습니다.
설정이 모두 완료되었습니다.
화면 밖에서 Claude Desktop을 재시작하고
다시 열어서 최신 URL을 적용하겠습니다.
완료되었습니다.
이제 테스트해볼 수 있습니다.
데이터베이스에 어떤 테이블이 있는지
물어보겠습니다. 이전과 같은 종류의 쿼리입니다.
내 DB에 어떤 테이블이 있나요?
하지만 이것을 하기 전에
방금 팝업이 나타났습니다.
이제 우리의 인증 요청이 나타났습니다.
인증 요청이 왔습니다. 이게 바로 제가 앞서 말씀드렸던 것으로
몇 개의 스크린샷이 나왔었는데, 이제는
실제로 실시간으로 보고 있습니다. 보시다시피
접근 권한을 요청하고 있습니다. 승인을 클릭하겠습니다.
그리고 GitHub 계정을 인증해야 하는데
이미 완료했습니다. 그래서 그 페이지가 여기에 나타나지 않지만
처음에는 GitHub 계정 연결을 하게 됩니다.
자, 이제 이것을 닫을 수 있습니다.
그리고 쿼리를 입력할 수 있습니다.
제 데이터베이스에는 어떤 테이블들이 있나요? 이것은
똑같아 보이지만, 이제는 원격 MCP를 사용하고 있습니다.
연결되는 데 잠시 시간이 걸리겠네요. 어떤 이유로
Claude가 좀 시간이 걸리고 있습니다.
여기 있습니다. 이제 우리의 MCP 서버를 사용하고 있습니다.
개발 환경에서 실행했을 때처럼 19개의 테이블을 가져오는지 확인해보겠습니다.
원격 MCP이기 때문에 조금 더 시간이 걸리지만
여전히 매우 빠릅니다. 여기 있습니다.
19개의 테이블을 가져왔습니다. 그리고
여기서 요청을 시도해볼 수도 있습니다.
GitHub OAuth 보호 도구를 사용해서 말이죠.
제 프로젝트 테이블에 새로운 레코드를 추가해보겠습니다.
그냥 랜덤 값으로 해보겠습니다.
이 도구를 사용해서 테스트해보겠습니다.
프로젝트 테이블에 레코드를 추가하고, Supabase를 열어서
나중에 보여드리겠습니다. 프로젝트에 삽입하고 있고
여기서 생성하는 랜덤 값들을 사용하고 있습니다.
이 도구를 사용하도록 요청하고 있습니다. 항상 허용하겠습니다.
Supabase에 이 레코드를 추가할 수 있는지 확인해보겠습니다.
여기 있습니다. 레코드를 추가했습니다. 훌륭합니다.
AI 기반 레시피 생성기를 위한 것이군요.
확실히 Supabase 대시보드에 들어가면
이제 AI 기반 레시피 생성기를 위한 프로젝트가 있습니다.
한번 보세요. 우리의 MCP 서버가
완벽하게 작동하고 있고 Cloudflare에 배포되었습니다.
여기에서 메트릭을 확인할 수 있고, 들어오는 모든 요청을
볼 수 있습니다. 새로 고침하면
요청이 증가하는 것을 볼 수 있습니다.
여기 있습니다. 이제 27개의 요청이 있습니다.
MCP의 전체 핸드셰이킹 프로세스가 있기 때문입니다.
그래서 이렇게 많은 요청이 있는 것입니다.
하지만 모든 것이 완벽하게 작동하고 있습니다.
이것이 바로 모범 사례를 따라
MCP 서버를 배포하는 것의 핵심입니다.
자, 여기까지입니다. 우리는 MCP 서버를 처음부터 만들고
도구와 생명주기, 보안, 모니터링 등의
모범 사례를 구현했으며, 이를 원격 MCP로 배포했습니다.
이제 어디서든 모든 MCP 클라이언트와 함께
사용할 수 있습니다. 그리고 GitHub OAuth가 있어서
사람들이 우리의 MCP를 남용할 수 없고
속도 제한 같은 것들을 설정할 수 있으며
심지어 이런 방식으로 MCP 서버를 수익화할 수도 있습니다.
그리고 이 영상을 통해 AI 코딩 어시스턴트 사용에 대해
이미 말씀드렸습니다. 하지만
여기서 중요한 것은 여러분이 이 GitHub 저장소를
새로운 MCP 서버를 만들고 싶은 현재 프로젝트에
그대로 넣고, Claude 코드나 Cursor 등에게
이 파일들을 살펴보고 제가 모든 모범 사례를 따라
MCP 서버를 구현한 방법을 이해하라고 할 수 있습니다.
README를 참조하게 할 수도 있고
앞서 말씀드린 보안 체크리스트를 참조하게 할 수도 있습니다.
이 모든 것을 컨텍스트로 사용할 수 있습니다. 이것은
제가 지난 영상에서 말씀드린 컨텍스트 엔지니어링과 같습니다.
이 모든 것이 AI 코딩 어시스턴트에게
정말 좋은 예시를 제공하는 컨텍스트가 될 수 있습니다.
그래서 여러분이 만들고 싶은 모든 MCP 서버를
완성할 수 있습니다. 심지어
OAuth를 GitHub에서 Google로 바꾸는 것과 같은 것들도 할 수 있습니다.
제가 방금 말씀드린 것을 포함할 수 있는
프로세스의 예시를 원하신다면
컨텍스트 엔지니어링에 대한 제 지난 영상을 꼭 확인해보세요.
방금 제 채널에서 다뤘기 때문에
여기서 처음부터 모든 것을 다시 다루고 싶지 않습니다.
관심이 있으시다면 꼭 확인해보세요.
하지만 이제 여러분은
완벽한 프로덕션 수준의 MCP 서버를 구축할 수 있는
모든 것을 갖추었습니다.
이 템플릿이 정말 유용하다고 생각하시길 바랍니다.
그렇다면 좋아요와 구독을 해주시면
정말 감사하겠습니다. MCP와 에이전트를
프로덕션에 배포하는 것에 대한 더 많은 콘텐츠가
계속 나올 예정입니다.
그럼 다음 영상에서 뵙겠습니다.