본문으로 건너뛰기

MCP로 Claude를 로컬 도구 및 에이전트에 연결하기

중급

여러분은 Claude가 두뇌가 되고 여러분의 컴퓨터가 을 제공하기를 원합니다 — 파일을 읽고, 데이터베이스를 쿼리하고, 스크립트를 실행하고, 심지어 로컬 모델이나 로컬 에이전트를 호출하는 일까지, 데이터가 노트북을 벗어나지 않은 채로 이루어지길 바랍니다. 그 시너지에는 이미 표준이 있습니다: **Model Context Protocol (MCP)**입니다. 한 문장으로 말하면: MCP는 AI 클라이언트가 MCP 서버라고 불리는 작은 프로그램을 통해 외부 도구와 데이터를 호출할 수 있게 해주는 개방형 표준이며 — 그 서버들은 여러분 자신의 컴퓨터에서 비공개로, 로컬로 실행될 수 있습니다. 이 페이지에서는 MCP가 무엇인지, 로컬 아키텍처가 어떻게 맞물리는지, Claude에 로컬 서버를 어떻게 추가하는지, 그리고 자신만의 작은 서버를 어떻게 만드는지를 보여줍니다.

What you'll learn
  • MCP를 한 문장으로 설명하기 — AI 클라이언트가 MCP 서버를 통해 외부 도구와 데이터를 호출할 수 있게 하는 개방형 표준
  • 로컬 아키텍처 살펴보기: stdio를 통해 로컬 MCP 서버와 통신하는 MCP 클라이언트(Claude Code / Claude Desktop)
  • 이것이 왜 여러분이 원하는 Claude를 두뇌로, 로컬 기능을 손으로 삼는 시너지인지 이해하기
  • 명령어 하나로 Claude에 로컬 MCP 서버 추가하기
  • 도구 하나를 노출하는 작은 MCP 서버 만들기
  • 신뢰 경계 알기 — MCP 서버는 여러분의 권한으로 동작하므로, 신뢰하는 것만 설치하기

MCP란 무엇인가 (한 문장으로)

MCP는 AI 애플리케이션을 외부 시스템에 연결하기 위한 개방형 표준입니다. AI 클라이언트(예: Claude)는 하나의 프로토콜을 사용하며, 그 프로토콜을 사용하는 어떤 MCP 서버든 연결되어 클라이언트에 새로운 능력을 제공할 수 있습니다. 공식적인 비유는 AI를 위한 USB-C 포트입니다: 도구마다 맞춤형 통합을 만드는 대신, 하나의 커넥터에 맞춰 만들면 어디서나 작동합니다.

Anthropic은 MCP를 도입하고 오픈소스로 공개했으며, 처음부터 로컬 MCP 서버 지원과 함께 출시하여 Claude가 여러분 자신의 컴퓨터에서 실행되는 내부 시스템과 데이터셋에 연결될 수 있도록 했습니다.

MCP 서버는 클라이언트에 세 가지 종류의 것을 노출할 수 있습니다:

  • 도구(Tools) — 모델이 호출할 수 있는 동작(파일 읽기, 쿼리 실행, API 호출). 이것은 모델의 네이티브 도구 사용과 동일한 형태입니다: 타입이 지정된 입력을 가진 이름 붙은 기능입니다.
  • 리소스(Resources) — 클라이언트가 읽을 수 있는 데이터(파일, 레코드, 문서).
  • 프롬프트(Prompts) — 서버가 제공하는 재사용 가능하고 매개변수화된 프롬프트 템플릿.

이 페이지에서 핵심은 도구입니다: 로컬 MCP 서버는 Claude에게 새롭고 비공개인 기능을 건네주는 방법입니다.

이것이 왜 여러분이 원하는 시너지인가

"Claude를 두뇌로, 내 컴퓨터를 몸으로"라는 말이 뜻하는 바가 바로 이 MCP 클라이언트/서버 분리입니다:

  • Claude는 오케스트레이터입니다. 여러분의 목표를 읽고, 어떤 도구를 호출할지 결정하고, 호출하고, 결과를 읽고, 다음 단계를 결정합니다.
  • 로컬 MCP 서버는 기능입니다. 각각은 여러분여러분의 컴퓨터에서 실행하는 작은 프로그램입니다: 파일시스템 서버, 데이터베이스 서버, 로컬 스크립트를 감싼 래퍼, 심지어 로컬 모델을 호출하거나 작업을 로컬 에이전트에 넘기는 서버입니다.

서버가 로컬로 실행되고 Claude가 여러분 자신의 컴퓨터의 표준 입출력을 통해 서버와 통신하기 때문에, 여러분의 데이터와 동작은 여러분의 하드웨어에 머뭅니다 — 모델은 오케스트레이션하지만, 파일 읽기, SQL, 스크립트 실행은 로컬에서 일어납니다. 그것이 바로 프라이버시를 보존하는 에이전트 작업 방식입니다: 두뇌는 클라우드에(혹은 로컬에도), 손은 엄격하게 여러분의 컴퓨터에.

그리고 MCP는 많은 클라이언트에서 채택된 하나의 개방형 표준이기 때문에, 여러분이 만든 서버는 단일 앱에 묶이지 않습니다. Claude Code에 연결한 바로 그 로컬 서버를 MCP를 사용하는 다른 클라이언트에서도 쓸 수 있습니다 — 한 번 만들어 어디서나 재사용하세요.

로컬 아키텍처

가장 작은 유용한 그림은 두 부분과 하나의 채널로 이루어집니다:

  • MCP 클라이언트(호스트). AI 앱 — 예를 들어 Claude Code나 Claude Desktop. 모델을 보유하고 어떤 도구를 호출할지 결정합니다.
  • MCP 서버. 도구/리소스/프롬프트를 알리고 요청받으면 실행하는 별도의 프로세스입니다.
  • 전송(Transport). 로컬 서버의 경우 클라이언트가 서버를 서브프로세스로 실행하고, 둘은 JSON-RPC 메시지를 사용해 stdio(표준 입출력)를 통해 통신합니다. 네트워크도, 포트도 없이 — 그저 여러분의 컴퓨터에 있는 두 프로세스 사이의 로컬 파이프일 뿐입니다. (원격 서버도 HTTP를 통해 존재합니다. 이 페이지는 로컬 stdio 경우를 다룹니다.)
┌─────────────────────────┐ stdio (JSON-RPC) ┌──────────────────────────┐
│ MCP CLIENT / HOST │ ──── launches as subprocess ──▶ │ LOCAL MCP SERVER │
│ Claude Code / Desktop │ ◀── tools/resources/prompts ─── │ filesystem · db · script │
│ (the model = the brain) │ │ · local model / agent │
└─────────────────────────┘ └──────────────────────────┘
runs on YOUR machine, YOUR data

모델은 여러분의 디스크에 직접 손대지 않습니다 — 로컬 서버에 요청하면, (여러분의 권한으로 실행되는) 서버가 작업을 수행하고 결과를 반환합니다.

Claude에 로컬 MCP 서버 추가하기

가장 빠른 경로는 Claude Code의 claude mcp add 명령어로, 클라이언트가 stdio를 통해 실행할 서버를 등록합니다. 일반적인 형태는 이름 다음에 서버를 시작하는 명령어가 오는 것입니다.

Guided walkthrough1 of 4
  1. 동작이 알려져 있도록 공식 참조 서버(예: 파일시스템 서버)로 시작하세요. Anthropic은 로컬로 실행할 수 있는 참조 MCP 서버 모음 — filesystem, git, memory, fetch 등 — 을 유지관리합니다.

로컬 파일시스템 서버를 위한 최소한의 claude mcp add입니다(-- 뒤의 모든 것이 실행 명령어입니다):

Claude Code에 로컬 파일시스템 MCP 서버 추가하기

claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /path/to/allowed/dir

설정을 직접 편집하는 편을 선호한다면, stdio 서버는 그것을 실행하는 명령어로 선언됩니다. 형태는 다음과 같습니다:

{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
}
}
}

작은 MCP 서버 만들기

서버는 MCP SDK를 사용하고, 도구를 선언하고, stdio 전송을 시작하는 프로그램일 뿐입니다. 아래는 그 전체 아이디어를 TypeScript로 나타낸 것입니다 — 두 숫자를 더하는 도구 하나입니다(본문을 "내 스크립트 실행", "내 DB 쿼리", "내 로컬 모델 호출"로 바꾸세요):

npm install @modelcontextprotocol/sdk zod
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({ name: "my-local-tools", version: "0.1.0" });

// Declare ONE tool. Inputs are typed; the body runs locally with your privileges.
server.registerTool(
"add",
{
description: "Add two numbers",
inputSchema: { a: z.number(), b: z.number() },
},
async ({ a, b }) => ({
content: [{ type: "text", text: String(a + b) }],
}),
);

// Talk to the client over stdio — this is what makes it a LOCAL server.
await server.connect(new StdioServerTransport());

다른 stdio 서버와 똑같이 Claude에 등록하세요 — 실행 명령어를 여러분의 파일로 가리키기만 하면 됩니다:

여러분만의 로컬 서버를 Claude Code에 추가하기

claude mcp add my-local-tools -- node /abs/path/to/server.js

이것이 전체 루프입니다: Claude(두뇌)가 새 도구를 보고, 관련이 있을 때 호출하며, 여러분의 코드(손)는 로컬에서 실행되어 결과를 반환합니다. 동일한 개방형 프로토콜을 사용하기 때문에, 이 서버는 변경 없이 다른 MCP 클라이언트에서도 작동합니다.

Watch out
  • MCP 서버는 여러분의 권한으로 실행되며 실제 동작을 취할 수 있습니다 — 신뢰하는 서버만 설치하고, 도구 결과를 통한 프롬프트 인젝션을 경계하세요.

스스로 점검하기

스스로 점검하기

0/4
  1. 한 문장으로, MCP란 무엇입니까?
  2. 로컬 MCP 서버의 경우, 클라이언트는 보통 어떻게 서버와 통신합니까?
  3. MCP 서버 하나를 만드는 것이 왜 여러 도구에 걸쳐 이득이 됩니까?
  4. 서버를 설치하기 전에 검증하는 주된 이유는 무엇입니까?
Enter 또는 스페이스 키를 눌러 카드를 뒤집습니다. 좌우 화살표 키로 카드를 이동할 수 있습니다.용어가 표시되었습니다.
1 / 8
Key takeaways
  • MCP는 AI 클라이언트가 MCP 서버를 통해 외부 도구와 데이터를 호출할 수 있게 하는 개방형 표준입니다 — Anthropic은 처음부터 로컬 서버 지원과 함께 이를 도입했습니다.
  • 로컬 아키텍처는 단순합니다: MCP 클라이언트(Claude Code / Desktop)가 로컬 MCP 서버를 서브프로세스로 실행하고 stdio를 통해 통신합니다 — 여러분의 데이터는 여러분의 컴퓨터에 머뭅니다.
  • 이것이 Claude를 두뇌로, 로컬 기능을 손으로 삼는 시너지입니다: Claude가 오케스트레이션하고, 로컬 서버(파일시스템, DB, 스크립트, 심지어 로컬 모델이나 에이전트)가 손을 제공합니다.
  • 명령어 하나로 서버를 추가하고(claude mcp add ... -- <실행 명령어>), MCP SDK로 도구를 등록하고 stdio 전송을 연결해 하나를 만드세요.
  • MCP는 널리 채택되었으므로, 여러분이 만든 로컬 서버는 많은 클라이언트에 걸쳐 작동합니다 — 한 번 만들어 어디서나 재사용하세요.
  • 서버는 여러분의 권한으로 동작합니다: 신뢰하는 것만 설치하고 도구 결과를 프롬프트 인젝션의 가능한 벡터로 취급하세요.

다음

출처 및 더 읽을거리