SpyBara
Go Premium

mcp.md 2026-05-08 22:00 UTC to 2026-05-09 04:57 UTC

2 added, 0 removed.

2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

MCP๋ฅผ ํ†ตํ•ด Claude Code๋ฅผ ๋„๊ตฌ์— ์—ฐ๊ฒฐํ•˜๊ธฐ

Model Context Protocol์„ ์‚ฌ์šฉํ•˜์—ฌ Claude Code๋ฅผ ๋„๊ตฌ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

export const MCPServersTable = ({platform = "all"}) => { const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs'; const [servers, setServers] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchServers = async () => { try { setLoading(true); const allServers = []; let cursor = null; do { const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers'); url.searchParams.set('version', 'latest'); url.searchParams.set('visibility', 'commercial'); url.searchParams.set('limit', '100'); if (cursor) { url.searchParams.set('cursor', cursor); } const response = await fetch(url); if (!response.ok) { throw new Error(Failed to fetch MCP registry: ${response.status}); } const data = await response.json(); allServers.push(...data.servers); cursor = data.metadata?.nextCursor || null; } while (cursor); const transformedServers = allServers.map(item => { const server = item.server; const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({}); const worksWith = meta.worksWith || []; const availability = { claudeCode: worksWith.includes('claude-code'), mcpConnector: worksWith.includes('claude-api'), claudeDesktop: worksWith.includes('claude-desktop') }; const remotes = server.remotes || []; const httpRemote = remotes.find(r => r.type === 'streamable-http'); const sseRemote = remotes.find(r => r.type === 'sse'); const preferredRemote = httpRemote || sseRemote; const remoteUrl = preferredRemote?.url || meta.url; const remoteType = preferredRemote?.type; const isTemplatedUrl = remoteUrl?.includes('{'); let setupUrl; if (isTemplatedUrl && meta.requiredFields) { const urlField = meta.requiredFields.find(f => f.field === 'url'); setupUrl = urlField?.sourceUrl || meta.documentation; } const urls = {}; if (!isTemplatedUrl) { if (remoteType === 'streamable-http') { urls.http = remoteUrl; } else if (remoteType === 'sse') { urls.sse = remoteUrl; } } let envVars = []; if (server.packages && server.packages.length > 0) { const npmPackage = server.packages.find(p => p.registryType === 'npm'); if (npmPackage) { urls.stdio = npx -y ${npmPackage.identifier}; if (npmPackage.environmentVariables) { envVars = npmPackage.environmentVariables; } } } return { name: meta.displayName || server.title || server.name, description: meta.oneLiner || server.description, documentation: meta.documentation, urls: urls, envVars: envVars, availability: availability, customCommands: meta.claudeCodeCopyText ? { claudeCode: meta.claudeCodeCopyText } : undefined, setupUrl: setupUrl }; }); setServers(transformedServers); setError(null); } catch (err) { setError(err.message); console.error('Error fetching MCP registry:', err); } finally { setLoading(false); } }; fetchServers(); }, []); const generateClaudeCodeCommand = server => { if (server.customCommands && server.customCommands.claudeCode) { return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http'); } const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-'); if (server.urls.http) { return claude mcp add ${serverSlug} --transport http ${server.urls.http}; } if (server.urls.sse) { return claude mcp add ${serverSlug} --transport sse ${server.urls.sse}; } if (server.urls.stdio) { const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => --env ${v.name}=YOUR_${v.name}).join(' ') : ''; const baseCommand = claude mcp add ${serverSlug} --transport stdio; return envFlags ? ${baseCommand} ${envFlags} -- ${server.urls.stdio} : ${baseCommand} -- ${server.urls.stdio}; } return null; }; if (loading) { return

Loading MCP servers...
; } if (error) { return
Error loading MCP servers: {error}
; } const filteredServers = servers.filter(server => { if (platform === "claudeCode") { return server.availability.claudeCode; } else if (platform === "mcpConnector") { return server.availability.mcpConnector; } else if (platform === "claudeDesktop") { return server.availability.claudeDesktop; } else if (platform === "all") { return true; } else { throw new Error(Unknown platform: ${platform}); } }); return <>

  <div className="cards-container">
    {filteredServers.map(server => {
const claudeCodeCommand = generateClaudeCodeCommand(server);
const mcpUrl = server.urls.http || server.urls.sse;
const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;
return <div key={server.name} className="server-card">
          <div>
            {server.documentation ? <a href={server.documentation}>
                <strong>{server.name}</strong>
              </a> : <strong>{server.name}</strong>}
          </div>

          <p style={{
  margin: '0.5rem 0',
  fontSize: '0.9rem'
}}>
            {server.description}
          </p>

          {server.setupUrl && <p style={{
  margin: '0.25rem 0',
  fontSize: '0.8rem',
  fontStyle: 'italic',
  opacity: 0.7
}}>
              Requires user-specific URL.{' '}
              <a href={server.setupUrl} style={{
  textDecoration: 'underline'
}}>
                Get your URL here
              </a>.
            </p>}

          {commandToShow && !server.setupUrl && <>
            <p style={{
  display: 'block',
  fontSize: '0.75rem',
  fontWeight: 500,
  minWidth: 'fit-content',
  marginTop: '0.5rem',
  marginBottom: 0
}}>
              {platform === "claudeCode" ? "Command" : "URL"}
            </p>
            <div className="command-row">
              <code>
                {commandToShow}
              </code>
            </div>
          </>}
        </div>;

})}

</>; };

Claude Code๋Š” AI ๋„๊ตฌ ํ†ตํ•ฉ์„ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ‘œ์ค€์ธ Model Context Protocol (MCP)๋ฅผ ํ†ตํ•ด ์ˆ˜๋ฐฑ ๊ฐœ์˜ ์™ธ๋ถ€ ๋„๊ตฌ ๋ฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MCP ์„œ๋ฒ„๋Š” Claude Code์— ๋„๊ตฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ API์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋„๊ตฌ(์˜ˆ: ์ด์Šˆ ์ถ”์ ๊ธฐ ๋˜๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ)์—์„œ ์ฑ„ํŒ…์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ์ž์‹ ์„ ๋ฐœ๊ฒฌํ•  ๋•Œ ์„œ๋ฒ„๋ฅผ ์—ฐ๊ฒฐํ•˜์„ธ์š”. ์—ฐ๊ฒฐ๋˜๋ฉด Claude๋Š” ๋ถ™์—ฌ๋„ฃ์€ ๋‚ด์šฉ์—์„œ ์ž‘์—…ํ•˜๋Š” ๋Œ€์‹  ํ•ด๋‹น ์‹œ์Šคํ…œ์„ ์ง์ ‘ ์ฝ๊ณ  ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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 ์„œ๋ฒ„

Claude Code์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” MCP ์„œ๋ฒ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

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 ์„œ๋ฒ„ ์ถ”๊ฐ€

# ๊ธฐ๋ณธ ๊ตฌ๋ฌธ
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 mcp add [options] <name> -- <command> [args...]

# ์‹ค์ œ ์˜ˆ: Airtable ์„œ๋ฒ„ ์ถ”๊ฐ€
claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \
  -- npx -y airtable-mcp-server

์„œ๋ฒ„ ๊ด€๋ฆฌ

๊ตฌ์„ฑํ•œ ํ›„์—๋Š” ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ MCP ์„œ๋ฒ„๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# ๊ตฌ์„ฑ๋œ ๋ชจ๋“  ์„œ๋ฒ„ ๋‚˜์—ด
claude mcp list

# ํŠน์ • ์„œ๋ฒ„์˜ ์„ธ๋ถ€ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
claude mcp get github

# ์„œ๋ฒ„ ์ œ๊ฑฐ
claude mcp remove github

# (Claude Code ๋‚ด์—์„œ) ์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธ
/mcp

/mcp ํŒจ๋„์€ ๊ฐ ์—ฐ๊ฒฐ๋œ ์„œ๋ฒ„ ์˜†์— ๋„๊ตฌ ๊ฐœ์ˆ˜๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ๋„๊ตฌ ๊ธฐ๋Šฅ์„ ๊ด‘๊ณ ํ•˜์ง€๋งŒ ๋„๊ตฌ๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š๋Š” ์„œ๋ฒ„์— ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์ด๋ฆ„ 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๋ฒˆ ์žฌ์‹œ๋„ํ•œ ํ›„, ์—ฌ์ „ํžˆ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์œผ๋ฉด ์„œ๋ฒ„๋ฅผ ์‹คํŒจ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ ๋ฐ ์ฐพ์„ ์ˆ˜ ์—†์Œ ์˜ค๋ฅ˜๋Š” ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์žฌ์‹œ๋„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฑ„๋„์„ ์‚ฌ์šฉํ•œ ๋ฉ”์‹œ์ง€ ํ‘ธ์‹œ

MCP ์„œ๋ฒ„๋Š” ๋˜ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์„ธ์…˜์— ์ง์ ‘ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ Claude๋Š” CI ๊ฒฐ๊ณผ, ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฒฝ๊ณ  ๋˜๋Š” ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€์™€ ๊ฐ™์€ ์™ธ๋ถ€ ์ด๋ฒคํŠธ์— ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ์„œ๋ฒ„๊ฐ€ claude/channel ๊ธฐ๋Šฅ์„ ์„ ์–ธํ•˜๊ณ  ์‹œ์ž‘ ์‹œ --channels ํ”Œ๋ž˜๊ทธ๋กœ ์˜ตํŠธ์ธํ•ฉ๋‹ˆ๋‹ค. ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜๋Š” ์ฑ„๋„์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ฑ„๋„์„ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜, ์ž์‹ ๋งŒ์˜ ์ฑ„๋„์„ ๊ตฌ์ถ•ํ•˜๋ ค๋ฉด ์ฑ„๋„ ์ฐธ์กฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ”Œ๋Ÿฌ๊ทธ์ธ ์ œ๊ณต 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} ์‚ฌ์šฉ
  • ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ ์•ก์„ธ์Šค: ์ˆ˜๋™์œผ๋กœ ๊ตฌ์„ฑ๋œ ์„œ๋ฒ„์™€ ๋™์ผํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์•ก์„ธ์Šค
  • ์—ฌ๋Ÿฌ ์ „์†ก ์œ ํ˜•: stdio, SSE ๋ฐ HTTP ์ „์†ก ์ง€์› (์ „์†ก ์ง€์›์€ ์„œ๋ฒ„์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ)

ํ”Œ๋Ÿฌ๊ทธ์ธ MCP ์„œ๋ฒ„ ๋ณด๊ธฐ:

# Claude Code ๋‚ด์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„œ๋ฒ„๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  MCP ์„œ๋ฒ„ ๋ณด๊ธฐ
/mcp

ํ”Œ๋Ÿฌ๊ทธ์ธ ์„œ๋ฒ„๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์˜จ ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œ์‹œ๊ธฐ์™€ ํ•จ๊ป˜ ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ MCP ์„œ๋ฒ„์˜ ์ด์ :

  • ๋ฒˆ๋“ค ๋ฐฐํฌ: ๋„๊ตฌ ๋ฐ ์„œ๋ฒ„๊ฐ€ ํ•จ๊ป˜ ํŒจํ‚ค์ง•๋จ
  • ์ž๋™ ์„ค์ •: ์ˆ˜๋™ MCP ๊ตฌ์„ฑ์ด ํ•„์š” ์—†์Œ
  • ํŒ€ ์ผ๊ด€์„ฑ: ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์„ค์น˜๋˜๋ฉด ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ๋„๊ตฌ๋ฅผ ์–ป์Œ

ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ MCP ์„œ๋ฒ„๋ฅผ ๋ฒˆ๋“ค๋กœ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ ์š”์†Œ ์ฐธ์กฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

MCP ์„ค์น˜ ๋ฒ”์œ„

MCP ์„œ๋ฒ„๋Š” ์„ธ ๊ฐ€์ง€ ๋ฒ”์œ„์—์„œ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒํ•œ ๋ฒ”์œ„๋Š” ์„œ๋ฒ„๊ฐ€ ๋กœ๋“œ๋˜๋Š” ํ”„๋กœ์ ํŠธ์™€ ๊ตฌ์„ฑ์ด ํŒ€๊ณผ ๊ณต์œ ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž๋Š” ๊ด€๋ฆฌํ˜• ๊ตฌ์„ฑ์„ ํ†ตํ•ด ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ˆ˜์ค€์—์„œ ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ”์œ„ ๋กœ๋“œ ์œ„์น˜ ํŒ€๊ณผ ๊ณต์œ  ์ €์žฅ ์œ„์น˜
๋กœ์ปฌ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋งŒ ์•„๋‹ˆ์˜ค ~/.claude.json
ํ”„๋กœ์ ํŠธ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋งŒ ์˜ˆ, ๋ฒ„์ „ ์ œ์–ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์˜ .mcp.json
์‚ฌ์šฉ์ž ๋ชจ๋“  ํ”„๋กœ์ ํŠธ ์•„๋‹ˆ์˜ค ~/.claude.json

๋กœ์ปฌ ๋ฒ”์œ„

๋กœ์ปฌ ๋ฒ”์œ„๋Š” ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ ๋ฒ”์œ„ ์„œ๋ฒ„๋Š” ์ถ”๊ฐ€ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ๋งŒ ๋กœ๋“œ๋˜๋ฉฐ ์‚ฌ์šฉ์ž์—๊ฒŒ๋งŒ ๋น„๊ณต๊ฐœ์ž…๋‹ˆ๋‹ค. Claude Code๋Š” ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ๋กœ ์•„๋ž˜ ~/.claude.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๋Š” ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์†Œ์Šค์˜ ์ •์˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ ๋ฒˆ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค:

  1. ๋กœ์ปฌ ๋ฒ”์œ„
  2. ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„
  3. ์‚ฌ์šฉ์ž ๋ฒ”์œ„
  4. ํ”Œ๋Ÿฌ๊ทธ์ธ ์ œ๊ณต ์„œ๋ฒ„
  5. 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๋Š” ๊ตฌ์„ฑ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ์˜ˆ

{/* ### ์˜ˆ: Playwright๋กœ ๋ธŒ๋ผ์šฐ์ € ํ…Œ์ŠคํŠธ ์ž๋™ํ™”

claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ธŒ๋ผ์šฐ์ € ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

test@example.com์œผ๋กœ ๋กœ๊ทธ์ธ ํ๋ฆ„์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธ
๋ชจ๋ฐ”์ผ์—์„œ ์ฒดํฌ์•„์›ƒ ํŽ˜์ด์ง€์˜ ์Šคํฌ๋ฆฐ์ƒท ์ดฌ์˜
๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”์ง€ ํ™•์ธ
``` */}

### ์˜ˆ: Sentry๋กœ ์˜ค๋ฅ˜ ๋ชจ๋‹ˆํ„ฐ๋ง

```bash theme={null}
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์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

1

์ธ์ฆ์ด ํ•„์š”ํ•œ ์„œ๋ฒ„ ์ถ”๊ฐ€

์˜ˆ๋ฅผ ๋“ค์–ด:

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

Claude Code ๋‚ด์—์„œ /mcp ๋ช…๋ น ์‚ฌ์šฉ

Claude Code์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

/mcp

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋กœ๊ทธ์ธ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

๊ณ ์ • 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 ์•ฑ์„ ๋“ฑ๋กํ•œ ๋‹ค์Œ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

1

์„œ๋ฒ„๋กœ OAuth ์•ฑ ๋“ฑ๋ก

์„œ๋ฒ„์˜ ๊ฐœ๋ฐœ์ž ํฌํ„ธ์„ ํ†ตํ•ด ์•ฑ์„ ์ƒ์„ฑํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ ID์™€ ํด๋ผ์ด์–ธํŠธ ์‹œํฌ๋ฆฟ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ์„œ๋ฒ„๋Š” ๋ฆฌ๋””๋ ‰์…˜ URI๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํฌํŠธ๋ฅผ ์„ ํƒํ•˜๊ณ  http://localhost:PORT/callback ํ˜•์‹์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ URI๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ --callback-port์™€ ํ•จ๊ป˜ ๋™์ผํ•œ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

2

์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ ์„œ๋ฒ„ ์ถ”๊ฐ€

๋‹ค์Œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. --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
3

Claude Code์—์„œ ์ธ์ฆ

Claude Code์—์„œ /mcp๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ € ๋กœ๊ทธ์ธ ํ๋ฆ„์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

OAuth ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์žฌ์ •์˜

ํŠน์ • OAuth ์ธ์ฆ ์„œ๋ฒ„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ URL์„ ๊ฐ€๋ฆฌ์ผœ ๊ธฐ๋ณธ ๊ฒ€์ƒ‰ ์ฒด์ธ์„ ์šฐํšŒํ•˜๋„๋ก Claude Code๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. MCP ์„œ๋ฒ„์˜ ํ‘œ์ค€ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ๋‚ด๋ถ€ ํ”„๋ก์‹œ๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰์„ ๋ผ์šฐํŒ…ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ 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 ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ๋œ ๋ฒ”์œ„ ์ง‘ํ•ฉ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฆ ์„œ๋ฒ„๊ฐ€ 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๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค

ํ—ฌํผ๋Š” ๊ฐ ์—ฐ๊ฒฐ (์„ธ์…˜ ์‹œ์ž‘ ๋ฐ ์žฌ์—ฐ๊ฒฐ ์‹œ)์—์„œ ์ƒˆ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์บ์‹ฑ์ด ์—†์œผ๋ฏ€๋กœ ์Šคํฌ๋ฆฝํŠธ๋Š” ํ† ํฐ ์žฌ์‚ฌ์šฉ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

Claude Code๋Š” ํ—ฌํผ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค:

๋ณ€์ˆ˜ ๊ฐ’
CLAUDE_CODE_MCP_SERVER_NAME MCP ์„œ๋ฒ„์˜ ์ด๋ฆ„
CLAUDE_CODE_MCP_SERVER_URL MCP ์„œ๋ฒ„์˜ URL

์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ MCP ์„œ๋ฒ„๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋‹จ์ผ ํ—ฌํผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

JSON ๊ตฌ์„ฑ์—์„œ MCP ์„œ๋ฒ„ ์ถ”๊ฐ€

MCP ์„œ๋ฒ„์— ๋Œ€ํ•œ JSON ๊ตฌ์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ง์ ‘ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

1

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
2

์„œ๋ฒ„๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธ

claude mcp get weather-api

Claude Desktop์—์„œ MCP ์„œ๋ฒ„ ๊ฐ€์ ธ์˜ค๊ธฐ

Claude Desktop์—์„œ MCP ์„œ๋ฒ„๋ฅผ ์ด๋ฏธ ๊ตฌ์„ฑํ•œ ๊ฒฝ์šฐ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

1

Claude Desktop์—์„œ ์„œ๋ฒ„ ๊ฐ€์ ธ์˜ค๊ธฐ

# ๊ธฐ๋ณธ ๊ตฌ๋ฌธ 
claude mcp add-from-claude-desktop 
2

๊ฐ€์ ธ์˜ฌ ์„œ๋ฒ„ ์„ ํƒ

๋ช…๋ น์„ ์‹คํ–‰ํ•œ ํ›„ ๊ฐ€์ ธ์˜ฌ ์„œ๋ฒ„๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ™”ํ˜• ๋Œ€ํ™” ์ƒ์ž๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

3

์„œ๋ฒ„๊ฐ€ ๊ฐ€์ ธ์™€์กŒ๋Š”์ง€ ํ™•์ธ

claude mcp list 

Claude.ai์—์„œ MCP ์„œ๋ฒ„ ์‚ฌ์šฉ

Claude.ai ๊ณ„์ •์œผ๋กœ Claude Code์— ๋กœ๊ทธ์ธํ•œ ๊ฒฝ์šฐ Claude.ai์—์„œ ์ถ”๊ฐ€ํ•œ MCP ์„œ๋ฒ„๋Š” Claude Code์—์„œ ์ž๋™์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค:

1

Claude.ai์—์„œ MCP ์„œ๋ฒ„ ๊ตฌ์„ฑ

claude.ai/customize/connectors์—์„œ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Team ๋ฐ Enterprise ํ”Œ๋žœ์—์„œ๋Š” ๊ด€๋ฆฌ์ž๋งŒ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2

MCP ์„œ๋ฒ„ ์ธ์ฆ

Claude.ai์—์„œ ํ•„์š”ํ•œ ์ธ์ฆ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

3

Claude Code์—์„œ ์„œ๋ฒ„ ๋ณด๊ธฐ ๋ฐ ๊ด€๋ฆฌ

Claude Code์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

/mcp

Claude.ai ์„œ๋ฒ„๋Š” Claude.ai์—์„œ ์˜จ ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œ์‹œ๊ธฐ์™€ ํ•จ๊ป˜ ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

Claude Code์—์„œ ์ถ”๊ฐ€ํ•œ ์„œ๋ฒ„๋Š” ๋™์ผํ•œ URL์„ ๊ฐ€๋ฆฌํ‚ค๋Š” claude.ai ์ปค๋„ฅํ„ฐ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ /mcp๋Š” ์ปค๋„ฅํ„ฐ๋ฅผ ์ˆจ๊น€์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

Claude Code์—์„œ claude.ai MCP ์„œ๋ฒ„๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ENABLE_CLAUDEAI_MCP_SERVERS ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค:

ENABLE_CLAUDEAI_MCP_SERVERS=false claude

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": {}
    }
  }
}

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 ๋ฆฌ์†Œ์Šค ์š”์ฒญ์— ์‘๋‹ต

MCP ์„œ๋ฒ„๋Š” ์ž‘์—… ์ค‘์— ๊ตฌ์กฐํ™”๋œ ์ž…๋ ฅ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ์–ป์„ ์ˆ˜ ์—†๋Š” ์ •๋ณด๊ฐ€ ํ•„์š”ํ•  ๋•Œ Claude Code๋Š” ๋Œ€ํ™”ํ˜• ๋Œ€ํ™” ์ƒ์ž๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์‘๋‹ต์„ ์„œ๋ฒ„์— ๋‹ค์‹œ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ธก์—์„œ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค: ์„œ๋ฒ„๊ฐ€ ์š”์ฒญํ•  ๋•Œ ๋ฆฌ์†Œ์Šค ์š”์ฒญ ๋Œ€ํ™” ์ƒ์ž๊ฐ€ ์ž๋™์œผ๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ์ž…๋ ฅ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์–‘์‹ ๋ชจ๋“œ: Claude Code๋Š” ์„œ๋ฒ„์—์„œ ์ •์˜ํ•œ ์–‘์‹ ํ•„๋“œ๊ฐ€ ์žˆ๋Š” ๋Œ€ํ™” ์ƒ์ž๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ฐ ์•”ํ˜ธ ํ”„๋กฌํ”„ํŠธ). ํ•„๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • URL ๋ชจ๋“œ: Claude Code๋Š” ์ธ์ฆ ๋˜๋Š” ์Šน์ธ์„ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ € URL์„ ์—ฝ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ๋ฆ„์„ ์™„๋ฃŒํ•œ ๋‹ค์Œ CLI์—์„œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค ์š”์ฒญ์— ์ž๋™์œผ๋กœ ์‘๋‹ตํ•˜๋ ค๋ฉด Elicitation ํ›…์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋ฆฌ์†Œ์Šค ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜๋Š” MCP ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝ์šฐ 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์„ ๋น„๊ตํ•˜์„ธ์š”

MCP Tool Search๋กœ ํ™•์žฅ

Tool Search๋Š” MCP ์ปจํ…์ŠคํŠธ ์‚ฌ์šฉ๋Ÿ‰์„ ๋‚ฎ๊ฒŒ ์œ ์ง€ํ•˜์—ฌ ๋„๊ตฌ ์ •์˜๋ฅผ Claude๊ฐ€ ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ์—ฐ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜ ์‹œ์ž‘ ์‹œ ๋„๊ตฌ ์ด๋ฆ„๋งŒ ๋กœ๋“œ๋˜๋ฏ€๋กœ ๋” ๋งŽ์€ MCP ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•ด๋„ ์ปจํ…์ŠคํŠธ ์œˆ๋„์šฐ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ์ตœ์†Œํ™”๋ฉ๋‹ˆ๋‹ค.

์ž‘๋™ ๋ฐฉ์‹

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 ๋„๊ตฌ๋Š” ์—ฐ๊ธฐ๋˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ๊ฒ€์ƒ‰๋ฉ๋‹ˆ๋‹ค. Vertex AI์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(๋„๊ตฌ ๊ฒ€์ƒ‰ ๋ฒ ํƒ€ ํ—ค๋”๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ). ANTHROPIC_BASE_URL์ด ๋น„ ์ž์‚ฌ ํ˜ธ์ŠคํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ๋„ ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค(๋Œ€๋ถ€๋ถ„์˜ ํ”„๋ก์‹œ๊ฐ€ tool_reference ๋ธ”๋ก์„ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ). ๋ช…์‹œ์ ์œผ๋กœ ENABLE_TOOL_SEARCH๋ฅผ ์„ค์ •ํ•˜์—ฌ ์˜ตํŠธ์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ tool_reference ๋ธ”๋ก์„ ์ง€์›ํ•˜๋Š” ๋ชจ๋ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค: Sonnet 4 ์ด์ƒ ๋˜๋Š” Opus 4 ์ด์ƒ. Haiku ๋ชจ๋ธ์€ Tool Search๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ENABLE_TOOL_SEARCH ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ Tool Search ๋™์ž‘์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค:

๊ฐ’ ๋™์ž‘
(์„ค์ •๋˜์ง€ ์•Š์Œ) ๋ชจ๋“  MCP ๋„๊ตฌ ์—ฐ๊ธฐ๋˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ๋กœ๋“œ๋จ. Vertex AI ๋˜๋Š” ANTHROPIC_BASE_URL์ด ๋น„ ์ž์‚ฌ ํ˜ธ์ŠคํŠธ์ผ ๋•Œ ๋ฏธ๋ฆฌ ๋กœ๋“œ๋กœ ๋Œ์•„๊ฐ
true ๋ชจ๋“  MCP ๋„๊ตฌ ์—ฐ๊ธฐ, Vertex AI ๋ฐ ๋น„ ์ž์‚ฌ ANTHROPIC_BASE_URL ํฌํ•จ
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_CONNECTION_NONBLOCKING=1์ด ์„ค์ •๋œ ๊ฒฝ์šฐ์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋นŒ๋“œ๋  ๋•Œ ๋„๊ตฌ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋น„์ฐจ๋‹จ์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์„œ๋ฒ„๋Š” ์—ฌ์ „ํžˆ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

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 ๊ตฌ์„ฑ

MCP ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ค‘์•™ ์ง‘์ค‘์‹ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ์กฐ์ง์˜ ๊ฒฝ์šฐ Claude Code๋Š” ๋‘ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์˜ต์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:

  1. managed-mcp.json์„ ์‚ฌ์šฉํ•œ ๋…์  ์ œ์–ด: ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ํ™•์žฅํ•  ์ˆ˜ ์—†๋Š” ๊ณ ์ •๋œ MCP ์„œ๋ฒ„ ์„ธํŠธ ๋ฐฐํฌ
  2. ํ—ˆ์šฉ ๋ชฉ๋ก/๊ฑฐ๋ถ€ ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•œ ์ •์ฑ… ๊ธฐ๋ฐ˜ ์ œ์–ด: ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ—ˆ์šฉ๋˜๋Š” ์„œ๋ฒ„๋ฅผ ์ œํ•œ

์ด๋Ÿฌํ•œ ์˜ต์…˜์„ ํ†ตํ•ด IT ๊ด€๋ฆฌ์ž๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์ง์›์ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” MCP ์„œ๋ฒ„ ์ œ์–ด: ์กฐ์ง ์ „์ฒด์— ํ‘œ์ค€ํ™”๋œ ์Šน์ธ๋œ MCP ์„œ๋ฒ„ ์„ธํŠธ ๋ฐฐํฌ
  • ์Šน์ธ๋˜์ง€ ์•Š์€ MCP ์„œ๋ฒ„ ๋ฐฉ์ง€: ์‚ฌ์šฉ์ž๊ฐ€ ์Šน์ธ๋˜์ง€ ์•Š์€ MCP ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œํ•œ
  • MCP ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”: ํ•„์š”ํ•œ ๊ฒฝ์šฐ MCP ๊ธฐ๋Šฅ์„ ์™„์ „ํžˆ ์ œ๊ฑฐ

์˜ต์…˜ 1: managed-mcp.json์„ ์‚ฌ์šฉํ•œ ๋…์  ์ œ์–ด

managed-mcp.json ํŒŒ์ผ์„ ๋ฐฐํฌํ•˜๋ฉด ๋ชจ๋“  MCP ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋…์  ์ œ์–ด๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ด ํŒŒ์ผ์— ์ •์˜๋œ ์„œ๋ฒ„ ์ด์™ธ์˜ MCP ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€, ์ˆ˜์ • ๋˜๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์™„์ „ํ•œ ์ œ์–ด๋ฅผ ์›ํ•˜๋Š” ์กฐ์ง์— ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‹œ์Šคํ…œ ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค:

  • macOS: /Library/Application Support/ClaudeCode/managed-mcp.json
  • Linux ๋ฐ WSL: /etc/claude-code/managed-mcp.json
  • Windows: C:\Program Files\ClaudeCode\managed-mcp.json

managed-mcp.json ํŒŒ์ผ์€ ํ‘œ์ค€ .mcp.json ํŒŒ์ผ๊ณผ ๋™์ผํ•œ ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/"
    },
    "sentry": {
      "type": "http",
      "url": "https://mcp.sentry.dev/mcp"
    },
    "company-internal": {
      "type": "stdio",
      "command": "/usr/local/bin/company-mcp-server",
      "args": ["--config", "/etc/company/mcp-config.json"],
      "env": {
        "COMPANY_API_URL": "https://internal.company.com"
      }
    }
  }
}

์˜ต์…˜ 2: ํ—ˆ์šฉ ๋ชฉ๋ก ๋ฐ ๊ฑฐ๋ถ€ ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•œ ์ •์ฑ… ๊ธฐ๋ฐ˜ ์ œ์–ด

๋…์  ์ œ์–ด๋ฅผ ํ•˜๋Š” ๋Œ€์‹  ๊ด€๋ฆฌ์ž๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ MCP ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋ฉด์„œ ํ—ˆ์šฉ๋˜๋Š” ์„œ๋ฒ„์— ์ œํ•œ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๊ด€๋ฆฌ๋˜๋Š” ์„ค์ • ํŒŒ์ผ์˜ allowedMcpServers ๋ฐ deniedMcpServers๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ œํ•œ ์˜ต์…˜

ํ—ˆ์šฉ ๋ชฉ๋ก ๋˜๋Š” ๊ฑฐ๋ถ€ ๋ชฉ๋ก์˜ ๊ฐ ํ•ญ๋ชฉ์€ ์„ธ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  1. ์„œ๋ฒ„ ์ด๋ฆ„์œผ๋กœ (serverName): ์„œ๋ฒ„์˜ ๊ตฌ์„ฑ๋œ ์ด๋ฆ„๊ณผ ์ผ์น˜
  2. ๋ช…๋ น์œผ๋กœ (serverCommand): stdio ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ •ํ™•ํ•œ ๋ช…๋ น ๋ฐ ์ธ์ˆ˜์™€ ์ผ์น˜
  3. URL ํŒจํ„ด์œผ๋กœ (serverUrl): ์™€์ผ๋“œ์นด๋“œ ์ง€์›์„ ์‚ฌ์šฉํ•˜์—ฌ ์›๊ฒฉ ์„œ๋ฒ„ URL๊ณผ ์ผ์น˜

์ค‘์š”: ๊ฐ ํ•ญ๋ชฉ์€ serverName, serverCommand ๋˜๋Š” serverUrl ์ค‘ ์ •ํ™•ํžˆ ํ•˜๋‚˜๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์˜ˆ

{
  "allowedMcpServers": [
    // ์„œ๋ฒ„ ์ด๋ฆ„์œผ๋กœ ํ—ˆ์šฉ
    { "serverName": "github" },
    { "serverName": "sentry" },

    // ์ •ํ™•ํ•œ ๋ช…๋ น์œผ๋กœ ํ—ˆ์šฉ (stdio ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ)
    { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },
    { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },

    // URL ํŒจํ„ด์œผ๋กœ ํ—ˆ์šฉ (์›๊ฒฉ ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ)
    { "serverUrl": "https://mcp.company.com/*" },
    { "serverUrl": "https://*.internal.corp/*" }
  ],
  "deniedMcpServers": [
    // ์„œ๋ฒ„ ์ด๋ฆ„์œผ๋กœ ์ฐจ๋‹จ
    { "serverName": "dangerous-server" },

    // ์ •ํ™•ํ•œ ๋ช…๋ น์œผ๋กœ ์ฐจ๋‹จ (stdio ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ)
    { "serverCommand": ["npx", "-y", "unapproved-package"] },

    // URL ํŒจํ„ด์œผ๋กœ ์ฐจ๋‹จ (์›๊ฒฉ ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ)
    { "serverUrl": "https://*.untrusted.com/*" }
  ]
}

๋ช…๋ น ๊ธฐ๋ฐ˜ ์ œํ•œ์˜ ์ž‘๋™ ๋ฐฉ์‹

์ •ํ™•ํ•œ ์ผ์น˜:

  • ๋ช…๋ น ๋ฐฐ์—ด์€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค - ๋ช…๋ น๊ณผ ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ์˜ ๋ชจ๋“  ์ธ์ˆ˜
  • ์˜ˆ: ["npx", "-y", "server"]๋Š” ["npx", "server"] ๋˜๋Š” ["npx", "-y", "server", "--flag"]์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

Stdio ์„œ๋ฒ„ ๋™์ž‘:

  • ํ—ˆ์šฉ ๋ชฉ๋ก์— ๋ชจ๋“  serverCommand ํ•ญ๋ชฉ์ด ํฌํ•จ๋˜๋ฉด stdio ์„œ๋ฒ„๋Š” ํ•ด๋‹น ๋ช…๋ น ์ค‘ ํ•˜๋‚˜์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
  • Stdio ์„œ๋ฒ„๋Š” ๋ช…๋ น ์ œํ•œ์ด ์žˆ์„ ๋•Œ ์ด๋ฆ„๋งŒ์œผ๋กœ๋Š” ํ†ต๊ณผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
  • ์ด๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค

๋น„ stdio ์„œ๋ฒ„ ๋™์ž‘:

  • ์›๊ฒฉ ์„œ๋ฒ„ (HTTP, SSE, WebSocket)๋Š” ํ—ˆ์šฉ ๋ชฉ๋ก์— serverUrl ํ•ญ๋ชฉ์ด ์žˆ์„ ๋•Œ URL ๊ธฐ๋ฐ˜ ์ผ์น˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
  • URL ํ•ญ๋ชฉ์ด ์—†์œผ๋ฉด ์›๊ฒฉ ์„œ๋ฒ„๋Š” ์ด๋ฆ„ ๊ธฐ๋ฐ˜ ์ผ์น˜๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค
  • ๋ช…๋ น ์ œํ•œ์€ ์›๊ฒฉ ์„œ๋ฒ„์— ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

URL ๊ธฐ๋ฐ˜ ์ œํ•œ์˜ ์ž‘๋™ ๋ฐฉ์‹

URL ํŒจํ„ด์€ *๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์ง€์›ํ•˜์—ฌ ๋ชจ๋“  ๋ฌธ์ž ์‹œํ€€์Šค์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ „์ฒด ๋„๋ฉ”์ธ ๋˜๋Š” ํ•˜์œ„ ๋„๋ฉ”์ธ์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์™€์ผ๋“œ์นด๋“œ ์˜ˆ:

  • https://mcp.company.com/* - ํŠน์ • ๋„๋ฉ”์ธ์˜ ๋ชจ๋“  ๊ฒฝ๋กœ ํ—ˆ์šฉ
  • https://*.example.com/* - example.com์˜ ๋ชจ๋“  ํ•˜์œ„ ๋„๋ฉ”์ธ ํ—ˆ์šฉ
  • http://localhost:*/* - localhost์˜ ๋ชจ๋“  ํฌํŠธ ํ—ˆ์šฉ

ํ˜ธ์ŠคํŠธ๋ช… ์ผ์น˜๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ›„ํ–‰ FQDN ์ ์„ ๋ฌด์‹œํ•˜์—ฌ DNS ์˜๋ฏธ๋ก ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. *://Mcp.Example.com/*์™€ ๊ฐ™์€ ํŒจํ„ด์€ https://mcp.example.com/api์™€ ์ผ์น˜ํ•˜๋ฉฐ, https://mcp.example.com.์€ https://mcp.example.com๊ณผ ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์Šคํ‚ด๊ณผ ๊ฒฝ๋กœ๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์›๊ฒฉ ์„œ๋ฒ„ ๋™์ž‘:

  • ํ—ˆ์šฉ ๋ชฉ๋ก์— ๋ชจ๋“  serverUrl ํ•ญ๋ชฉ์ด ํฌํ•จ๋˜๋ฉด ์›๊ฒฉ ์„œ๋ฒ„๋Š” ํ•ด๋‹น URL ํŒจํ„ด ์ค‘ ํ•˜๋‚˜์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
  • ์›๊ฒฉ ์„œ๋ฒ„๋Š” URL ์ œํ•œ์ด ์žˆ์„ ๋•Œ ์ด๋ฆ„๋งŒ์œผ๋กœ๋Š” ํ†ต๊ณผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
  • ์ด๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ํ—ˆ์šฉ๋˜๋Š” ์›๊ฒฉ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค
์˜ˆ: URL ์ „์šฉ ํ—ˆ์šฉ ๋ชฉ๋ก
{
"allowedMcpServers": [
{ "serverUrl": "https://mcp.company.com/*" },
{ "serverUrl": "https://*.internal.corp/*" }
]
}

๊ฒฐ๊ณผ:

  • https://mcp.company.com/api์˜ HTTP ์„œ๋ฒ„: โœ… ํ—ˆ์šฉ๋จ (URL ํŒจํ„ด๊ณผ ์ผ์น˜)
  • https://api.internal.corp/mcp์˜ HTTP ์„œ๋ฒ„: โœ… ํ—ˆ์šฉ๋จ (์™€์ผ๋“œ์นด๋“œ ํ•˜์œ„ ๋„๋ฉ”์ธ๊ณผ ์ผ์น˜)
  • https://external.com/mcp์˜ HTTP ์„œ๋ฒ„: โŒ ์ฐจ๋‹จ๋จ (URL ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Œ)
  • ๋ชจ๋“  ๋ช…๋ น์˜ Stdio ์„œ๋ฒ„: โŒ ์ฐจ๋‹จ๋จ (์ผ์น˜ํ•  ์ด๋ฆ„ ๋˜๋Š” ๋ช…๋ น ํ•ญ๋ชฉ ์—†์Œ)
์˜ˆ: ๋ช…๋ น ์ „์šฉ ํ—ˆ์šฉ ๋ชฉ๋ก
{
"allowedMcpServers": [
{ "serverCommand": ["npx", "-y", "approved-package"] }
]
}

๊ฒฐ๊ณผ:

  • ["npx", "-y", "approved-package"]๋ฅผ ์‚ฌ์šฉํ•œ Stdio ์„œ๋ฒ„: โœ… ํ—ˆ์šฉ๋จ (๋ช…๋ น๊ณผ ์ผ์น˜)
  • ["node", "server.js"]๋ฅผ ์‚ฌ์šฉํ•œ Stdio ์„œ๋ฒ„: โŒ ์ฐจ๋‹จ๋จ (๋ช…๋ น๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Œ)
  • "my-api"๋ผ๋Š” ์ด๋ฆ„์˜ HTTP ์„œ๋ฒ„: โŒ ์ฐจ๋‹จ๋จ (์ผ์น˜ํ•  ์ด๋ฆ„ ํ•ญ๋ชฉ ์—†์Œ)
์˜ˆ: ํ˜ผํ•ฉ ์ด๋ฆ„ ๋ฐ ๋ช…๋ น ํ—ˆ์šฉ ๋ชฉ๋ก
{
"allowedMcpServers": [
{ "serverName": "github" },
{ "serverCommand": ["npx", "-y", "approved-package"] }
]
}

๊ฒฐ๊ณผ:

  • ["npx", "-y", "approved-package"]๋ฅผ ์‚ฌ์šฉํ•œ "local-tool"์ด๋ผ๋Š” Stdio ์„œ๋ฒ„: โœ… ํ—ˆ์šฉ๋จ (๋ช…๋ น๊ณผ ์ผ์น˜)
  • ["node", "server.js"]๋ฅผ ์‚ฌ์šฉํ•œ "local-tool"์ด๋ผ๋Š” Stdio ์„œ๋ฒ„: โŒ ์ฐจ๋‹จ๋จ (๋ช…๋ น ํ•ญ๋ชฉ์ด ์žˆ์ง€๋งŒ ์ผ์น˜ํ•˜์ง€ ์•Š์Œ)
  • ["node", "server.js"]๋ฅผ ์‚ฌ์šฉํ•œ "github"๋ผ๋Š” Stdio ์„œ๋ฒ„: โŒ ์ฐจ๋‹จ๋จ (๋ช…๋ น ํ•ญ๋ชฉ์ด ์žˆ์„ ๋•Œ stdio ์„œ๋ฒ„๋Š” ๋ช…๋ น๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•จ)
  • "github"๋ผ๋Š” ์ด๋ฆ„์˜ HTTP ์„œ๋ฒ„: โœ… ํ—ˆ์šฉ๋จ (์ด๋ฆ„๊ณผ ์ผ์น˜)
  • "other-api"๋ผ๋Š” ์ด๋ฆ„์˜ HTTP ์„œ๋ฒ„: โŒ ์ฐจ๋‹จ๋จ (์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Œ)
์˜ˆ: ์ด๋ฆ„ ์ „์šฉ ํ—ˆ์šฉ ๋ชฉ๋ก
{
"allowedMcpServers": [
{ "serverName": "github" },
{ "serverName": "internal-tool" }
]
}

๊ฒฐ๊ณผ:

  • ๋ชจ๋“  ๋ช…๋ น์„ ์‚ฌ์šฉํ•œ "github"๋ผ๋Š” Stdio ์„œ๋ฒ„: โœ… ํ—ˆ์šฉ๋จ (๋ช…๋ น ์ œํ•œ ์—†์Œ)
  • ๋ชจ๋“  ๋ช…๋ น์„ ์‚ฌ์šฉํ•œ "internal-tool"์ด๋ผ๋Š” Stdio ์„œ๋ฒ„: โœ… ํ—ˆ์šฉ๋จ (๋ช…๋ น ์ œํ•œ ์—†์Œ)
  • "github"๋ผ๋Š” ์ด๋ฆ„์˜ HTTP ์„œ๋ฒ„: โœ… ํ—ˆ์šฉ๋จ (์ด๋ฆ„๊ณผ ์ผ์น˜)
  • "other"๋ผ๋Š” ์ด๋ฆ„์˜ ๋ชจ๋“  ์„œ๋ฒ„: โŒ ์ฐจ๋‹จ๋จ (์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Œ)

ํ—ˆ์šฉ ๋ชฉ๋ก ๋™์ž‘ (allowedMcpServers)

  • undefined (๊ธฐ๋ณธ๊ฐ’): ์ œํ•œ ์—†์Œ - ์‚ฌ์šฉ์ž๋Š” ๋ชจ๋“  MCP ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ๋นˆ ๋ฐฐ์—ด []: ์™„์ „ํ•œ ์ž ๊ธˆ - ์‚ฌ์šฉ์ž๋Š” MCP ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
  • ํ•ญ๋ชฉ ๋ชฉ๋ก: ์‚ฌ์šฉ์ž๋Š” ์ด๋ฆ„, ๋ช…๋ น ๋˜๋Š” URL ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š” ์„œ๋ฒ„๋งŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๊ฑฐ๋ถ€ ๋ชฉ๋ก ๋™์ž‘ (deniedMcpServers)

  • undefined (๊ธฐ๋ณธ๊ฐ’): ์ฐจ๋‹จ๋œ ์„œ๋ฒ„ ์—†์Œ
  • ๋นˆ ๋ฐฐ์—ด []: ์ฐจ๋‹จ๋œ ์„œ๋ฒ„ ์—†์Œ
  • ํ•ญ๋ชฉ ๋ชฉ๋ก: ์ง€์ •๋œ ์„œ๋ฒ„๋Š” ๋ชจ๋“  ๋ฒ”์œ„์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค

์ค‘์š”ํ•œ ์ฐธ๊ณ  ์‚ฌํ•ญ

  • ์˜ต์…˜ 1๊ณผ ์˜ต์…˜ 2๋ฅผ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: managed-mcp.json์ด ์กด์žฌํ•˜๋ฉด ๋…์  ์ œ์–ด๋ฅผ ๊ฐ€์ง€๋ฉฐ ์‚ฌ์šฉ์ž๋Š” ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ—ˆ์šฉ ๋ชฉ๋ก/๊ฑฐ๋ถ€ ๋ชฉ๋ก์€ ์—ฌ์ „ํžˆ ๊ด€๋ฆฌ๋˜๋Š” ์„œ๋ฒ„ ์ž์ฒด์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฑฐ๋ถ€ ๋ชฉ๋ก์ด ์ ˆ๋Œ€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค: ์„œ๋ฒ„๊ฐ€ ๊ฑฐ๋ถ€ ๋ชฉ๋ก ํ•ญ๋ชฉ๊ณผ ์ผ์น˜ํ•˜๋ฉด (์ด๋ฆ„, ๋ช…๋ น ๋˜๋Š” URL๋กœ) ํ—ˆ์šฉ ๋ชฉ๋ก์— ์žˆ์–ด๋„ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค
  • ์ด๋ฆ„ ๊ธฐ๋ฐ˜, ๋ช…๋ น ๊ธฐ๋ฐ˜ ๋ฐ URL ๊ธฐ๋ฐ˜ ์ œํ•œ์ด ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค: ์„œ๋ฒ„๋Š” ์ด๋ฆ„ ํ•ญ๋ชฉ, ๋ช…๋ น ํ•ญ๋ชฉ ๋˜๋Š” URL ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋ฉด ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค (๊ฑฐ๋ถ€ ๋ชฉ๋ก์œผ๋กœ ์ฐจ๋‹จ๋˜์ง€ ์•Š๋Š” ํ•œ)