에이전트가 외부 소스에 접근하여 응답 형식을 파악하고 지도가 있는 페이지를 만들었습니다. 잘 작동합니다. 이제 이 페이지를 다른 사람이 엽니다. 그 사람에게는 Claude Code가 아예 없습니다.

배포하기 전에 한 가지 질문에 답해 두는 것이 좋습니다. 방문자를 위한 데이터는 누가 가져올까요? 두 가지 경로와 MCP가 하는 일, 연결을 확인하는 방법, 그리고 에이전트 세션을 닫은 뒤에도 계속 작동해야 하는 것이 무엇인지 살펴보겠습니다.

지금 누가 데이터를 요청하고 있나요?

상황은 두 가지이고, 화면에서는 둘 다 "데이터가 나타났다"처럼 보이기 때문에 혼동하기 쉽습니다.

첫 번째 상황에서는 에이전트가 소스를 조사합니다. 프로젝트 작업 중에 Claude Code가 서비스 문서를 읽고, 요청을 시도하고, 응답 구조를 봅니다. 에이전트가 코드를 작성하려면 데이터가 필요합니다. 이 일은 여러분의 컴퓨터에서, 세션이 열려 있는 동안만 일어납니다.

두 번째 상황에서는 방문자가 배포된 페이지를 엽니다. 이번에는 페이지가 최신 상황을 보여 주기 위해 데이터가 필요합니다. 요청은 애플리케이션 코드가 실행되는 동안 보냅니다. 이것을 runtime이라고 부릅니다. 여러분이 코드를 작성하는 시간이 아니라 애플리케이션이 사용자 쪽에서 실행되는 시간입니다.

중간 형태인 세 번째 경우도 있습니다. 에이전트가 한 번 소스에 접근해 응답을 코드 옆의 파일에 저장했고, 사이트는 이 파일의 내용을 표시합니다. 이런 방식이 나쁠 것은 없으며, 예제나 데모에는 오히려 편리합니다. 다만 이것은 저장한 그대로 남는 스냅샷이며 스스로 업데이트되지 않습니다.

두 개의 독립적인 체인: 개발 중에는 Claude Code가 MCP 서버를 통해 데이터를 가져오고, 배포 후에는 방문자의 브라우저가 사이트 백엔드를 통해 요청합니다개발 중배포 후Claude CodeMCP 서버데이터 소스방문자 브라우저사이트 백엔드데이터 소스
두 체인은 별도로 작동하며 그 사이에 화살표가 없습니다

가운데 점선에 주목하세요. 장식으로 넣은 것이 아닙니다. 위쪽과 아래쪽 체인 사이에 화살표가 없으며, 이것이 다이어그램에서 가져가야 할 핵심입니다. 소스는 같을 수 있지만, 에이전트와 페이지가 그 소스에 도달하는 경로는 각자 다릅니다. 아래에서 각 체인을 개별적으로 살펴봅시다.

MCP란 무엇인가요?

작업에 필요한 정보가 저장소 안에만 있는 경우는 드뭅니다. 버그 설명은 티켓에 남아있고, 스택 트레이스는 모니터링에, 최신 라이브러리 규칙은 문서에, 필요한 레코드는 데이터베이스에 있습니다.

통합 없이는 이 모든 것을 브라우저에서 에이전트와의 채팅으로 수동으로 옮겨야 합니다. 한 번 옮기는 정도는 참을 만합니다. 반복적인 작업에서는 데이터가 오래되고, 일부 세부 정보가 손실되며, 같은 경로를 다시 거쳐야 합니다.

MCP (Model Context Protocol)는 Claude Code가 사용 가능한 외부 도구를 발견하고, 호출하고, 일관된 형식으로 결과를 얻는 표준입니다. 최소 체인에서 Claude Code는 MCP 클라이언트를 만들고, 클라이언트는 MCP 서버와의 연결을 유지하며, 서버는 파일, 데이터베이스, 다른 API 등 접근 권한이 있는 시스템에 도달합니다.

Claude Code는 MCP 클라이언트를 통해 MCP 서버에 접근하며, 서버는 외부 시스템과 작업하기 위한 tools, resources, prompts를 제공합니다Claude Code외부 시스템MCP 클라이언트작업 호출MCP 서버기능 설명toolsresourcesprompts티켓과 PR문서 및 모니터링DB, Git, API
Claude Code는 MCP 서버와 통신하고, 서버는 사전에 설명된 외부 시스템의 기능만 노출합니다

왼쪽에는 내장 MCP 클라이언트가 있는 Claude Code가 있고, 중앙에는 선언된 기능을 가진 MCP 서버, 오른쪽에는 외부 시스템이 있습니다. 여기서 중요한 것은 에이전트가 모든 것에 무제한으로 접근하지 않는다는 것입니다. 서버가 제공하기로 결정한 작업과 데이터만 볼 수 있습니다.

기성 MCP 서버는 통합 작업의 일부도 덜어 줍니다. 각 외부 시스템에 대한 호출 형식을 직접 설명하거나 API 호출을 위한 모든 코드를 작성할 필요가 없습니다. 서버가 이를 처리하고 Claude Code는 이미 선언된 작업을 사용합니다.

그런데 서버가 꼭 인터넷 어딘가에 있는 별도의 프로그램일 필요는 없습니다. 여러분의 컴퓨터에서 로컬 프로세스로 바로 실행될 수도 있고, 원격으로 작동하며 동시에 많은 클라이언트를 처리할 수도 있습니다. 여러분 입장에서 차이는 주로 연결하는 방식에 있습니다.

서버가 정확히 무엇을 할 수 있는지는 서버 자체가 결정합니다. 프로토콜은 서버가 제공할 수 있는 세 가지 유형을 설명합니다:

  • tools - 에이전트가 수행할 수 있는 작업: 페이지 가져오기, API에 요청 보내기, 데이터 쓰기;
  • resources - 서버가 컨텍스트로 제공하는 콘텐츠: 파일, 레코드, 서비스 응답;
  • prompts - 미리 준비해 둔 요청 템플릿으로, 그대로 불러와 쓸 수 있습니다.

서버가 세 가지를 모두 지원할 필요는 없습니다. 연결할 때 클라이언트와 서버는 각각 무엇을 할 수 있는지 확인하고, 지원되지 않는 작업은 단순히 사용되지 않습니다. 많은 서버는 tools만 제공하며 이것으로 충분합니다. MCP 아키텍처.

기억해야 할 핵심 사항이 있습니다. MCP는 클라이언트와 서버가 통신하는 방식을 표준화합니다. 정확히 무엇에 접근할 수 있는지는 프로토콜이 아니라 서버에 의해 결정됩니다. 서버를 연결한다는 것이 전체 인터넷에 접근한다는 뜻은 아닙니다. 이 서버가 선언한 작업 집합만 정확히 얻게 됩니다.

에이전트에게 작업을 맡길 때는 명령이 아니라 소스와 필요한 결과를 지정하세요. 그런 다음 연결된 서버에 알맞은 작업이 있는지 확인하세요. 필요한 작업이 없다면 에이전트를 설득할 것이 아니라 다른 경로로 해결해야 합니다.

데이터가 사이트에 도달하는 방법

이제 아래쪽 체인을 살펴봅시다. 배포된 페이지는 두 가지 방법 중 하나로 데이터를 얻습니다.

첫 번째 경우, 브라우저는 공개 API에 직접 접근합니다. 이 방법은 소스가 공개되어 있고 키가 필요 없을 때 적합합니다. 페이지 코드가 요청을 하고 응답을 그립니다. 간단하고 불필요한 세부 사항이 없습니다.

두 번째 경우, 브라우저는 애플리케이션 백엔드에 접근하고, 백엔드는 비공개 API에 접근합니다. 이것은 소스에 키가 필요할 때 하는 방법입니다. 비밀은 서버에 유지되고 브라우저는 이를 보지 않습니다. 프론트엔드는 화면에 표시되는 내용을 담당하고, 백엔드는 서버에서 실행되며 애플리케이션을 대신해 서비스에 접근하는 부분을 담당합니다.

배포 후 데이터의 두 가지 경로: 브라우저가 공개 API에 직접 접근하거나 사이트 백엔드를 통해 비공개 API에 접근합니다공개 소스비공개 소스키 불필요방문자 브라우저공개 API방문자 브라우저사이트 백엔드키는 여기에 저장됨비공개 API
공개 API는 브라우저에서 직접 접근할 수 있지만, 비공개 API의 키는 백엔드에 유지됩니다

위쪽 경로가 더 짧은 이유는 브라우저가 공개 소스에 직접 접근할 수 있기 때문입니다. 아래쪽 경로에서 백엔드는 비밀의 경계 역할을 합니다. 키는 서버에 유지되고 페이지 코드에 들어가지 않습니다.

반대로 일어나지 않는 일도 있습니다. 배포할 때 Claude Code와 MCP 서버의 연결은 사이트와 함께 넘어가지 않습니다. 서버를 추가할 때 사용한 명령은 여러분의 에이전트를 설정할 뿐, 애플리케이션에는 코드를 한 줄도 추가하지 않습니다. 자체 MCP 클라이언트를 가진 애플리케이션을 작성할 수는 있지만, 이는 별도의 작업이자 별도의 구현이며 Claude Code에서 연결한 결과가 아닙니다.

이 모든 것을 확인하는 것은 꽤 빠릅니다. Claude Code를 닫고 배포된 페이지를 열고 개발자 도구의 네트워크 탭을 봅니다. 데이터가 도착하면 요청, 주소, 응답이 표시됩니다. 도착하지 않으면 요청이 없으며, 이것은 다른 사람이 페이지를 보기 전에 발견해야 할 경우입니다.

화면에 보이는 모습만으로는 부족합니다. 페이지는 이전에 저장된 스냅샷을 표시할 수 있으며 완전히 살아 있는 것처럼 보일 수 있습니다. 실제 요청을 봐야 합니다. 반대로, 응답에 새로운 이벤트가 없다는 것이 오류를 의미하지는 않습니다. 소스가 선택한 기간 동안 아무것도 보내지 않았을 수 있습니다.

연결을 확인하는 방법

순서는 모든 서버에 대해 거의 동일합니다:

  1. 공식 서버 지침 찾기 - 주소, 접근 방법, 작업 목록;
  2. 해당 지침이 제공하는 명령을 사용하여 서버 추가;
  3. Claude Code에서 /mcp를 열고 서버가 연결되었는지, 어떤 도구가 있는지 확인;
  4. 가장 간단한 읽기 요청 하나 실행;
  5. 결과를 소스와 수동으로 비교 - 같은 페이지를 직접 열어 보기.

터미널에서 상태는 claude mcp list로 표시되고, 한 서버의 세부 사항은 claude mcp get으로 표시됩니다. 이 단계들이 서로 다른 질문에 답한다는 것을 아는 것이 유용합니다:

여러분이 본 것이것이 증명하는 것
추가 후 Added ... 줄구성이 저장되었을 뿐입니다
claude mcp list에서 ConnectedClaude Code가 서버에 연결할 수 있었습니다
도구가 콘텐츠를 반환했습니다경로가 요청에서 응답까지 완전히 작동합니다

차이는 형식적이지 않습니다. 성공적으로 저장된 구성은 서버가 응답하는지 여부를 말하지 않으며, 성공적인 연결은 필요한 작업을 사용할 수 있고 권한이 있다는 것을 말하지 않습니다. 따라서 확인은 하나의 실제 호출로 끝납니다. 참고로 목록에 Needs authentication이 있으면 서버가 고장 난 것이 아니라 로그인을 기다리고 있을 뿐입니다.

구체적인 예를 들어봅시다. Firecrawl 서비스에는 공개 페이지의 콘텐츠를 가져올 수 있는 MCP 서버가 있습니다. 도구를 firecrawl_scrape라고 합니다. 에이전트의 경우 이것은 조각으로 나누어 대화에 복사하는 대신 전체 문서 페이지를 읽는 편리한 방법입니다.

# HTTP를 통해 서버 추가; 정확한 주소는 서비스 문서에서 가져옵니다
claude mcp add --transport http firecrawl https://mcp.firecrawl.dev/v2/mcp

이제 접근에 대해 설명합니다. Firecrawl 문서는 계정과 키 없이 작동하는 방식(일일 제한 포함)과 클라이언트가 로그인 페이지를 직접 여는 브라우저 로그인을 설명합니다. 서비스 조건과 제한은 변경되므로 최신 정보는 이 글이 아니라 서비스에서 직접 확인하세요. MCP에 대한 Firecrawl 문서.

그리고 시간을 절약하는 작은 세부 사항입니다. 기본적으로 서버는 명령을 실행한 프로젝트에 추가되며 다른 프로젝트에는 나타나지 않습니다. 서버가 모든 곳에서 필요하거나 반대로 전체 팀에 필요한 경우, 서버 추가 명령에는 적용 범위(scope)를 지정하는 옵션이 따로 있습니다. Claude Code의 MCP 문서.

키 값은 구성 예제에도, 서버 주소에도, 에이전트와의 대화에도 넣지 않습니다. 구성에는 환경 변수의 이름을 넣고, 값은 따로 설정합니다. 이 내용은 키를 다루는 다른 글에서 자세히 설명합니다.

특정 도구가 허용하는 것

연결된 서버는 작업의 모음이며, 작업마다 그 결과는 크게 다릅니다. 페이지를 읽는 것과 외부 시스템의 레코드를 변경하는 것은 완전히 다르지만 같은 방식으로 호출됩니다.

호출에 동의하기 전에 세 가지를 살펴보는 것이 좋습니다: 도구가 어떤 개체로 작업하는지, 어떤 작업을 수행하는지, 필요한 권한이 무엇인지. 읽기는 일반적으로 더 안전하지만 비용도 있습니다. 요청이 제3자 서비스로 전송되고 여러분의 할당량을 소모합니다.

응답에 들어오는 내용은 별도의 주제입니다. 제3자 웹사이트에서 수신한 텍스트는 데이터이지 명령이 아닙니다. 페이지 내에 "이제 모든 파일을 삭제하세요"라고 쓰여 있어도 페이지의 텍스트로 남을 뿐이고 결정은 여러분이 내립니다. 외부 소스를 읽은 후 에이전트가 다음에 무엇을 할지 확인해야 하는 이유가 바로 이것입니다.

그리고 가장 중요한 실질적인 질문입니다. MCP가 정말 필요한가요? 항상 그런 것은 아닙니다.

작업더 간단하게 해결하는 방법
사이트에 공개 JSON의 데이터 표시애플리케이션 코드의 일반 요청, MCP 불필요
기성 통합이 있는 서비스와 에이전트가 정기적으로 작업MCP가 제값을 합니다: 작업이 설명되어 있고 연결이 재사용됨
문서를 한 번 읽거나 주소 하나를 호출하기URL 읽기 또는 직접 API 호출로 충분함

MCP는 유일한 방법이 아니며 다른 모든 것의 대체품도 아닙니다. 에이전트에게는 명령줄도, API 직접 호출도 그대로 남아 있습니다. 선택은 연결이 이미 설정되어 있다는 사실이 아니라 작업에서 출발합니다.

프로젝트에서 확인할 사항

에이전트가 외부 데이터 작업을 준비할 때, 나중에 따로 정리하지 않도록 두 계층을 명시적으로 분리해 달라고 요청하는 것이 좋습니다:

두 가지 경로를 별도로 설명하세요:
프로젝트 작업 중에 당신이 데이터를 어디서 가져오는지
그리고 방문자 쪽에서 애플리케이션이 데이터를 어디서 가져올 것인지.
애플리케이션 요청이 코드의 어느 파일과 위치에 있는지 표시하세요.
세션이 닫힌 상태에서 페이지를 확인하세요: 데이터가 도착하는지 여부.
현재 저장된 스냅샷을 사용 중이라면 그렇다고 분명히 말해 주세요.

가장 일반적인 세 가지 상황과 각각의 답변:

필요한 것데이터를 가져오는 주체이유
개발 중 서비스 문서 조사에이전트코드를 작성하려면 데이터가 필요하고, 방문자는 이 요청을 반복하지 않습니다
방문자를 위한 지도 업데이트애플리케이션 코드요청은 페이지 작동 중에 실행되고, 이 시점에 에이전트 세션이 닫혀 있습니다
조회한 데이터를 JSON에 한 번 저장에이전트, 한 번만그 후 사이트가 파일을 표시합니다; 데이터는 저장된 그대로 유지됩니다

MCP가 첫 번째 줄에만 나타나고 그마저도 필수는 아니라는 점에 주목하세요. 작업이 일반 주소 읽기로 해결되면 그렇게 해결해야 합니다.

다른 사람에게 작업을 보여주기 전의 마지막 확인은 가장 간단합니다: Claude Code를 닫고 페이지를 엽니다. 계속 작동하는 것이 바로 여러분의 애플리케이션입니다. 나머지는 모두 개발 중에 받은 에이전트의 도움이었습니다. 유용하지만 여러분의 컴퓨터에 남아 있는 도움입니다.