레퍼런스
Claude Code에 MCP 서버 추가하기
원격 서버는 `claude mcp add --transport http <이름> <URL>`, 로컬 프로세스는 `claude mcp add <이름> -- <명령>`입니다. `--` 뒤의 내용은 그대로 서버에 전달됩니다. 실무에서 헷갈리는 건 명령 형식보다 범위입니다. `local`(기본, 본인만), `project`(저장소의 `.mcp.json`으로 공유), `user`(모든 프로젝트, 본인만) 셋이고, 팀 전원에게 같은 서버를 배포하려면 `--scope project` 외에 선택지가 없습니다.
전송 방식별 형식
# HTTP(원격, 권장)
claude mcp add --transport http notion https://mcp.notion.com/mcp
# HTTP + Bearer 토큰
claude mcp add --transport http <이름> <URL> \
--header "Authorization: Bearer your-token"
# stdio(로컬 프로세스, -- 이후는 서버로 그대로 전달)
claude mcp add --env API_KEY=your-key --transport stdio myserver \
-- python server.py --port 8080
# SSE(공식 문서에서 사용 중단 표시)
claude mcp add --transport sse asana https://mcp.asana.com/sse 범위: 이 서버는 누구에게 보이나
| 범위 | 적용 대상 | 공유 여부 | 저장 위치 |
|---|---|---|---|
| local(기본) | 현재 프로젝트만 | 안 됨 | ~/.claude.json |
| project | 현재 프로젝트만 | 됨(.mcp.json 경유) | 프로젝트 루트의 .mcp.json |
| user | 본인의 모든 프로젝트 | 안 됨 | ~/.claude.json |
# 팀 공유(저장소에 커밋됨)
claude mcp add --transport http shared-server --scope project https://example.com/mcp
# 모든 프로젝트에서 나만 사용
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic 가장 흔한 착각
`local`과 `project`는 적용 범위가 똑같이 "현재 프로젝트만"입니다. 다른 것은 저장 위치입니다. `local`은 `~/.claude.json`(내 컴퓨터), `project`는 저장소 안의 `.mcp.json`입니다. "팀에 배포한 줄 알았는데 나만 쓰고 있었다"는 사고는 거의 이 지점에서 납니다.
.mcp.json의 모습
{
"mcpServers": {
"shared-server": {
"type": "http",
"url": "https://example.com/mcp"
}
}
} 인증 네 가지
- OAuth 2.0: 서버를 추가한 뒤 세션 안에서 `/mcp` 패널로 인증합니다. 명령줄에서는 `claude mcp login <이름>` / `claude mcp logout <이름>`.
- 사전 설정한 OAuth 자격 증명: `--client-id`, `--client-secret`, `--callback-port`로 지정합니다. CI에서는 `MCP_CLIENT_SECRET` 환경 변수를 쓰는 형태가 제시되어 있습니다.
- 정적 헤더: API 키나 토큰을 `--header "Authorization: Bearer ..."` 또는 `--header "X-API-Key: ..."`로 전달합니다.
- 동적 헤더: `.mcp.json`의 `headersHelper`에 스크립트 경로를 적으면 그 스크립트가 반환한 값이 헤더가 됩니다. 사내 인증 기반에 붙일 때 쓰는 방식입니다.
관리 명령
claude mcp list # 등록된 서버 목록
claude mcp get notion # 개별 서버 상세
claude mcp remove notion # 삭제
# 세션 안에서
/mcp # 연결 상태 확인과 OAuth 인증 운영 조언 하나만 덧붙입니다. 처음부터 여러 서버를 붙이지 마세요. 에이전트가 쓸 수 있는 도구가 많아질수록 엉뚱한 도구를 고를 여지도 커집니다. 하나 붙이고 `/mcp`로 실제로 쓰이는지 확인한 뒤 다음으로 넘어가는 편이 결과적으로 더 빨리 안정됩니다.
자주 묻는 질문
- claude mcp add의 범위는 무엇을 골라야 하나요?
- 팀 전원에게 같은 서버를 배포하려면 `--scope project`입니다. 이 범위만 저장소의 .mcp.json에 기록되어 버전 관리로 공유됩니다. 내 모든 프로젝트에서 쓰고 싶은 개인 서버는 `--scope user`, 이 프로젝트의 내 환경에서만 쓰려면 기본값 local입니다.
- stdio에서 인자를 어떻게 전달하나요?
- `claude mcp add <이름> -- <명령> [인자...]` 형태이며 `--` 뒤의 내용이 그대로 서버로 전달됩니다. 환경 변수는 `--env KEY=VALUE`를 `--` 앞에 둡니다. 예: claude mcp add --env API_KEY=your-key --transport stdio myserver -- python server.py --port 8080.
- SSE는 아직 쓸 수 있나요?
- 쓸 수는 있지만 공식 문서가 SSE 전송을 사용 중단(deprecated)으로 명시하고 원격 서버에는 HTTP를 권장합니다. 기존 SSE 설정은 계속 동작하지만 새로 추가하는 서버는 --transport http를 쓰세요.
- API 키는 어디에 두는 게 안전한가요?
- 정적 키는 `--header`로 헤더에 실어 보내는 것이 기본입니다. 다만 project 범위에서 .mcp.json에 평문으로 넣으면 저장소에 남습니다. 사내 인증 기반이 있다면 .mcp.json의 headersHelper에 스크립트를 지정해 실행 시점에 헤더를 생성하는 방식이 권장됩니다.
출처
- Claude Code 공식 문서 — MCP — 최종 확인: 2026-09-05
- Model Context Protocol 공식 문서(입문) — 최종 확인: 2026-09-05