Model Context Protocol (MCP)은 LLM이 외부 도구와 데이터 소스에 액세스할 수 있도록 하는 개방형 프로토콜입니다. MCP에 대한 자세한 내용은 MCP 문서를 참조하세요.

타사 MCP 서버는 본인의 책임하에 사용하세요. MCP 서버를 신뢰할 수 있는지 확인하고, 특히 인터넷과 통신하는 MCP 서버를 사용할 때는 프롬프트 주입 위험에 노출될 수 있으므로 각별히 주의하세요.

MCP 서버 구성

1

MCP stdio 서버 추가

# 기본 구문
claude mcp add <name> <command> [args...]

# 예시: 로컬 서버 추가
claude mcp add my-server -e API_KEY=123 -- /path/to/server arg1 arg2
2

MCP SSE 서버 추가

# 기본 구문
claude mcp add --transport sse <name> <url>

# 예시: SSE 서버 추가
claude mcp add --transport sse sse-server https://example.com/sse-endpoint

# 예시: 사용자 정의 헤더가 있는 SSE 서버 추가
claude mcp add --transport sse api-server https://api.example.com/mcp -e X-API-Key=your-key
3

MCP HTTP 서버 추가

# 기본 구문
claude mcp add --transport http <name> <url>

# 예시: 스트리밍 가능한 HTTP 서버 추가
claude mcp add --transport http http-server https://example.com/mcp

# 예시: 인증 헤더가 있는 HTTP 서버 추가
claude mcp add --transport http secure-server https://api.example.com/mcp -e Authorization="Bearer your-token"
4

MCP 서버 관리

# 구성된 모든 서버 목록 표시
claude mcp list

# 특정 서버의 세부 정보 가져오기
claude mcp get my-server

# 서버 제거
claude mcp remove my-server

팁:

  • -s 또는 --scope 플래그를 사용하여 구성이 저장되는 위치를 지정하세요:
    • local (기본값): 현재 프로젝트에서만 사용 가능 (이전 버전에서는 project라고 불림)
    • project: .mcp.json 파일을 통해 프로젝트의 모든 사용자와 공유
    • user: 모든 프로젝트에서 사용 가능 (이전 버전에서는 global이라고 불림)
  • -e 또는 --env 플래그로 환경 변수 설정 (예: -e KEY=value)
  • MCP_TIMEOUT 환경 변수를 사용하여 MCP 서버 시작 시간 초과 구성 (예: MCP_TIMEOUT=10000 claude는 10초 시간 초과 설정)
  • Claude Code 내에서 /mcp 명령을 사용하여 언제든지 MCP 서버 상태 확인
  • MCP는 Claude Code(클라이언트)가 여러 전문 서버에 연결할 수 있는 클라이언트-서버 아키텍처를 따름
  • Claude Code는 실시간 통신을 위해 SSE(Server-Sent Events) 및 스트리밍 가능한 HTTP 서버를 지원
  • OAuth 2.0 인증이 필요한 원격 서버와 인증하려면 /mcp를 사용하세요

MCP 서버 범위 이해

MCP 서버는 세 가지 다른 범위 수준에서 구성할 수 있으며, 각각 서버 접근성과 공유를 관리하는 고유한 목적을 제공합니다. 이러한 범위를 이해하면 특정 요구 사항에 가장 적합한 서버 구성 방법을 결정하는 데 도움이 됩니다.

범위 계층 및 우선순위

MCP 서버 구성은 명확한 우선순위 계층을 따릅니다. 동일한 이름의 서버가 여러 범위에 존재할 때, 시스템은 로컬 범위 서버를 먼저 우선시하고, 그 다음 프로젝트 범위 서버, 마지막으로 사용자 범위 서버 순으로 충돌을 해결합니다. 이 설계는 필요할 때 개인 구성이 공유 구성을 재정의할 수 있도록 보장합니다.

로컬 범위

로컬 범위 서버는 기본 구성 수준을 나타내며 프로젝트별 사용자 설정에 저장됩니다. 이러한 서버는 사용자에게만 비공개로 유지되며 현재 프로젝트 디렉터리 내에서 작업할 때만 액세스할 수 있습니다. 이 범위는 개인 개발 서버, 실험적 구성 또는 공유되어서는 안 되는 민감한 자격 증명이 포함된 서버에 이상적입니다.

# 로컬 범위 서버 추가 (기본값)
claude mcp add my-private-server /path/to/server

# 명시적으로 로컬 범위 지정
claude mcp add my-private-server -s local /path/to/server

프로젝트 범위

프로젝트 범위 서버는 프로젝트 루트 디렉터리의 .mcp.json 파일에 구성을 저장하여 팀 협업을 가능하게 합니다. 이 파일은 버전 제어에 체크인되도록 설계되어 모든 팀 구성원이 동일한 MCP 도구와 서비스에 액세스할 수 있도록 보장합니다. 프로젝트 범위 서버를 추가하면 Claude Code가 자동으로 이 파일을 생성하거나 적절한 구성 구조로 업데이트합니다.

# 프로젝트 범위 서버 추가
claude mcp add shared-server -s project /path/to/server

결과 .mcp.json 파일은 표준화된 형식을 따릅니다:

{
  "mcpServers": {
    "shared-server": {
      "command": "/path/to/server",
      "args": [],
      "env": {}
    }
  }
}

보안상의 이유로 Claude Code는 .mcp.json 파일의 프로젝트 범위 서버를 사용하기 전에 승인을 요청합니다. 이러한 승인 선택을 재설정해야 하는 경우 claude mcp reset-project-choices 명령을 사용하세요.

사용자 범위

사용자 범위 서버는 프로젝트 간 접근성을 제공하여 사용자 계정에 비공개로 유지하면서 머신의 모든 프로젝트에서 사용할 수 있게 합니다. 이 범위는 개인 유틸리티 서버, 개발 도구 또는 다양한 프로젝트에서 자주 사용하는 서비스에 적합합니다.

# 사용자 서버 추가
claude mcp add my-user-server -s user /path/to/server

올바른 범위 선택

다음을 기준으로 범위를 선택하세요:

  • 로컬 범위: 개인 서버, 실험적 구성 또는 하나의 프로젝트에 특정한 민감한 자격 증명
  • 프로젝트 범위: 팀 공유 서버, 프로젝트별 도구 또는 협업에 필요한 서비스
  • 사용자 범위: 여러 프로젝트에서 필요한 개인 유틸리티, 개발 도구 또는 자주 사용하는 서비스

원격 MCP 서버와 인증

많은 원격 MCP 서버는 인증이 필요합니다. Claude Code는 이러한 서버에 안전하게 연결하기 위한 OAuth 2.0 인증 플로우를 지원합니다.

1

인증이 필요한 원격 서버 추가

# OAuth가 필요한 SSE 또는 HTTP 서버 추가
claude mcp add --transport sse github-server https://api.github.com/mcp
2

/mcp 명령을 사용하여 인증

Claude Code 내에서 /mcp 명령을 사용하여 인증을 관리하세요:

> /mcp

이렇게 하면 다음을 수행할 수 있는 대화형 메뉴가 열립니다:

  • 모든 서버의 연결 상태 보기
  • OAuth가 필요한 서버와 인증
  • 기존 인증 지우기
  • 서버 기능 보기
3

OAuth 플로우 완료

서버에 대해 “인증”을 선택하면:

  1. 브라우저가 자동으로 OAuth 공급자로 열립니다
  2. 브라우저에서 인증을 완료합니다
  3. Claude Code가 액세스 토큰을 받아 안전하게 저장합니다
  4. 서버 연결이 활성화됩니다

팁:

  • 인증 토큰은 안전하게 저장되고 자동으로 새로 고쳐집니다
  • /mcp 메뉴에서 “인증 지우기”를 사용하여 액세스를 취소하세요
  • 브라우저가 자동으로 열리지 않으면 제공된 URL을 복사하세요
  • OAuth 인증은 SSE 및 HTTP 전송 모두에서 작동합니다

Postgres MCP 서버에 연결

Claude에게 쿼리 및 스키마 검사를 위해 PostgreSQL 데이터베이스에 대한 읽기 전용 액세스 권한을 부여하려고 한다고 가정해 보겠습니다.

1

Postgres MCP 서버 추가

claude mcp add postgres-server /path/to/postgres-mcp-server --connection-string "postgresql://user:pass@localhost:5432/mydb"
2

Claude로 데이터베이스 쿼리

> 사용자 테이블의 스키마를 설명해 주세요
> 시스템에서 가장 최근 주문은 무엇인가요?
> 고객과 송장 간의 관계를 보여주세요

팁:

  • Postgres MCP 서버는 안전을 위해 읽기 전용 액세스를 제공합니다
  • Claude는 데이터베이스 구조를 탐색하고 분석 쿼리를 실행하는 데 도움을 줄 수 있습니다
  • 이를 사용하여 익숙하지 않은 프로젝트의 데이터베이스 스키마를 빠르게 이해할 수 있습니다
  • 연결 문자열이 필요한 최소 권한을 가진 적절한 자격 증명을 사용하는지 확인하세요

JSON 구성에서 MCP 서버 추가

Claude Code에 추가하려는 단일 MCP 서버에 대한 JSON 구성이 있다고 가정해 보겠습니다.

1

JSON에서 MCP 서버 추가

# 기본 구문
claude mcp add-json <name> '<json>'

# 예시: JSON 구성으로 stdio 서버 추가
claude mcp add-json weather-api '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'
2

서버가 추가되었는지 확인

claude mcp get weather-api

팁:

  • 셸에서 JSON이 올바르게 이스케이프되었는지 확인하세요
  • JSON은 MCP 서버 구성 스키마를 준수해야 합니다
  • -s global을 사용하여 프로젝트별 구성 대신 전역 구성에 서버를 추가할 수 있습니다

Claude Desktop에서 MCP 서버 가져오기

Claude Desktop에서 이미 MCP 서버를 구성했고 수동으로 다시 구성하지 않고 Claude Code에서 동일한 서버를 사용하려고 한다고 가정해 보겠습니다.

1

Claude Desktop에서 서버 가져오기

# 기본 구문 
claude mcp add-from-claude-desktop 
2

가져올 서버 선택

명령을 실행한 후 가져올 서버를 선택할 수 있는 대화형 대화 상자가 표시됩니다.

3

서버가 가져와졌는지 확인

claude mcp list 

팁:

  • 이 기능은 macOS 및 Windows Subsystem for Linux(WSL)에서만 작동합니다
  • 해당 플랫폼의 표준 위치에서 Claude Desktop 구성 파일을 읽습니다
  • -s global 플래그를 사용하여 전역 구성에 서버를 추가하세요
  • 가져온 서버는 Claude Desktop에서와 동일한 이름을 갖습니다
  • 동일한 이름의 서버가 이미 존재하는 경우 숫자 접미사가 붙습니다 (예: server_1)

Claude Code를 MCP 서버로 사용

Claude Code 자체를 다른 애플리케이션이 연결할 수 있는 MCP 서버로 사용하여 Claude의 도구와 기능을 제공하려고 한다고 가정해 보겠습니다.

1

Claude를 MCP 서버로 시작

# 기본 구문
claude mcp serve
2

다른 애플리케이션에서 연결

Claude Desktop과 같은 모든 MCP 클라이언트에서 Claude Code MCP 서버에 연결할 수 있습니다. Claude Desktop을 사용하는 경우 다음 구성을 사용하여 Claude Code MCP 서버를 추가할 수 있습니다:

{
  "command": "claude",
  "args": ["mcp", "serve"],
  "env": {}
}

팁:

  • 서버는 View, Edit, LS 등과 같은 Claude의 도구에 대한 액세스를 제공합니다
  • Claude Desktop에서 Claude에게 디렉터리의 파일을 읽고, 편집하는 등의 작업을 요청해 보세요
  • 이 MCP 서버는 단순히 Claude Code의 도구를 MCP 클라이언트에 노출하는 것이므로, 개별 도구 호출에 대한 사용자 확인을 구현하는 것은 클라이언트의 책임입니다

MCP 리소스 사용

MCP 서버는 파일을 참조하는 방법과 유사하게 @ 멘션을 사용하여 참조할 수 있는 리소스를 노출할 수 있습니다.

MCP 리소스 참조

1

사용 가능한 리소스 목록 표시

프롬프트에서 @를 입력하여 연결된 모든 MCP 서버에서 사용 가능한 리소스를 확인하세요. 리소스는 자동 완성 메뉴에서 파일과 함께 나타납니다.

2

특정 리소스 참조

@server:protocol://resource/path 형식을 사용하여 리소스를 참조하세요:

> @github:issue://123을 분석하고 수정 방법을 제안해 주실 수 있나요?
> @docs:file://api/authentication에서 API 문서를 검토해 주세요
3

여러 리소스 참조

단일 프롬프트에서 여러 리소스를 참조할 수 있습니다:

> @postgres:schema://users와 @docs:file://database/user-model을 비교해 주세요

팁:

  • 리소스는 참조될 때 자동으로 가져와서 첨부 파일로 포함됩니다
  • 리소스 경로는 @ 멘션 자동 완성에서 퍼지 검색이 가능합니다
  • Claude Code는 서버가 지원할 때 MCP 리소스를 나열하고 읽는 도구를 자동으로 제공합니다
  • 리소스는 MCP 서버가 제공하는 모든 유형의 콘텐츠(텍스트, JSON, 구조화된 데이터 등)를 포함할 수 있습니다

MCP 프롬프트를 슬래시 명령으로 사용

MCP 서버는 Claude Code에서 슬래시 명령으로 사용할 수 있는 프롬프트를 노출할 수 있습니다.

MCP 프롬프트 실행

1

사용 가능한 프롬프트 발견

/를 입력하여 MCP 서버의 명령을 포함한 모든 사용 가능한 명령을 확인하세요. MCP 프롬프트는 /mcp__servername__promptname 형식으로 나타납니다.

2

인수 없이 프롬프트 실행

> /mcp__github__list_prs
3

인수와 함께 프롬프트 실행

많은 프롬프트가 인수를 받습니다. 명령 뒤에 공백으로 구분하여 전달하세요:

> /mcp__github__pr_review 456
> /mcp__jira__create_issue "로그인 플로우의 버그" high

팁:

  • MCP 프롬프트는 연결된 서버에서 동적으로 발견됩니다
  • 인수는 프롬프트의 정의된 매개변수를 기반으로 구문 분석됩니다
  • 프롬프트 결과는 대화에 직접 주입됩니다
  • 서버 및 프롬프트 이름은 정규화됩니다 (공백은 밑줄이 됩니다)