View

반응형

MCP(Model Context Protocol)란?

MCP(Model Context Protocol)는 AI 앱을 외부 시스템에 연결하는 오픈소스 표준입니다. Anthropic이 2024년 말에 공개했으며, 2026년 현재 Claude, ChatGPT, Cursor 등 대부분의 AI 도구가 지원하고 있습니다.

쉽게 비유하면 AI의 USB-C 포트라고 생각하면 됩니다. USB-C가 다양한 기기를 하나의 표준으로 연결하듯, MCP는 다양한 AI 앱이 데이터베이스, API, 파일 시스템 등에 접근할 수 있는 통일된 방법을 제공합니다.

MCP 아키텍처 다이어그램: AI 앱에서 MCP 서버를 거쳐 데이터베이스, API, 파일 시스템에 연결되는 흐름
MCP 아키텍처 — AI 앱이 MCP 서버를 통해 외부 시스템에 접근하는 구조

위 다이어그램처럼 AI 앱(Claude, ChatGPT 등)은 MCP 프로토콜을 통해 MCP 서버에 연결하고, 서버가 실제로 외부 시스템과 통신합니다. 개발자는 MCP 서버만 만들면 됩니다.

MCP는 Anthropic이 만든 오픈소스 표준으로, Claude뿐 아니라 ChatGPT, Cursor 등 다양한 AI 앱에서 사용할 수 있습니다.

MCP로 할 수 있는 것들

  • Claude에게 Google Calendar와 Notion에 접근하게 해서 일정 관리 시키기
  • Claude Code가 Figma 디자인을 보고 웹 앱 자동 생성하기
  • AI 챗봇이 회사 데이터베이스에 직접 질의해서 데이터 분석하기
  • AI가 GitHub 이슈를 읽고 자동으로 코드 수정 후 PR 생성하기

MCP 서버의 3가지 핵심 기능

MCP 서버는 3가지 핵심 기능을 제공합니다. 이 개념을 이해하면 나만의 서버를 설계하는 게 훨씬 쉬워집니다.

MCP 서버의 Tools, Resources, Prompts 세 가지 핵심 기능 다이어그램
MCP 서버가 제공하는 3가지 핵심 기능
기능 설명 예시
Tools AI가 호출할 수 있는 함수 날씨 조회, DB 쿼리, 파일 생성
Resources AI가 읽을 수 있는 데이터 설정 파일, API 응답, 문서
Prompts 사용자가 선택 가능한 템플릿 코드 리뷰 템플릿, 번역 템플릿

이 글에서는 가장 많이 사용되는 Tools에 집중해서 서버를 만들어 보겠습니다. Tool은 AI가 필요할 때 자동으로 호출하는 함수로, 사용자 승인을 거쳐 실행됩니다.

사전 준비 — 개발 환경 설정

MCP 서버를 만들기 전에 개발 환경을 확인해야 합니다. Python 또는 TypeScript 중 편한 언어를 선택하세요.

필요한 환경

항목 Python TypeScript
런타임 Python 3.10+ Node.js 16+
패키지 매니저 uv (권장) npm
SDK mcp[cli] 1.2.0+ @modelcontextprotocol/sdk

1단계. 버전을 확인합니다.

# Python 버전 확인 (3.10 이상 필요)
python --version

# Node.js 버전 확인 (16 이상 필요)
node --version
npm --version

2단계. Python 사용자는 uv를 설치합니다. uv는 pip보다 10~100배 빠른 최신 패키지 매니저입니다.

# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Python 사용자는 uv(빠른 패키지 매니저)를, TypeScript 사용자는 Node.js + npm을 준비하세요. 이 글에서는 두 언어 모두 다룹니다.

Python MCP 서버 — 프로젝트 생성

먼저 Python으로 MCP 서버 프로젝트를 만들어 보겠습니다.

1단계. 프로젝트 디렉토리를 생성하고 초기화합니다.

# 프로젝트 생성
uv init my-mcp-server
cd my-mcp-server

# 가상환경 생성 및 활성화
uv venv
.venv\Scripts\activate    # Windows
# source .venv/bin/activate  # macOS/Linux

2단계. MCP SDK와 필요한 라이브러리를 설치합니다.

# MCP SDK + HTTP 클라이언트 설치
uv add "mcp[cli]" httpx
uv 설치 후 반드시 터미널을 재시작해야 uv 명령어가 인식됩니다.

3단계. 서버 파일을 생성합니다.

# 서버 파일 생성 (Windows)
new-item server.py

# macOS/Linux
touch server.py

프로젝트 구조는 아래와 같습니다.

my-mcp-server/
├── .venv/          # 가상환경
├── server.py       # MCP 서버 코드 (이 파일을 작성합니다)
├── pyproject.toml  # 프로젝트 설정
└── README.md

Python MCP 서버 — 코드 작성

이제 실제 MCP 서버 코드를 작성합니다. 미국 날씨 API(NWS)를 활용한 날씨 조회 서버를 만들어 볼게요.

1. 기본 설정

가장 먼저 FastMCP를 import하고 서버 인스턴스를 생성합니다.

from typing import Any
import httpx
from mcp.server.fastmcp import FastMCP

# MCP 서버 인스턴스 생성
mcp = FastMCP("weather")

# 상수 정의
NWS_API_BASE = "https://api.weather.gov"
USER_AGENT = "weather-app/1.0"

FastMCP("weather")에서 "weather"는 서버 이름입니다. AI 앱에서 이 이름으로 서버를 식별합니다.

2. 헬퍼 함수

API를 호출하는 공통 함수를 만듭니다.

async def make_nws_request(url: str) -> dict[str, Any] | None:
    """NWS API에 요청을 보내는 헬퍼 함수"""
    headers = {"User-Agent": USER_AGENT, "Accept": "application/geo+json"}
    async with httpx.AsyncClient() as client:
        try:
            response = await client.get(url, headers=headers, timeout=30.0)
            response.raise_for_status()
            return response.json()
        except Exception:
            return None

3. Tool 등록 — 핵심 코드

여기가 가장 중요한 부분입니다. @mcp.tool() 데코레이터를 붙이면 해당 함수가 AI가 호출 가능한 Tool로 등록됩니다.

@mcp.tool()
async def get_alerts(state: str) -> str:
    """특정 미국 주의 날씨 경보를 조회합니다.
    
    Args:
        state: 2자리 미국 주 코드 (예: CA, NY)
    """
    url = f"{NWS_API_BASE}/alerts/active/area/{state}"
    data = await make_nws_request(url)
    
    if not data or "features" not in data:
        return "경보 데이터를 가져올 수 없습니다."
    
    if not data["features"]:
        return "현재 활성 경보가 없습니다."
    
    alerts = []
    for feature in data["features"]:
        props = feature["properties"]
        alerts.append(
            f"이벤트: {props.get('event', '알 수 없음')}\n"
            f"지역: {props.get('areaDesc', '알 수 없음')}\n"
            f"심각도: {props.get('severity', '알 수 없음')}"
        )
    return "\n---\n".join(alerts)


@mcp.tool()
async def get_forecast(latitude: float, longitude: float) -> str:
    """특정 좌표의 날씨 예보를 조회합니다.
    
    Args:
        latitude: 위도
        longitude: 경도
    """
    points_url = f"{NWS_API_BASE}/points/{latitude},{longitude}"
    points_data = await make_nws_request(points_url)
    
    if not points_data:
        return "예보 데이터를 가져올 수 없습니다."
    
    forecast_url = points_data["properties"]["forecast"]
    forecast_data = await make_nws_request(forecast_url)
    
    if not forecast_data:
        return "상세 예보를 가져올 수 없습니다."
    
    periods = forecast_data["properties"]["periods"]
    forecasts = []
    for period in periods[:5]:
        forecasts.append(
            f"{period['name']}:\n"
            f"  기온: {period['temperature']}°{period['temperatureUnit']}\n"
            f"  바람: {period['windSpeed']} {period['windDirection']}\n"
            f"  예보: {period['detailedForecast']}"
        )
    return "\n---\n".join(forecasts)
FastMCP는 Python 타입 힌트와 docstring을 자동으로 분석해서 Tool 정의를 생성합니다. 타입과 설명을 정확히 적어두면 AI가 더 잘 이해합니다.

위 코드에서 주목할 점이 있습니다.

  • @mcp.tool() 데코레이터만 붙이면 자동으로 Tool로 등록됩니다
  • docstring이 AI에게 전달되는 Tool 설명이 됩니다
  • 타입 힌트(state: str, latitude: float)가 입력 스키마가 됩니다
  • 복잡한 JSON 스키마를 직접 작성할 필요가 없습니다

4. 서버 실행부

if __name__ == "__main__":
    mcp.run(transport="stdio")
STDIO 기반 서버에서는 절대로 print()를 사용하지 마세요! stdout으로 출력하면 JSON-RPC 메시지가 깨집니다. 디버깅 시 print('메시지', file=sys.stderr)를 사용하세요.

이것으로 Python MCP 서버가 완성되었습니다. uv run server.py로 서버를 실행할 수 있습니다.

TypeScript MCP 서버 — 프로젝트 생성

TypeScript를 선호한다면 이 섹션을 따라하세요. Node.js와 npm이 설치되어 있어야 합니다.

1단계. 프로젝트를 생성하고 의존성을 설치합니다.

# 프로젝트 생성
mkdir my-mcp-server-ts
cd my-mcp-server-ts

# npm 초기화
npm init -y

# MCP SDK + Zod(스키마 검증) 설치
npm install @modelcontextprotocol/sdk zod@3
npm install -D @types/node typescript

# 소스 디렉토리 생성
mkdir src

2단계. package.json에 다음 설정을 추가합니다.

{
  "type": "module",
  "bin": {
    "weather": "./build/index.js"
  },
  "scripts": {
    "build": "tsc"
  },
  "files": ["build"]
}

3단계. tsconfig.json을 프로젝트 루트에 생성합니다.

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "Node16",
    "moduleResolution": "Node16",
    "outDir": "./build",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

프로젝트 구조는 아래와 같습니다.

my-mcp-server-ts/
├── src/
│   └── index.ts     # MCP 서버 코드 (이 파일을 작성합니다)
├── build/           # 빌드 결과물 (tsc 실행 후 생성)
├── package.json
├── tsconfig.json
└── node_modules/

TypeScript MCP 서버 — 코드 작성

TypeScript에서는 McpServer 클래스와 Zod 라이브러리를 사용합니다.

1. 기본 설정

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: "weather",
  version: "1.0.0",
});

const NWS_API_BASE = "https://api.weather.gov";
const USER_AGENT = "weather-app/1.0";

Python의 FastMCP와 달리 TypeScript에서는 McpServer 클래스를 직접 사용합니다.

2. Tool 등록 — registerTool + Zod 스키마

server.registerTool(
  "get_alerts",
  {
    description: "특정 미국 주의 날씨 경보를 조회합니다",
    inputSchema: {
      state: z.string().length(2).describe("2자리 미국 주 코드 (예: CA, NY)"),
    },
  },
  async ({ state }) => {
    const stateCode = state.toUpperCase();
    const url = `${NWS_API_BASE}/alerts?area=${stateCode}`;
    
    const response = await fetch(url, {
      headers: { "User-Agent": USER_AGENT, Accept: "application/geo+json" },
    });
    const data = await response.json();
    const features = data.features || [];
    
    if (features.length === 0) {
      return {
        content: [{ type: "text", text: `${stateCode}에 활성 경보 없음` }],
      };
    }
    
    const alerts = features.map((f: any) => {
      const p = f.properties;
      return `이벤트: ${p.event}\n지역: ${p.areaDesc}\n심각도: ${p.severity}`;
    });
    
    return {
      content: [{ type: "text", text: alerts.join("\n---\n") }],
    };
  }
);
TypeScript에서는 Zod 라이브러리로 입력 스키마를 정의합니다. z.string(), z.number() 등으로 타입을 지정하고, .describe()로 AI에게 설명을 전달합니다.

Python과 비교해보면 차이점이 명확합니다.

항목 Python (FastMCP) TypeScript (McpServer)
Tool 등록 @mcp.tool() 데코레이터 server.registerTool() 메서드
스키마 정의 타입 힌트 + docstring 자동 추출 Zod로 명시적 정의
반환 형식 문자열 직접 반환 {content: [{type, text}]} 객체
코드량 더 간결 더 명시적

3. 서버 실행부

async function main() {
  const transport = new StdioServerTransport();
  await server.connect(transport);
  console.error("MCP 서버가 시작되었습니다"); // stderr로 출력!
}

main().catch(console.error);
TypeScript STDIO 서버에서도 console.log()는 금지! stdout을 오염시켜 JSON-RPC 통신이 깨집니다. 반드시 console.error()를 사용하세요.

빌드 후 실행합니다.

# 빌드
npm run build

# 실행
node build/index.js

Claude Desktop에 MCP 서버 연결하기

서버 코드가 완성되었으면 Claude Desktop에 연결해 봅시다.

1단계. 설정 파일 열기

claude_desktop_config.json 파일을 열어야 합니다.

OS 파일 위치
Windows %APPDATA%\Claude\claude_desktop_config.json
macOS ~/Library/Application Support/Claude/claude_desktop_config.json

VS Code에서 열려면 아래 명령어를 실행합니다.

# Windows
code %APPDATA%\Claude\claude_desktop_config.json

# macOS
code ~/Library/Application\ Support/Claude/claude_desktop_config.json

2단계. 서버 설정 추가

Python 서버를 등록하는 경우:

{
  "mcpServers": {
    "weather": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\Users\\사용자명\\projects\\my-mcp-server",
        "run",
        "server.py"
      ]
    }
  }
}

TypeScript 서버를 등록하는 경우:

{
  "mcpServers": {
    "weather": {
      "command": "node",
      "args": [
        "C:\\Users\\사용자명\\projects\\my-mcp-server-ts\\build\\index.js"
      ]
    }
  }
}
Windows에서는 경로 구분자를 이중 백슬래시(\\)로 작성해야 합니다. 또는 슬래시(/)를 사용해도 됩니다.

3단계. Claude Desktop 재시작

설정을 저장한 후 Claude Desktop을 완전히 종료했다가 다시 실행합니다. 정상적으로 연결되면 채팅 입력창 옆에 도구 아이콘이 나타납니다.

설정 파일 위치: Windows는 %APPDATA%\Claude\claude_desktop_config.json, macOS는 ~/Library/Application Support/Claude/claude_desktop_config.json

이제 Claude에게 "캘리포니아 날씨 경보를 알려줘"라고 말해보세요. AI가 자동으로 get_alerts Tool을 호출합니다.

Claude Code에 MCP 서버 연결하기

Claude Code(CLI)를 사용하고 있다면 claude mcp add 명령어로 더 간단하게 연결할 수 있습니다.

서버 등록

# Python 서버 등록
claude mcp add --transport stdio weather -- uv --directory /path/to/my-mcp-server run server.py

# TypeScript 서버 등록
claude mcp add --transport stdio weather -- node /path/to/my-mcp-server-ts/build/index.js

여기서 각 부분의 의미를 알아보겠습니다.

  • --transport stdio: 통신 방식을 stdio(로컬 프로세스)로 지정
  • weather: 서버 이름 (자유롭게 지정)
  • --: 이후 부분은 서버 실행 명령어

서버 관리 명령어

# 등록된 서버 목록 확인
claude mcp list

# 특정 서버 상세 정보
claude mcp get weather

# 서버 삭제
claude mcp remove weather

# Claude Code 실행 중에 서버 상태 확인
/mcp
Windows에서 npx를 사용하는 경우, 반드시 cmd /c를 앞에 붙여야 합니다. 그렇지 않으면 'Connection closed' 에러가 발생합니다.
# Windows에서 npx 사용 시 필수!
claude mcp add --transport stdio weather -- cmd /c npx -y my-mcp-server

Scope 설정

서버를 어디에서 사용할지 범위를 지정할 수 있습니다.

Scope 저장 위치 용도
local (기본값) ~/.claude.json 현재 프로젝트에서만 나만 사용
project .mcp.json 팀원 모두가 사용 (Git에 커밋)
user ~/.claude.json 모든 프로젝트에서 나만 사용
# 팀 전체가 공유하는 서버 등록
claude mcp add --transport stdio --scope project weather -- uv run server.py

# 모든 프로젝트에서 사용하는 개인 서버
claude mcp add --transport stdio --scope user weather -- uv run server.py

MCP Transport 방식 비교 — stdio vs HTTP vs SSE

MCP 서버와 AI 앱이 통신하는 방법에는 3가지가 있습니다. 상황에 맞는 방식을 선택하세요.

MCP 세 가지 Transport 방식(stdio, HTTP, SSE) 비교 다이어그램
MCP Transport 방식 비교 — stdio(로컬), HTTP(원격 권장), SSE(원격 레거시)
방식 설명 사용 상황 예시
stdio 로컬 프로세스 통신 내 컴퓨터에서 직접 실행하는 서버 직접 만든 로컬 서버, 커스텀 도구
HTTP (권장) HTTP 요청/응답 원격 클라우드 서버 GitHub, Sentry, Notion 등 SaaS
SSE (비권장) Server-Sent Events 레거시 서버만 이전 버전 MCP 서버
SSE(Server-Sent Events) 방식은 deprecated(비권장)되었습니다. 원격 서버는 HTTP 방식을 사용하세요.
# stdio — 로컬 서버
claude mcp add --transport stdio my-server -- python server.py

# HTTP — 원격 서버 (권장)
claude mcp add --transport http my-api https://api.example.com/mcp

# HTTP + 인증 헤더
claude mcp add --transport http secure-api https://api.example.com/mcp \
  --header "Authorization: Bearer your-token"

실전 활용 예제 — 나만의 MCP 서버 아이디어

날씨 서버를 넘어서, 실제로 유용한 MCP 서버 아이디어를 소개합니다. 코드도 함께 제공하니 바로 복사해서 사용해 보세요.

예제 1: Git 헬퍼 서버

Git 커밋 로그와 변경사항을 AI에게 알려주는 서버입니다. AI가 코드 리뷰할 때 유용합니다.

from mcp.server.fastmcp import FastMCP
import subprocess

mcp = FastMCP("git-helper")

@mcp.tool()
def get_git_log(count: int = 5) -> str:
    """최근 Git 커밋 로그를 조회합니다.
    
    Args:
        count: 조회할 커밋 수 (기본값: 5)
    """
    result = subprocess.run(
        ["git", "log", "--oneline", f"-{count}"],
        capture_output=True, text=True
    )
    return result.stdout or "Git 로그를 가져올 수 없습니다."

@mcp.tool()
def get_git_diff() -> str:
    """현재 스테이지되지 않은 변경사항을 조회합니다."""
    result = subprocess.run(
        ["git", "diff", "--stat"],
        capture_output=True, text=True
    )
    return result.stdout or "변경사항이 없습니다."

if __name__ == "__main__":
    mcp.run(transport="stdio")

예제 2: Todo 관리 서버

AI에게 할 일 목록을 관리하게 하는 서버입니다. "오늘 할 일 추가해줘"라고 말하면 자동으로 저장됩니다.

from mcp.server.fastmcp import FastMCP
import json, os

mcp = FastMCP("todo")
TODO_FILE = "todos.json"

def load_todos() -> list:
    if os.path.exists(TODO_FILE):
        with open(TODO_FILE) as f:
            return json.load(f)
    return []

def save_todos(todos: list):
    with open(TODO_FILE, "w") as f:
        json.dump(todos, f, ensure_ascii=False, indent=2)

@mcp.tool()
def add_todo(task: str) -> str:
    """할 일을 추가합니다.
    
    Args:
        task: 추가할 할 일 내용
    """
    todos = load_todos()
    todos.append({"task": task, "done": False})
    save_todos(todos)
    return f"추가 완료: {task}"

@mcp.tool()
def list_todos() -> str:
    """모든 할 일 목록을 조회합니다."""
    todos = load_todos()
    if not todos:
        return "할 일이 없습니다."
    lines = []
    for i, t in enumerate(todos, 1):
        status = "[완료]" if t["done"] else "[미완]"
        lines.append(f"{i}. {status} {t['task']}")
    return "\n".join(lines)

if __name__ == "__main__":
    mcp.run(transport="stdio")
MCP 서버 아이디어: Git 헬퍼, Todo 관리, DB 조회, 번역기, 파일 검색, 캘린더 연동 등 자신의 워크플로우에 맞게 자유롭게 만들 수 있습니다.

더 많은 아이디어

  • DB 조회 서버: PostgreSQL/MySQL에 자연어로 질의
  • 번역 서버: DeepL API를 연동한 실시간 번역
  • 메모 서버: 마크다운 파일 기반 노트 관리
  • 모니터링 서버: 서버 CPU/메모리/디스크 상태 조회

트러블슈팅 — 자주 발생하는 에러와 해결법

MCP 서버 개발 중 자주 만나는 에러 5가지와 해결법을 정리했습니다.

에러 원인 해결법
Connection closed Windows에서 npx 직접 실행 cmd /c 래퍼 추가
서버 무응답 print()/console.log()가 stdout 오염 stderr로 변경 (file=sys.stderr, console.error())
spawn ENOENT 실행 파일 경로가 PATH에 없음 which uv 또는 where node로 전체 경로 확인 후 사용
도구가 안 보임 claude_desktop_config.json 문법 오류 JSON 유효성 검사, 특히 경로의 이중 백슬래시 확인
타임아웃 서버 시작이 너무 느림 MCP_TIMEOUT=10000 claude로 타임아웃 늘리기
Connection closed 에러 (Windows): npx 사용 시 cmd /c 래퍼가 빠져 있는 경우가 대부분입니다.
서버가 응답하지 않는 경우: print() / console.log()가 stdout을 오염시키고 있지 않은지 확인하세요.

디버깅 팁

  • /mcp 명령어로 Claude Code 안에서 서버 연결 상태를 실시간 확인할 수 있습니다
  • MCP 서버 로그는 console.error() 또는 print(..., file=sys.stderr)로 출력하세요
  • MAX_MCP_OUTPUT_TOKENS=50000으로 큰 출력도 처리할 수 있습니다

직접 만들지 않아도 바로 연결해서 사용할 수 있는 인기 MCP 서버들을 소개합니다.

서버 기능 연결 방식
GitHub PR 리뷰, 이슈 관리, 코드 검색 HTTP
Sentry 에러 모니터링, 스택 트레이스 조회 HTTP
Notion 문서 읽기/쓰기, 데이터베이스 질의 HTTP
PostgreSQL 자연어 DB 질의, 스키마 분석 stdio
Figma 디자인 읽기, 코드 자동 생성 HTTP

한 줄 명령어로 바로 연결할 수 있습니다.

# GitHub
claude mcp add --transport http github https://api.githubcopilot.com/mcp/

# Sentry
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

# Notion
claude mcp add --transport http notion https://mcp.notion.com/mcp

# PostgreSQL
claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
  --dsn "postgresql://user:pass@host:5432/dbname"
더 많은 MCP 서버는 GitHub(github.com/modelcontextprotocol/servers)에서 찾을 수 있습니다.

OAuth 인증이 필요한 서버(GitHub, Notion 등)는 연결 후 /mcp 명령어에서 "Authenticate" 옵션을 선택하면 브라우저에서 로그인할 수 있습니다.

정리 — MCP 서버 개발 체크리스트

MCP 서버 개발 6단계 흐름도: 프로젝트 생성에서 테스트까지
MCP 서버 개발 전체 흐름 요약

이 글에서 다룬 전체 과정을 체크리스트로 정리합니다.

# 단계 핵심 명령어
1 프로젝트 생성 uv init / npm init
2 SDK 설치 uv add "mcp[cli]" / npm install @modelcontextprotocol/sdk
3 Tool 정의 @mcp.tool() / server.registerTool()
4 서버 실행 mcp.run(transport="stdio") / server.connect(transport)
5 Claude 연동 claude mcp add / config.json 편집
6 테스트 Claude에서 Tool 호출해 보기

다음 단계

  • Resources 추가: Tool 외에 AI가 읽을 수 있는 데이터(파일, 설정 등)를 제공해 보세요
  • HTTP 서버로 배포: 로컬 서버를 클라우드에 올려서 어디서든 접근 가능하게 만들기
  • npm 패키지로 배포: npx -y my-mcp-server로 누구나 설치할 수 있게 배포하기
  • 여러 Tool 조합: DB 조회 + 이메일 발송 등 Tool을 조합해서 복잡한 워크플로우 자동화

MCP는 2026년 AI 개발에서 가장 핫한 기술 중 하나입니다. 한번 만들어두면 Claude, ChatGPT, Cursor 등 어떤 AI 앱에서든 사용할 수 있으니, 자신만의 워크플로우에 맞는 MCP 서버를 만들어 보세요.

자주 묻는 질문 (FAQ)

MCP 서버를 만들려면 반드시 Python이나 TypeScript를 써야 하나요?

아닙니다. MCP는 오픈 표준이므로 Go, Rust, Java 등 어떤 언어로든 구현할 수 있습니다. 다만 공식 SDK가 Python과 TypeScript로 제공되어 이 두 언어가 가장 편리합니다.

MCP 서버는 Claude에서만 사용할 수 있나요?

아닙니다. MCP는 Anthropic이 만든 오픈 표준으로, ChatGPT, Cursor, Windsurf 등 다양한 AI 앱에서 지원합니다. 한번 만든 서버는 어디서든 사용할 수 있습니다.

MCP 서버와 일반 REST API의 차이점은 무엇인가요?

REST API는 사람이 직접 호출하는 인터페이스이고, MCP 서버는 AI가 자동으로 호출하는 인터페이스입니다. MCP는 AI에게 도구 설명, 입력 스키마 등을 표준화된 방식으로 전달하여 AI가 스스로 적절한 도구를 선택하고 실행할 수 있게 합니다.

무료로 사용할 수 있나요?

네. MCP SDK는 완전 무료 오픈소스입니다. MCP 서버 자체를 만들고 사용하는 데는 비용이 들지 않습니다. 다만 Claude Desktop이나 Claude Code 등 AI 앱 사용에는 해당 서비스의 요금이 적용됩니다.

보안은 안전한가요? MCP 서버가 제 파일에 접근할 수 있나요?

MCP 서버는 사용자가 명시적으로 허용한 기능만 수행합니다. AI가 MCP 도구를 호출할 때마다 사용자에게 승인을 요청하며, 서버가 접근할 수 있는 범위는 서버 코드에 정의된 범위로 한정됩니다.

728x90
반응형
Share Link
reply
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31