MCP๋ฅผ ํตํด Claude Code๋ฅผ ๋๊ตฌ์ ์ฐ๊ฒฐํ๊ธฐ
Model Context Protocol์ ์ฌ์ฉํ์ฌ Claude Code๋ฅผ ๋๊ตฌ์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ๋๋ค.
Claude Code๋ AI ๋๊ตฌ ํตํฉ์ ์ํ ์คํ ์์ค ํ์ค์ธ Model Context Protocol (MCP)๋ฅผ ํตํด ์๋ฐฑ ๊ฐ์ ์ธ๋ถ ๋๊ตฌ ๋ฐ ๋ฐ์ดํฐ ์์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. MCP ์๋ฒ๋ Claude Code์ ๋๊ตฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ API์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ค๋ฅธ ๋๊ตฌ(์: ์ด์ ์ถ์ ๊ธฐ ๋๋ ๋ชจ๋ํฐ๋ง ๋์๋ณด๋)์์ ์ฑํ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๋ ์์ ์ ๋ฐ๊ฒฌํ ๋ ์๋ฒ๋ฅผ ์ฐ๊ฒฐํ์ธ์. ์ฐ๊ฒฐ๋๋ฉด Claude๋ ๋ถ์ฌ๋ฃ์ ๋ด์ฉ์์ ์์ ํ๋ ๋์ ํด๋น ์์คํ ์ ์ง์ ์ฝ๊ณ ์๋ํ ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ์๋ฒ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒฝ์ฐ ๋จ๊ณ๋ณ ์๋ด๋ฅผ ์ํด MCP ๋น ๋ฅธ ์์์ผ๋ก ์์ํ์ธ์. ์ด ํ์ด์ง๋ ์ ์ฒด ์ฐธ๊ณ ์๋ฃ์ ๋๋ค.
MCP๋ก ํ ์ ์๋ ๊ฒ
MCP ์๋ฒ๊ฐ ์ฐ๊ฒฐ๋๋ฉด Claude Code์ ๋ค์์ ์์ฒญํ ์ ์์ต๋๋ค:
- ์ด์ ์ถ์ ๊ธฐ์์ ๊ธฐ๋ฅ ๊ตฌํ: "JIRA ์ด์ ENG-4521์ ์ค๋ช ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ GitHub์์ PR์ ์์ฑํ์ธ์."
- ๋ชจ๋ํฐ๋ง ๋ฐ์ดํฐ ๋ถ์: "Sentry์ Statsig์ ํ์ธํ์ฌ ENG-4521์ ์ค๋ช ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ๋์ ํ์ธํ์ธ์."
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ: "PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ๋ฅ ENG-4521์ ์ฌ์ฉํ ๋ฌด์์ ์ฌ์ฉ์ 10๋ช ์ ์ด๋ฉ์ผ์ ์ฐพ์ผ์ธ์."
- ๋์์ธ ํตํฉ: "Slack์ ๊ฒ์๋ ์๋ก์ด Figma ๋์์ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ค ์ด๋ฉ์ผ ํ ํ๋ฆฟ์ ์ ๋ฐ์ดํธํ์ธ์."
- ์ํฌํ๋ก์ฐ ์๋ํ: "์ด 10๋ช ์ ์ฌ์ฉ์๋ฅผ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ํผ๋๋ฐฑ ์ธ์ ์ ์ด๋ํ๋ Gmail ์ด์์ ์์ฑํ์ธ์."
- ์ธ๋ถ ์ด๋ฒคํธ์ ๋ฐ์: MCP ์๋ฒ๋ ์ฑ๋๋ก๋ ์๋ํ ์ ์์ผ๋ฉฐ, ์ธ์ ์ ๋ฉ์์ง๋ฅผ ํธ์ํ๋ฏ๋ก Claude๋ ์๋ฆฌ๋ฅผ ๋น์ด ๋์ Telegram ๋ฉ์์ง, Discord ์ฑํ ๋๋ webhook ์ด๋ฒคํธ์ ๋ฐ์ํ ์ ์์ต๋๋ค.
MCP ์๋ฒ ์ฐพ๊ธฐ ๋ฐ ๊ตฌ์ถ
Anthropic Directory์์ ๊ฒํ ๋ ์ปค๋ฅํฐ๋ฅผ ์ฐพ์๋ณด์ธ์. Directory ์ปค๋ฅํฐ๋ Claude Code์ ๋์ผํ MCP ์ธํ๋ผ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก claude mcp add๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๊ธฐ์ ๋์ด๋ ๋ชจ๋ ์๊ฒฉ ์๋ฒ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ฐ๊ฒฐํ๊ธฐ ์ ์ ๊ฐ ์๋ฒ๋ฅผ ์ ๋ขฐํ ์ ์๋์ง ํ์ธํ์ธ์. ์ธ๋ถ ์ฝํ ์ธ ๋ฅผ ๊ฐ์ ธ์ค๋ ์๋ฒ๋ ํ๋กฌํํธ ์ฃผ์ ์ํ์ ๋ ธ์ถ๋ ์ ์์ต๋๋ค.
์์ ๋ง์ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ ค๋ฉด ํ๋กํ ์ฝ ๊ธฐ๋ณธ ์ฌํญ์ ๋ํ MCP ์๋ฒ ๊ฐ์ด๋์ ์ธ์ฆ, ํ ์คํธ ๋ฐ Directory ์ ์ถ์ ๋ํ Claude ์ปค๋ฅํฐ ๊ตฌ์ถ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ณต์ mcp-server-dev ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ Claude๊ฐ ์๋ฒ๋ฅผ ์ค์บํด๋ํ๋๋ก ํ ์๋ ์์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ ์ค์น
Claude Code ์ธ์ ์์ ๋ค์์ ์คํํ์ธ์:
/plugin install mcp-server-dev@claude-plugins-official
Claude Code๊ฐ ๋ง์ผํ๋ ์ด์ค๋ฅผ ์ฐพ์ ์ ์๋ค๊ณ ๋ณด๊ณ ํ๋ฉด ๋จผ์ /plugin marketplace add anthropics/claude-plugins-official์ ์คํํ ๋ค์ ์ค์น๋ฅผ ๋ค์ ์๋ํ์ธ์. ์ค์น๊ฐ ์๋ฃ๋๋ฉด /reload-plugins๋ฅผ ์คํํ์ฌ ํ์ฌ ์ธ์
์์ ํ์ฑํํ์ธ์.
๋น๋ ์คํฌ ์คํ
/mcp-server-dev:build-mcp-server
Claude๊ฐ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ๋ฌป๊ณ ์๊ฒฉ HTTP ๋๋ ๋ก์ปฌ stdio ์๋ฒ๋ฅผ ์ค์บํด๋ํฉ๋๋ค.
MCP ์๋ฒ ์ค์น
MCP ์๋ฒ๋ ํ์์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค:
์ต์ 1: ์๊ฒฉ HTTP ์๋ฒ ์ถ๊ฐ
HTTP ์๋ฒ๋ ์๊ฒฉ MCP ์๋ฒ์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ๊ถ์ฅ ์ต์ ์ ๋๋ค. ์ด๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์๋น์ค์ ๊ฐ์ฅ ๋๋ฆฌ ์ง์๋๋ ์ ์ก ๋ฐฉ์์ ๋๋ค.
# ๊ธฐ๋ณธ ๊ตฌ๋ฌธ
claude mcp add --transport http <name> <url>
# ์ค์ ์: Notion์ ์ฐ๊ฒฐ
claude mcp add --transport http notion https://mcp.notion.com/mcp
# Bearer ํ ํฐ์ ์ฌ์ฉํ ์
claude mcp add --transport http secure-api https://api.example.com/mcp \
--header "Authorization: Bearer your-token"
.mcp.json, ~/.claude.json ๋๋ claude mcp add-json์ ํตํด JSON์ผ๋ก MCP ์๋ฒ๋ฅผ ๊ตฌ์ฑํ ๋, type ํ๋๋ http์ ๋ณ์นญ์ผ๋ก streamable-http๋ฅผ ํ์ฉํฉ๋๋ค. MCP ์ฌ์์ ์ด ์ ์ก์ ๋ํด streamable-http๋ผ๋ ์ด๋ฆ์ ์ฌ์ฉํ๋ฏ๋ก ์๋ฒ ์ค๋ช
์์์ ๋ณต์ฌํ ๊ตฌ์ฑ์ด ์์ ์์ด ์๋ํฉ๋๋ค.
์ต์ 2: ์๊ฒฉ SSE ์๋ฒ ์ถ๊ฐ
SSE (Server-Sent Events) ์ ์ก์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๊ฐ๋ฅํ ๊ฒฝ์ฐ HTTP ์๋ฒ๋ฅผ ์ฌ์ฉํ์ธ์.
# ๊ธฐ๋ณธ ๊ตฌ๋ฌธ
claude mcp add --transport sse <name> <url>
# ์ค์ ์: Asana์ ์ฐ๊ฒฐ
claude mcp add --transport sse asana https://mcp.asana.com/sse
# ์ธ์ฆ ํค๋๋ฅผ ์ฌ์ฉํ ์
claude mcp add --transport sse private-api https://api.company.com/sse \
--header "X-API-Key: your-key-here"
์ต์ 3: ๋ก์ปฌ stdio ์๋ฒ ์ถ๊ฐ
Stdio ์๋ฒ๋ ์ปดํจํฐ์์ ๋ก์ปฌ ํ๋ก์ธ์ค๋ก ์คํ๋ฉ๋๋ค. ์์คํ ์ ์ง์ ์ก์ธ์คํ๊ฑฐ๋ ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ๊ฐ ํ์ํ ๋๊ตฌ์ ์ด์์ ์ ๋๋ค.
Claude Code๋ ์์ฑ๋ ์๋ฒ์ ํ๊ฒฝ์์ CLAUDE_PROJECT_DIR์ ํ๋ก์ ํธ ๋ฃจํธ๋ก ์ค์ ํ๋ฏ๋ก ์๋ฒ๋ ์์
๋๋ ํฐ๋ฆฌ์ ์์กดํ์ง ์๊ณ ํ๋ก์ ํธ ์๋ ๊ฒฝ๋ก๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ hooks๊ฐ CLAUDE_PROJECT_DIR ๋ณ์์์ ๋ฐ๋ ๊ฒ๊ณผ ๋์ผํ ๋๋ ํฐ๋ฆฌ์
๋๋ค. ์๋ฒ ํ๋ก์ธ์ค ๋ด์์ ์ฝ์ผ์ธ์. ์๋ฅผ ๋ค์ด Node์์๋ process.env.CLAUDE_PROJECT_DIR ๋๋ Python์์๋ os.environ["CLAUDE_PROJECT_DIR"]์
๋๋ค.
์๋ฒ๋ ๋ํ MCP roots/list ์์ฒญ์ ํธ์ถํ ์ ์์ผ๋ฉฐ, ์ด๋ Claude Code๊ฐ ์์๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฐํํฉ๋๋ค.
์ด ๋ณ์๋ Claude Code ์์ฒด์ ํ๊ฒฝ์ด ์๋ ์๋ฒ์ ํ๊ฒฝ์ ์ค์ ๋๋ฏ๋ก ํ๋ก์ ํธ ๋๋ ์ฌ์ฉ์ ๋ฒ์์ .mcp.json command ๋๋ args์์ ${VAR} ํ์ฅ์ ํตํด ์ฐธ์กฐํ๋ ค๋ฉด ${CLAUDE_PROJECT_DIR:-.}์ ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ด ํ์ํฉ๋๋ค. ํ๋ฌ๊ทธ์ธ ์ ๊ณต MCP ๊ตฌ์ฑ์ ${CLAUDE_PROJECT_DIR}์ ์ง์ ๋์ฒดํ๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ด ํ์ํ์ง ์์ต๋๋ค.
# ๊ธฐ๋ณธ ๊ตฌ๋ฌธ
claude mcp add [options] <name> -- <command> [args...]
# ์ค์ ์: Airtable ์๋ฒ ์ถ๊ฐ
claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \
-- npx -y airtable-mcp-server
์ค์: ์๋ฒ ์ธ์๋ฅผ --๋ก ๊ตฌ๋ถ
Stdio ์๋ฒ์ ๊ฒฝ์ฐ, -- (์ด์ค ๋์)๋ Claude์ ์์ฒด ์ต์
(์: --transport, --env, --scope)๊ณผ ์๋ฒ๋ฅผ ์คํํ๋ ๋ช
๋ น ๋ฐ ์ธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค. -- ์ดํ์ ๋ชจ๋ ๊ฒ์ ์๋ฒ์ ๊ทธ๋๋ก ์ ๋ฌ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด:
claude mcp add --transport stdio myserver -- npx serverโnpx server์คํclaude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080โ ํ๊ฒฝ์์KEY=value๋ฅผ ์ฌ์ฉํ์ฌpython server.py --port 8080์คํ
--๊ฐ ์์ผ๋ฉด Claude Code๋ ์์ --port์ ๊ฐ์ ์๋ฒ์ ํ๋๊ทธ๋ฅผ ์์ ์ ์ต์
์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์ํ๋ ค๊ณ ์๋ํฉ๋๋ค.
--env๋ ์ฌ๋ฌ KEY=value ์์ ํ์ฉํฉ๋๋ค. ์๋ฒ ์ด๋ฆ์ด --env ์งํ์ ์ค๋ฉด CLI๋ ์ด๋ฆ์ ๋ค๋ฅธ ์์ผ๋ก ์ฝ๊ณ ๊ฑฐ๋ถํ๋ฏ๋ก ์์ ์์ ๊ฐ์ด --env์ ์๋ฒ ์ด๋ฆ ์ฌ์ด์ ์ต์ํ ํ๋์ ๋ค๋ฅธ ์ต์
์ ๋ฐฐ์นํ์ธ์.
์ต์ 4: ์๊ฒฉ WebSocket ์๋ฒ ์ถ๊ฐ
WebSocket ์๋ฒ๋ ์ง์์ ์ธ ์๋ฐฉํฅ ์ฐ๊ฒฐ์ ์ ์งํ๋ฏ๋ก Claude์ ์๊ณ ์์ด ์ด๋ฒคํธ๋ฅผ ํธ์ํ๋ ์๊ฒฉ MCP ์๋ฒ์ ์ ํฉํฉ๋๋ค. ์๋ฒ๊ฐ ์์ฒญ์๋ง ์๋ตํ๋ ๊ฒฝ์ฐ HTTP๋ฅผ ๋์ ์ฌ์ฉํ์ธ์. HTTP๋ OAuth ๋ฐ claude mcp add --transport ํ๋๊ทธ๋ฅผ ์ง์ํ์ง๋ง WebSocket์ ๋ ๋ค ์ง์ํ์ง ์์ต๋๋ค.
.mcp.json ๋๋ claude mcp add-json์ผ๋ก WebSocket ์๋ฒ๋ฅผ ๊ตฌ์ฑํ์ธ์:
claude mcp add-json events-server \
'{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'
type: "ws" ํญ๋ชฉ์ http์ ๋์ผํ url, headers, headersHelper, timeout ๋ฐ alwaysLoad ํ๋๋ฅผ ํ์ฉํฉ๋๋ค. ์ธ์ฆ์ ํค๋ ์ ์ฉ์ด๋ฏ๋ก headers์ ์ ์ ํ ํฐ์ ์ ๋ฌํ๊ฑฐ๋ headersHelper๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ ์ ํ ํฐ์ ์์ฑํ์ธ์. claude mcp add --transport ํ๋๊ทธ๋ ws๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค.
์๋ฒ ๊ด๋ฆฌ
๊ตฌ์ฑํ ํ์๋ ๋ค์ ๋ช ๋ น์ผ๋ก MCP ์๋ฒ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค:
# ๊ตฌ์ฑ๋ ๋ชจ๋ ์๋ฒ ๋์ด
claude mcp list
# ํน์ ์๋ฒ์ ์ธ๋ถ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
claude mcp get github
# ์๋ฒ ์ ๊ฑฐ
claude mcp remove github
# (Claude Code ๋ด์์) ์๋ฒ ์ํ ํ์ธ
/mcp
.mcp.json์ ํ๋ก์ ํธ ๋ฒ์ ์๋ฒ ์ค ์น์ธ์ ๊ธฐ๋ค๋ฆฌ๋ ์๋ฒ๋ claude mcp list์ โธ ์น์ธ ๋๊ธฐ ์ค์ผ๋ก ๋ํ๋ฉ๋๋ค. claude๋ฅผ ๋ํํ์ผ๋ก ์คํํ์ฌ ๊ฒํ ํ๊ณ ์น์ธํ์ธ์. claude mcp get <name>์ ๋ณด๋ฅ ์ค์ธ ์๋ฒ๋ฅผ โธ ์น์ธ ๋๊ธฐ ์ค์ผ๋ก ํ์ํ๊ณ ๊ฑฐ๋ถ๋ ์๋ฒ๋ฅผ โ ๊ฑฐ๋ถ๋จ์ผ๋ก ํ์ํฉ๋๋ค.
v2.1.196๋ถํฐ claude mcp list ๋ฐ claude mcp get์ .mcp.json ์น์ธ์ claude๋ฅผ ์คํํ๊ณ ์์
์์ญ ์ ๋ขฐ ๋ํ ์์๋ฅผ ์๋ฝํ์ฌ ์์
์์ญ์ ์ ๋ขฐํ ๋๊น์ง ์ ์ฅ์์ ์ฒดํฌ์ธ๋์ง ์์ ์ค์ ํ์ผ์์๋ง ์ฝ์ต๋๋ค. ๋ณต์ ๋ ์ ์ฅ์๋ ์์ ์ ์๋ฒ๋ฅผ ์น์ธํ ์ ์์ต๋๋ค: ํ๋ก์ ํธ์ .claude/settings.json์ ์ปค๋ฐ๋ enableAllProjectMcpServers ๋๋ enabledMcpjsonServers๋ ์ ๋ขฐํ ์ ์๋ ํด๋์์ ๋ฌด์๋๋ฉฐ, ์๋ฒ๋ ์ฐ๊ฒฐ๋๊ณ ์ํ ํ์ธ๋๋ ๋์ โธ ์น์ธ ๋๊ธฐ ์ค์ผ๋ก ์ ์ง๋ฉ๋๋ค.
์ด๋ฌํ ์์ค์ ์น์ธ์ ์ ๋ขฐํ ์ ์๋ ํด๋์์๋ ์ ์ฉ๋ฉ๋๋ค:
- ์ฌ์ฉ์
~/.claude/settings.json - ๊ด๋ฆฌ๋๋ ์ค์
--settings๋ก ์ ๋ฌ๋ ์ค์ .claude/settings.local.json(git์ด ์ถ์ ํ์ง ์๋ ํ)
๋ชจ๋ ์ค์ ํ์ผ์ disabledMcpjsonServers ํญ๋ชฉ์ ์ฌ์ ํ ์๋ฒ๋ฅผ ๊ฑฐ๋ถํฉ๋๋ค.
/mcp ํจ๋์ ๊ฐ ์ฐ๊ฒฐ๋ ์๋ฒ ์์ ๋๊ตฌ ๊ฐ์๋ฅผ ํ์ํ๊ณ ๋๊ตฌ ๊ธฐ๋ฅ์ ๊ด๊ณ ํ์ง๋ง ๋๊ตฌ๋ฅผ ๋
ธ์ถํ์ง ์๋ ์๋ฒ์ ํ๋๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค.
์์ฒญ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์ง ์ฐ๊ฒฐ ์ค์ธ ์๋ฒ์ ๋๊ตฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ Claude๋ ํด๋น ์๋ฒ๊ฐ ์ฐ๊ฒฐ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. ๋๊ตฌ ๊ฒ์์ด ํ์ฑํ๋์ด ์์ผ๋ฉด (๊ธฐ๋ณธ๊ฐ), ๋๊ธฐ๋ ToolSearch ํธ์ถ ๋ด์์ ๋ฐ์ํฉ๋๋ค. Vertex AI, ์ฌ์ฉ์ ์ ์ ANTHROPIC_BASE_URL ๋๋ ENABLE_TOOL_SEARCH=false์ ๊ฐ์ด ๋๊ตฌ ๊ฒ์์ด ์๋ ๊ตฌ์ฑ์์๋ Claude๊ฐ ๋์ WaitForMcpServers ๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์๋ฒ ์ด๋ฆ workspace๋ ๋ด๋ถ ์ฌ์ฉ์ ์ํด ์์ฝ๋์ด ์์ต๋๋ค. ๊ตฌ์ฑ์์ ํด๋น ์ด๋ฆ์ ์๋ฒ๋ฅผ ์ ์ํ๋ฉด Claude Code๋ ๋ก๋ ์ ์ด๋ฅผ ๊ฑด๋๋ฐ๊ณ ์ด๋ฆ์ ๋ฐ๊พธ๋๋ก ์์ฒญํ๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค.
๋์ ๋๊ตฌ ์ ๋ฐ์ดํธ
Claude Code๋ MCP list_changed ์๋ฆผ์ ์ง์ํ๋ฏ๋ก MCP ์๋ฒ๊ฐ ์ฐ๊ฒฐ์ ๋์๋ค๊ฐ ๋ค์ ์ฐ๊ฒฐํ ํ์ ์์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ, ํ๋กฌํํธ ๋ฐ ๋ฆฌ์์ค๋ฅผ ๋์ ์ผ๋ก ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค. MCP ์๋ฒ๊ฐ list_changed ์๋ฆผ์ ๋ณด๋ด๋ฉด Claude Code๋ ํด๋น ์๋ฒ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ์๋์ผ๋ก ์๋ก ๊ณ ์นฉ๋๋ค.
์๋ ์ฌ์ฐ๊ฒฐ
HTTP ๋๋ SSE ์๋ฒ๊ฐ ์ธ์
์ค์ ์ฐ๊ฒฐ์ด ๋์ด์ง๋ฉด Claude Code๋ ์ง์ ๋ฐฑ์คํ๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์ฌ์ฐ๊ฒฐํฉ๋๋ค: ์ต๋ 5๋ฒ์ ์๋, 1์ด ์ง์ฐ์ผ๋ก ์์ํ์ฌ ๋งค๋ฒ ๋ ๋ฐฐ์ฉ ์ฆ๊ฐํฉ๋๋ค. ์๋ฒ๋ ์ฌ์ฐ๊ฒฐ์ด ์งํ ์ค์ธ ๋์ /mcp์์ ๋ณด๋ฅ ์ค์ผ๋ก ๋ํ๋ฉ๋๋ค. 5๋ฒ์ ์คํจ ์๋ ํ ์๋ฒ๋ ์คํจ๋ก ํ์๋๋ฉฐ /mcp์์ ์๋์ผ๋ก ๋ค์ ์๋ํ ์ ์์ต๋๋ค. Stdio ์๋ฒ๋ ๋ก์ปฌ ํ๋ก์ธ์ค์ด๋ฉฐ ์๋์ผ๋ก ์ฌ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค.
HTTP ๋๋ SSE ์๋ฒ๊ฐ ์์ ์ ์ด๊ธฐ ์ฐ๊ฒฐ์ ์คํจํ ๋๋ ๋์ผํ ๋ฐฑ์คํ๊ฐ ์ ์ฉ๋ฉ๋๋ค. v2.1.121๋ถํฐ Claude Code๋ 5xx ์๋ต, ์ฐ๊ฒฐ ๊ฑฐ๋ถ ๋๋ ์๊ฐ ์ด๊ณผ์ ๊ฐ์ ์ผ์์ ์ค๋ฅ์ ๋ํด ์ด๊ธฐ ์ฐ๊ฒฐ์ ์ต๋ 3๋ฒ ์ฌ์๋ํ ํ, ์ฌ์ ํ ์ฐ๊ฒฐํ ์ ์์ผ๋ฉด ์๋ฒ๋ฅผ ์คํจ๋ก ํ์ํฉ๋๋ค. ์ธ์ฆ ๋ฐ ์ฐพ์ ์ ์์ ์ค๋ฅ๋ ํด๊ฒฐํ๊ธฐ ์ํด ๊ตฌ์ฑ ๋ณ๊ฒฝ์ด ํ์ํ๋ฏ๋ก ์ฌ์๋๋์ง ์์ต๋๋ค.
v2.1.191๋ถํฐ ์ฑ๊ณต์ ์ธ ์ฐ๊ฒฐ ํ ์คํ๋๋ ๊ธฐ๋ฅ ๊ฒ์ ์์ฒญ(์: tools/list, prompts/list, resources/list)๋ ์ผ์์ ๋คํธ์ํฌ ๋ฐ ์๋ฒ ์ค๋ฅ๋ฅผ ์งง์ ๋ฐฑ์คํ๋ก ์ต๋ 3๋ฒ ์ฌ์๋ํฉ๋๋ค. ์ธ์ฆ ์ค๋ฅ, 4xx ์๋ต ๋ฐ ์์ฒญ ์๊ฐ ์ด๊ณผ๋ ์ฌ์๋๋์ง ์์ต๋๋ค.
์ฑ๋์ ์ฌ์ฉํ ๋ฉ์์ง ํธ์
MCP ์๋ฒ๋ ๋ํ ๋ฉ์์ง๋ฅผ ์ธ์
์ ์ง์ ํธ์ํ ์ ์์ผ๋ฏ๋ก Claude๋ CI ๊ฒฐ๊ณผ, ๋ชจ๋ํฐ๋ง ๊ฒฝ๊ณ ๋๋ ์ฑํ
๋ฉ์์ง์ ๊ฐ์ ์ธ๋ถ ์ด๋ฒคํธ์ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํ์ฑํํ๋ ค๋ฉด ์๋ฒ๊ฐ claude/channel ๊ธฐ๋ฅ์ ์ ์ธํ๊ณ ์์ ์ --channels ํ๋๊ทธ๋ก ์ตํธ์ธํฉ๋๋ค. ๊ณต์์ ์ผ๋ก ์ง์๋๋ ์ฑ๋์ ์ฌ์ฉํ๋ ค๋ฉด ์ฑ๋์ ์ฐธ์กฐํ๊ฑฐ๋, ์์ ๋ง์ ์ฑ๋์ ๊ตฌ์ถํ๋ ค๋ฉด ์ฑ๋ ์ฐธ์กฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ:
--scopeํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ์ด ์ ์ฅ๋๋ ์์น๋ฅผ ์ง์ ํ์ธ์:local(๊ธฐ๋ณธ๊ฐ): ํ์ฌ ํ๋ก์ ํธ์์๋ง ์ฌ์ฉ์์๊ฒ๋ง ์ฌ์ฉ ๊ฐ๋ฅ. ์ด์ ๋ฒ์ ์์๋ ์ด ๋ฒ์๋ฅผproject๋ผ๊ณ ๋ถ๋ ์ต๋๋คproject:.mcp.jsonํ์ผ์ ํตํด ํ๋ก์ ํธ์ ๋ชจ๋ ์ฌ๋๊ณผ ๊ณต์user: ๋ชจ๋ ํ๋ก์ ํธ์์ ์ฌ์ฉ์์๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ. ์ด์ ๋ฒ์ ์์๋ ์ด ๋ฒ์๋ฅผglobal์ด๋ผ๊ณ ๋ถ๋ ์ต๋๋ค--envํ๋๊ทธ๋ก ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ธ์ (์:--env KEY=value)MCP_TIMEOUTํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ MCP ์๋ฒ ์์ ์๊ฐ ์ด๊ณผ๋ฅผ ๊ตฌ์ฑํ์ธ์ (์:MCP_TIMEOUT=10000 claude๋ 10์ด ์๊ฐ ์ด๊ณผ๋ฅผ ์ค์ )- ์๋ฒ๋น ๋๊ตฌ ์คํ ์๊ฐ ์ด๊ณผ๋ฅผ ์ค์ ํ๋ ค๋ฉด ํด๋น ์๋ฒ์
.mcp.jsonํญ๋ชฉ์ ๋ฐ๋ฆฌ์ด ๋จ์์timeoutํ๋๋ฅผ ์ถ๊ฐํ์ธ์. ์๋ฅผ ๋ค์ด 10๋ถ์ ๊ฒฝ์ฐ"timeout": 600000์ ๋๋ค. ์ด๋ ํด๋น ์๋ฒ์๋งMCP_TOOL_TIMEOUTํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ ์ํฉ๋๋ค - Claude Code๋ MCP ๋๊ตฌ ์ถ๋ ฅ์ด 10,000 ํ ํฐ์ ์ด๊ณผํ ๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค. ์ด ์ ํ์ ๋๋ฆฌ๋ ค๋ฉด
MAX_MCP_OUTPUT_TOKENSํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ธ์ (์:MAX_MCP_OUTPUT_TOKENS=50000) - OAuth 2.0 ์ธ์ฆ์ด ํ์ํ ์๊ฒฉ ์๋ฒ๋ก ์ธ์ฆํ๋ ค๋ฉด
/mcp๋ฅผ ์ฌ์ฉํ์ธ์
์๋ฒ๋น timeout์ ๋๊ตฌ ํธ์ถ๋น ํ๋ ์ํด๋ก ์ ํ์ด๋ฉฐ, ์๋ฒ์ ์งํ ์๋ฆผ์ ์ด๋ฅผ ์ฐ์ฅํ์ง ์์ต๋๋ค. 1000 ๋ฏธ๋ง์ ๊ฐ์ ๋ฌด์๋๊ณ MCP_TOOL_TIMEOUT์ผ๋ก ๋์ด๊ฐ๊ฑฐ๋, ํด๋น ๋ณ์๊ฐ ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ ์ฝ 28์๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋์ด๊ฐ๋๋ค. {/* min-version: 2.1.162 */}v2.1.162 ์ด์ ์๋ 1000 ๋ฏธ๋ง์ ๊ฐ์ด 1์ด๋ก ๋ด๋ฆผ๋์์ต๋๋ค.
HTTP ๋ฐ SSE ์๋ฒ์ ๊ฒฝ์ฐ, ์์ฒญ๋น fetch ์ฒซ ๋ฐ์ดํธ ์์ฐ์ 60์ด ์ต์๊ฐ์ ๊ฐ์ง๋๋ค.
v2.1.187๋ถํฐ ์๊ฒฉ HTTP, SSE, WebSocket ๋๋ claude.ai ์ปค๋ฅํฐ ์๋ฒ์ ๋ํ ๋๊ตฌ ํธ์ถ์ด 5๋ถ ๋์ ์๋ต ๋ฐ ์งํ ์๋ฆผ์ ๋ณด๋ด์ง ์์ผ๋ฉด ์ํด๋ก ์ ํ์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ค๋ฅ๋ก ์ค๋จ๋ฉ๋๋ค. CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT ํ๊ฒฝ ๋ณ์๋ฅผ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ์ค์ ํ์ฌ ์ ํด ์๋์ฐ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋, 0์ผ๋ก ์ค์ ํ์ฌ ํ์ธ์ ๋นํ์ฑํํ์ธ์. Stdio ์๋ฒ๋ ๋ก์ปฌ ํ๋ก์ธ์ค์ด๋ฉฐ ์ ํด ์๊ฐ ์ด๊ณผ์ ๋์์ด ์๋๋๋ค.
ํ๋ฌ๊ทธ์ธ ์ ๊ณต MCP ์๋ฒ
ํ๋ฌ๊ทธ์ธ์ MCP ์๋ฒ๋ฅผ ๋ฒ๋ค๋ก ์ ๊ณตํ ์ ์์ผ๋ฉฐ, ํ๋ฌ๊ทธ์ธ์ด ํ์ฑํ๋๋ฉด ๋๊ตฌ ๋ฐ ํตํฉ์ ์๋์ผ๋ก ์ ๊ณตํฉ๋๋ค. ํ๋ฌ๊ทธ์ธ MCP ์๋ฒ๋ ์ฌ์ฉ์ ๊ตฌ์ฑ ์๋ฒ์ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
ํ๋ฌ๊ทธ์ธ MCP ์๋ฒ์ ์๋ ๋ฐฉ์:
- ํ๋ฌ๊ทธ์ธ์ ํ๋ฌ๊ทธ์ธ ๋ฃจํธ์
.mcp.json๋๋plugin.json์ ์ธ๋ผ์ธ์ผ๋ก MCP ์๋ฒ๋ฅผ ์ ์ํฉ๋๋ค - ํ๋ฌ๊ทธ์ธ์ด ํ์ฑํ๋๋ฉด MCP ์๋ฒ๊ฐ ์๋์ผ๋ก ์์๋ฉ๋๋ค
- ํ๋ฌ๊ทธ์ธ MCP ๋๊ตฌ๋ ์๋์ผ๋ก ๊ตฌ์ฑ๋ MCP ๋๊ตฌ์ ํจ๊ป ๋ํ๋ฉ๋๋ค
- ํ๋ฌ๊ทธ์ธ ์๋ฒ๋ ํ๋ฌ๊ทธ์ธ ์ค์น๋ฅผ ํตํด ๊ด๋ฆฌ๋ฉ๋๋ค (
/mcp๋ช ๋ น์ด ์๋)
ํ๋ฌ๊ทธ์ธ MCP ๊ตฌ์ฑ ์:
ํ๋ฌ๊ทธ์ธ ๋ฃจํธ์ .mcp.json:
{
"mcpServers": {
"database-tools": {
"command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
"args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
"env": {
"DB_URL": "${DB_URL}"
}
}
}
}
๋๋ plugin.json์ ์ธ๋ผ์ธ:
{
"name": "my-plugin",
"mcpServers": {
"plugin-api": {
"command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
"args": ["--port", "8080"]
}
}
}
ํ๋ฌ๊ทธ์ธ MCP ๊ธฐ๋ฅ:
- ์๋ ๋ผ์ดํ์ฌ์ดํด: ์ธ์
์์ ์ ํ์ฑํ๋ ํ๋ฌ๊ทธ์ธ์ ์๋ฒ๊ฐ ์๋์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ธ์
์ค์ ํ๋ฌ๊ทธ์ธ์ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํ๋ฉด
/reload-plugins๋ฅผ ์คํํ์ฌ MCP ์๋ฒ๋ฅผ ์ฐ๊ฒฐํ๊ฑฐ๋ ์ฐ๊ฒฐ ํด์ ํฉ๋๋ค - ํ๊ฒฝ ๋ณ์: ๋ฒ๋ค๋ ํ๋ฌ๊ทธ์ธ ํ์ผ์
${CLAUDE_PLUGIN_ROOT}์ฌ์ฉ, ํ๋ฌ๊ทธ์ธ ์ ๋ฐ์ดํธ๋ฅผ ์ ์งํ๋ ์ง์์ ์ธ ์ํ์${CLAUDE_PLUGIN_DATA}์ฌ์ฉ, ๊ทธ๋ฆฌ๊ณ ์์ ์ ์ธ ํ๋ก์ ํธ ๋ฃจํธ์${CLAUDE_PROJECT_DIR}์ฌ์ฉ - ์ฌ์ฉ์ ํ๊ฒฝ ์ก์ธ์ค: ์๋์ผ๋ก ๊ตฌ์ฑ๋ ์๋ฒ์ ๋์ผํ ํ๊ฒฝ ๋ณ์์ ์ก์ธ์ค
- ์ฌ๋ฌ ์ ์ก ์ ํ: stdio, SSE, HTTP ๋ฐ WebSocket ์ ์ก ์ง์ (์ ์ก ์ง์์ ์๋ฒ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์)
ํ๋ฌ๊ทธ์ธ MCP ์๋ฒ ๋ณด๊ธฐ:
# Claude Code ๋ด์์ ํ๋ฌ๊ทธ์ธ ์๋ฒ๋ฅผ ํฌํจํ ๋ชจ๋ MCP ์๋ฒ ๋ณด๊ธฐ
/mcp
ํ๋ฌ๊ทธ์ธ ์๋ฒ๋ ํ๋ฌ๊ทธ์ธ์์ ์จ ๊ฒ์ ๋ํ๋ด๋ ํ์๊ธฐ์ ํจ๊ป ๋ชฉ๋ก์ ๋ํ๋ฉ๋๋ค.
ํ๋ฌ๊ทธ์ธ MCP ๋๊ตฌ ์ด๋ฆ:
ํ๋ฌ๊ทธ์ธ ๋ฒ๋ค MCP ์๋ฒ์ ๋๊ตฌ๋ ํธ์ถ ๊ฐ๋ฅํ ์ด๋ฆ์ ํ๋ฌ๊ทธ์ธ ์ด๋ฆ๊ณผ ์๋ฒ ํค๋ฅผ ๋ชจ๋ ํฌํจํฉ๋๋ค. ์ ์ฒด ํ์์ mcp__plugin_<plugin-name>_<server-name>__<tool-name>์ด๋ฉฐ, A-Z, a-z, 0-9, _, - ์ธ์ ๋ชจ๋ ๋ฌธ์๋ _๋ก ๋ฐ๋๋๋ค. my-plugin์ด๋ผ๋ ํ๋ฌ๊ทธ์ธ์ ๋ฒ๋ค๋ database-tools ์๋ฒ์ ๊ฒฝ์ฐ, query ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ด ํธ์ถํ ์ ์์ต๋๋ค:
mcp__plugin_my-plugin_database-tools__query
๊ถํ ๊ท์น์์ ๋๊ตฌ๋ฅผ ์ฐธ์กฐํ ๋, ์คํฌ์ allowed-tools ๋ชฉ๋ก์์, ๋๋ ์๋ธ์์ด์ ํธ์ tools ํ๋์์ ์ด ์ ์ฒด ์ด๋ฆ์ ์ฌ์ฉํ์ธ์.
ํ๋ฌ๊ทธ์ธ MCP ์๋ฒ์ ์ด์ :
- ๋ฒ๋ค ๋ฐฐํฌ: ๋๊ตฌ ๋ฐ ์๋ฒ๊ฐ ํจ๊ป ํจํค์ง๋จ
- ์๋ ์ค์ : ์๋ MCP ๊ตฌ์ฑ์ด ํ์ ์์
- ํ ์ผ๊ด์ฑ: ํ๋ฌ๊ทธ์ธ์ด ์ค์น๋๋ฉด ๋ชจ๋ ์ฌ๋์ด ๋์ผํ ๋๊ตฌ๋ฅผ ์ป์
ํ๋ฌ๊ทธ์ธ๊ณผ ํจ๊ป MCP ์๋ฒ๋ฅผ ๋ฒ๋ค๋ก ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ฌ๊ทธ์ธ ๊ตฌ์ฑ ์์ ์ฐธ์กฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
MCP ์ค์น ๋ฒ์
MCP ์๋ฒ๋ ์ธ ๊ฐ์ง ๋ฒ์์์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ ํํ ๋ฒ์๋ ์๋ฒ๊ฐ ๋ก๋๋๋ ํ๋ก์ ํธ์ ๊ตฌ์ฑ์ด ํ๊ณผ ๊ณต์ ๋๋์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค. ๊ด๋ฆฌ์๋ ๊ด๋ฆฌํ ๊ตฌ์ฑ์ ํตํด ์ํฐํ๋ผ์ด์ฆ ์์ค์์ ์๋ฒ๋ฅผ ๋ฐฐํฌํ ์๋ ์์ต๋๋ค.
| ๋ฒ์ | ๋ก๋ ์์น | ํ๊ณผ ๊ณต์ | ์ ์ฅ ์์น |
|---|---|---|---|
| ๋ก์ปฌ | ํ์ฌ ํ๋ก์ ํธ๋ง | ์๋์ค | ~/.claude.json |
| ํ๋ก์ ํธ | ํ์ฌ ํ๋ก์ ํธ๋ง | ์, ๋ฒ์ ์ ์ด๋ฅผ ํตํด | ํ๋ก์ ํธ ๋ฃจํธ์ .mcp.json |
| ์ฌ์ฉ์ | ๋ชจ๋ ํ๋ก์ ํธ | ์๋์ค | ~/.claude.json |
๋ก์ปฌ ๋ฒ์
๋ก์ปฌ ๋ฒ์๋ ๊ธฐ๋ณธ๊ฐ์
๋๋ค. ๋ก์ปฌ ๋ฒ์ ์๋ฒ๋ ์ถ๊ฐํ ํ๋ก์ ํธ์์๋ง ๋ก๋๋๋ฉฐ ์ฌ์ฉ์์๊ฒ๋ง ๋น๊ณต๊ฐ์
๋๋ค. Claude Code๋ ํด๋น ํ๋ก์ ํธ์ ๊ฒฝ๋ก ์๋ ~/.claude.json์ ์ ์ฅํ๋ฏ๋ก ๋ค๋ฅธ ํ๋ก์ ํธ์๋ ๋์ผํ ์๋ฒ๊ฐ ๋ํ๋์ง ์์ต๋๋ค. ๊ฐ์ธ ๊ฐ๋ฐ ์๋ฒ, ์คํ์ ๊ตฌ์ฑ ๋๋ ๋ฒ์ ์ ์ด์ ํฌํจํ๊ณ ์ถ์ง ์์ ์๊ฒฉ ์ฆ๋ช
์ด ์๋ ์๋ฒ์ ๋ก์ปฌ ๋ฒ์๋ฅผ ์ฌ์ฉํ์ธ์.
MCP ์๋ฒ์ "๋ก์ปฌ ๋ฒ์"๋ผ๋ ์ฉ์ด๋ ์ผ๋ฐ ๋ก์ปฌ ์ค์ ๊ณผ ๋ค๋ฆ
๋๋ค. MCP ๋ก์ปฌ ๋ฒ์ ์๋ฒ๋ ~/.claude.json (ํ ๋๋ ํ ๋ฆฌ)์ ์ ์ฅ๋๊ณ , ์ผ๋ฐ ๋ก์ปฌ ์ค์ ์ .claude/settings.local.json (ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ)์ ์ฌ์ฉํฉ๋๋ค. ์ค์ ํ์ผ ์์น์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
# ๋ก์ปฌ ๋ฒ์ ์๋ฒ ์ถ๊ฐ (๊ธฐ๋ณธ๊ฐ)
claude mcp add --transport http stripe https://mcp.stripe.com
# ๋ช
์์ ์ผ๋ก ๋ก์ปฌ ๋ฒ์ ์ง์
claude mcp add --transport http stripe --scope local https://mcp.stripe.com
/path/to/your/project์์ ์คํํ ๋ ๋ช
๋ น์ ~/.claude.json ๋ด์ ํ์ฌ ํ๋ก์ ํธ ํญ๋ชฉ์ ์๋ฒ๋ฅผ ์์ฑํฉ๋๋ค. ์๋ ์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋๋ค:
{
"projects": {
"/path/to/your/project": {
"mcpServers": {
"stripe": {
"type": "http",
"url": "https://mcp.stripe.com"
}
}
}
}
}
ํ๋ก์ ํธ ๋ฒ์
ํ๋ก์ ํธ ๋ฒ์ ์๋ฒ๋ ํ๋ก์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ .mcp.json ํ์ผ์ ๊ตฌ์ฑ์ ์ ์ฅํ์ฌ ํ ํ์
์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด ํ์ผ์ ๋ฒ์ ์ ์ด์ ์ฒดํฌ์ธ๋๋๋ก ์ค๊ณ๋์ด ๋ชจ๋ ํ ๋ฉค๋ฒ๊ฐ ๋์ผํ MCP ๋๊ตฌ ๋ฐ ์๋น์ค์ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค. ํ๋ก์ ํธ ๋ฒ์ ์๋ฒ๋ฅผ ์ถ๊ฐํ๋ฉด Claude Code๋ ์๋์ผ๋ก ์ด ํ์ผ์ ์์ฑํ๊ฑฐ๋ ์ ์ ํ ๊ตฌ์ฑ ๊ตฌ์กฐ๋ก ์
๋ฐ์ดํธํฉ๋๋ค.
# ํ๋ก์ ํธ ๋ฒ์ ์๋ฒ ์ถ๊ฐ
claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp
๊ฒฐ๊ณผ .mcp.json ํ์ผ์ ํ์คํ๋ ํ์์ ๋ฐ๋ฆ
๋๋ค:
{
"mcpServers": {
"shared-server": {
"command": "/path/to/server",
"args": [],
"env": {}
}
}
}
๋ณด์์์ ์ด์ ๋ก Claude Code๋ .mcp.json ํ์ผ์ ํ๋ก์ ํธ ๋ฒ์ ์๋ฒ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์น์ธ์ ์์ฒญํฉ๋๋ค. ์ด๋ฌํ ์น์ธ ์ ํ์ ์ฌ์ค์ ํด์ผ ํ๋ ๊ฒฝ์ฐ claude mcp reset-project-choices ๋ช
๋ น์ ์ฌ์ฉํ์ธ์.
์ฌ์ฉ์ ๋ฒ์
์ฌ์ฉ์ ๋ฒ์ ์๋ฒ๋ ~/.claude.json์ ์ ์ฅ๋๋ฉฐ ๊ต์ฐจ ํ๋ก์ ํธ ์ ๊ทผ์ฑ์ ์ ๊ณตํ๋ฏ๋ก ์ปดํจํฐ์ ๋ชจ๋ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์์ผ๋ฉด์ ์ฌ์ฉ์ ๊ณ์ ์๋ง ๋น๊ณต๊ฐ์
๋๋ค. ์ด ๋ฒ์๋ ๊ฐ์ธ ์ ํธ๋ฆฌํฐ ์๋ฒ, ๊ฐ๋ฐ ๋๊ตฌ ๋๋ ๋ค์ํ ํ๋ก์ ํธ์์ ์์ฃผ ์ฌ์ฉํ๋ ์๋น์ค์ ์ ํฉํฉ๋๋ค.
# ์ฌ์ฉ์ ์๋ฒ ์ถ๊ฐ
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
๋ฒ์ ๊ณ์ธต ๋ฐ ์ฐ์ ์์
๋์ผํ ์๋ฒ๊ฐ ๋ ์ด์์ ์์น์ ์ ์๋๋ฉด Claude Code๋ ๊ฐ์ฅ ๋์ ์ฐ์ ์์ ์์ค์ ์ ์๋ฅผ ์ฌ์ฉํ์ฌ ํ ๋ฒ ์ฐ๊ฒฐํฉ๋๋ค. ํด๋น ์์ค์ ์ ์ฒด ์๋ฒ ํญ๋ชฉ์ด ์ฌ์ฉ๋๋ฉฐ, ํ๋๋ ๋ฒ์ ๊ฐ์ ๋ณํฉ๋์ง ์์ต๋๋ค.
- ๋ก์ปฌ ๋ฒ์
- ํ๋ก์ ํธ ๋ฒ์
- ์ฌ์ฉ์ ๋ฒ์
- ํ๋ฌ๊ทธ์ธ ์ ๊ณต ์๋ฒ
- Claude.ai ์ปค๋ฅํฐ
์ธ ๋ฒ์๋ ์ด๋ฆ์ผ๋ก ์ค๋ณต์ ์ผ์น์ํต๋๋ค. ํ๋ฌ๊ทธ์ธ๊ณผ ์ปค๋ฅํฐ๋ ์๋ํฌ์ธํธ๋ก ์ผ์นํ๋ฏ๋ก ์์ ์๋ฒ์ ๋์ผํ URL ๋๋ ๋ช ๋ น์ ๊ฐ๋ฆฌํค๋ ๊ฒ์ ์ค๋ณต์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
`.mcp.json`์ ํ๊ฒฝ ๋ณ์ ํ์ฅ
Claude Code๋ .mcp.json ํ์ผ์ ํ๊ฒฝ ๋ณ์ ํ์ฅ์ ์ง์ํ๋ฏ๋ก ํ์ด ๊ตฌ์ฑ์ ๊ณต์ ํ๋ฉด์ ๋จธ์ ํน์ ๊ฒฝ๋ก ๋ฐ API ํค์ ๊ฐ์ ๋ฏผ๊ฐํ ๊ฐ์ ๋ํ ์ ์ฐ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
์ง์๋๋ ๊ตฌ๋ฌธ:
${VAR}- ํ๊ฒฝ ๋ณ์VAR์ ๊ฐ์ผ๋ก ํ์ฅ${VAR:-default}-VAR์ด ์ค์ ๋๋ฉด ํ์ฅ, ๊ทธ๋ ์ง ์์ผ๋ฉดdefault์ฌ์ฉ
ํ์ฅ ์์น: ํ๊ฒฝ ๋ณ์๋ ๋ค์์์ ํ์ฅํ ์ ์์ต๋๋ค:
command- ์๋ฒ ์คํ ํ์ผ ๊ฒฝ๋กargs- ๋ช ๋ น์ค ์ธ์env- ์๋ฒ์ ์ ๋ฌ๋๋ ํ๊ฒฝ ๋ณ์url- HTTP ์๋ฒ ์ ํ์ ๊ฒฝ์ฐheaders- HTTP ์๋ฒ ์ธ์ฆ์ ๊ฒฝ์ฐ
๋ณ์ ํ์ฅ์ ์ฌ์ฉํ ์:
{
"mcpServers": {
"api-server": {
"type": "http",
"url": "${API_BASE_URL:-https://api.example.com}/mcp",
"headers": {
"Authorization": "Bearer ${API_KEY}"
}
}
}
}
ํ์ ํ๊ฒฝ ๋ณ์๊ฐ ์ค์ ๋์ง ์์๊ณ ๊ธฐ๋ณธ๊ฐ์ด ์์ผ๋ฉด Claude Code๋ ๊ตฌ์ฑ์ ๊ตฌ๋ฌธ ๋ถ์ํ์ง ๋ชปํฉ๋๋ค.
์ค์ ์
์: Sentry๋ก ์ค๋ฅ ๋ชจ๋ํฐ๋ง
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
Sentry ๊ณ์ ์ผ๋ก ์ธ์ฆํฉ๋๋ค:
/mcp
๊ทธ๋ฐ ๋ค์ ํ๋ก๋์ ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น ํฉ๋๋ค:
์ง๋ 24์๊ฐ ๋์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ค๋ฅ๋ ๋ฌด์์
๋๊น?
์ค๋ฅ ID abc123์ ์คํ ์ถ์ ์ ๋ณด์ฌ์ฃผ์ธ์
์ด๋ค ๋ฐฐํฌ๊ฐ ์ด๋ฌํ ์๋ก์ด ์ค๋ฅ๋ฅผ ๋์
ํ์ต๋๊น?
์: ์ฝ๋ ๊ฒํ ๋ฅผ ์ํด GitHub์ ์ฐ๊ฒฐ
GitHub์ ์๊ฒฉ MCP ์๋ฒ๋ ํค๋๋ก ์ ๋ฌ๋ GitHub ๊ฐ์ธ ์ก์ธ์ค ํ ํฐ์ผ๋ก ์ธ์ฆํฉ๋๋ค. ํ๋๋ฅผ ์ป์ผ๋ ค๋ฉด GitHub ํ ํฐ ์ค์ ์ ์ด๊ณ , Claude๊ฐ ์์ ํ๋ ค๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ก์ธ์คํ ์ ์๋ ์๋ก์ด ์ธ๋ถํ๋ ํ ํฐ์ ์์ฑํ ๋ค์ ์๋ฒ๋ฅผ ์ถ๊ฐํ์ธ์:
claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
--header "Authorization: Bearer YOUR_GITHUB_PAT"
๊ทธ๋ฐ ๋ค์ GitHub๋ก ์์ ํฉ๋๋ค:
PR #456์ ๊ฒํ ํ๊ณ ๊ฐ์ ์ฌํญ์ ์ ์ํ์ธ์
๋ฐฉ๊ธ ๋ฐ๊ฒฌํ ๋ฒ๊ทธ์ ๋ํ ์ ์ด์๋ฅผ ์์ฑํ์ธ์
๋์๊ฒ ํ ๋น๋ ๋ชจ๋ ์ด๋ฆฐ PR์ ๋ณด์ฌ์ฃผ์ธ์
์: PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ
claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
--dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"
๊ทธ๋ฐ ๋ค์ ์์ฐ์ค๋ฝ๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฟผ๋ฆฌํฉ๋๋ค:
์ด๋ฒ ๋ฌ ์ด ์์ต์ ์ผ๋ง์
๋๊น?
์ฃผ๋ฌธ ํ
์ด๋ธ์ ์คํค๋ง๋ฅผ ๋ณด์ฌ์ฃผ์ธ์
์ง๋ 90์ผ ๋์ ๊ตฌ๋งคํ์ง ์์ ๊ณ ๊ฐ์ ์ฐพ์ผ์ธ์
์๊ฒฉ MCP ์๋ฒ๋ก ์ธ์ฆ
๋ง์ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ MCP ์๋ฒ๋ ์ธ์ฆ์ด ํ์ํฉ๋๋ค. Claude Code๋ ๋ณด์ ์ฐ๊ฒฐ์ ์ํด OAuth 2.0์ ์ง์ํฉ๋๋ค.
Claude Code๋ ์๋ฒ๊ฐ 401 Unauthorized ๋๋ 403 Forbidden์ผ๋ก ์๋ตํ ๋ ์๊ฒฉ ์๋ฒ๋ฅผ ์ธ์ฆ์ด ํ์ํ ๊ฒ์ผ๋ก ํ์ํฉ๋๋ค. ๋ ์ํ ์ฝ๋ ๋ชจ๋ ์๋ฒ๋ฅผ /mcp์ ํ๋๊ทธํ์ฌ OAuth ํ๋ฆ์ ์๋ฃํ ์ ์์ต๋๋ค.
v2.1.195๋ถํฐ ํ ํฐ ์๋ก ๊ณ ์นจ์ด ์๋ฒ๊ฐ ์ ์ฅ๋ ์๋ก ๊ณ ์นจ ํ ํฐ์ ๊ฑฐ๋ถํ๊ธฐ ๋๋ฌธ์ ์คํจํ๋ฉด Claude Code๋ ์ฆ์ /mcp๋ฅผ ๊ฐ๋ฆฌํค๋ ์๋ฆผ์ ํ์ํฉ๋๋ค. ์ฐ๊ฒฐ๋ ์๋ฒ์ ๋ฉ๋ด์์ ๋ค์ ์ธ์ฆํ๊ธฐ๋ฅผ ์ ๊ณตํ๋ฏ๋ก ๋ค์ ๋๊ตฌ ํธ์ถ์ด ์คํจํ๊ธฐ ์ ์ ๋ค์ ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค.
์ธ์ฆ ์๋ฒ๋ฅผ ๊ฐ๋ฆฌํค๋ WWW-Authenticate ํค๋๋ฅผ ๋ฐํํ๋ ์ฌ์ฉ์ ์ ์ ์๋ฒ๋ ๋ค๋ฅธ ์๊ฒฉ ์๋ฒ์ ๋์ผํ ์๋ ๊ฒ์์ ๋ฐ์ต๋๋ค.
v2.1.193๋ถํฐ Claude Code๋ ํ๋ ์ด์์ ๊ตฌ์ฑ๋ ์๋ฒ๊ฐ ์ธ์ฆ์ด ํ์ํ ๋ ์์ ์๋ฆผ์ ํ์ํ๋ฏ๋ก ์ด๋ค ์๋ฒ๊ฐ ๋ก๊ทธ์ธ์ด ํ์ํ์ง ์์๋ด๊ธฐ ์ํด /mcp๋ฅผ ์ด ํ์๊ฐ ์์ต๋๋ค.
๋น๋ํํ ๋ชจ๋์๋ /mcp ํจ๋์ด ์์ผ๋ฏ๋ก Claude Code๋ OAuth ํ๋ฆ์ ์คํํ ์ ์์ต๋๋ค. v2.1.196๋ถํฐ ๊ตฌ์ฑ๋ ์๋ฒ๊ฐ claude -p ๋๋ ๋๊ตฌ ๊ฒ์์ด ํ์ฑํ๋ Agent SDK ์คํ ์ค์ ์ธ์ฆ์ด ํ์ํ ๋ (๊ธฐ๋ณธ๊ฐ), Claude Code๋ Claude์๊ฒ ์๋ฒ์ ๋๊ตฌ๊ฐ ์ธ์ฆํ ๋๊น์ง ์ฌ์ฉํ ์ ์์์ ์๋ฆฝ๋๋ค. Claude๋ ์๋ฒ๊ฐ ๊ตฌ์ฑ๋์ง ์์ ๊ฒ์ฒ๋ผ ์๋ตํ๋ ๋์ ๋ก๊ทธ์ธ์ด ํ์ํ ์๋ฒ์ ์ด๋ฆ์ ์ง์ ํ ์ ์์ต๋๋ค. /mcp๋ฅผ ์ฌ์ฉํ๋ ๋ํํ ์ธ์
์์ ๋๋ claude mcp login <name>์ผ๋ก ๋ก๊ทธ์ธ์ ์๋ฃํฉ๋๋ค.
์๋ฒ์ ๋ํด headers.Authorization์ ๊ตฌ์ฑํ๋๋ฐ ์๋ฒ๊ฐ ํด๋น ํค๋๋ฅผ ๊ฑฐ๋ถํ๋ฉด Claude Code๋ OAuth๋ก ํด๋ฐฑํ์ง ์๊ณ ์ฐ๊ฒฐ์ด ์คํจํ ๊ฒ์ผ๋ก ๋ณด๊ณ ํฉ๋๋ค. MCP ์๋ํฌ์ธํธ์ ๋ํด ํ ํฐ์ด ์ ํจํ์ง ํ์ธํ๊ฑฐ๋ OAuth ํ๋ฆ์ ์ฌ์ฉํ๋ ค๋ฉด ํค๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
์ธ์ฆ์ด ํ์ํ ์๋ฒ ์ถ๊ฐ
์๋ฅผ ๋ค์ด:
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
Claude Code ๋ด์์ /mcp ๋ช ๋ น ์ฌ์ฉ
Claude Code์์ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค:
/mcp
๊ทธ๋ฐ ๋ค์ ๋ธ๋ผ์ฐ์ ์์ ๋ก๊ทธ์ธ ๋จ๊ณ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
ํ:
- ์ธ์ฆ ํ ํฐ์ ์์ ํ๊ฒ ์ ์ฅ๋๊ณ ์๋์ผ๋ก ์๋ก ๊ณ ์ณ์ง๋๋ค
/mcp๋ฉ๋ด์์ "Clear authentication"์ ์ฌ์ฉํ์ฌ ์ก์ธ์ค๋ฅผ ์ทจ์ํฉ๋๋ค- ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ์ด๋ฆฌ์ง ์์ผ๋ฉด ์ ๊ณต๋ URL์ ๋ณต์ฌํ์ฌ ์๋์ผ๋ก ์ฝ๋๋ค
- ์ธ์ฆ ํ ๋ธ๋ผ์ฐ์ ๋ฆฌ๋๋ ์ ์ด ์ฐ๊ฒฐ ์ค๋ฅ๋ก ์คํจํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ์ฃผ์ ํ์์ค์์ ์ ์ฒด ์ฝ๋ฐฑ URL์ ๋ณต์ฌํ์ฌ Claude Code์ ๋ํ๋๋ URL ํ๋กฌํํธ์ ๋ถ์ฌ๋ฃ์ต๋๋ค
- OAuth ์ธ์ฆ์ HTTP ์๋ฒ์์ ์๋ํฉ๋๋ค
๋ช ๋ น์ค์์ ์ธ์ฆ
v2.1.186๋ถํฐ claude mcp login <name>์ ๊ตฌ์ฑ๋ ์๋ฒ์ OAuth ํ๋ฆ์ ์
ธ์์ ์ง์ ์คํํ๋ฏ๋ก ์ธ์
๋ด์์ /mcp ํจ๋์ ์ด ํ์๊ฐ ์์ต๋๋ค.
claude mcp login sentry
๋์ค์ ์ ์ฅ๋ ์๊ฒฉ ์ฆ๋ช
์ ์ง์ฐ๋ ค๋ฉด claude mcp logout <name>์ ์คํํฉ๋๋ค.
v2.1.191๋ถํฐ ๋ช
๋ น์ SSH ์ธ์
์ค์ด๊ฑฐ๋ ๋์คํ๋ ์ด ์๋ฒ๊ฐ ์๋ Linux์ ๊ฐ์ด ๋ก์ปฌ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์งํ๊ณ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด๋ ค๊ณ ์๋ํ๋ ๋์ ์ธ์ฆ URL์ ์ถ๋ ฅํฉ๋๋ค. ๋ก์ปฌ ๋จธ์ ์์ URL์ ์ด๊ณ ๋ธ๋ผ์ฐ์ ์ ์ฃผ์ ํ์์ค์์ ์ ์ฒด ๋ฆฌ๋๋ ์
URL์ ํ๋กฌํํธ์ ๋ค์ ๋ถ์ฌ๋ฃ์ต๋๋ค. ๋ช
๋ น์ ๋ถ์ฌ๋ฃ๊ธฐ ๋จ๊ณ๋ฅผ ์ํด ๋ํํ ํฐ๋ฏธ๋์ด ํ์ํ๋ฏ๋ก ssh -t๋ก ์ฐ๊ฒฐํฉ๋๋ค. ๋ก์ปฌ ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ์ง๋์์ ๋๋ URL ํ๋กฌํํธ๋ฅผ ๊ฐ์ ํ๋ ค๋ฉด --no-browser๋ฅผ ์ ๋ฌํฉ๋๋ค.
claude mcp login sentry --no-browser
๊ณ ์ OAuth ์ฝ๋ฐฑ ํฌํธ ์ฌ์ฉ
์ผ๋ถ MCP ์๋ฒ๋ ๋ฏธ๋ฆฌ ๋ฑ๋ก๋ ํน์ ๋ฆฌ๋๋ ์
URI๊ฐ ํ์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Claude Code๋ OAuth ์ฝ๋ฐฑ์ ์ํด ๋ฌด์์๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ํฌํธ๋ฅผ ์ ํํฉ๋๋ค. --callback-port๋ฅผ ์ฌ์ฉํ์ฌ ํฌํธ๋ฅผ ๊ณ ์ ํ์ฌ http://localhost:PORT/callback ํ์์ ์ฌ์ ๋ฑ๋ก๋ ๋ฆฌ๋๋ ์
URI์ ์ผ์นํ๋๋ก ํฉ๋๋ค.
--callback-port๋ฅผ ๋จ๋
์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค (๋์ ํด๋ผ์ด์ธํธ ๋ฑ๋ก ํฌํจ) ๋๋ --client-id์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค (์ฌ์ ๊ตฌ์ฑ๋ ์๊ฒฉ ์ฆ๋ช
ํฌํจ).
# ๋์ ํด๋ผ์ด์ธํธ ๋ฑ๋ก์ ์ฌ์ฉํ ๊ณ ์ ์ฝ๋ฐฑ ํฌํธ
claude mcp add --transport http \
--callback-port 8080 \
my-server https://mcp.example.com/mcp
์ฌ์ ๊ตฌ์ฑ๋ OAuth ์๊ฒฉ ์ฆ๋ช ์ฌ์ฉ
์ผ๋ถ MCP ์๋ฒ๋ ๋์ ํด๋ผ์ด์ธํธ ๋ฑ๋ก์ ํตํ ์๋ OAuth ์ค์ ์ ์ง์ํ์ง ์์ต๋๋ค. "Incompatible auth server: does not support dynamic client registration"๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ํ์๋๋ฉด ์๋ฒ์ ์ฌ์ ๊ตฌ์ฑ๋ ์๊ฒฉ ์ฆ๋ช ์ด ํ์ํฉ๋๋ค. Claude Code๋ ๋ํ ๋์ ํด๋ผ์ด์ธํธ ๋ฑ๋ก ๋์ ํด๋ผ์ด์ธํธ ID ๋ฉํ๋ฐ์ดํฐ ๋ฌธ์ (CIMD)๋ฅผ ์ฌ์ฉํ๋ ์๋ฒ๋ฅผ ์ง์ํ๋ฉฐ ์๋์ผ๋ก ๊ฒ์ํฉ๋๋ค. ์๋ ๊ฒ์์ด ์คํจํ๋ฉด ๋จผ์ ์๋ฒ์ ๊ฐ๋ฐ์ ํฌํธ์ ํตํด OAuth ์ฑ์ ๋ฑ๋กํ ๋ค์ ์๋ฒ๋ฅผ ์ถ๊ฐํ ๋ ์๊ฒฉ ์ฆ๋ช ์ ์ ๊ณตํฉ๋๋ค.
์๋ฒ๋ก OAuth ์ฑ ๋ฑ๋ก
์๋ฒ์ ๊ฐ๋ฐ์ ํฌํธ์ ํตํด ์ฑ์ ์์ฑํ๊ณ ํด๋ผ์ด์ธํธ ID์ ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ์ ๊ธฐ๋กํฉ๋๋ค.
๋ง์ ์๋ฒ๋ ๋ฆฌ๋๋ ์
URI๋ ํ์ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ํฌํธ๋ฅผ ์ ํํ๊ณ http://localhost:PORT/callback ํ์์ผ๋ก ๋ฆฌ๋๋ ์
URI๋ฅผ ๋ฑ๋กํฉ๋๋ค. ๋ค์ ๋จ๊ณ์์ --callback-port์ ํจ๊ป ๋์ผํ ํฌํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์๊ฒฉ ์ฆ๋ช ์ผ๋ก ์๋ฒ ์ถ๊ฐ
๋ค์ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค. --callback-port์ ์ฌ์ฉ๋๋ ํฌํธ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ํฌํธ์ผ ์ ์์ต๋๋ค. ์ด์ ๋จ๊ณ์์ ๋ฑ๋กํ ๋ฆฌ๋๋ ์
URI์ ์ผ์นํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
--client-id๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ์ ํด๋ผ์ด์ธํธ ID๋ฅผ ์ ๋ฌํฉ๋๋ค. --client-secret ํ๋๊ทธ๋ ๋ง์คํน๋ ์
๋ ฅ์ผ๋ก ์ํฌ๋ฆฟ์ ์์ฒญํฉ๋๋ค:
claude mcp add --transport http \
--client-id your-client-id --client-secret --callback-port 8080 \
my-server https://mcp.example.com/mcp
JSON ๊ตฌ์ฑ์ oauth ๊ฐ์ฒด๋ฅผ ํฌํจํ๊ณ --client-secret์ ๋ณ๋์ ํ๋๊ทธ๋ก ์ ๋ฌํฉ๋๋ค:
claude mcp add-json my-server \
'{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \
--client-secret
๋์ ํด๋ผ์ด์ธํธ ๋ฑ๋ก์ ์ฌ์ฉํ๋ฉด์ ํฌํธ๋ฅผ ๊ณ ์ ํ๋ ค๋ฉด ํด๋ผ์ด์ธํธ ID ์์ด --callback-port๋ฅผ ์ฌ์ฉํฉ๋๋ค:
claude mcp add-json my-server \
'{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'
ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด ์ํฌ๋ฆฟ์ ์ค์ ํ์ฌ ๋ํํ ํ๋กฌํํธ๋ฅผ ๊ฑด๋๋๋๋ค:
MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \
--client-id your-client-id --client-secret --callback-port 8080 \
my-server https://mcp.example.com/mcp
Claude Code์์ ์ธ์ฆ
Claude Code์์ /mcp๋ฅผ ์คํํ๊ณ ๋ธ๋ผ์ฐ์ ๋ก๊ทธ์ธ ํ๋ฆ์ ๋ฐ๋ฆ
๋๋ค.
ํ:
- ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ์ ๊ตฌ์ฑ์ ์ ์ฅ๋์ง ์๊ณ ์์คํ ํค์ฒด์ธ (macOS) ๋๋ ์๊ฒฉ ์ฆ๋ช ํ์ผ์ ์์ ํ๊ฒ ์ ์ฅ๋ฉ๋๋ค
- ์๋ฒ๊ฐ ์ํฌ๋ฆฟ์ด ์๋ ๊ณต๊ฐ OAuth ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
--client-secret์์ด--client-id๋ง ์ฌ์ฉํฉ๋๋ค --callback-port๋--client-id์ ํจ๊ป ๋๋ ์์ด ์ฌ์ฉํ ์ ์์ต๋๋ค- ์ด๋ฌํ ํ๋๊ทธ๋ HTTP ๋ฐ SSE ์ ์ก์๋ง ์ ์ฉ๋ฉ๋๋ค. stdio ์๋ฒ์๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค
claude mcp get <name>์ ์ฌ์ฉํ์ฌ OAuth ์๊ฒฉ ์ฆ๋ช ์ด ์๋ฒ์ ๋ํด ๊ตฌ์ฑ๋์๋์ง ํ์ธํฉ๋๋ค
OAuth ๋ฉํ๋ฐ์ดํฐ ๊ฒ์ ์ฌ์ ์
ํน์ OAuth ์ธ์ฆ ์๋ฒ ๋ฉํ๋ฐ์ดํฐ URL์ ๊ฐ๋ฆฌ์ผ ๊ธฐ๋ณธ ๊ฒ์ ์ฒด์ธ์ ์ฐํํ๋๋ก Claude Code๋ฅผ ์ค์ ํฉ๋๋ค. MCP ์๋ฒ์ ํ์ค ์๋ํฌ์ธํธ๊ฐ ์ค๋ฅ๋ฅผ ๋ฐํํ๊ฑฐ๋ ๋ด๋ถ ํ๋ก์๋ฅผ ํตํด ๊ฒ์์ ๋ผ์ฐํ
ํ๋ ค๋ ๊ฒฝ์ฐ์ authServerMetadataUrl์ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Claude Code๋ ๋จผ์ /.well-known/oauth-protected-resource์์ RFC 9728 ๋ณดํธ๋ ๋ฆฌ์์ค ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ๋ค์ /.well-known/oauth-authorization-server์์ RFC 8414 ์ธ์ฆ ์๋ฒ ๋ฉํ๋ฐ์ดํฐ๋ก ๋์๊ฐ๋๋ค.
.mcp.json์ ์๋ฒ ๊ตฌ์ฑ์ oauth ๊ฐ์ฒด์ authServerMetadataUrl์ ์ค์ ํฉ๋๋ค:
{
"mcpServers": {
"my-server": {
"type": "http",
"url": "https://mcp.example.com/mcp",
"oauth": {
"authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"
}
}
}
}
URL์ https://๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. authServerMetadataUrl์ Claude Code v2.1.64 ์ด์์ด ํ์ํฉ๋๋ค. ๋ฉํ๋ฐ์ดํฐ URL์ scopes_supported๋ ์
์คํธ๋ฆผ ์๋ฒ๊ฐ ๊ด๊ณ ํ๋ ๋ฒ์๋ฅผ ์ฌ์ ์ํฉ๋๋ค.
OAuth ๋ฒ์ ์ ํ
oauth.scopes๋ฅผ ์ค์ ํ์ฌ ์ธ์ฆ ํ๋ฆ ์ค์ Claude Code๊ฐ ์์ฒญํ๋ ๋ฒ์๋ฅผ ๊ณ ์ ํฉ๋๋ค. ์ด๋ ์
์คํธ๋ฆผ ์ธ์ฆ ์๋ฒ๊ฐ ๊ด๊ณ ํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฒ์๋ฅผ ๋ถ์ฌํ๊ณ ์ถ์ง ์์ ๋ MCP ์๋ฒ๋ฅผ ๋ณด์ ํ์ด ์น์ธํ ๋ถ๋ถ ์งํฉ์ผ๋ก ์ ํํ๋ ์ง์๋๋ ๋ฐฉ๋ฒ์
๋๋ค. ๊ฐ์ RFC 6749 ยง3.3์ scope ๋งค๊ฐ๋ณ์ ํ์๊ณผ ์ผ์นํ๋ ๋จ์ผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด์
๋๋ค.
{
"mcpServers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"scopes": "channels:read chat:write search:read"
}
}
}
}
oauth.scopes๋ authServerMetadataUrl๊ณผ ์๋ฒ๊ฐ /.well-known์์ ๊ฒ์ํ๋ ๋ฒ์ ๋ชจ๋๋ณด๋ค ์ฐ์ ํฉ๋๋ค. ์ค์ ํ์ง ์์ผ๋ฉด MCP ์๋ฒ๊ฐ ์์ฒญ๋ ๋ฒ์ ์งํฉ์ ๊ฒฐ์ ํฉ๋๋ค.
v2.1.196๋ถํฐ oauth.scopes๊ฐ ์ค์ ๋์ง ์์ผ๋ฉด Claude Code๋ ์๋ฒ์ WWW-Authenticate ํค๋ ๋๋ ๋ณดํธ๋ ๋ฆฌ์์ค ๋ฉํ๋ฐ์ดํฐ์์ ์ ๊ณตํ๋ ๋ฒ์๋ฅผ ์์ฒญํ๊ณ ๋ ๋ค ์ ๊ณตํ์ง ์์ ๋ scope ๋งค๊ฐ๋ณ์๋ฅผ ๋ณด๋ด์ง ์์ต๋๋ค. ๋ ์ด์ ์๋์ผ๋ก ๊ฒ์๋ ์ธ์ฆ ์๋ฒ ๋ฉํ๋ฐ์ดํฐ์์ ์ ์ฒด scopes_supported ์นดํ๋ก๊ทธ๋ฅผ ์์ฒญํ์ง ์์ต๋๋ค. ํด๋น ์นดํ๋ก๊ทธ๋ฅผ ์์ฒญํ๋ฉด ๊ด๋ฆฌ์ ์ ์ฉ ๋๋ ํ
ํ๋ฆฟ ๋ฒ์๋ฅผ ๊ด๊ณ ํ๋ ID ๊ณต๊ธ์๊ฐ invalid_scope ์ค๋ฅ๋ก ์ธ์ฆ ์์ฒญ์ ๊ฑฐ๋ถํ๊ฒ ํ์ต๋๋ค. ๊ตฌ์ฑ๋ authServerMetadataUrl์์ ๊ฐ์ ธ์จ ๋ฉํ๋ฐ์ดํฐ๋ ์ฌ์ ํ scopes_supported๋ฅผ ์์ฒญ๋ ๋ฒ์๋ก ์ ๊ณตํฉ๋๋ค.
์ธ์ฆ ์๋ฒ๊ฐ scopes_supported์์ offline_access๋ฅผ ๊ด๊ณ ํ๋ฉด Claude Code๋ ์ก์ธ์ค ํ ํฐ์ ์๋ก์ด ๋ธ๋ผ์ฐ์ ๋ก๊ทธ์ธ ์์ด ์๋ก ๊ณ ์น ์ ์๋๋ก ๊ณ ์ ๋ ๋ฒ์์ ์ถ๊ฐํฉ๋๋ค.
์๋ฒ๊ฐ ๋์ค์ ๋๊ตฌ ํธ์ถ์ ๋ํด 403 insufficient_scope์ ๋ฐํํ๋ฉด Claude Code๋ ๋์ผํ ๊ณ ์ ๋ ๋ฒ์๋ก ๋ค์ ์ธ์ฆํฉ๋๋ค. ํ์ํ ๋๊ตฌ๊ฐ ๊ณ ์ ๋ ๋ฒ์ ์ธ์ ๋ฒ์๋ฅผ ์๊ตฌํ ๋ oauth.scopes๋ฅผ ํ๋ํฉ๋๋ค.
์ฌ์ฉ์ ์ ์ ์ธ์ฆ์ ์ํ ๋์ ํค๋ ์ฌ์ฉ
MCP ์๋ฒ๊ฐ OAuth (์: Kerberos, ๋จ๊ธฐ ํ ํฐ ๋๋ ๋ด๋ถ SSO)๊ฐ ์๋ ๋ค๋ฅธ ์ธ์ฆ ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ headersHelper๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ ์๊ฐ์ ์์ฒญ ํค๋๋ฅผ ์์ฑํฉ๋๋ค. Claude Code๋ ๋ช
๋ น์ ์คํํ๊ณ ์ถ๋ ฅ์ ์ฐ๊ฒฐ ํค๋์ ๋ณํฉํฉ๋๋ค.
{
"mcpServers": {
"internal-api": {
"type": "http",
"url": "https://mcp.internal.example.com",
"headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
}
}
}
๋ช ๋ น์ ์ธ๋ผ์ธ์ผ ์๋ ์์ต๋๋ค:
{
"mcpServers": {
"internal-api": {
"type": "http",
"url": "https://mcp.internal.example.com",
"headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"
}
}
}
์๊ตฌ ์ฌํญ:
- ๋ช ๋ น์ JSON ๊ฐ์ฒด์ ๋ฌธ์์ด ํค-๊ฐ ์์ stdout์ ์์ฑํด์ผ ํฉ๋๋ค
- ๋ช ๋ น์ 10์ด ์๊ฐ ์ด๊ณผ๋ฅผ ์ฌ์ฉํ์ฌ ์ ธ์์ ์คํ๋ฉ๋๋ค
- ๋์ ํค๋๋ ๋์ผํ ์ด๋ฆ์ ์ ์
headers๋ฅผ ์ฌ์ ์ํฉ๋๋ค
ํฌํผ๋ ๊ฐ ์ฐ๊ฒฐ (์ธ์ ์์ ๋ฐ ์ฌ์ฐ๊ฒฐ ์)์์ ์๋ก ์คํ๋ฉ๋๋ค. ์บ์ฑ์ด ์์ผ๋ฏ๋ก ์คํฌ๋ฆฝํธ๋ ํ ํฐ ์ฌ์ฌ์ฉ์ ๋ด๋นํฉ๋๋ค.
v2.1.193๋ถํฐ ๋๊ตฌ ํธ์ถ์ด 401 Unauthorized ๋๋ 403 Forbidden์ ๋ฐํํ๋ฉด Claude Code๋ ์๋์ผ๋ก ํฌํผ๋ฅผ ๋ค์ ์คํํ๊ณ ์๋ก์ด ํค๋๋ก ์ฌ์ฐ๊ฒฐํ ๋ค์ ํธ์ถ์ ํ ๋ฒ ์ฌ์๋ํฉ๋๋ค. Claude Code๋ ํด๋น ์ฌ์๋๋ ์คํจํ ๊ฒฝ์ฐ์๋ง ์๋ฒ๋ฅผ /mcp์์ ์ธ์ฆ์ด ํ์ํ ๊ฒ์ผ๋ก ํ์ํฉ๋๋ค.
Claude Code๋ ํฌํผ๋ฅผ ์คํํ ๋ ๋ค์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค:
| ๋ณ์ | ๊ฐ |
|---|---|
CLAUDE_CODE_MCP_SERVER_NAME |
MCP ์๋ฒ์ ์ด๋ฆ |
CLAUDE_CODE_MCP_SERVER_URL |
MCP ์๋ฒ์ URL |
CLAUDE_PLUGIN_ROOT |
ํ๋ฌ๊ทธ์ธ์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ. ํ๋ฌ๊ทธ์ธ์ด ์๋ฒ๋ฅผ ์ ๊ณตํ ๋๋ง ์ค์ ๋ฉ๋๋ค |
์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ MCP ์๋ฒ๋ฅผ ์ ๊ณตํ๋ ๋จ์ผ ํฌํผ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํฉ๋๋ค.
ํ๋ฌ๊ทธ์ธ ์ ๊ณต ์๋ฒ์ ๊ฒฝ์ฐ ํฌํผ๋ ๋ํ ์์
๋๋ ํ ๋ฆฌ๊ฐ ํ๋ฌ๊ทธ์ธ ๋ฃจํธ๋ก ์ค์ ๋ ์ํ์์ ์คํ๋๋ฏ๋ก ์๋ headersHelper ๊ฒฝ๋ก๋ ์ธ์
์ ์์
๋๋ ํ ๋ฆฌ๊ฐ ์๋ ํ๋ฌ๊ทธ์ธ ๋๋ ํ ๋ฆฌ ๋ด์์ ํ์ธ๋ฉ๋๋ค. Claude Code v2.1.195 ์ด์์ด ํ์ํฉ๋๋ค.
headersHelper๋ ์์์ ์
ธ ๋ช
๋ น์ ์คํํฉ๋๋ค. ํ๋ก์ ํธ ๋๋ ๋ก์ปฌ ๋ฒ์์์ ์ ์๋ ๋ ์์
๊ณต๊ฐ ์ ๋ขฐ ๋ํ ์์๋ฅผ ์๋ฝํ ํ์๋ง ์คํ๋ฉ๋๋ค.
JSON ๊ตฌ์ฑ์์ MCP ์๋ฒ ์ถ๊ฐ
MCP ์๋ฒ์ ๋ํ JSON ๊ตฌ์ฑ์ด ์๋ ๊ฒฝ์ฐ ์ง์ ์ถ๊ฐํ ์ ์์ต๋๋ค:
JSON์์ MCP ์๋ฒ ์ถ๊ฐ
# ๊ธฐ๋ณธ ๊ตฌ๋ฌธ
claude mcp add-json <name> '<json>'
# ์: JSON ๊ตฌ์ฑ์ผ๋ก HTTP ์๋ฒ ์ถ๊ฐ
claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'
# ์: JSON ๊ตฌ์ฑ์ผ๋ก stdio ์๋ฒ ์ถ๊ฐ
claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'
# ์: ์ฌ์ ๊ตฌ์ฑ๋ OAuth ์๊ฒฉ ์ฆ๋ช
์ผ๋ก HTTP ์๋ฒ ์ถ๊ฐ
claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret
์๋ฒ๊ฐ ์ถ๊ฐ๋์๋์ง ํ์ธ
claude mcp get weather-api
ํ:
- JSON์ด ์ ธ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ด์ค์ผ์ดํ๋์๋์ง ํ์ธํฉ๋๋ค
- JSON์ MCP ์๋ฒ ๊ตฌ์ฑ ์คํค๋ง๋ฅผ ์ค์ํด์ผ ํฉ๋๋ค
--scope user๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ํน์ ๊ตฌ์ฑ ๋์ ์ฌ์ฉ์ ๊ตฌ์ฑ์ ์๋ฒ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค
Claude Desktop์์ MCP ์๋ฒ ๊ฐ์ ธ์ค๊ธฐ
Claude Desktop์์ MCP ์๋ฒ๋ฅผ ์ด๋ฏธ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค:
Claude Desktop์์ ์๋ฒ ๊ฐ์ ธ์ค๊ธฐ
# ๊ธฐ๋ณธ ๊ตฌ๋ฌธ
claude mcp add-from-claude-desktop
๊ฐ์ ธ์ฌ ์๋ฒ ์ ํ
๋ช ๋ น์ ์คํํ ํ ๊ฐ์ ธ์ฌ ์๋ฒ๋ฅผ ์ ํํ ์ ์๋ ๋ํํ ๋ํ ์์๊ฐ ํ์๋ฉ๋๋ค.
์๋ฒ๊ฐ ๊ฐ์ ธ์์ก๋์ง ํ์ธ
claude mcp list
ํ:
- ์ด ๊ธฐ๋ฅ์ macOS ๋ฐ Windows Subsystem for Linux (WSL)์์๋ง ์๋ํฉ๋๋ค
- ์ด๋ฌํ ํ๋ซํผ์ ํ์ค ์์น์์ Claude Desktop ๊ตฌ์ฑ ํ์ผ์ ์ฝ์ต๋๋ค
--scope userํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ๊ตฌ์ฑ์ ์๋ฒ๋ฅผ ์ถ๊ฐํฉ๋๋ค- ๊ฐ์ ธ์จ ์๋ฒ๋ Claude Desktop๊ณผ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ต๋๋ค
- ๋์ผํ ์ด๋ฆ์ ์๋ฒ๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ฉด ์ซ์ ์ ๋ฏธ์ฌ๊ฐ ๋ถ์ต๋๋ค (์:
server_1)
Claude.ai์์ MCP ์๋ฒ ์ฌ์ฉ
Claude.ai ๊ณ์ ์ผ๋ก Claude Code์ ๋ก๊ทธ์ธํ ๊ฒฝ์ฐ Claude.ai์์ ์ถ๊ฐํ MCP ์๋ฒ๋ Claude Code์์ ์๋์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค:
Claude.ai์์ MCP ์๋ฒ ๊ตฌ์ฑ
claude.ai/customize/connectors์์ ์๋ฒ๋ฅผ ์ถ๊ฐํฉ๋๋ค. Team ๋ฐ Enterprise ํ๋์์๋ ๊ด๋ฆฌ์๋ง ์๋ฒ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
MCP ์๋ฒ ์ธ์ฆ
Claude.ai์์ ํ์ํ ์ธ์ฆ ๋จ๊ณ๋ฅผ ์๋ฃํฉ๋๋ค.
Claude Code์์ ์๋ฒ ๋ณด๊ธฐ ๋ฐ ๊ด๋ฆฌ
Claude Code์์ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค:
/mcp
Claude.ai ์๋ฒ๋ Claude.ai์์ ์จ ๊ฒ์ ๋ํ๋ด๋ ํ์๊ธฐ์ ํจ๊ป ๋ชฉ๋ก์ ๋ํ๋ฉ๋๋ค.
v2.1.161๋ถํฐ ์ด์ ์ ๋ก๊ทธ์ธํ ์ ์ด ์๋ ์ปค๋ฅํฐ๋ claude.ai ์น์
๋์ Show unused connectors ํ ๋ค์ ์ถ์๋๋ฏ๋ก ์กฐ์ง์์ ํ๋ก๋น์ ๋ํ ๋ชฉ๋ก์ด ํจ๋์ ์ฑ์ฐ์ง ์์ต๋๋ค. ํ์ ์ ํํ์ฌ ํ์ฅํฉ๋๋ค. ์ด์ ์ ๋ก๊ทธ์ธํ ์ปค๋ฅํฐ๋ ํ์ฌ ์ฌ์ธ์ฆ์ด ํ์ํ ๊ฒฝ์ฐ์๋ ๊ณ์ ํ์๋ฉ๋๋ค.
Claude.ai ์ปค๋ฅํฐ๋ ํ์ฑ ์ธ์ฆ ๋ฐฉ๋ฒ์ด Claude.ai ๊ตฌ๋
์ธ ๊ฒฝ์ฐ์๋ง ๊ฐ์ ธ์ต๋๋ค. ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, apiKeyHelper ๋๋ Bedrock์ด๋ Vertex์ ๊ฐ์ ํ์ฌ ๊ณต๊ธ์๊ฐ ํ์ฑํ๋์ด ์์ผ๋ฉด ๋ก๋๋์ง ์์ต๋๋ค. ์ด์ ์ /login์ ์คํํ๋๋ผ๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. /mcp์ ์ถ๊ฐํ ์ปค๋ฅํฐ๊ฐ ๋์ด๋์ง ์์ผ๋ฉด /status๋ฅผ ์คํํ์ฌ ํ์ฑํ๋ ์ธ์ฆ ๋ฐฉ๋ฒ์ ํ์ธํ๊ณ , ํด๋น ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํด์ ํ๊ฑฐ๋ apiKeyHelper ์ค์ ์ ์ ๊ฑฐํ ํ /login์ ์คํํ์ฌ Claude.ai ๊ณ์ ์ ์ ํํฉ๋๋ค.
Claude Code์์ ์ถ๊ฐํ ์๋ฒ๋ ๋์ผํ URL์ ๊ฐ๋ฆฌํค๋ claude.ai ์ปค๋ฅํฐ๋ณด๋ค ์ฐ์ ์์๋ฅผ ๊ฐ์ต๋๋ค. ์ด ๊ฒฝ์ฐ /mcp๋ ์ปค๋ฅํฐ๋ฅผ ์จ๊น์ผ๋ก ํ์ํ๊ณ ์ปค๋ฅํฐ๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ์ค๋ณต์ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ํ์ํฉ๋๋ค.
Microsoft 365, Gmail, Google Calendar์ ๊ฐ์ ์ผ๋ถ Anthropic ํธ์คํ
์ปค๋ฅํฐ๋ ์
์คํธ๋ฆผ ID ๊ณต๊ธ์๊ฐ claude.ai์์ ๋ฑ๋กํ ๋ฆฌ๋๋ ์
URL๋ง ํ์ฉํ๊ธฐ ๋๋ฌธ์ Claude Code์์ ๋ก์ปฌ OAuth๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. v2.1.162๋ถํฐ ์ด๋ฌํ ํธ์คํธ ์ค ํ๋๋ฅผ /mcp์์ ์ธ์ฆํ๋ฉด ๋์ claude.ai์ ์ค์ โ ์ปค๋ฅํฐ์์ ์ฐ๊ฒฐํ๋๋ก ์ง์ํ๋ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค. ๊ฑฐ๊ธฐ์์ ์ฐ๊ฒฐ๋๋ฉด ์ปค๋ฅํฐ๊ฐ Claude Code์ ์๋์ผ๋ก ๋ํ๋ฉ๋๋ค.
Claude.ai ์ปค๋ฅํฐ ๋นํ์ฑํ
Claude Code์์ claude.ai MCP ์๋ฒ๋ฅผ ๋นํ์ฑํํ๋ ค๋ฉด ๋ชจ๋ ์ค์ ๋ฒ์์์ disableClaudeAiConnectors๋ฅผ true๋ก ์ค์ ํฉ๋๋ค:
{
"disableClaudeAiConnectors": true
}
์ด ์ค์ ์ ๋ชจ๋ ์์ค true ์๋ฏธ๋ก ์ ์ฌ์ฉํฉ๋๋ค: ๋ชจ๋ ์ค์ ์์ค์ true๊ฐ ์ฐ์ ์์๋ฅผ ๊ฐ์ต๋๋ค. ์ฒดํฌ์ธ๋ ํ๋ก์ ํธ .claude/settings.json์ ํด๋ผ์ฐ๋ ์ปค๋ฅํฐ์์ ์ ์ฅ์๋ฅผ ์ ์ธํ ์ ์์ง๋ง, ํ๋ก์ ํธ ์์ค์ false๋ ์ฌ์ฉ์ ๋๋ ์ ์ฑ
์์ค์ true๊ฐ ๋นํ์ฑํํ ์ปค๋ฅํฐ๋ฅผ ๋ค์ ํ์ฑํํ ์ ์์ต๋๋ค. --mcp-config๋ฅผ ํตํด ๋ช
์์ ์ผ๋ก ์ ๋ฌ๋ ์๋ฒ๋ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
ENABLE_CLAUDEAI_MCP_SERVERS ํ๊ฒฝ ๋ณ์๋ฅผ false๋ก ์ค์ ํ ์๋ ์์ผ๋ฉฐ, ์ด๋ ํ์ฌ ์
ธ ์ธ์
์ ๋ํด ๋์ผํ ํจ๊ณผ๋ฅผ ๊ฐ์ต๋๋ค:
ENABLE_CLAUDEAI_MCP_SERVERS=false claude
๋ชจ๋ claude.ai ์ปค๋ฅํฐ๋ฅผ ๋นํ์ฑํํ๋ ๋์ ๊ฐ๋ณ claude.ai ์ปค๋ฅํฐ๋ฅผ ์ฐจ๋จํ๋ ค๋ฉด ์ด๋ฆ ๋๋ URL ํจํด์ผ๋ก deniedMcpServers์ ์ถ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด serverName ํญ๋ชฉ "claude.ai Slack"์ Slack ์ปค๋ฅํฐ๋ฅผ ์ฐจ๋จํฉ๋๋ค. ํ์ฌ ํ๋ก์ ํธ์๋ง ์ปค๋ฅํฐ๋ฅผ ์ผ๊ฑฐ๋ ๋๋ ค๋ฉด /mcp ํจ๋์ ์ฌ์ฉํฉ๋๋ค.
์ด๋ฌํ ํด๋ผ์ด์ธํธ ์ธก ์ค์ ์ ๋ก์ปฌ Claude Code ์ธ์
์ ๊ด๋ฆฌํฉ๋๋ค. Claude Code on the web ์ธ์
์์๋ claude.ai ์ปค๋ฅํฐ๊ฐ ์๊ฒฉ ํธ์คํธ์ ์ํด ํ๋ก๋น์ ๋๋๊ณ ๋ช
์์ --mcp-config ํญ๋ชฉ์ผ๋ก ๋์ฐฉํ๋ฏ๋ก disableClaudeAiConnectors๋ ์ ์ฉ๋์ง ์์ต๋๋ค. ์ปค๋ฅํฐ URL์ ์ธ์
ํ๋ก์๋ฅผ ํตํด ๋ค์ ์์ฑ๋๋ฏ๋ก ๊ณต๊ธ์
์ฒด URL์ ๋์์ผ๋ก ํ๋ deniedMcpServers serverUrl ํจํด์ ์ผ์นํ์ง ์์ต๋๋ค. ํด๋ผ์ฐ๋ ์ธ์
์ด ์ฌ์ฉํ ์ ์๋ ์ปค๋ฅํฐ๋ฅผ ๊ด๋ฆฌํ๋ ค๋ฉด claude.ai ์กฐ์ง ์ค์ ์์ ๊ด๋ฆฌํฉ๋๋ค.
Claude Code๋ฅผ MCP ์๋ฒ๋ก ์ฌ์ฉ
Claude Code ์์ฒด๋ฅผ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฐ๊ฒฐํ ์ ์๋ MCP ์๋ฒ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค:
# Claude๋ฅผ stdio MCP ์๋ฒ๋ก ์์
claude mcp serve
claude_desktop_config.json์ ์ด ๊ตฌ์ฑ์ ์ถ๊ฐํ์ฌ Claude Desktop์์ ์ฌ์ฉํ ์ ์์ต๋๋ค:
{
"mcpServers": {
"claude-code": {
"type": "stdio",
"command": "claude",
"args": ["mcp", "serve"],
"env": {}
}
}
}
์คํ ํ์ผ ๊ฒฝ๋ก ๊ตฌ์ฑ: command ํ๋๋ Claude Code ์คํ ํ์ผ์ ์ฐธ์กฐํด์ผ ํฉ๋๋ค. claude ๋ช
๋ น์ด ์์คํ
์ PATH์ ์์ผ๋ฉด ์คํ ํ์ผ์ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
์ ์ฒด ๊ฒฝ๋ก๋ฅผ ์ฐพ์ผ๋ ค๋ฉด:
which claude
๊ทธ๋ฐ ๋ค์ ๊ตฌ์ฑ์์ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค:
{
"mcpServers": {
"claude-code": {
"type": "stdio",
"command": "/full/path/to/claude",
"args": ["mcp", "serve"],
"env": {}
}
}
}
์ฌ๋ฐ๋ฅธ ์คํ ํ์ผ ๊ฒฝ๋ก๊ฐ ์์ผ๋ฉด spawn claude ENOENT์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํ:
- ์๋ฒ๋ View, Edit, LS ๋ฑ๊ณผ ๊ฐ์ Claude์ ๋๊ตฌ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Claude Desktop์์ Claude์๊ฒ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ์ฝ๊ณ , ํธ์งํ๋ ๋ฑ์ ์์ฒญํด ๋ณด์ธ์.
- ์ด MCP ์๋ฒ๋ Claude Code์ ๋๊ตฌ๋ง MCP ํด๋ผ์ด์ธํธ์ ๋ ธ์ถํ๋ฏ๋ก ํด๋ผ์ด์ธํธ๋ ๊ฐ๋ณ ๋๊ตฌ ํธ์ถ์ ๋ํ ์ฌ์ฉ์ ํ์ธ์ ๊ตฌํํ ์ฑ ์์ด ์์ต๋๋ค.
MCP ์ถ๋ ฅ ์ ํ ๋ฐ ๊ฒฝ๊ณ
MCP ๋๊ตฌ๊ฐ ํฐ ์ถ๋ ฅ์ ์์ฑํ ๋ Claude Code๋ ํ ํฐ ์ฌ์ฉ๋์ ๊ด๋ฆฌํ์ฌ ๋ํ ์ปจํ ์คํธ๊ฐ ์๋๋์ง ์๋๋ก ํฉ๋๋ค:
- ์ถ๋ ฅ ๊ฒฝ๊ณ ์๊ณ๊ฐ: Claude Code๋ MCP ๋๊ตฌ ์ถ๋ ฅ์ด 10,000 ํ ํฐ์ ์ด๊ณผํ ๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค
- ๊ตฌ์ฑ ๊ฐ๋ฅํ ์ ํ:
MAX_MCP_OUTPUT_TOKENSํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ต๋ ํ์ฉ MCP ์ถ๋ ฅ ํ ํฐ์ ์กฐ์ ํ ์ ์์ต๋๋ค - ๊ธฐ๋ณธ ์ ํ: ๊ธฐ๋ณธ ์ต๋๊ฐ์ 25,000 ํ ํฐ์ ๋๋ค
- ๋ฒ์: ํ๊ฒฝ ๋ณ์๋ ์์ ์ ์ ํ์ ์ ์ธํ์ง ์๋ ๋๊ตฌ์ ์ ์ฉ๋ฉ๋๋ค.
anthropic/maxResultSizeChars๋ฅผ ์ค์ ํ๋ ๋๊ตฌ๋MAX_MCP_OUTPUT_TOKENS์ด ์ค์ ๋ ๊ฒ๊ณผ ๊ด๊ณ์์ด ํ ์คํธ ์ฝํ ์ธ ์ ๋ํด ํด๋น ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ ๋๊ตฌ๋ ์ฌ์ ํMAX_MCP_OUTPUT_TOKENS์ ์ํฅ์ ๋ฐ์ต๋๋ค
ํฐ ์ถ๋ ฅ์ ์์ฑํ๋ ๋๊ตฌ์ ์ ํ์ ๋๋ฆฌ๋ ค๋ฉด:
export MAX_MCP_OUTPUT_TOKENS=50000
claude
์ด๋ ๋ค์์ ์ํํ๋ MCP ์๋ฒ๋ก ์์ ํ ๋ ํนํ ์ ์ฉํฉ๋๋ค:
- ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ
- ์์ธํ ๋ณด๊ณ ์ ๋๋ ๋ฌธ์ ์์ฑ
- ๊ด๋ฒ์ํ ๋ก๊ทธ ํ์ผ ๋๋ ๋๋ฒ๊น ์ ๋ณด ์ฒ๋ฆฌ
ํน์ ๋๊ตฌ์ ์ ํ ๋๋ฆฌ๊ธฐ
MCP ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ ๋๊ตฌ์ tools/list ์๋ต ํญ๋ชฉ์์ _meta["anthropic/maxResultSizeChars"]๋ฅผ ์ค์ ํ์ฌ ๊ฐ๋ณ ๋๊ตฌ๊ฐ ๊ธฐ๋ณธ ๋์คํฌ ์ ์ง ์๊ณ๊ฐ๋ณด๋ค ํฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค. Claude Code๋ ํด๋น ๋๊ตฌ์ ์๊ณ๊ฐ์ ์ฃผ์ ์ฒ๋ฆฌ๋ ๊ฐ์ผ๋ก ์ฌ๋ฆฝ๋๋ค (์ต๋ 500,000์์ ํ๋ ์ํ๊น์ง).
์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋๋ ์ ์ฒด ํ์ผ ํธ๋ฆฌ์ ๊ฐ์ด ๋ณธ์ง์ ์ผ๋ก ํฌ์ง๋ง ํ์ํ ์ถ๋ ฅ์ ๋ฐํํ๋ ๋๊ตฌ์ ์ ์ฉํฉ๋๋ค. ์ฃผ์ ์ฒ๋ฆฌ ์์ด ๊ธฐ๋ณธ ์๊ณ๊ฐ์ ์ด๊ณผํ๋ ๊ฒฐ๊ณผ๋ ๋์คํฌ์ ์ ์ง๋๊ณ ๋ํ์์ ํ์ผ ์ฐธ์กฐ๋ก ๋์ฒด๋ฉ๋๋ค.
{
"name": "get_schema",
"description": "Returns the full database schema",
"_meta": {
"anthropic/maxResultSizeChars": 200000
}
}
์ฃผ์ ์ฒ๋ฆฌ๋ ํ
์คํธ ์ฝํ
์ธ ์ ๋ํด MAX_MCP_OUTPUT_TOKENS๊ณผ ๋
๋ฆฝ์ ์ผ๋ก ์ ์ฉ๋๋ฏ๋ก ์ฌ์ฉ์๋ ๋๊ตฌ๊ฐ ์ ์ธํ๋ ๋๊ตฌ์ ๋ํด ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ๋ฆด ํ์๊ฐ ์์ต๋๋ค. ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ ๋๊ตฌ๋ ์ฌ์ ํ ํ ํฐ ์ ํ์ ์ํฅ์ ๋ฐ์ต๋๋ค.
ํน์ MCP ์๋ฒ์์ ์์ฃผ ์ถ๋ ฅ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ๋ฉด MAX_MCP_OUTPUT_TOKENS ์ ํ์ ๋๋ฆฌ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์. ๋ํ ์๋ฒ ์์ฑ์์๊ฒ anthropic/maxResultSizeChars ์ฃผ์์ ์ถ๊ฐํ๊ฑฐ๋ ์๋ต์ ํ์ด์ง ๋งค๊นํ๋๋ก ์์ฒญํ ์ ์์ต๋๋ค. ์ฃผ์์ ์ด๋ฏธ์ง ์ฝํ
์ธ ๋ฅผ ๋ฐํํ๋ ๋๊ตฌ์๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ MAX_MCP_OUTPUT_TOKENS์ ์ฌ๋ฆฌ๋ ๊ฒ์ด ์ ์ผํ ์ต์
์
๋๋ค.
๋ฃจํธ ์์ค ๊ฒฐํฉ์๊ฐ ์๋ ๋๊ตฌ ์ ๋ ฅ ์คํค๋ง
์ผ๋ถ MCP ์๋ฒ๋ ๋๊ตฌ์ ์
๋ ฅ ์คํค๋ง๋ฅผ JSON Schema ํฉ์งํฉ์ผ๋ก ์ ์ธํ๋ฉฐ, anyOf, oneOf ๋๋ allOf๊ฐ ์คํค๋ง์ ์ต์์ ์์ค์ ์์ต๋๋ค. Claude API๋ ์คํค๋ง ๋ฃจํธ์์ ์ด๋ฌํ ํค์๋๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค. ์ด๋ properties ๋ด์ ์ค์ฒฉ๋ ๊ฒฐํฉ์๋ฅผ ํ์ฉํ๋ฉฐ, Claude Code๋ ๋ณ๊ฒฝ ์์ด ์ ์กํฉ๋๋ค.
Claude Code v2.1.195๋ถํฐ ๋ฃจํธ ์์ค ๊ฒฐํฉ์๊ฐ ์๋ ๋๊ตฌ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํ๋ก ์ ์ง๋ฉ๋๋ค. API์ ๋๊ตฌ๋ฅผ ๋ณด๋ด๊ธฐ ์ ์ Claude Code๋ ์คํค๋ง๋ฅผ ๋จ์ผ ๊ฐ์ฒด๋ก ํํํํ๊ณ Claude์๊ฒ ์ด๋ค ๋งค๊ฐ๋ณ์ ๊ทธ๋ฃน์ด ํจ๊ป ์ํ๋์ง ์๋ ค์ฃผ๋ ๋ฌธ์ฅ์ ๋๊ตฌ์ ์ค๋ช ์์ ์ถ๊ฐํฉ๋๋ค:
allOf: ๋ชจ๋ ๋ถ๊ธฐ์ ์์ฑ์ด ๋ณํฉ๋๊ณ , ๊ฐ ๋ถ๊ธฐ์required๋ชฉ๋ก์ด ์ฌ์ ํ ์ ์ฉ๋ฉ๋๋คanyOf๋ฐoneOf: ๋ชจ๋ ๋ถ๊ธฐ์ ์์ฑ์ด ๋ณํฉ๋๊ณ , ๊ฐ ๋ถ๊ธฐ์required๋ชฉ๋ก์ ์คํค๋ง์ ์ํด ๊ฐ์ ๋์ง ์๊ณ ๋๊ตฌ ์ค๋ช ์ ์ค๋ช ๋ฉ๋๋ค
์๋ฒ๋ Claude๊ฐ ์ ํํ ์ธ์๋ฅผ ์์ ํ๋ฏ๋ก ์๋ฒ ์ธก์์ ์กฐํฉ์ ๊ณ์ ๊ฒ์ฆํ์ธ์.
Claude Code๊ฐ API๊ฐ ํ์ฉํ๋ ์คํค๋ง๋ฅผ ์์ฑํ ์ ์๊ฑฐ๋ ์คํ๋ผ์ธ ๋จธ์ ๊ณผ ๊ฐ์ด ์ฌ์์ฑ์ ํ์ฑํํ๋ ์๊ฒฉ ๊ตฌ์ฑ์ ๋ฐ์ง ์๋ ๋ฐฐํฌ์์๋ ํด๋น ๋๊ตฌ ํ๋๋ฅผ ๊ฑด๋๋ฐ๊ณ , ์๋ฒ์ ๋ก๊ทธ์ ์ด์ ๋ฅผ ๊ธฐ๋กํ๊ณ , ์๋ฒ์ ๋ค๋ฅธ ๋๊ตฌ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ์ ์งํฉ๋๋ค. v2.1.195๋ณด๋ค ์ด์ ๋ฒ์ ์ ์
๋ ฅ ์คํค๋ง์ ๋ฃจํธ ์์ค์ anyOf, oneOf ๋๋ allOf๊ฐ ์๋ ๋ชจ๋ ๋๊ตฌ๋ฅผ ๊ฑด๋๋๋๋ค.
ํน์ ๋๊ตฌ์ ๋ํ ์น์ธ ํ์
MCP ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ ๋๊ตฌ์ tools/list ์๋ต ํญ๋ชฉ์์ _meta["anthropic/requiresUserInteraction"]์ true๋ก ์ค์ ํ์ฌ ๋๊ตฌ๋ฅผ ๋ชจ๋ ํธ์ถ์์ ๋ช
์์ ์น์ธ์ด ํ์ํ ๊ฒ์ผ๋ก ํ์ํ ์ ์์ต๋๋ค. ๊ฐ์ JSON ๋ถ์ธ true์ฌ์ผ ํ๋ฉฐ, ๋ค๋ฅธ ๊ฐ์ ๋ฌด์๋ฉ๋๋ค.
Claude Code๋ acceptEdits, auto, bypassPermissions ๊ถํ ๋ชจ๋์์๋ ํด๋น ๋๊ตฌ์ ๊ถํ ํ๋กฌํํธ๋ฅผ ๋ชจ๋ ํธ์ถ์์ ํ์ํ๊ณ "๋ค์ ๋ฌป์ง ์๊ธฐ" ์ต์
์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋๊ตฌ์ ์ผ์นํ๋ ํ์ฉ ๊ท์น๋ ํ๋กฌํํธ๋ฅผ ๊ฑด๋๋ฐ์ง ์์ต๋๋ค. dontAsk ๋ชจ๋์์๋ ํ๋กฌํํธ๋ฅผ ํ์ํ์ง ์์ผ๋ฏ๋ก Claude Code๋ ํธ์ถ์ ๊ฑฐ๋ถํฉ๋๋ค.
ํ๋กฌํํธ๋ ์ฌ๋์๊ฒ ๋๋ฌํด์ผ ํฉ๋๋ค. --permission-prompt-tool์ ์ฌ์ฉํ๋ ๋น๋ํํ ๋ชจ๋์์ ํ๋๊ทธ๋ ๋๊ตฌ์ ๋ํ ํ๋กฌํํธ ๋๊ตฌ์ allow ๊ฒฐ๊ณผ๋ MCP tool requires user interaction; not supported via --permission-prompt-tool ๋ฉ์์ง์ ํจ๊ป ๊ฑฐ๋ถ๋ก ๋ณํ๋ฉ๋๋ค. Agent SDK์ canUseTool ์ฝ๋ฐฑ์ ์ด๋ฌํ ํธ์ถ์ ์์ ํ๊ณ ์น์ธํ ์ ์์ต๋๋ค. SDK ํธ์คํธ๋ ์ฌ์ฉ์์๊ฒ ์ด๋ฅผ ํ์ํ ๊ฒ์ผ๋ก ์์๋๊ธฐ ๋๋ฌธ์
๋๋ค.
์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ถํ ํ๋กฌํํธ ์์ฒด๊ฐ ์์ ์ธ ๋๊ตฌ(์: ๋์ ๋๋ ์ก์ธ์ค ๋ถ์ฌ ๋จ๊ณ)์ ์ฌ์ฉํ์ธ์. ์๋ ์น์ธ์ ์ธ๊ฐ์ด ๋์ํ์ง ์์๋ค๋ ์๋ฏธ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋์ผํ ์๋ฒ์ ๋ค๋ฅธ ๋๊ตฌ๋ ์ ์์ ์ธ ๊ถํ ๋์์ ์ ์งํฉ๋๋ค.
๋ค์ tools/list ํญ๋ชฉ์ ํ ๋๊ตฌ๋ฅผ ํญ์ ์น์ธ์ด ํ์ํ ๊ฒ์ผ๋ก ํ์ํฉ๋๋ค.
{
"name": "grant_access",
"description": "Requests access to a protected resource",
"_meta": {
"anthropic/requiresUserInteraction": true
}
}
anthropic/requiresUserInteraction ์ฃผ์์ Claude Code v2.1.199 ์ด์์ด ํ์ํฉ๋๋ค. ์ด์ ๋ฒ์ ์ ์ด๋ฅผ ๋ฌด์ํ๊ณ ํ์ค ๊ถํ ํ๋ฆ์ ์ ์ฉํฉ๋๋ค.
์ธ์ ์ด Remote Control์ ์ฐ๊ฒฐ๋๊ฑฐ๋ SDK ํธ์คํธ์ ์ฐ๊ฒฐ๋๋ฉด Claude Code๋ ๊ถํ ์์ฒญ์ ์ฌ์ฉ์ ์ํธ์์ฉ์ด ํ์ํ ๊ฒ์ผ๋ก ํ์ํ๋ฏ๋ก ํด๋ผ์ด์ธํธ๋ ํ ๋ฒ์ ํญ ์น์ธ ์์ ๋์ ๋๊ตฌ์ ๊ถํ ํ๋กฌํํธ๋ฅผ ํ์ํฉ๋๋ค.
MCP elicitation ์์ฒญ์ ์๋ต
MCP ์๋ฒ๋ ์์ ์ค์ ๊ตฌ์กฐํ๋ ์ ๋ ฅ์ ์์ฒญํ ์ ์์ต๋๋ค(elicitation). ์๋ฒ๊ฐ ์์ฒด์ ์ผ๋ก ์ป์ ์ ์๋ ์ ๋ณด๊ฐ ํ์ํ ๋ Claude Code๋ ๋ํํ ๋ํ ์์๋ฅผ ํ์ํ๊ณ ์๋ต์ ์๋ฒ์ ๋ค์ ์ ๋ฌํฉ๋๋ค. ์ฌ์ฉ์ ์ธก์์ ๊ตฌ์ฑ์ด ํ์ํ์ง ์์ต๋๋ค: ์๋ฒ๊ฐ ์์ฒญํ ๋ elicitation ๋ํ ์์๊ฐ ์๋์ผ๋ก ๋ํ๋ฉ๋๋ค.
์๋ฒ๋ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์ ๋ ฅ์ ์์ฒญํ ์ ์์ต๋๋ค:
- ์์ ๋ชจ๋: Claude Code๋ ์๋ฒ์์ ์ ์ํ ์์ ํ๋๊ฐ ์๋ ๋ํ ์์๋ฅผ ํ์ํฉ๋๋ค(์: ์ฌ์ฉ์ ์ด๋ฆ ๋ฐ ์ํธ ํ๋กฌํํธ). ํ๋๋ฅผ ์ ๋ ฅํ๊ณ ์ ์ถํฉ๋๋ค.
- URL ๋ชจ๋: Claude Code๋ ์ธ์ฆ ๋๋ ์น์ธ์ ์ํด ๋ธ๋ผ์ฐ์ URL์ ์ฝ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ํ๋ฆ์ ์๋ฃํ ๋ค์ CLI์์ ํ์ธํฉ๋๋ค.
elicitation ์์ฒญ์ ์๋์ผ๋ก ์๋ตํ๋ ค๋ฉด ๋ํ ์์๋ฅผ ํ์ํ์ง ์๊ณ Elicitation hook์ ์ฌ์ฉํ์ธ์.
elicitation์ ์ฌ์ฉํ๋ MCP ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ MCP elicitation ์ฌ์์์ ํ๋กํ ์ฝ ์ธ๋ถ ์ ๋ณด ๋ฐ ์คํค๋ง ์๋ฅผ ์ฐธ์กฐํ์ธ์.
MCP ๋ฆฌ์์ค ์ฌ์ฉ
MCP ์๋ฒ๋ ํ์ผ์ ์ฐธ์กฐํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ @ ๋ฉ์ ์ ์ฌ์ฉํ์ฌ ์ฐธ์กฐํ ์ ์๋ ๋ฆฌ์์ค๋ฅผ ๋ ธ์ถํ ์ ์์ต๋๋ค.
MCP ๋ฆฌ์์ค ์ฐธ์กฐ
์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค ๋์ด
ํ๋กฌํํธ์ @๋ฅผ ์
๋ ฅํ์ฌ ์ฐ๊ฒฐ๋ ๋ชจ๋ MCP ์๋ฒ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ฅผ ํ์ธํฉ๋๋ค. ๋ฆฌ์์ค๋ ์๋ ์์ฑ ๋ฉ๋ด์ ํ์ผ๊ณผ ํจ๊ป ๋ํ๋ฉ๋๋ค.
ํน์ ๋ฆฌ์์ค ์ฐธ์กฐ
@server:protocol://resource/path ํ์์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํฉ๋๋ค:
Can you analyze @github:issue://123 and suggest a fix?
Please review the API documentation at @docs:file://api/authentication
์ฌ๋ฌ ๋ฆฌ์์ค ์ฐธ์กฐ
๋จ์ผ ํ๋กฌํํธ์์ ์ฌ๋ฌ ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค:
Compare @postgres:schema://users with @docs:file://database/user-model
ํ:
- ๋ฆฌ์์ค๋ ์ฐธ์กฐ๋ ๋ ์๋์ผ๋ก ๊ฐ์ ธ์์ง๊ณ ์ฒจ๋ถ ํ์ผ๋ก ํฌํจ๋ฉ๋๋ค
- ๋ฆฌ์์ค ๊ฒฝ๋ก๋ @ ๋ฉ์ ์๋ ์์ฑ์์ ํผ์ง ๊ฒ์ ๊ฐ๋ฅํฉ๋๋ค
- Claude Code๋ ์๋ฒ๊ฐ ์ง์ํ ๋ MCP ๋ฆฌ์์ค๋ฅผ ๋์ดํ๊ณ ์ฝ์ ์ ์๋ ๋๊ตฌ๋ฅผ ์๋์ผ๋ก ์ ๊ณตํฉ๋๋ค
- ๋ฆฌ์์ค๋ MCP ์๋ฒ๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ์ ํ์ ์ฝํ ์ธ ๋ฅผ ํฌํจํ ์ ์์ต๋๋ค (ํ ์คํธ, JSON, ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ๋ฑ)
MCP Tool Search๋ก ํ์ฅ
Tool Search๋ MCP ์ปจํ ์คํธ ์ฌ์ฉ๋์ ๋ฎ๊ฒ ์ ์งํ์ฌ ๋๊ตฌ ์ ์๋ฅผ Claude๊ฐ ํ์ํ ๋๊น์ง ์ฐ๊ธฐํฉ๋๋ค. ์ธ์ ์์ ์ ๋๊ตฌ ์ด๋ฆ๊ณผ ์๋ฒ ์ง์นจ๋ง ๋ก๋๋๋ฏ๋ก ๋ ๋ง์ MCP ์๋ฒ๋ฅผ ์ถ๊ฐํด๋ ์ปจํ ์คํธ ์๋์ฐ์ ๋ฏธ์น๋ ์ํฅ์ด ์ต์ํ๋ฉ๋๋ค. Claude Code๋ ์๋ฒ๋น ๊ณ ์ ๋ ๋๊ตฌ ์ํ์ ๋ถ๊ณผํ์ง ์์ต๋๋ค. ์ค์ง์ ์ธ ํ๊ณ๋ ์ปจํ ์คํธ ์๋์ฐ ์์ฐ์ ๋๋ค.
์๋ ๋ฐฉ์
Tool Search๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค. MCP ๋๊ตฌ๋ ๋ฏธ๋ฆฌ ๋ก๋๋์ง ์๊ณ ์ฐ๊ธฐ๋๋ฉฐ, Claude๋ ๊ฒ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ํ์ํ ๋ ๊ด๋ จ ๋๊ตฌ๋ฅผ ๊ฒ์ํฉ๋๋ค. Claude๊ฐ ์ค์ ๋ก ์ฌ์ฉํ๋ ๋๊ตฌ๋ง ์ปจํ ์คํธ์ ๋ค์ด๊ฐ๋๋ค. ์ฌ์ฉ์ ๊ด์ ์์ MCP ๋๊ตฌ๋ ์ด์ ๊ณผ ์ ํํ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
์๊ณ๊ฐ ๊ธฐ๋ฐ ๋ก๋ฉ์ ์ ํธํ๋ ๊ฒฝ์ฐ ENABLE_TOOL_SEARCH=auto๋ฅผ ์ค์ ํ์ฌ ์ปจํ
์คํธ ์๋์ฐ์ 10% ์ด๋ด์ ๋ง์ ๋ ์คํค๋ง๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๊ณ ์ค๋ฒํ๋ก์ฐ๋ง ์ฐ๊ธฐํฉ๋๋ค. ๋ชจ๋ ์ต์
์ Tool Search ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
MCP ์๋ฒ ์์ฑ์์ฉ
MCP ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ Tool Search๊ฐ ํ์ฑํ๋๋ฉด ์๋ฒ ์ง์นจ ํ๋๊ฐ ๋ ์ ์ฉํด์ง๋๋ค. ์๋ฒ ์ง์นจ์ Claude๊ฐ skills์ ์๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ๋๊ตฌ๋ฅผ ๊ฒ์ํ ์๊ธฐ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ค์์ ์ค๋ช ํ๋ ๋ช ํํ๊ณ ์ค๋ช ์ ์ธ ์๋ฒ ์ง์นจ์ ์ถ๊ฐํฉ๋๋ค:
- ๋๊ตฌ๊ฐ ์ฒ๋ฆฌํ๋ ์์ ์ ๋ฒ์ฃผ
- Claude๊ฐ ๋๊ตฌ๋ฅผ ๊ฒ์ํด์ผ ํ ๋
- ์๋ฒ๊ฐ ์ ๊ณตํ๋ ์ฃผ์ ๊ธฐ๋ฅ
Claude Code๋ ๋๊ตฌ ์ค๋ช ๋ฐ ์๋ฒ ์ง์นจ์ ๊ฐ๊ฐ 2KB์์ ์๋ฆ ๋๋ค. ์๋ฅด๊ธฐ๋ฅผ ํผํ๋ ค๋ฉด ๊ฐ๊ฒฐํ๊ฒ ์ ์งํ๊ณ ์ค์ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์์ ๋ถ๋ถ์ ๋ฐฐ์นํฉ๋๋ค.
Tool Search ๊ตฌ์ฑ
Tool Search๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค: MCP ๋๊ตฌ๋ ์ฐ๊ธฐ๋๊ณ ํ์์ ๋ฐ๋ผ ๊ฒ์๋ฉ๋๋ค. Claude Code๋ Vertex AI์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํํฉ๋๋ค. ANTHROPIC_BASE_URL์ด ๋น ์์ฌ ํธ์คํธ๋ฅผ ๊ฐ๋ฆฌํฌ ๋๋ ๋นํ์ฑํ๋ฉ๋๋ค(๋๋ถ๋ถ์ ํ๋ก์๊ฐ tool_reference ๋ธ๋ก์ ์ ๋ฌํ์ง ์๊ธฐ ๋๋ฌธ). ํด๋ฐฑ์ ์ฌ์ ์ํ๋ ค๋ฉด ENABLE_TOOL_SEARCH๋ฅผ ๋ช
์์ ์ผ๋ก ์ค์ ํฉ๋๋ค.
Tool Search๋ tool_reference ๋ธ๋ก์ ์ง์ํ๋ ๋ชจ๋ธ์ด ํ์ํฉ๋๋ค. Haiku ๋ชจ๋ธ์ ์ด๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. Vertex AI์์๋ Claude Sonnet 4.5 ์ด์ ๋ฐ Claude Opus 4.5 ์ด์์์ Tool Search๊ฐ ์ง์๋ฉ๋๋ค.
ENABLE_TOOL_SEARCH ํ๊ฒฝ ๋ณ์๋ก Tool Search ๋์์ ์ ์ดํฉ๋๋ค:
| ๊ฐ | ๋์ |
|---|---|
| (์ค์ ๋์ง ์์) | ๋ชจ๋ MCP ๋๊ตฌ ์ฐ๊ธฐ๋๊ณ ํ์์ ๋ฐ๋ผ ๋ก๋๋จ. Vertex AI ๋๋ ANTHROPIC_BASE_URL์ด ๋น ์์ฌ ํธ์คํธ์ผ ๋ ๋ฏธ๋ฆฌ ๋ก๋๋ก ๋์๊ฐ |
true |
๋ชจ๋ MCP ๋๊ตฌ ์ฐ๊ธฐ. Claude Code๋ Vertex AI ๋ฐ ํ๋ก์๋ฅผ ํตํด์๋ ๋ฒ ํ ํค๋๋ฅผ ์ ์กํฉ๋๋ค. Vertex AI์ Sonnet 4.5 ๋๋ Opus 4.5๋ณด๋ค ์ด์ ๋ชจ๋ธ์์ ์์ฒญ์ด ์คํจํ๊ฑฐ๋ tool_reference ๋ธ๋ก์ ์ง์ํ์ง ์๋ ํ๋ก์์์ ์คํจํฉ๋๋ค |
auto |
์๊ณ๊ฐ ๋ชจ๋: ๋๊ตฌ๊ฐ ์ปจํ ์คํธ ์๋์ฐ์ 10% ์ด๋ด์ ๋ง์ผ๋ฉด ๋ฏธ๋ฆฌ ๋ก๋, ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฐ๊ธฐ |
auto:N |
์ฌ์ฉ์ ์ ์ ๋ฐฑ๋ถ์จ์ ์ฌ์ฉํ ์๊ณ๊ฐ ๋ชจ๋, N์ 0-100 (์: auto:5๋ 5%) |
false |
๋ชจ๋ MCP ๋๊ตฌ ๋ฏธ๋ฆฌ ๋ก๋, ์ฐ๊ธฐ ์์ |
# ์ฌ์ฉ์ ์ ์ 5% ์๊ณ๊ฐ ์ฌ์ฉ
ENABLE_TOOL_SEARCH=auto:5 claude
# Tool Search ์์ ํ ๋นํ์ฑํ
ENABLE_TOOL_SEARCH=false claude
๋๋ settings.json env ํ๋์์ ๊ฐ์ ์ค์ ํฉ๋๋ค.
ToolSearch ๋๊ตฌ๋ฅผ ํน๋ณํ ๋นํ์ฑํํ ์๋ ์์ต๋๋ค:
{
"permissions": {
"deny": ["ToolSearch"]
}
}
์๋ฒ๋ฅผ ์ฐ๊ธฐ์์ ์ ์ธ
์๋ฒ์ ๋๊ตฌ๊ฐ ๊ฒ์ ๋จ๊ณ ์์ด ํญ์ Claude์๊ฒ ํ์๋์ด์ผ ํ๋ ๊ฒฝ์ฐ ํด๋น ์๋ฒ์ ๊ตฌ์ฑ์์ alwaysLoad๋ฅผ true๋ก ์ค์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ENABLE_TOOL_SEARCH ์ค์ ์ ๊ด๊ณ์์ด ํด๋น ์๋ฒ์ ๋ชจ๋ ๋๊ตฌ๊ฐ ์ธ์
์์ ์ ์ปจํ
์คํธ์ ๋ก๋๋ฉ๋๋ค. ๋งค ํด๋ง๋ค Claude๊ฐ ํ์๋ก ํ๋ ์์์ ๋๊ตฌ์ ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ฐ ๋ฏธ๋ฆฌ ๋ก๋๋ ๋๊ตฌ๋ ๋ํ์ ์ฌ์ฉํ ์ ์๋ ์ปจํ
์คํธ๋ฅผ ์๋นํ๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ค์ .mcp.json ํญ๋ชฉ์ ํ HTTP ์๋ฒ๋ฅผ ์ ์ธํ๋ฉด์ ๋ค๋ฅธ ์๋ฒ๋ ์ฐ๊ธฐ๋ ์ํ๋ก ์ ์งํฉ๋๋ค:
{
"mcpServers": {
"core-tools": {
"type": "http",
"url": "https://mcp.example.com/mcp",
"alwaysLoad": true
}
}
}
alwaysLoad ํ๋๋ ๋ชจ๋ ์๋ฒ ์ ํ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ Claude Code v2.1.121 ์ด์์ด ํ์ํฉ๋๋ค. MCP ์๋ฒ๋ ๋๊ตฌ์ _meta ๊ฐ์ฒด์ "anthropic/alwaysLoad": true๋ฅผ ํฌํจํ์ฌ ๊ฐ๋ณ ๋๊ตฌ๋ฅผ ํญ์ ๋ก๋๋๋๋ก ํ์ํ ์๋ ์์ผ๋ฉฐ, ์ด๋ ํด๋น ๋๊ตฌ์๋ง ๋์ผํ ํจ๊ณผ๋ฅผ ๊ฐ์ต๋๋ค.
alwaysLoad: true๋ฅผ ์ค์ ํ๋ฉด ์๋ฒ๊ฐ ์ฐ๊ฒฐ๋ ๋๊น์ง ์์์ด ์ฐจ๋จ๋๋ฉฐ, ํ์ค 5์ด ์ฐ๊ฒฐ ํ์์์์ผ๋ก ์ ํ๋ฉ๋๋ค. ์ด๋ MCP ์์์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ฐจ๋จ์ด๋๋ผ๋ ์ ์ฉ๋ฉ๋๋ค. ์ฒซ ๋ฒ์งธ ํ๋กฌํํธ๊ฐ ๋น๋๋ ๋ ๋๊ตฌ๊ฐ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ค๋ฅธ ์๋ฒ๋ ๊ณ์ํด์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
MCP ํ๋กฌํํธ๋ฅผ ๋ช ๋ น์ผ๋ก ์ฌ์ฉ
MCP ์๋ฒ๋ Claude Code์์ ๋ช ๋ น์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ๋๋ ํ๋กฌํํธ๋ฅผ ๋ ธ์ถํ ์ ์์ต๋๋ค.
MCP ํ๋กฌํํธ ์คํ
์ฌ์ฉ ๊ฐ๋ฅํ ํ๋กฌํํธ ๊ฒ์
/๋ฅผ ์
๋ ฅํ์ฌ MCP ์๋ฒ์ ํ๋กฌํํธ๋ฅผ ํฌํจํ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ช
๋ น์ ํ์ธํฉ๋๋ค. MCP ํ๋กฌํํธ๋ /mcp__servername__promptname ํ์์ผ๋ก ๋ํ๋ฉ๋๋ค.
์ธ์ ์์ด ํ๋กฌํํธ ์คํ
/mcp__github__list_prs
์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋กฌํํธ ์คํ
๋ง์ ํ๋กฌํํธ๋ ์ธ์๋ฅผ ํ์ฉํฉ๋๋ค. ๋ช ๋ น ๋ค์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ ๋ฌํฉ๋๋ค:
/mcp__github__pr_review 456
/mcp__jira__create_issue "๋ก๊ทธ์ธ ํ๋ฆ์ ๋ฒ๊ทธ" high
ํ:
- MCP ํ๋กฌํํธ๋ ์ฐ๊ฒฐ๋ ์๋ฒ์์ ๋์ ์ผ๋ก ๊ฒ์๋ฉ๋๋ค
- ์ธ์๋ ํ๋กฌํํธ์ ์ ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์๋ฉ๋๋ค
- ํ๋กฌํํธ ๊ฒฐ๊ณผ๋ ๋ํ์ ์ง์ ์ฃผ์ ๋ฉ๋๋ค
- ์๋ฒ ๋ฐ ํ๋กฌํํธ ์ด๋ฆ์ ์ ๊ทํ๋ฉ๋๋ค (๊ณต๋ฐฑ์ ๋ฐ์ค์ด ๋จ)
๊ด๋ฆฌ๋๋ MCP ๊ตฌ์ฑ
์ค์ ์ง์ค์ ์ ์ด๊ฐ ํ์ํ ์กฐ์ง์ ๊ฒฝ์ฐ MCP ์๋ฒ์ ์ฌ์ฉ์๊ฐ ์ฐ๊ฒฐํ ์ ์๋ ์๋ฒ๋ฅผ ์ ์ดํ๋ ค๋ฉด ๊ด๋ฆฌ๋๋ MCP ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ญ์์ค. ์ด๋ managed-mcp.json์ ์ฌ์ฉํ์ฌ ๊ณ ์ ๋ ์๋ฒ ์ธํธ ๋ฐฐํฌ, allowedMcpServers ๋ฐ deniedMcpServers๋ก ์๋ฒ ์ ํ, ์๋ฒ๊ฐ ์ฐจ๋จ๋ ๋ ์ฌ์ฉ์๊ฐ ๋ณด๋ ๋ด์ฉ์ ๋ค๋ฃน๋๋ค.