MCP 완전 정복 — Claude·Cursor를 10배 강하게 만드는 Model Context Protocol


솔직히 고백하자면, 나는 MCP를 처음 들었을 때 “또 새로운 약어냐”하고 무시했다. AI 코딩 도구를 쓰다 보면 매주 새로운 용어가 튀어나오는데, 그중 절반은 마케팅 버즈워드라 구분하기도 귀찮았다. 그런데 어느 날 트위터(X)에서 누군가가 “MCP 적용했더니 Claude가 내 Notion 문서 읽고 PR을 자동으로 정리해줬다”는 글을 올렸고, 거기 달린 데모 영상이 진짜 눈이 휘둥그레지는 수준이었다.

그날 밤 새벽 2시까지 MCP 문서를 읽고, 직접 세팅해보고, 여러 서버를 붙여봤다. 결론부터 말하면: MCP는 마케팅이 아니라 실제로 AI 코딩 도구의 판도를 바꾸는 기술이다. 이 글에서는 MCP가 뭔지, 왜 중요한지, 그리고 실제로 어떻게 쓰는지를 내가 삽질한 경험과 함께 처음부터 끝까지 정리해보겠다.


MCP가 뭔지 한 줄로 설명하면

MCP(Model Context Protocol)는 AI 모델이 외부 도구나 데이터에 접근하는 방식을 표준화한 오픈 프로토콜이다.

좀 더 풀어서 설명하면: 지금까지 Claude나 Cursor 같은 AI 도구들은 기본적으로 “대화창에 붙여넣은 텍스트”만 볼 수 있었다. GitHub 코드를 보려면 직접 복사해서 붙여야 했고, Notion 문서를 참고하려면 내용을 일일이 가져와야 했다. 불편해도 그냥 그게 당연한 줄 알았다.

MCP는 이 문제를 해결한다. Anthropic이 2024년 말에 오픈소스로 공개한 이 프로토콜을 통해 AI가 실시간으로 Notion을 읽고, GitHub 이슈를 확인하고, 데이터베이스를 쿼리하고, 파일 시스템을 탐색할 수 있게 된다. 마치 AI한테 “이제 인터넷이랑 여러 앱에 직접 접근하는 손”을 달아주는 셈이다.


왜 지금 MCP가 뜨고 있는가

사실 AI 도구에 외부 데이터를 연결하는 시도는 이전에도 있었다. ChatGPT의 플러그인 시스템이 그랬고, 각 도구마다 자체 통합 기능을 만들기도 했다. 문제는 파편화였다.

A 도구에서 Notion을 연결하는 방식이 B 도구에서는 완전히 달랐다. GitHub 연동을 구현하려면 각 도구마다 따로 개발해야 했다. 도구가 100개면 연동도 100가지 방식으로 만들어야 하는 N×M 문제가 생겼다.

MCP는 이걸 N+M으로 줄였다. 표준 프로토콜을 한 번만 구현하면, MCP를 지원하는 모든 AI 도구에서 그 기능을 쓸 수 있다. Notion MCP 서버를 만들면 Claude에서도, Cursor에서도, 다른 MCP 지원 클라이언트에서도 동일하게 작동한다.

2025년 초부터 Claude Desktop, Cursor, Claude Code를 비롯한 주요 AI 코딩 도구들이 MCP를 지원하기 시작했고, 커뮤니티에서 수백 개의 MCP 서버가 공개되면서 본격적으로 생태계가 폭발적으로 성장했다.


MCP의 구조: 서버-클라이언트 모델

MCP는 두 가지 역할로 나뉜다.

MCP 서버(Server): Notion, GitHub, Supabase 같은 외부 서비스에 접근하는 기능을 제공하는 프로그램이다. 보통 Node.js나 Python으로 작성되며, 특정 도구(tool), 리소스(resource), 프롬프트(prompt)를 노출한다.

MCP 클라이언트(Client): Claude Desktop, Cursor, Claude Code처럼 AI 모델이 내장된 프로그램이다. MCP 서버에 연결해서 AI가 서버가 제공하는 기능을 쓸 수 있게 한다.

쉽게 말하면: 서버는 “이런 기능을 제공합니다”라고 알리고, 클라이언트는 AI와 함께 그 기능을 실제로 호출하는 구조다.

사용자 ↔ AI 클라이언트(Claude Desktop/Cursor) ↔ MCP 서버 ↔ 외부 서비스(Notion, GitHub 등)

AI 도구 연동 개념도


직접 써보기: MCP 세팅 실전 가이드

이론은 충분하다. 직접 해보자. 나는 Claude Desktop 기준으로 설명하겠지만, Cursor나 Claude Code도 설정 방식이 비슷하다.

1단계: Claude Desktop 설치 확인

MCP를 쓰려면 Claude Desktop 앱이 필요하다(웹 버전은 현재 MCP 미지원). 이미 설치했다면 최신 버전인지 확인하자.

2단계: MCP 설정 파일 열기

Claude Desktop의 MCP 설정은 JSON 파일 하나로 관리된다.

macOS:

~/Library/Application Support/Claude/claude_desktop_config.json

Windows:

%APPDATA%\Claude\claude_desktop_config.json

파일이 없으면 새로 만들면 된다. 처음에는 빈 JSON 객체{}로 시작하면 충분하다.

3단계: 첫 번째 MCP 서버 추가 — 파일 시스템

가장 간단한 것부터 시작하자. Anthropic이 공식 제공하는 파일 시스템 MCP 서버다. 이걸 추가하면 Claude가 내 로컬 파일을 직접 읽고 쓸 수 있다.

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/내_사용자명/Documents"
      ]
    }
  }
}

/Users/내_사용자명/Documents 부분을 Claude가 접근해도 될 폴더 경로로 바꾸면 된다. 저장하고 Claude Desktop을 재시작하면 적용된다.

이제 Claude한테 “Documents 폴더에 있는 파일 목록 보여줘”라고 하면 실제로 보여준다. 처음 이걸 봤을 때 진짜 신기했다.


실전 MCP 서버 5종 추천

파일 시스템은 맛보기고, 진짜 쓸만한 서버들을 소개한다.

1. GitHub MCP 서버

코드 리뷰하다 “이 PR 배경이 뭔지 이슈 보고 싶다”는 생각 해본 적 있지? GitHub MCP를 쓰면 Claude가 직접 이슈와 PR을 읽어온다.

"github": {
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-github"],
  "env": {
    "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_여기에_토큰"
  }
}

GitHub → Settings → Developer settings → Personal access tokens에서 토큰을 발급받아 넣으면 된다. 이후 “anthropics/claude-code 레포의 최신 이슈 5개 요약해줘”같은 요청이 가능해진다.

2. Notion MCP 서버

팀 위키나 개인 메모가 Notion에 있다면 이게 진짜 유용하다. Claude가 Notion 페이지를 직접 읽어서 코드 작업에 활용할 수 있다.

"notion": {
  "command": "npx",
  "args": ["-y", "@notionhq/notion-mcp-server"],
  "env": {
    "OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer 여기에_노션_토큰\", \"Notion-Version\": \"2022-06-28\"}"
  }
}

Notion API 통합 키는 notion.so/my-integrations에서 발급받을 수 있다. 설정 후 “내 Notion의 API 설계 문서 읽고 이걸 기반으로 Express 라우터 만들어줘”같은 작업이 된다. 실제로 써봤는데, 문서 내용을 일일이 복붙할 필요가 없어서 작업 속도가 확 빨라진다.

3. PostgreSQL / Supabase MCP 서버

데이터베이스 스키마를 Claude한테 설명하는 게 얼마나 귀찮은지 안다. 이 서버를 쓰면 Claude가 직접 스키마를 읽어온다.

"postgres": {
  "command": "npx",
  "args": [
    "-y",
    "@modelcontextprotocol/server-postgres",
    "postgresql://localhost/내_데이터베이스명"
  ]
}

“users 테이블 스키마 보고 적절한 TypeScript 타입 만들어줘”라고 하면 직접 DB를 보고 타입을 생성해준다. 스키마 문서가 항상 최신화 안 돼 있는 팀에서 특히 유용하다.

4. Brave Search MCP 서버

Claude의 학습 데이터 이후 최신 정보가 필요할 때 쓴다. 웹 검색 결과를 실시간으로 가져와서 컨텍스트에 포함시킨다.

"brave-search": {
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-brave-search"],
  "env": {
    "BRAVE_API_KEY": "여기에_브레이브_API_키"
  }
}

Brave Search API는 월 2,000건까지 무료다. “Next.js 15에서 변경된 주요 사항 검색해서 마이그레이션 가이드 만들어줘” 같은 요청에서 진짜 빛난다.

5. Slack MCP 서버

팀 슬랙에서 특정 채널 대화를 참고해야 할 때 유용하다. 주의할 점은 팀원들에게 AI가 슬랙 내용을 읽을 수 있다는 걸 미리 공유하는 게 좋다.


실전 활용 시나리오: 이게 진짜 달라지는 경험

세팅이 끝났으니 실제로 어떻게 쓰는지 보자.

시나리오 1: Notion 기획서 → 코드 자동 생성

우리 팀은 API 스펙을 Notion에 적어둔다. 예전에는 개발할 때 Notion 페이지 열어놓고, 중요한 부분 복사해서 Claude에 붙이고, 코드 생성 요청하는 게 루틴이었다.

이제는 이렇게 한다:

"Notion에서 'User API v2 설계' 페이지 읽고, 거기 나온 엔드포인트대로
Express.js + Zod 유효성 검사 포함한 라우터 파일 만들어줘."

Claude가 직접 Notion 페이지를 읽어서 스펙을 파악하고, 코드를 생성한다. 복붙 과정이 사라졌다. 시간도 시간이지만 “아 이 부분 복붙 빠뜨렸나?” 하는 실수도 없어진다.

시나리오 2: GitHub 이슈 컨텍스트 기반 PR 리뷰

코드 리뷰할 때 이슈 배경을 모르면 “왜 이렇게 구현했지?” 싶은 부분이 많다.

"GitHub에서 저장소 my-org/my-app의 PR #247 읽어서,
연결된 이슈와 함께 변경 사항의 의도가 맞는지 검토해줘."

PR의 diff와 연결된 이슈를 같이 보고 코드 변경이 이슈 해결에 적합한지 검토해준다. 컨텍스트를 수동으로 모아줄 필요가 없다.

시나리오 3: DB 스키마 기반 마이그레이션 생성

"postgres에서 현재 users 테이블 스키마 확인하고,
'profile_picture_url' 컬럼 추가하는 마이그레이션 파일(Prisma 스키마 + SQL) 만들어줘."

스키마를 직접 읽어서 기존 구조에 맞는 마이그레이션을 생성한다. 스키마 문서가 구버전인 경우에도 실제 DB 상태 기반으로 작업하니 안심이 된다.

개발자 코딩 환경


MCP 쓰면서 겪은 삽질들

좋은 얘기만 하면 광고 같으니까, 실제로 불편했던 것들도 솔직히 적겠다.

1. 설정 오류 메시지가 불친절하다

JSON 설정 파일에 오타가 있으면 Claude Desktop이 그냥 “MCP 서버 연결 실패”라고만 뜬다. 어디가 문제인지 알아내는 게 처음엔 꽤 고생스러웠다. 설정 파일을 수정하고 재시작할 때마다 로그를 확인하는 습관을 들이자.

macOS 기준 로그 위치:

~/Library/Logs/Claude/mcp*.log

2. 권한 설정을 잘못하면 불안하다

파일 시스템 MCP에 루트 디렉토리를 통째로 넣었다가 “AI가 내 전체 디스크에 접근할 수 있다”는 사실에 소름이 돋았다. 반드시 필요한 경로만 지정하자. GitHub 토큰도 최소한의 권한만 부여하는 게 좋다.

3. 느린 경우가 있다

MCP 서버를 여러 개 붙여두면 Claude가 컨텍스트를 수집하는 시간이 추가된다. 특히 Notion에서 큰 페이지를 읽어올 때 응답이 늦어지는 걸 느꼈다. 실제로 필요한 서버만 활성화해두는 게 낫다.

4. 인증 토큰 관리

설정 파일에 API 키를 직접 넣는 게 불편하다. 특히 설정 파일을 dotfiles으로 관리하거나 팀원과 공유할 때 키가 노출될 위험이 있다. 환경 변수로 분리하는 방법을 고민해야 한다.


나만의 MCP 서버 만들기: 생각보다 쉽다

공식 MCP SDK를 쓰면 TypeScript나 Python으로 직접 MCP 서버를 만들 수 있다. 내가 만들어본 것 중 가장 실용적이었던 건 “사내 API 문서 서버”였다.

회사 내부 API 문서가 Confluence에 있는데, Confluence MCP 서버는 없었다. 그래서 직접 만들었다.

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new Server(
  { name: "company-docs", version: "1.0.0" },
  { capabilities: { tools: {} } }
);

// API 문서 검색 툴 등록
server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [
    {
      name: "search_api_docs",
      description: "회사 내부 API 문서에서 검색합니다",
      inputSchema: {
        type: "object",
        properties: {
          query: { type: "string", description: "검색어" }
        },
        required: ["query"]
      }
    }
  ]
}));

// 실제 Confluence API 호출 로직 구현
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name === "search_api_docs") {
    const results = await searchConfluence(request.params.arguments.query);
    return { content: [{ type: "text", text: JSON.stringify(results) }] };
  }
});

const transport = new StdioServerTransport();
await server.connect(transport);

이 정도 뼈대에 실제 Confluence REST API 호출 로직만 추가하면 된다. 생각보다 어렵지 않았다. MCP SDK 문서가 잘 되어 있어서 하루 안에 기본 동작하는 서버를 만들 수 있었다.


MCP 에코시스템 현황

2026년 현재 MCP 에코시스템은 빠르게 성장하고 있다. 커뮤니티에서 관리하는 MCP 서버 목록을 보면 수백 개가 넘는다. 주요한 것들을 카테고리별로 정리하면:

개발 도구

  • Git, GitHub, GitLab
  • Jira, Linear
  • Docker, Kubernetes

생산성 / 문서

  • Notion, Confluence, Google Docs
  • Slack, Discord, Microsoft Teams

데이터베이스

  • PostgreSQL, MySQL, SQLite
  • MongoDB, Redis
  • Supabase, PlanetScale

검색 / 웹

  • Brave Search, DuckDuckGo
  • Puppeteer (웹 스크래핑)

AI / ML

  • Hugging Face
  • 각종 벡터 DB (Pinecone, Qdrant)

Claude Desktop 앱에서는 Claude > Settings > Developer 메뉴에서 연결된 MCP 서버 상태를 확인할 수 있다.


MCP를 극대화하는 사용 팁

실제로 몇 달 써보면서 터득한 팁들이다.

팁 1: 도구를 명시적으로 요청하라

Claude가 알아서 MCP 도구를 쓸 수도 있지만, 명시적으로 지정하는 게 더 확실하다.

  • “GitHub에서 이슈 확인해서…” ← 이런 식으로 어떤 MCP를 써야 하는지 암시하자.

팁 2: 여러 MCP를 조합하라

단독으로 쓰는 것보다 조합할 때 시너지가 난다.

"GitHub에서 이번 주 머지된 PR 목록 가져오고,
각 PR의 담당자를 Slack에서 찾아서 변경 사항 요약을 DM으로 보내줘."

이런 멀티스텝 자동화가 가능해진다.

팁 3: 읽기 전용 권한으로 시작하라

처음 쓸 때는 쓰기 권한 없이 읽기만 허용하는 것부터 시작하자. AI가 예상치 못한 데이터를 수정하는 사태를 막을 수 있다.

팁 4: 민감한 데이터는 분리하라

프로덕션 DB에는 직접 연결하지 말자. 읽기 전용 리플리카나 스테이징 환경에 연결하는 게 안전하다.


마무리: AI 코딩 도구의 다음 단계

MCP는 AI 코딩 도구가 “대화 상자 안의 도우미”에서 “시스템과 연결된 에이전트”로 진화하는 전환점이다. 파일 하나 복붙하는 수고가 없어지는 게 작은 것 같아도, 실제로 하루에 수십 번 반복하던 작업들이 사라지면 체감이 꽤 크다.

물론 아직 완벽하지 않다. 설정이 번거롭고, 오류 메시지가 불친절하고, 보안 관리가 신경 쓰인다. 하지만 이 기술이 성숙해지면서 점점 더 쉬워질 거라는 건 확실하다. 지금 얼리 어답터로 써보면 나중에 “이거 진작 썼어야 했는데”가 될 가능성이 높다.

시작은 간단하다. 파일 시스템 MCP 하나만 붙여봐라. 그것만으로도 “아, 이런 느낌이구나”가 온다. 거기서 점점 필요한 서버를 추가해나가면 된다.

이 글에서 소개한 MCP 서버들:

MCP 서버 전체 목록은 awesome-mcp-servers 레포에서 확인할 수 있다. 거기 보면 내가 상상도 못한 통합들이 잔뜩 있어서 또 새벽 2시가 될 수 있으니 주의.