1> ## Documentation Index
2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.
4
5# MCP๋ฅผ ํตํด Claude Code๋ฅผ ๋๊ตฌ์ ์ฐ๊ฒฐํ๊ธฐ
6
7> Model Context Protocol์ ์ฌ์ฉํ์ฌ Claude Code๋ฅผ ๋๊ตฌ์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์๋ด
๋๋ค.
8
9export const MCPServersTable = ({platform = "all"}) => {
10 const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs';
11 const [servers, setServers] = useState([]);
12 const [loading, setLoading] = useState(true);
13 const [error, setError] = useState(null);
14 useEffect(() => {
15 const fetchServers = async () => {
16 try {
17 setLoading(true);
18 const allServers = [];
19 let cursor = null;
20 do {
21 const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers');
22 url.searchParams.set('version', 'latest');
23 url.searchParams.set('visibility', 'commercial');
24 url.searchParams.set('limit', '100');
25 if (cursor) {
26 url.searchParams.set('cursor', cursor);
27 }
28 const response = await fetch(url);
29 if (!response.ok) {
30 throw new Error(`Failed to fetch MCP registry: ${response.status}`);
31 }
32 const data = await response.json();
33 allServers.push(...data.servers);
34 cursor = data.metadata?.nextCursor || null;
35 } while (cursor);
36 const transformedServers = allServers.map(item => {
37 const server = item.server;
38 const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({});
39 const worksWith = meta.worksWith || [];
40 const availability = {
41 claudeCode: worksWith.includes('claude-code'),
42 mcpConnector: worksWith.includes('claude-api'),
43 claudeDesktop: worksWith.includes('claude-desktop')
44 };
45 const remotes = server.remotes || [];
46 const httpRemote = remotes.find(r => r.type === 'streamable-http');
47 const sseRemote = remotes.find(r => r.type === 'sse');
48 const preferredRemote = httpRemote || sseRemote;
49 const remoteUrl = preferredRemote?.url || meta.url;
50 const remoteType = preferredRemote?.type;
51 const isTemplatedUrl = remoteUrl?.includes('{');
52 let setupUrl;
53 if (isTemplatedUrl && meta.requiredFields) {
54 const urlField = meta.requiredFields.find(f => f.field === 'url');
55 setupUrl = urlField?.sourceUrl || meta.documentation;
56 }
57 const urls = {};
58 if (!isTemplatedUrl) {
59 if (remoteType === 'streamable-http') {
60 urls.http = remoteUrl;
61 } else if (remoteType === 'sse') {
62 urls.sse = remoteUrl;
63 }
64 }
65 let envVars = [];
66 if (server.packages && server.packages.length > 0) {
67 const npmPackage = server.packages.find(p => p.registryType === 'npm');
68 if (npmPackage) {
69 urls.stdio = `npx -y ${npmPackage.identifier}`;
70 if (npmPackage.environmentVariables) {
71 envVars = npmPackage.environmentVariables;
72 }
73 }
74 }
75 return {
76 name: meta.displayName || server.title || server.name,
77 description: meta.oneLiner || server.description,
78 documentation: meta.documentation,
79 urls: urls,
80 envVars: envVars,
81 availability: availability,
82 customCommands: meta.claudeCodeCopyText ? {
83 claudeCode: meta.claudeCodeCopyText
84 } : undefined,
85 setupUrl: setupUrl
86 };
87 });
88 setServers(transformedServers);
89 setError(null);
90 } catch (err) {
91 setError(err.message);
92 console.error('Error fetching MCP registry:', err);
93 } finally {
94 setLoading(false);
95 }
96 };
97 fetchServers();
98 }, []);
99 const generateClaudeCodeCommand = server => {
100 if (server.customCommands && server.customCommands.claudeCode) {
101 return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http');
102 }
103 const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-');
104 if (server.urls.http) {
105 return `claude mcp add ${serverSlug} --transport http ${server.urls.http}`;
106 }
107 if (server.urls.sse) {
108 return `claude mcp add ${serverSlug} --transport sse ${server.urls.sse}`;
109 }
110 if (server.urls.stdio) {
111 const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => `--env ${v.name}=YOUR_${v.name}`).join(' ') : '';
112 const baseCommand = `claude mcp add ${serverSlug} --transport stdio`;
113 return envFlags ? `${baseCommand} ${envFlags} -- ${server.urls.stdio}` : `${baseCommand} -- ${server.urls.stdio}`;
114 }
115 return null;
116 };
117 if (loading) {
118 return <div>Loading MCP servers...</div>;
119 }
120 if (error) {
121 return <div>Error loading MCP servers: {error}</div>;
122 }
123 const filteredServers = servers.filter(server => {
124 if (platform === "claudeCode") {
125 return server.availability.claudeCode;
126 } else if (platform === "mcpConnector") {
127 return server.availability.mcpConnector;
128 } else if (platform === "claudeDesktop") {
129 return server.availability.claudeDesktop;
130 } else if (platform === "all") {
131 return true;
132 } else {
133 throw new Error(`Unknown platform: ${platform}`);
134 }
135 });
136 return <>
137 <style jsx>{`
138 .cards-container {
139 display: grid;
140 gap: 1rem;
141 margin-bottom: 2rem;
142 }
143 .server-card {
144 border: 1px solid var(--border-color, #e5e7eb);
145 border-radius: 6px;
146 padding: 1rem;
147 }
148 .command-row {
149 display: flex;
150 align-items: center;
151 gap: 0.25rem;
152 }
153 .command-row code {
154 font-size: 0.75rem;
155 overflow-x: auto;
156 }
157 `}</style>
158
159 <div className="cards-container">
160 {filteredServers.map(server => {
161 const claudeCodeCommand = generateClaudeCodeCommand(server);
162 const mcpUrl = server.urls.http || server.urls.sse;
163 const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;
164 return <div key={server.name} className="server-card">
165 <div>
166 {server.documentation ? <a href={server.documentation}>
167 <strong>{server.name}</strong>
168 </a> : <strong>{server.name}</strong>}
169 </div>
170
171 <p style={{
172 margin: '0.5rem 0',
173 fontSize: '0.9rem'
174 }}>
175 {server.description}
176 </p>
177
178 {server.setupUrl && <p style={{
179 margin: '0.25rem 0',
180 fontSize: '0.8rem',
181 fontStyle: 'italic',
182 opacity: 0.7
183 }}>
184 Requires user-specific URL.{' '}
185 <a href={server.setupUrl} style={{
186 textDecoration: 'underline'
187 }}>
188 Get your URL here
189 </a>.
190 </p>}
191
192 {commandToShow && !server.setupUrl && <>
193 <p style={{
194 display: 'block',
195 fontSize: '0.75rem',
196 fontWeight: 500,
197 minWidth: 'fit-content',
198 marginTop: '0.5rem',
199 marginBottom: 0
200 }}>
201 {platform === "claudeCode" ? "Command" : "URL"}
202 </p>
203 <div className="command-row">
204 <code>
205 {commandToShow}
206 </code>
207 </div>
208 </>}
209 </div>;
210 })}
211 </div>
212 </>;
213};
214
215Claude Code๋ AI ๋๊ตฌ ํตํฉ์ ์ํ ์คํ ์์ค ํ์ค์ธ [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction)๋ฅผ ํตํด ์๋ฐฑ ๊ฐ์ ์ธ๋ถ ๋๊ตฌ ๋ฐ ๋ฐ์ดํฐ ์์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. MCP ์๋ฒ๋ Claude Code์ ๋๊ตฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ API์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
216
217๋ค๋ฅธ ๋๊ตฌ(์: ์ด์ ์ถ์ ๊ธฐ ๋๋ ๋ชจ๋ํฐ๋ง ๋์๋ณด๋)์์ ์ฑํ
์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๋ ์์ ์ ๋ฐ๊ฒฌํ ๋ ์๋ฒ๋ฅผ ์ฐ๊ฒฐํ์ธ์. ์ฐ๊ฒฐ๋๋ฉด Claude๋ ๋ถ์ฌ๋ฃ์ ๋ด์ฉ์์ ์์
ํ๋ ๋์ ํด๋น ์์คํ
์ ์ง์ ์ฝ๊ณ ์๋ํ ์ ์์ต๋๋ค.
218
219## MCP๋ก ํ ์ ์๋ ๊ฒ
220
221MCP ์๋ฒ๊ฐ ์ฐ๊ฒฐ๋๋ฉด Claude Code์ ๋ค์์ ์์ฒญํ ์ ์์ต๋๋ค:
222
223* **์ด์ ์ถ์ ๊ธฐ์์ ๊ธฐ๋ฅ ๊ตฌํ**: "JIRA ์ด์ ENG-4521์ ์ค๋ช
๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ GitHub์์ PR์ ์์ฑํ์ธ์."
224* **๋ชจ๋ํฐ๋ง ๋ฐ์ดํฐ ๋ถ์**: "Sentry์ Statsig์ ํ์ธํ์ฌ ENG-4521์ ์ค๋ช
๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ๋์ ํ์ธํ์ธ์."
225* **๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ**: "PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ๋ฅ ENG-4521์ ์ฌ์ฉํ ๋ฌด์์ ์ฌ์ฉ์ 10๋ช
์ ์ด๋ฉ์ผ์ ์ฐพ์ผ์ธ์."
226* **๋์์ธ ํตํฉ**: "Slack์ ๊ฒ์๋ ์๋ก์ด Figma ๋์์ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ค ์ด๋ฉ์ผ ํ
ํ๋ฆฟ์ ์
๋ฐ์ดํธํ์ธ์."
227* **์ํฌํ๋ก์ฐ ์๋ํ**: "์ด 10๋ช
์ ์ฌ์ฉ์๋ฅผ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ํผ๋๋ฐฑ ์ธ์
์ ์ด๋ํ๋ Gmail ์ด์์ ์์ฑํ์ธ์."
228* **์ธ๋ถ ์ด๋ฒคํธ์ ๋ฐ์**: MCP ์๋ฒ๋ [์ฑ๋](/ko/channels)๋ก๋ ์๋ํ ์ ์์ผ๋ฉฐ, ์ธ์
์ ๋ฉ์์ง๋ฅผ ํธ์ํ๋ฏ๋ก Claude๋ ์๋ฆฌ๋ฅผ ๋น์ด ๋์ Telegram ๋ฉ์์ง, Discord ์ฑํ
๋๋ webhook ์ด๋ฒคํธ์ ๋ฐ์ํ ์ ์์ต๋๋ค.
229
230## ์ธ๊ธฐ ์๋ MCP ์๋ฒ
231
232Claude Code์ ์ฐ๊ฒฐํ ์ ์๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ MCP ์๋ฒ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
233
234<Warning>
235 ํ์ฌ MCP ์๋ฒ๋ฅผ ์ฌ์ฉํ ๋๋ ์์ ์ ์ฑ
์ํ์ ์ฌ์ฉํ์ญ์์ค - Anthropic์ ์ด๋ฌํ ๋ชจ๋ ์๋ฒ์ ์ ํ์ฑ์ด๋ ๋ณด์์ ๊ฒ์ฆํ์ง ์์์ต๋๋ค.
236 ์ค์นํ๋ MCP ์๋ฒ๋ฅผ ์ ๋ขฐํ๋์ง ํ์ธํ์ธ์.
237 ์ ๋ขฐํ ์ ์๋ ์ฝํ
์ธ ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ MCP ์๋ฒ๋ฅผ ์ฌ์ฉํ ๋๋ ํนํ ์ฃผ์ํ์ธ์. ์ด๋ฌํ ์๋ฒ๋ ํ๋กฌํํธ ์ฃผ์
์ํ์ ๋
ธ์ถ๋ ์ ์์ต๋๋ค.
238</Warning>
239
240<MCPServersTable platform="claudeCode" />
241
242<Note>
243 **ํน์ ํตํฉ์ด ํ์ํ์ ๊ฐ์?** [GitHub์์ ์๋ฐฑ ๊ฐ ์ด์์ MCP ์๋ฒ๋ฅผ ์ฐพ๊ฑฐ๋](https://github.com/modelcontextprotocol/servers), [MCP SDK](https://modelcontextprotocol.io/quickstart/server)๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ง์ ์๋ฒ๋ฅผ ๊ตฌ์ถํ์ธ์.
244</Note>
245
246## MCP ์๋ฒ ์ค์น
247
248MCP ์๋ฒ๋ ํ์์ ๋ฐ๋ผ ์ธ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค:
249
250### ์ต์
1: ์๊ฒฉ HTTP ์๋ฒ ์ถ๊ฐ
251
252HTTP ์๋ฒ๋ ์๊ฒฉ MCP ์๋ฒ์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ๊ถ์ฅ ์ต์
์
๋๋ค. ์ด๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์๋น์ค์ ๊ฐ์ฅ ๋๋ฆฌ ์ง์๋๋ ์ ์ก ๋ฐฉ์์
๋๋ค.
253
254```bash theme={null}
255# ๊ธฐ๋ณธ ๊ตฌ๋ฌธ
256claude mcp add --transport http <name> <url>
257
258# ์ค์ ์: Notion์ ์ฐ๊ฒฐ
259claude mcp add --transport http notion https://mcp.notion.com/mcp
260
261# Bearer ํ ํฐ์ ์ฌ์ฉํ ์
262claude mcp add --transport http secure-api https://api.example.com/mcp \
263 --header "Authorization: Bearer your-token"
264```
265
266### ์ต์
2: ์๊ฒฉ SSE ์๋ฒ ์ถ๊ฐ
267
268<Warning>
269 SSE (Server-Sent Events) ์ ์ก์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๊ฐ๋ฅํ ๊ฒฝ์ฐ HTTP ์๋ฒ๋ฅผ ์ฌ์ฉํ์ธ์.
270</Warning>
271
272```bash theme={null}
273# ๊ธฐ๋ณธ ๊ตฌ๋ฌธ
274claude mcp add --transport sse <name> <url>
275
276# ์ค์ ์: Asana์ ์ฐ๊ฒฐ
277claude mcp add --transport sse asana https://mcp.asana.com/sse
278
279# ์ธ์ฆ ํค๋๋ฅผ ์ฌ์ฉํ ์
280claude mcp add --transport sse private-api https://api.company.com/sse \
281 --header "X-API-Key: your-key-here"
282```
283
284### ์ต์
3: ๋ก์ปฌ stdio ์๋ฒ ์ถ๊ฐ
285
286Stdio ์๋ฒ๋ ์ปดํจํฐ์์ ๋ก์ปฌ ํ๋ก์ธ์ค๋ก ์คํ๋ฉ๋๋ค. ์์คํ
์ ์ง์ ์ก์ธ์คํ๊ฑฐ๋ ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ๊ฐ ํ์ํ ๋๊ตฌ์ ์ด์์ ์
๋๋ค.
287
288```bash theme={null}
289# ๊ธฐ๋ณธ ๊ตฌ๋ฌธ
290claude mcp add [options] <name> -- <command> [args...]
291
292# ์ค์ ์: Airtable ์๋ฒ ์ถ๊ฐ
293claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \
294 -- npx -y airtable-mcp-server
295```
296
297<Note>
298 **์ค์: ์ต์
์์**
299
300 ๋ชจ๋ ์ต์
(`--transport`, `--env`, `--scope`, `--header`)์ ์๋ฒ ์ด๋ฆ **์์** ์์ผ ํฉ๋๋ค. `--` (์ด์ค ๋์)๋ ์๋ฒ ์ด๋ฆ๊ณผ MCP ์๋ฒ์ ์ ๋ฌ๋๋ ๋ช
๋ น ๋ฐ ์ธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
301
302 ์๋ฅผ ๋ค์ด:
303
304 * `claude mcp add --transport stdio myserver -- npx server` โ `npx server` ์คํ
305 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` โ `KEY=value`๋ฅผ ํ๊ฒฝ์์ `python server.py --port 8080` ์คํ
306
307 ์ด๋ Claude์ ํ๋๊ทธ์ ์๋ฒ์ ํ๋๊ทธ ๊ฐ์ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค.
308</Note>
309
310### ์๋ฒ ๊ด๋ฆฌ
311
312๊ตฌ์ฑํ ํ์๋ ๋ค์ ๋ช
๋ น์ผ๋ก MCP ์๋ฒ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค:
313
314```bash theme={null}
315# ๊ตฌ์ฑ๋ ๋ชจ๋ ์๋ฒ ๋์ด
316claude mcp list
317
318# ํน์ ์๋ฒ์ ์ธ๋ถ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
319claude mcp get github
320
321# ์๋ฒ ์ ๊ฑฐ
322claude mcp remove github
323
324# (Claude Code ๋ด์์) ์๋ฒ ์ํ ํ์ธ
325/mcp
326```
327
328### ๋์ ๋๊ตฌ ์
๋ฐ์ดํธ
329
330Claude Code๋ MCP `list_changed` ์๋ฆผ์ ์ง์ํ๋ฏ๋ก MCP ์๋ฒ๊ฐ ์ฐ๊ฒฐ์ ๋์๋ค๊ฐ ๋ค์ ์ฐ๊ฒฐํ ํ์ ์์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ, ํ๋กฌํํธ ๋ฐ ๋ฆฌ์์ค๋ฅผ ๋์ ์ผ๋ก ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค. MCP ์๋ฒ๊ฐ `list_changed` ์๋ฆผ์ ๋ณด๋ด๋ฉด Claude Code๋ ํด๋น ์๋ฒ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ์๋์ผ๋ก ์๋ก ๊ณ ์นฉ๋๋ค.
331
332### ์๋ ์ฌ์ฐ๊ฒฐ
333
334HTTP ๋๋ SSE ์๋ฒ๊ฐ ์ธ์
์ค์ ์ฐ๊ฒฐ์ด ๋์ด์ง๋ฉด Claude Code๋ ์ง์ ๋ฐฑ์คํ๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์ฌ์ฐ๊ฒฐํฉ๋๋ค: ์ต๋ 5๋ฒ์ ์๋, 1์ด ์ง์ฐ์ผ๋ก ์์ํ์ฌ ๋งค๋ฒ ๋ ๋ฐฐ์ฉ ์ฆ๊ฐํฉ๋๋ค. ์๋ฒ๋ ์ฌ์ฐ๊ฒฐ์ด ์งํ ์ค์ธ ๋์ `/mcp`์์ ๋ณด๋ฅ ์ค์ผ๋ก ๋ํ๋ฉ๋๋ค. 5๋ฒ์ ์คํจ ์๋ ํ ์๋ฒ๋ ์คํจ๋ก ํ์๋๋ฉฐ `/mcp`์์ ์๋์ผ๋ก ๋ค์ ์๋ํ ์ ์์ต๋๋ค. Stdio ์๋ฒ๋ ๋ก์ปฌ ํ๋ก์ธ์ค์ด๋ฉฐ ์๋์ผ๋ก ์ฌ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค.
335
336HTTP ๋๋ SSE ์๋ฒ๊ฐ ์์ ์ ์ด๊ธฐ ์ฐ๊ฒฐ์ ์คํจํ ๋๋ ๋์ผํ ๋ฐฑ์คํ๊ฐ ์ ์ฉ๋ฉ๋๋ค. v2.1.121๋ถํฐ Claude Code๋ 5xx ์๋ต, ์ฐ๊ฒฐ ๊ฑฐ๋ถ ๋๋ ์๊ฐ ์ด๊ณผ์ ๊ฐ์ ์ผ์์ ์ค๋ฅ์ ๋ํด ์ด๊ธฐ ์ฐ๊ฒฐ์ ์ต๋ 3๋ฒ ์ฌ์๋ํ ํ, ์ฌ์ ํ ์ฐ๊ฒฐํ ์ ์์ผ๋ฉด ์๋ฒ๋ฅผ ์คํจ๋ก ํ์ํฉ๋๋ค. ์ธ์ฆ ๋ฐ ์ฐพ์ ์ ์์ ์ค๋ฅ๋ ํด๊ฒฐํ๊ธฐ ์ํด ๊ตฌ์ฑ ๋ณ๊ฒฝ์ด ํ์ํ๋ฏ๋ก ์ฌ์๋๋์ง ์์ต๋๋ค.
337
338### ์ฑ๋์ ์ฌ์ฉํ ๋ฉ์์ง ํธ์
339
340MCP ์๋ฒ๋ ๋ํ ๋ฉ์์ง๋ฅผ ์ธ์
์ ์ง์ ํธ์ํ ์ ์์ผ๋ฏ๋ก Claude๋ CI ๊ฒฐ๊ณผ, ๋ชจ๋ํฐ๋ง ๊ฒฝ๊ณ ๋๋ ์ฑํ
๋ฉ์์ง์ ๊ฐ์ ์ธ๋ถ ์ด๋ฒคํธ์ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํ์ฑํํ๋ ค๋ฉด ์๋ฒ๊ฐ `claude/channel` ๊ธฐ๋ฅ์ ์ ์ธํ๊ณ ์์ ์ `--channels` ํ๋๊ทธ๋ก ์ตํธ์ธํฉ๋๋ค. ๊ณต์์ ์ผ๋ก ์ง์๋๋ ์ฑ๋์ ์ฌ์ฉํ๋ ค๋ฉด [์ฑ๋](/ko/channels)์ ์ฐธ์กฐํ๊ฑฐ๋, ์์ ๋ง์ ์ฑ๋์ ๊ตฌ์ถํ๋ ค๋ฉด [์ฑ๋ ์ฐธ์กฐ](/ko/channels-reference)๋ฅผ ์ฐธ์กฐํ์ธ์.
341
342<Tip>
343 ํ:
344
345 * `--scope` ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ์ด ์ ์ฅ๋๋ ์์น๋ฅผ ์ง์ ํ์ธ์:
346 * `local` (๊ธฐ๋ณธ๊ฐ): ํ์ฌ ํ๋ก์ ํธ์์๋ง ์ฌ์ฉ์์๊ฒ๋ง ์ฌ์ฉ ๊ฐ๋ฅ (์ด์ ๋ฒ์ ์์๋ `project`๋ผ๊ณ ๋ถ๋ ธ์)
347 * `project`: `.mcp.json` ํ์ผ์ ํตํด ํ๋ก์ ํธ์ ๋ชจ๋ ์ฌ๋๊ณผ ๊ณต์
348 * `user`: ๋ชจ๋ ํ๋ก์ ํธ์์ ์ฌ์ฉ์์๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ (์ด์ ๋ฒ์ ์์๋ `global`์ด๋ผ๊ณ ๋ถ๋ ธ์)
349 * `--env` ํ๋๊ทธ๋ก ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ธ์ (์: `--env KEY=value`)
350 * `MCP_TIMEOUT` ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ MCP ์๋ฒ ์์ ์๊ฐ ์ด๊ณผ๋ฅผ ๊ตฌ์ฑํ์ธ์ (์: `MCP_TIMEOUT=10000 claude`๋ 10์ด ์๊ฐ ์ด๊ณผ๋ฅผ ์ค์ )
351 * Claude Code๋ MCP ๋๊ตฌ ์ถ๋ ฅ์ด 10,000 ํ ํฐ์ ์ด๊ณผํ ๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค. ์ด ์ ํ์ ๋๋ฆฌ๋ ค๋ฉด `MAX_MCP_OUTPUT_TOKENS` ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ธ์ (์: `MAX_MCP_OUTPUT_TOKENS=50000`)
352 * OAuth 2.0 ์ธ์ฆ์ด ํ์ํ ์๊ฒฉ ์๋ฒ๋ก ์ธ์ฆํ๋ ค๋ฉด `/mcp`๋ฅผ ์ฌ์ฉํ์ธ์
353</Tip>
354
355### ํ๋ฌ๊ทธ์ธ ์ ๊ณต MCP ์๋ฒ
356
357[ํ๋ฌ๊ทธ์ธ](/ko/plugins)์ MCP ์๋ฒ๋ฅผ ๋ฒ๋ค๋ก ์ ๊ณตํ ์ ์์ผ๋ฉฐ, ํ๋ฌ๊ทธ์ธ์ด ํ์ฑํ๋๋ฉด ๋๊ตฌ ๋ฐ ํตํฉ์ ์๋์ผ๋ก ์ ๊ณตํฉ๋๋ค. ํ๋ฌ๊ทธ์ธ MCP ์๋ฒ๋ ์ฌ์ฉ์ ๊ตฌ์ฑ ์๋ฒ์ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
358
359**ํ๋ฌ๊ทธ์ธ MCP ์๋ฒ์ ์๋ ๋ฐฉ์**:
360
361* ํ๋ฌ๊ทธ์ธ์ ํ๋ฌ๊ทธ์ธ ๋ฃจํธ์ `.mcp.json` ๋๋ `plugin.json`์ ์ธ๋ผ์ธ์ผ๋ก MCP ์๋ฒ๋ฅผ ์ ์ํฉ๋๋ค
362* ํ๋ฌ๊ทธ์ธ์ด ํ์ฑํ๋๋ฉด MCP ์๋ฒ๊ฐ ์๋์ผ๋ก ์์๋ฉ๋๋ค
363* ํ๋ฌ๊ทธ์ธ MCP ๋๊ตฌ๋ ์๋์ผ๋ก ๊ตฌ์ฑ๋ MCP ๋๊ตฌ์ ํจ๊ป ๋ํ๋ฉ๋๋ค
364* ํ๋ฌ๊ทธ์ธ ์๋ฒ๋ ํ๋ฌ๊ทธ์ธ ์ค์น๋ฅผ ํตํด ๊ด๋ฆฌ๋ฉ๋๋ค (`/mcp` ๋ช
๋ น์ด ์๋)
365
366**ํ๋ฌ๊ทธ์ธ MCP ๊ตฌ์ฑ ์**:
367
368ํ๋ฌ๊ทธ์ธ ๋ฃจํธ์ `.mcp.json`:
369
370```json theme={null}
371{
372 "mcpServers": {
373 "database-tools": {
374 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
375 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
376 "env": {
377 "DB_URL": "${DB_URL}"
378 }
379 }
380 }
381}
382```
383
384๋๋ `plugin.json`์ ์ธ๋ผ์ธ:
385
386```json theme={null}
387{
388 "name": "my-plugin",
389 "mcpServers": {
390 "plugin-api": {
391 "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
392 "args": ["--port", "8080"]
393 }
394 }
395}
396```
397
398**ํ๋ฌ๊ทธ์ธ MCP ๊ธฐ๋ฅ**:
399
400* **์๋ ๋ผ์ดํ์ฌ์ดํด**: ์ธ์
์์ ์ ํ์ฑํ๋ ํ๋ฌ๊ทธ์ธ์ ์๋ฒ๊ฐ ์๋์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ธ์
์ค์ ํ๋ฌ๊ทธ์ธ์ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํ๋ฉด `/reload-plugins`๋ฅผ ์คํํ์ฌ MCP ์๋ฒ๋ฅผ ์ฐ๊ฒฐํ๊ฑฐ๋ ์ฐ๊ฒฐ ํด์ ํฉ๋๋ค
401* **ํ๊ฒฝ ๋ณ์**: ๋ฒ๋ค๋ ํ๋ฌ๊ทธ์ธ ํ์ผ์ `${CLAUDE_PLUGIN_ROOT}` ์ฌ์ฉ ๋ฐ ํ๋ฌ๊ทธ์ธ ์
๋ฐ์ดํธ๋ฅผ ์ ์งํ๋ [์ง์์ ์ธ ์ํ](/ko/plugins-reference#persistent-data-directory)์ `${CLAUDE_PLUGIN_DATA}` ์ฌ์ฉ
402* **์ฌ์ฉ์ ํ๊ฒฝ ์ก์ธ์ค**: ์๋์ผ๋ก ๊ตฌ์ฑ๋ ์๋ฒ์ ๋์ผํ ํ๊ฒฝ ๋ณ์์ ์ก์ธ์ค
403* **์ฌ๋ฌ ์ ์ก ์ ํ**: stdio, SSE ๋ฐ HTTP ์ ์ก ์ง์ (์ ์ก ์ง์์ ์๋ฒ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์)
404
405**ํ๋ฌ๊ทธ์ธ MCP ์๋ฒ ๋ณด๊ธฐ**:
406
407```bash theme={null}
408# Claude Code ๋ด์์ ํ๋ฌ๊ทธ์ธ ์๋ฒ๋ฅผ ํฌํจํ ๋ชจ๋ MCP ์๋ฒ ๋ณด๊ธฐ
409/mcp
410```
411
412ํ๋ฌ๊ทธ์ธ ์๋ฒ๋ ํ๋ฌ๊ทธ์ธ์์ ์จ ๊ฒ์ ๋ํ๋ด๋ ํ์๊ธฐ์ ํจ๊ป ๋ชฉ๋ก์ ๋ํ๋ฉ๋๋ค.
413
414**ํ๋ฌ๊ทธ์ธ MCP ์๋ฒ์ ์ด์ **:
415
416* **๋ฒ๋ค ๋ฐฐํฌ**: ๋๊ตฌ ๋ฐ ์๋ฒ๊ฐ ํจ๊ป ํจํค์ง๋จ
417* **์๋ ์ค์ **: ์๋ MCP ๊ตฌ์ฑ์ด ํ์ ์์
418* **ํ ์ผ๊ด์ฑ**: ํ๋ฌ๊ทธ์ธ์ด ์ค์น๋๋ฉด ๋ชจ๋ ์ฌ๋์ด ๋์ผํ ๋๊ตฌ๋ฅผ ์ป์
419
420ํ๋ฌ๊ทธ์ธ๊ณผ ํจ๊ป MCP ์๋ฒ๋ฅผ ๋ฒ๋ค๋ก ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ [ํ๋ฌ๊ทธ์ธ ๊ตฌ์ฑ ์์ ์ฐธ์กฐ](/ko/plugins-reference#mcp-servers)๋ฅผ ์ฐธ์กฐํ์ธ์.
421
422## MCP ์ค์น ๋ฒ์
423
424MCP ์๋ฒ๋ ์ธ ๊ฐ์ง ๋ฒ์์์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ ํํ ๋ฒ์๋ ์๋ฒ๊ฐ ๋ก๋๋๋ ํ๋ก์ ํธ์ ๊ตฌ์ฑ์ด ํ๊ณผ ๊ณต์ ๋๋์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค.
425
426| ๋ฒ์ | ๋ก๋ ์์น | ํ๊ณผ ๊ณต์ | ์ ์ฅ ์์น |
427| ---------------------- | -------- | ------------ | -------------------- |
428| [๋ก์ปฌ](#local-scope) | ํ์ฌ ํ๋ก์ ํธ๋ง | ์๋์ค | `~/.claude.json` |
429| [ํ๋ก์ ํธ](#project-scope) | ํ์ฌ ํ๋ก์ ํธ๋ง | ์, ๋ฒ์ ์ ์ด๋ฅผ ํตํด | ํ๋ก์ ํธ ๋ฃจํธ์ `.mcp.json` |
430| [์ฌ์ฉ์](#user-scope) | ๋ชจ๋ ํ๋ก์ ํธ | ์๋์ค | `~/.claude.json` |
431
432### ๋ก์ปฌ ๋ฒ์
433
434๋ก์ปฌ ๋ฒ์๋ ๊ธฐ๋ณธ๊ฐ์
๋๋ค. ๋ก์ปฌ ๋ฒ์ ์๋ฒ๋ ์ถ๊ฐํ ํ๋ก์ ํธ์์๋ง ๋ก๋๋๋ฉฐ ์ฌ์ฉ์์๊ฒ๋ง ๋น๊ณต๊ฐ์
๋๋ค. Claude Code๋ ํด๋น ํ๋ก์ ํธ์ ๊ฒฝ๋ก ์๋ `~/.claude.json`์ ์ ์ฅํ๋ฏ๋ก ๋ค๋ฅธ ํ๋ก์ ํธ์๋ ๋์ผํ ์๋ฒ๊ฐ ๋ํ๋์ง ์์ต๋๋ค. ๊ฐ์ธ ๊ฐ๋ฐ ์๋ฒ, ์คํ์ ๊ตฌ์ฑ ๋๋ ๋ฒ์ ์ ์ด์ ํฌํจํ๊ณ ์ถ์ง ์์ ์๊ฒฉ ์ฆ๋ช
์ด ์๋ ์๋ฒ์ ๋ก์ปฌ ๋ฒ์๋ฅผ ์ฌ์ฉํ์ธ์.
435
436<Note>
437 MCP ์๋ฒ์ "๋ก์ปฌ ๋ฒ์"๋ผ๋ ์ฉ์ด๋ ์ผ๋ฐ ๋ก์ปฌ ์ค์ ๊ณผ ๋ค๋ฆ
๋๋ค. MCP ๋ก์ปฌ ๋ฒ์ ์๋ฒ๋ `~/.claude.json` (ํ ๋๋ ํ ๋ฆฌ)์ ์ ์ฅ๋๊ณ , ์ผ๋ฐ ๋ก์ปฌ ์ค์ ์ `.claude/settings.local.json` (ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ)์ ์ฌ์ฉํฉ๋๋ค. ์ค์ ํ์ผ ์์น์ ๋ํ ์์ธํ ๋ด์ฉ์ [์ค์ ](/ko/settings#settings-files)์ ์ฐธ์กฐํ์ธ์.
438</Note>
439
440```bash theme={null}
441# ๋ก์ปฌ ๋ฒ์ ์๋ฒ ์ถ๊ฐ (๊ธฐ๋ณธ๊ฐ)
442claude mcp add --transport http stripe https://mcp.stripe.com
443
444# ๋ช
์์ ์ผ๋ก ๋ก์ปฌ ๋ฒ์ ์ง์
445claude mcp add --transport http stripe --scope local https://mcp.stripe.com
446```
447
448`/path/to/your/project`์์ ์คํํ ๋ ๋ช
๋ น์ `~/.claude.json` ๋ด์ ํ์ฌ ํ๋ก์ ํธ ํญ๋ชฉ์ ์๋ฒ๋ฅผ ์์ฑํฉ๋๋ค. ์๋ ์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋๋ค:
449
450```json theme={null}
451{
452 "projects": {
453 "/path/to/your/project": {
454 "mcpServers": {
455 "stripe": {
456 "type": "http",
457 "url": "https://mcp.stripe.com"
458 }
459 }
460 }
461 }
462}
463```
464
465### ํ๋ก์ ํธ ๋ฒ์
466
467ํ๋ก์ ํธ ๋ฒ์ ์๋ฒ๋ ํ๋ก์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ `.mcp.json` ํ์ผ์ ๊ตฌ์ฑ์ ์ ์ฅํ์ฌ ํ ํ์
์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด ํ์ผ์ ๋ฒ์ ์ ์ด์ ์ฒดํฌ์ธ๋๋๋ก ์ค๊ณ๋์ด ๋ชจ๋ ํ ๋ฉค๋ฒ๊ฐ ๋์ผํ MCP ๋๊ตฌ ๋ฐ ์๋น์ค์ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค. ํ๋ก์ ํธ ๋ฒ์ ์๋ฒ๋ฅผ ์ถ๊ฐํ๋ฉด Claude Code๋ ์๋์ผ๋ก ์ด ํ์ผ์ ์์ฑํ๊ฑฐ๋ ์ ์ ํ ๊ตฌ์ฑ ๊ตฌ์กฐ๋ก ์
๋ฐ์ดํธํฉ๋๋ค.
468
469```bash theme={null}
470# ํ๋ก์ ํธ ๋ฒ์ ์๋ฒ ์ถ๊ฐ
471claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp
472```
473
474๊ฒฐ๊ณผ `.mcp.json` ํ์ผ์ ํ์คํ๋ ํ์์ ๋ฐ๋ฆ
๋๋ค:
475
476```json theme={null}
477{
478 "mcpServers": {
479 "shared-server": {
480 "command": "/path/to/server",
481 "args": [],
482 "env": {}
483 }
484 }
485}
486```
487
488๋ณด์์์ ์ด์ ๋ก Claude Code๋ `.mcp.json` ํ์ผ์ ํ๋ก์ ํธ ๋ฒ์ ์๋ฒ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์น์ธ์ ์์ฒญํฉ๋๋ค. ์ด๋ฌํ ์น์ธ ์ ํ์ ์ฌ์ค์ ํด์ผ ํ๋ ๊ฒฝ์ฐ `claude mcp reset-project-choices` ๋ช
๋ น์ ์ฌ์ฉํ์ธ์.
489
490### ์ฌ์ฉ์ ๋ฒ์
491
492์ฌ์ฉ์ ๋ฒ์ ์๋ฒ๋ `~/.claude.json`์ ์ ์ฅ๋๋ฉฐ ๊ต์ฐจ ํ๋ก์ ํธ ์ ๊ทผ์ฑ์ ์ ๊ณตํ๋ฏ๋ก ์ปดํจํฐ์ ๋ชจ๋ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์์ผ๋ฉด์ ์ฌ์ฉ์ ๊ณ์ ์๋ง ๋น๊ณต๊ฐ์
๋๋ค. ์ด ๋ฒ์๋ ๊ฐ์ธ ์ ํธ๋ฆฌํฐ ์๋ฒ, ๊ฐ๋ฐ ๋๊ตฌ ๋๋ ๋ค์ํ ํ๋ก์ ํธ์์ ์์ฃผ ์ฌ์ฉํ๋ ์๋น์ค์ ์ ํฉํฉ๋๋ค.
493
494```bash theme={null}
495# ์ฌ์ฉ์ ์๋ฒ ์ถ๊ฐ
496claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
497```
498
499### ๋ฒ์ ๊ณ์ธต ๋ฐ ์ฐ์ ์์
500
501๋์ผํ ์ด๋ฆ์ ์๋ฒ๊ฐ ๋ ์ด์์ ์์น์ ์ ์๋๋ฉด Claude Code๋ ๊ฐ์ฅ ๋์ ์ฐ์ ์์ ์์ค์ ์ ์๋ฅผ ์ฌ์ฉํ์ฌ ํ ๋ฒ ์ฐ๊ฒฐํฉ๋๋ค:
502
5031. ๋ก์ปฌ ๋ฒ์
5042. ํ๋ก์ ํธ ๋ฒ์
5053. ์ฌ์ฉ์ ๋ฒ์
5064. [ํ๋ฌ๊ทธ์ธ ์ ๊ณต ์๋ฒ](/ko/plugins)
5075. [Claude.ai ์ปค๋ฅํฐ](#use-mcp-servers-from-claude-ai)
508
509์ธ ๋ฒ์๋ ์ด๋ฆ์ผ๋ก ์ค๋ณต์ ์ผ์น์ํต๋๋ค. ํ๋ฌ๊ทธ์ธ๊ณผ ์ปค๋ฅํฐ๋ ์๋ํฌ์ธํธ๋ก ์ผ์นํ๋ฏ๋ก ์์ ์๋ฒ์ ๋์ผํ URL ๋๋ ๋ช
๋ น์ ๊ฐ๋ฆฌํค๋ ๊ฒ์ ์ค๋ณต์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
510
511### `.mcp.json`์ ํ๊ฒฝ ๋ณ์ ํ์ฅ
512
513Claude Code๋ `.mcp.json` ํ์ผ์ ํ๊ฒฝ ๋ณ์ ํ์ฅ์ ์ง์ํ๋ฏ๋ก ํ์ด ๊ตฌ์ฑ์ ๊ณต์ ํ๋ฉด์ ๋จธ์ ํน์ ๊ฒฝ๋ก ๋ฐ API ํค์ ๊ฐ์ ๋ฏผ๊ฐํ ๊ฐ์ ๋ํ ์ ์ฐ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
514
515**์ง์๋๋ ๊ตฌ๋ฌธ:**
516
517* `${VAR}` - ํ๊ฒฝ ๋ณ์ `VAR`์ ๊ฐ์ผ๋ก ํ์ฅ
518* `${VAR:-default}` - `VAR`์ด ์ค์ ๋๋ฉด ํ์ฅ, ๊ทธ๋ ์ง ์์ผ๋ฉด `default` ์ฌ์ฉ
519
520**ํ์ฅ ์์น:**
521ํ๊ฒฝ ๋ณ์๋ ๋ค์์์ ํ์ฅํ ์ ์์ต๋๋ค:
522
523* `command` - ์๋ฒ ์คํ ํ์ผ ๊ฒฝ๋ก
524* `args` - ๋ช
๋ น์ค ์ธ์
525* `env` - ์๋ฒ์ ์ ๋ฌ๋๋ ํ๊ฒฝ ๋ณ์
526* `url` - HTTP ์๋ฒ ์ ํ์ ๊ฒฝ์ฐ
527* `headers` - HTTP ์๋ฒ ์ธ์ฆ์ ๊ฒฝ์ฐ
528
529**๋ณ์ ํ์ฅ์ ์ฌ์ฉํ ์**:
530
531```json theme={null}
532{
533 "mcpServers": {
534 "api-server": {
535 "type": "http",
536 "url": "${API_BASE_URL:-https://api.example.com}/mcp",
537 "headers": {
538 "Authorization": "Bearer ${API_KEY}"
539 }
540 }
541 }
542}
543```
544
545ํ์ ํ๊ฒฝ ๋ณ์๊ฐ ์ค์ ๋์ง ์์๊ณ ๊ธฐ๋ณธ๊ฐ์ด ์์ผ๋ฉด Claude Code๋ ๊ตฌ์ฑ์ ๊ตฌ๋ฌธ ๋ถ์ํ์ง ๋ชปํฉ๋๋ค.
546
547## ์ค์ ์
548
549{/* ### ์: Playwright๋ก ๋ธ๋ผ์ฐ์ ํ
์คํธ ์๋ํ
550
551```bash
552claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest
553```
554
555๊ทธ๋ฐ ๋ค์ ๋ธ๋ผ์ฐ์ ํ
์คํธ๋ฅผ ์์ฑํ๊ณ ์คํํฉ๋๋ค:
556
557```text
558test@example.com์ผ๋ก ๋ก๊ทธ์ธ ํ๋ฆ์ด ์๋ํ๋์ง ํ
์คํธ
559```
560```text
561๋ชจ๋ฐ์ผ์์ ์ฒดํฌ์์ ํ์ด์ง์ ์คํฌ๋ฆฐ์ท ์ดฌ์
562```
563```text
564๊ฒ์ ๊ธฐ๋ฅ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋์ง ํ์ธ
565``` */}
566
567### ์: Sentry๋ก ์ค๋ฅ ๋ชจ๋ํฐ๋ง
568
569```bash theme={null}
570claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
571```
572
573Sentry ๊ณ์ ์ผ๋ก ์ธ์ฆํฉ๋๋ค:
574
575```text theme={null}
576/mcp
577```
578
579๊ทธ๋ฐ ๋ค์ ํ๋ก๋์
๋ฌธ์ ๋ฅผ ๋๋ฒ๊น
ํฉ๋๋ค:
580
581```text theme={null}
582์ง๋ 24์๊ฐ ๋์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ค๋ฅ๋ ๋ฌด์์
๋๊น?
583```
584
585```text theme={null}
586์ค๋ฅ ID abc123์ ์คํ ์ถ์ ์ ๋ณด์ฌ์ฃผ์ธ์
587```
588
589```text theme={null}
590์ด๋ค ๋ฐฐํฌ๊ฐ ์ด๋ฌํ ์๋ก์ด ์ค๋ฅ๋ฅผ ๋์
ํ์ต๋๊น?
591```
592
593### ์: ์ฝ๋ ๊ฒํ ๋ฅผ ์ํด GitHub์ ์ฐ๊ฒฐ
594
595GitHub์ ์๊ฒฉ MCP ์๋ฒ๋ ํค๋๋ก ์ ๋ฌ๋ GitHub ๊ฐ์ธ ์ก์ธ์ค ํ ํฐ์ผ๋ก ์ธ์ฆํฉ๋๋ค. ํ๋๋ฅผ ์ป์ผ๋ ค๋ฉด [GitHub ํ ํฐ ์ค์ ](https://github.com/settings/personal-access-tokens)์ ์ด๊ณ , Claude๊ฐ ์์
ํ๋ ค๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ก์ธ์คํ ์ ์๋ ์๋ก์ด ์ธ๋ถํ๋ ํ ํฐ์ ์์ฑํ ๋ค์ ์๋ฒ๋ฅผ ์ถ๊ฐํ์ธ์:
596
597```bash theme={null}
598claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
599 --header "Authorization: Bearer YOUR_GITHUB_PAT"
600```
601
602๊ทธ๋ฐ ๋ค์ GitHub๋ก ์์
ํฉ๋๋ค:
603
604```text theme={null}
605PR #456์ ๊ฒํ ํ๊ณ ๊ฐ์ ์ฌํญ์ ์ ์ํ์ธ์
606```
607
608```text theme={null}
609๋ฐฉ๊ธ ๋ฐ๊ฒฌํ ๋ฒ๊ทธ์ ๋ํ ์ ์ด์๋ฅผ ์์ฑํ์ธ์
610```
611
612```text theme={null}
613๋์๊ฒ ํ ๋น๋ ๋ชจ๋ ์ด๋ฆฐ PR์ ๋ณด์ฌ์ฃผ์ธ์
614```
615
616### ์: PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ
617
618```bash theme={null}
619claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
620 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"
621```
622
623๊ทธ๋ฐ ๋ค์ ์์ฐ์ค๋ฝ๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฟผ๋ฆฌํฉ๋๋ค:
624
625```text theme={null}
626์ด๋ฒ ๋ฌ ์ด ์์ต์ ์ผ๋ง์
๋๊น?
627```
628
629```text theme={null}
630์ฃผ๋ฌธ ํ
์ด๋ธ์ ์คํค๋ง๋ฅผ ๋ณด์ฌ์ฃผ์ธ์
631```
632
633```text theme={null}
634์ง๋ 90์ผ ๋์ ๊ตฌ๋งคํ์ง ์์ ๊ณ ๊ฐ์ ์ฐพ์ผ์ธ์
635```
636
637## ์๊ฒฉ MCP ์๋ฒ๋ก ์ธ์ฆ
638
639๋ง์ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ MCP ์๋ฒ๋ ์ธ์ฆ์ด ํ์ํฉ๋๋ค. Claude Code๋ ๋ณด์ ์ฐ๊ฒฐ์ ์ํด OAuth 2.0์ ์ง์ํฉ๋๋ค.
640
641<Steps>
642 <Step title="์ธ์ฆ์ด ํ์ํ ์๋ฒ ์ถ๊ฐ">
643 ์๋ฅผ ๋ค์ด:
644
645 ```bash theme={null}
646 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
647 ```
648 </Step>
649
650 <Step title="Claude Code ๋ด์์ /mcp ๋ช
๋ น ์ฌ์ฉ">
651 Claude Code์์ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค:
652
653 ```text theme={null}
654 /mcp
655 ```
656
657 ๊ทธ๋ฐ ๋ค์ ๋ธ๋ผ์ฐ์ ์์ ๋ก๊ทธ์ธ ๋จ๊ณ๋ฅผ ๋ฐ๋ฆ
๋๋ค.
658 </Step>
659</Steps>
660
661<Tip>
662 ํ:
663
664 * ์ธ์ฆ ํ ํฐ์ ์์ ํ๊ฒ ์ ์ฅ๋๊ณ ์๋์ผ๋ก ์๋ก ๊ณ ์ณ์ง๋๋ค
665 * `/mcp` ๋ฉ๋ด์์ "Clear authentication"์ ์ฌ์ฉํ์ฌ ์ก์ธ์ค๋ฅผ ์ทจ์ํฉ๋๋ค
666 * ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ์ด๋ฆฌ์ง ์์ผ๋ฉด ์ ๊ณต๋ URL์ ๋ณต์ฌํ์ฌ ์๋์ผ๋ก ์ฝ๋๋ค
667 * ์ธ์ฆ ํ ๋ธ๋ผ์ฐ์ ๋ฆฌ๋๋ ์
์ด ์ฐ๊ฒฐ ์ค๋ฅ๋ก ์คํจํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ์ฃผ์ ํ์์ค์์ ์ ์ฒด ์ฝ๋ฐฑ URL์ ๋ณต์ฌํ์ฌ Claude Code์ ๋ํ๋๋ URL ํ๋กฌํํธ์ ๋ถ์ฌ๋ฃ์ต๋๋ค
668 * OAuth ์ธ์ฆ์ HTTP ์๋ฒ์์ ์๋ํฉ๋๋ค
669</Tip>
670
671### ๊ณ ์ OAuth ์ฝ๋ฐฑ ํฌํธ ์ฌ์ฉ
672
673์ผ๋ถ MCP ์๋ฒ๋ ๋ฏธ๋ฆฌ ๋ฑ๋ก๋ ํน์ ๋ฆฌ๋๋ ์
URI๊ฐ ํ์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Claude Code๋ OAuth ์ฝ๋ฐฑ์ ์ํด ๋ฌด์์๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ํฌํธ๋ฅผ ์ ํํฉ๋๋ค. `--callback-port`๋ฅผ ์ฌ์ฉํ์ฌ ํฌํธ๋ฅผ ๊ณ ์ ํ์ฌ `http://localhost:PORT/callback` ํ์์ ์ฌ์ ๋ฑ๋ก๋ ๋ฆฌ๋๋ ์
URI์ ์ผ์นํ๋๋ก ํฉ๋๋ค.
674
675`--callback-port`๋ฅผ ๋จ๋
์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค (๋์ ํด๋ผ์ด์ธํธ ๋ฑ๋ก ํฌํจ) ๋๋ `--client-id`์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค (์ฌ์ ๊ตฌ์ฑ๋ ์๊ฒฉ ์ฆ๋ช
ํฌํจ).
676
677```bash theme={null}
678# ๋์ ํด๋ผ์ด์ธํธ ๋ฑ๋ก์ ์ฌ์ฉํ ๊ณ ์ ์ฝ๋ฐฑ ํฌํธ
679claude mcp add --transport http \
680 --callback-port 8080 \
681 my-server https://mcp.example.com/mcp
682```
683
684### ์ฌ์ ๊ตฌ์ฑ๋ OAuth ์๊ฒฉ ์ฆ๋ช
์ฌ์ฉ
685
686์ผ๋ถ MCP ์๋ฒ๋ ์๋ OAuth ์ค์ ์ ์ง์ํ์ง ์์ต๋๋ค. "Incompatible auth server: does not support dynamic client registration"๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ํ์๋๋ฉด ์๋ฒ์ ์ฌ์ ๊ตฌ์ฑ๋ ์๊ฒฉ ์ฆ๋ช
์ด ํ์ํฉ๋๋ค. Claude Code๋ ๋ํ ๋์ ํด๋ผ์ด์ธํธ ๋ฑ๋ก ๋์ ํด๋ผ์ด์ธํธ ID ๋ฉํ๋ฐ์ดํฐ ๋ฌธ์ (CIMD)๋ฅผ ์ฌ์ฉํ๋ ์๋ฒ๋ฅผ ์ง์ํ๋ฉฐ ์๋์ผ๋ก ๊ฒ์ํฉ๋๋ค. ์๋ ๊ฒ์์ด ์คํจํ๋ฉด ๋จผ์ ์๋ฒ์ ๊ฐ๋ฐ์ ํฌํธ์ ํตํด OAuth ์ฑ์ ๋ฑ๋กํ ๋ค์ ์๋ฒ๋ฅผ ์ถ๊ฐํ ๋ ์๊ฒฉ ์ฆ๋ช
์ ์ ๊ณตํฉ๋๋ค.
687
688<Steps>
689 <Step title="์๋ฒ๋ก OAuth ์ฑ ๋ฑ๋ก">
690 ์๋ฒ์ ๊ฐ๋ฐ์ ํฌํธ์ ํตํด ์ฑ์ ์์ฑํ๊ณ ํด๋ผ์ด์ธํธ ID์ ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ์ ๊ธฐ๋กํฉ๋๋ค.
691
692 ๋ง์ ์๋ฒ๋ ๋ฆฌ๋๋ ์
URI๋ ํ์ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ํฌํธ๋ฅผ ์ ํํ๊ณ `http://localhost:PORT/callback` ํ์์ผ๋ก ๋ฆฌ๋๋ ์
URI๋ฅผ ๋ฑ๋กํฉ๋๋ค. ๋ค์ ๋จ๊ณ์์ `--callback-port`์ ํจ๊ป ๋์ผํ ํฌํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
693 </Step>
694
695 <Step title="์๊ฒฉ ์ฆ๋ช
์ผ๋ก ์๋ฒ ์ถ๊ฐ">
696 ๋ค์ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค. `--callback-port`์ ์ฌ์ฉ๋๋ ํฌํธ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ํฌํธ์ผ ์ ์์ต๋๋ค. ์ด์ ๋จ๊ณ์์ ๋ฑ๋กํ ๋ฆฌ๋๋ ์
URI์ ์ผ์นํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
697
698 <Tabs>
699 <Tab title="claude mcp add">
700 `--client-id`๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ์ ํด๋ผ์ด์ธํธ ID๋ฅผ ์ ๋ฌํฉ๋๋ค. `--client-secret` ํ๋๊ทธ๋ ๋ง์คํน๋ ์
๋ ฅ์ผ๋ก ์ํฌ๋ฆฟ์ ์์ฒญํฉ๋๋ค:
701
702 ```bash theme={null}
703 claude mcp add --transport http \
704 --client-id your-client-id --client-secret --callback-port 8080 \
705 my-server https://mcp.example.com/mcp
706 ```
707 </Tab>
708
709 <Tab title="claude mcp add-json">
710 JSON ๊ตฌ์ฑ์ `oauth` ๊ฐ์ฒด๋ฅผ ํฌํจํ๊ณ `--client-secret`์ ๋ณ๋์ ํ๋๊ทธ๋ก ์ ๋ฌํฉ๋๋ค:
711
712 ```bash theme={null}
713 claude mcp add-json my-server \
714 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \
715 --client-secret
716 ```
717 </Tab>
718
719 <Tab title="claude mcp add-json (์ฝ๋ฐฑ ํฌํธ๋ง)">
720 ๋์ ํด๋ผ์ด์ธํธ ๋ฑ๋ก์ ์ฌ์ฉํ๋ฉด์ ํฌํธ๋ฅผ ๊ณ ์ ํ๋ ค๋ฉด ํด๋ผ์ด์ธํธ ID ์์ด `--callback-port`๋ฅผ ์ฌ์ฉํฉ๋๋ค:
721
722 ```bash theme={null}
723 claude mcp add-json my-server \
724 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'
725 ```
726 </Tab>
727
728 <Tab title="CI / ํ๊ฒฝ ๋ณ์">
729 ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด ์ํฌ๋ฆฟ์ ์ค์ ํ์ฌ ๋ํํ ํ๋กฌํํธ๋ฅผ ๊ฑด๋๋๋๋ค:
730
731 ```bash theme={null}
732 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \
733 --client-id your-client-id --client-secret --callback-port 8080 \
734 my-server https://mcp.example.com/mcp
735 ```
736 </Tab>
737 </Tabs>
738 </Step>
739
740 <Step title="Claude Code์์ ์ธ์ฆ">
741 Claude Code์์ `/mcp`๋ฅผ ์คํํ๊ณ ๋ธ๋ผ์ฐ์ ๋ก๊ทธ์ธ ํ๋ฆ์ ๋ฐ๋ฆ
๋๋ค.
742 </Step>
743</Steps>
744
745<Tip>
746 ํ:
747
748 * ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ์ ๊ตฌ์ฑ์ ์ ์ฅ๋์ง ์๊ณ ์์คํ
ํค์ฒด์ธ (macOS) ๋๋ ์๊ฒฉ ์ฆ๋ช
ํ์ผ์ ์์ ํ๊ฒ ์ ์ฅ๋ฉ๋๋ค
749 * ์๋ฒ๊ฐ ์ํฌ๋ฆฟ์ด ์๋ ๊ณต๊ฐ OAuth ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ `--client-secret` ์์ด `--client-id`๋ง ์ฌ์ฉํฉ๋๋ค
750 * `--callback-port`๋ `--client-id`์ ํจ๊ป ๋๋ ์์ด ์ฌ์ฉํ ์ ์์ต๋๋ค
751 * ์ด๋ฌํ ํ๋๊ทธ๋ HTTP ๋ฐ SSE ์ ์ก์๋ง ์ ์ฉ๋ฉ๋๋ค. stdio ์๋ฒ์๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค
752 * `claude mcp get <name>`์ ์ฌ์ฉํ์ฌ OAuth ์๊ฒฉ ์ฆ๋ช
์ด ์๋ฒ์ ๋ํด ๊ตฌ์ฑ๋์๋์ง ํ์ธํฉ๋๋ค
753</Tip>
754
755### OAuth ๋ฉํ๋ฐ์ดํฐ ๊ฒ์ ์ฌ์ ์
756
757ํน์ OAuth ์ธ์ฆ ์๋ฒ ๋ฉํ๋ฐ์ดํฐ URL์ ๊ฐ๋ฆฌ์ผ ๊ธฐ๋ณธ ๊ฒ์ ์ฒด์ธ์ ์ฐํํ๋๋ก Claude Code๋ฅผ ์ค์ ํฉ๋๋ค. MCP ์๋ฒ์ ํ์ค ์๋ํฌ์ธํธ๊ฐ ์ค๋ฅ๋ฅผ ๋ฐํํ๊ฑฐ๋ ๋ด๋ถ ํ๋ก์๋ฅผ ํตํด ๊ฒ์์ ๋ผ์ฐํ
ํ๋ ค๋ ๊ฒฝ์ฐ์ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Claude Code๋ ๋จผ์ `/.well-known/oauth-protected-resource`์์ RFC 9728 ๋ณดํธ๋ ๋ฆฌ์์ค ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ๋ค์ `/.well-known/oauth-authorization-server`์์ RFC 8414 ์ธ์ฆ ์๋ฒ ๋ฉํ๋ฐ์ดํฐ๋ก ๋์๊ฐ๋๋ค.
758
759`.mcp.json`์ ์๋ฒ ๊ตฌ์ฑ์ `oauth` ๊ฐ์ฒด์ `authServerMetadataUrl`์ ์ค์ ํฉ๋๋ค:
760
761```json theme={null}
762{
763 "mcpServers": {
764 "my-server": {
765 "type": "http",
766 "url": "https://mcp.example.com/mcp",
767 "oauth": {
768 "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"
769 }
770 }
771 }
772}
773```
774
775URL์ `https://`๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. `authServerMetadataUrl`์ Claude Code v2.1.64 ์ด์์ด ํ์ํฉ๋๋ค. ๋ฉํ๋ฐ์ดํฐ URL์ `scopes_supported`๋ ์
์คํธ๋ฆผ ์๋ฒ๊ฐ ๊ด๊ณ ํ๋ ๋ฒ์๋ฅผ ์ฌ์ ์ํฉ๋๋ค.
776
777### OAuth ๋ฒ์ ์ ํ
778
779`oauth.scopes`๋ฅผ ์ค์ ํ์ฌ ์ธ์ฆ ํ๋ฆ ์ค์ Claude Code๊ฐ ์์ฒญํ๋ ๋ฒ์๋ฅผ ๊ณ ์ ํฉ๋๋ค. ์ด๋ ์
์คํธ๋ฆผ ์ธ์ฆ ์๋ฒ๊ฐ ๊ด๊ณ ํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฒ์๋ฅผ ๋ถ์ฌํ๊ณ ์ถ์ง ์์ ๋ MCP ์๋ฒ๋ฅผ ๋ณด์ ํ์ด ์น์ธํ ๋ถ๋ถ ์งํฉ์ผ๋ก ์ ํํ๋ ์ง์๋๋ ๋ฐฉ๋ฒ์
๋๋ค. ๊ฐ์ RFC 6749 ยง3.3์ `scope` ๋งค๊ฐ๋ณ์ ํ์๊ณผ ์ผ์นํ๋ ๋จ์ผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด์
๋๋ค.
780
781```json theme={null}
782{
783 "mcpServers": {
784 "slack": {
785 "type": "http",
786 "url": "https://mcp.slack.com/mcp",
787 "oauth": {
788 "scopes": "channels:read chat:write search:read"
789 }
790 }
791 }
792}
793```
794
795`oauth.scopes`๋ `authServerMetadataUrl`๊ณผ ์๋ฒ๊ฐ `/.well-known`์์ ๊ฒ์ํ๋ ๋ฒ์ ๋ชจ๋๋ณด๋ค ์ฐ์ ํฉ๋๋ค. ์ค์ ํ์ง ์์ผ๋ฉด MCP ์๋ฒ๊ฐ ์์ฒญ๋ ๋ฒ์ ์งํฉ์ ๊ฒฐ์ ํฉ๋๋ค.
796
797์ธ์ฆ ์๋ฒ๊ฐ `scopes_supported`์์ `offline_access`๋ฅผ ๊ด๊ณ ํ๋ฉด Claude Code๋ ์ก์ธ์ค ํ ํฐ์ ์๋ก์ด ๋ธ๋ผ์ฐ์ ๋ก๊ทธ์ธ ์์ด ์๋ก ๊ณ ์น ์ ์๋๋ก ๊ณ ์ ๋ ๋ฒ์์ ์ถ๊ฐํฉ๋๋ค.
798
799์๋ฒ๊ฐ ๋์ค์ ๋๊ตฌ ํธ์ถ์ ๋ํด 403 `insufficient_scope`์ ๋ฐํํ๋ฉด Claude Code๋ ๋์ผํ ๊ณ ์ ๋ ๋ฒ์๋ก ๋ค์ ์ธ์ฆํฉ๋๋ค. ํ์ํ ๋๊ตฌ๊ฐ ๊ณ ์ ๋ ๋ฒ์ ์ธ์ ๋ฒ์๋ฅผ ์๊ตฌํ ๋ `oauth.scopes`๋ฅผ ํ๋ํฉ๋๋ค.
800
801### ์ฌ์ฉ์ ์ ์ ์ธ์ฆ์ ์ํ ๋์ ํค๋ ์ฌ์ฉ
802
803MCP ์๋ฒ๊ฐ OAuth (์: Kerberos, ๋จ๊ธฐ ํ ํฐ ๋๋ ๋ด๋ถ SSO)๊ฐ ์๋ ๋ค๋ฅธ ์ธ์ฆ ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ `headersHelper`๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ ์๊ฐ์ ์์ฒญ ํค๋๋ฅผ ์์ฑํฉ๋๋ค. Claude Code๋ ๋ช
๋ น์ ์คํํ๊ณ ์ถ๋ ฅ์ ์ฐ๊ฒฐ ํค๋์ ๋ณํฉํฉ๋๋ค.
804
805```json theme={null}
806{
807 "mcpServers": {
808 "internal-api": {
809 "type": "http",
810 "url": "https://mcp.internal.example.com",
811 "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
812 }
813 }
814}
815```
816
817๋ช
๋ น์ ์ธ๋ผ์ธ์ผ ์๋ ์์ต๋๋ค:
818
819```json theme={null}
820{
821 "mcpServers": {
822 "internal-api": {
823 "type": "http",
824 "url": "https://mcp.internal.example.com",
825 "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"
826 }
827 }
828}
829```
830
831**์๊ตฌ ์ฌํญ:**
832
833* ๋ช
๋ น์ JSON ๊ฐ์ฒด์ ๋ฌธ์์ด ํค-๊ฐ ์์ stdout์ ์์ฑํด์ผ ํฉ๋๋ค
834* ๋ช
๋ น์ 10์ด ์๊ฐ ์ด๊ณผ๋ฅผ ์ฌ์ฉํ์ฌ ์
ธ์์ ์คํ๋ฉ๋๋ค
835* ๋์ ํค๋๋ ๋์ผํ ์ด๋ฆ์ ์ ์ `headers`๋ฅผ ์ฌ์ ์ํฉ๋๋ค
836
837ํฌํผ๋ ๊ฐ ์ฐ๊ฒฐ (์ธ์
์์ ๋ฐ ์ฌ์ฐ๊ฒฐ ์)์์ ์๋ก ์คํ๋ฉ๋๋ค. ์บ์ฑ์ด ์์ผ๋ฏ๋ก ์คํฌ๋ฆฝํธ๋ ํ ํฐ ์ฌ์ฌ์ฉ์ ๋ด๋นํฉ๋๋ค.
838
839Claude Code๋ ํฌํผ๋ฅผ ์คํํ ๋ ๋ค์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค:
840
841| ๋ณ์ | ๊ฐ |
842| :---------------------------- | :---------- |
843| `CLAUDE_CODE_MCP_SERVER_NAME` | MCP ์๋ฒ์ ์ด๋ฆ |
844| `CLAUDE_CODE_MCP_SERVER_URL` | MCP ์๋ฒ์ URL |
845
846์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ MCP ์๋ฒ๋ฅผ ์ ๊ณตํ๋ ๋จ์ผ ํฌํผ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํฉ๋๋ค.
847
848<Note>
849 `headersHelper`๋ ์์์ ์
ธ ๋ช
๋ น์ ์คํํฉ๋๋ค. ํ๋ก์ ํธ ๋๋ ๋ก์ปฌ ๋ฒ์์์ ์ ์๋ ๋ ์์
๊ณต๊ฐ ์ ๋ขฐ ๋ํ ์์๋ฅผ ์๋ฝํ ํ์๋ง ์คํ๋ฉ๋๋ค.
850</Note>
851
852## JSON ๊ตฌ์ฑ์์ MCP ์๋ฒ ์ถ๊ฐ
853
854MCP ์๋ฒ์ ๋ํ JSON ๊ตฌ์ฑ์ด ์๋ ๊ฒฝ์ฐ ์ง์ ์ถ๊ฐํ ์ ์์ต๋๋ค:
855
856<Steps>
857 <Step title="JSON์์ MCP ์๋ฒ ์ถ๊ฐ">
858 ```bash theme={null}
859 # ๊ธฐ๋ณธ ๊ตฌ๋ฌธ
860 claude mcp add-json <name> '<json>'
861
862 # ์: JSON ๊ตฌ์ฑ์ผ๋ก HTTP ์๋ฒ ์ถ๊ฐ
863 claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'
864
865 # ์: JSON ๊ตฌ์ฑ์ผ๋ก stdio ์๋ฒ ์ถ๊ฐ
866 claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'
867
868 # ์: ์ฌ์ ๊ตฌ์ฑ๋ OAuth ์๊ฒฉ ์ฆ๋ช
์ผ๋ก HTTP ์๋ฒ ์ถ๊ฐ
869 claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret
870 ```
871 </Step>
872
873 <Step title="์๋ฒ๊ฐ ์ถ๊ฐ๋์๋์ง ํ์ธ">
874 ```bash theme={null}
875 claude mcp get weather-api
876 ```
877 </Step>
878</Steps>
879
880<Tip>
881 ํ:
882
883 * JSON์ด ์
ธ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ด์ค์ผ์ดํ๋์๋์ง ํ์ธํฉ๋๋ค
884 * JSON์ MCP ์๋ฒ ๊ตฌ์ฑ ์คํค๋ง๋ฅผ ์ค์ํด์ผ ํฉ๋๋ค
885 * `--scope user`๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ํน์ ๊ตฌ์ฑ ๋์ ์ฌ์ฉ์ ๊ตฌ์ฑ์ ์๋ฒ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค
886</Tip>
887
888## Claude Desktop์์ MCP ์๋ฒ ๊ฐ์ ธ์ค๊ธฐ
889
890Claude Desktop์์ MCP ์๋ฒ๋ฅผ ์ด๋ฏธ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค:
891
892<Steps>
893 <Step title="Claude Desktop์์ ์๋ฒ ๊ฐ์ ธ์ค๊ธฐ">
894 ```bash theme={null}
895 # ๊ธฐ๋ณธ ๊ตฌ๋ฌธ
896 claude mcp add-from-claude-desktop
897 ```
898 </Step>
899
900 <Step title="๊ฐ์ ธ์ฌ ์๋ฒ ์ ํ">
901 ๋ช
๋ น์ ์คํํ ํ ๊ฐ์ ธ์ฌ ์๋ฒ๋ฅผ ์ ํํ ์ ์๋ ๋ํํ ๋ํ ์์๊ฐ ํ์๋ฉ๋๋ค.
902 </Step>
903
904 <Step title="์๋ฒ๊ฐ ๊ฐ์ ธ์์ก๋์ง ํ์ธ">
905 ```bash theme={null}
906 claude mcp list
907 ```
908 </Step>
909</Steps>
910
911<Tip>
912 ํ:
913
914 * ์ด ๊ธฐ๋ฅ์ macOS ๋ฐ Windows Subsystem for Linux (WSL)์์๋ง ์๋ํฉ๋๋ค
915 * ์ด๋ฌํ ํ๋ซํผ์ ํ์ค ์์น์์ Claude Desktop ๊ตฌ์ฑ ํ์ผ์ ์ฝ์ต๋๋ค
916 * `--scope user` ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ๊ตฌ์ฑ์ ์๋ฒ๋ฅผ ์ถ๊ฐํฉ๋๋ค
917 * ๊ฐ์ ธ์จ ์๋ฒ๋ Claude Desktop๊ณผ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ต๋๋ค
918 * ๋์ผํ ์ด๋ฆ์ ์๋ฒ๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ฉด ์ซ์ ์ ๋ฏธ์ฌ๊ฐ ๋ถ์ต๋๋ค (์: `server_1`)
919</Tip>
920
921## Claude.ai์์ MCP ์๋ฒ ์ฌ์ฉ
922
923[Claude.ai](https://claude.ai) ๊ณ์ ์ผ๋ก Claude Code์ ๋ก๊ทธ์ธํ ๊ฒฝ์ฐ Claude.ai์์ ์ถ๊ฐํ MCP ์๋ฒ๋ Claude Code์์ ์๋์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค:
924
925<Steps>
926 <Step title="Claude.ai์์ MCP ์๋ฒ ๊ตฌ์ฑ">
927 [claude.ai/customize/connectors](https://claude.ai/customize/connectors)์์ ์๋ฒ๋ฅผ ์ถ๊ฐํฉ๋๋ค. Team ๋ฐ Enterprise ํ๋์์๋ ๊ด๋ฆฌ์๋ง ์๋ฒ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
928 </Step>
929
930 <Step title="MCP ์๋ฒ ์ธ์ฆ">
931 Claude.ai์์ ํ์ํ ์ธ์ฆ ๋จ๊ณ๋ฅผ ์๋ฃํฉ๋๋ค.
932 </Step>
933
934 <Step title="Claude Code์์ ์๋ฒ ๋ณด๊ธฐ ๋ฐ ๊ด๋ฆฌ">
935 Claude Code์์ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค:
936
937 ```text theme={null}
938 /mcp
939 ```
940
941 Claude.ai ์๋ฒ๋ Claude.ai์์ ์จ ๊ฒ์ ๋ํ๋ด๋ ํ์๊ธฐ์ ํจ๊ป ๋ชฉ๋ก์ ๋ํ๋ฉ๋๋ค.
942 </Step>
943</Steps>
944
945Claude Code์์ claude.ai MCP ์๋ฒ๋ฅผ ๋นํ์ฑํํ๋ ค๋ฉด `ENABLE_CLAUDEAI_MCP_SERVERS` ํ๊ฒฝ ๋ณ์๋ฅผ `false`๋ก ์ค์ ํฉ๋๋ค:
946
947```bash theme={null}
948ENABLE_CLAUDEAI_MCP_SERVERS=false claude
949```
950
951## Claude Code๋ฅผ MCP ์๋ฒ๋ก ์ฌ์ฉ
952
953Claude Code ์์ฒด๋ฅผ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์
์ด ์ฐ๊ฒฐํ ์ ์๋ MCP ์๋ฒ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค:
954
955```bash theme={null}
956# Claude๋ฅผ stdio MCP ์๋ฒ๋ก ์์
957claude mcp serve
958```
959
960claude\_desktop\_config.json์ ์ด ๊ตฌ์ฑ์ ์ถ๊ฐํ์ฌ Claude Desktop์์ ์ฌ์ฉํ ์ ์์ต๋๋ค:
961
962```json theme={null}
963{
964 "mcpServers": {
965 "claude-code": {
966 "type": "stdio",
967 "command": "claude",
968 "args": ["mcp", "serve"],
969 "env": {}
970 }
971 }
972}
973```
974
975<Warning>
976 **์คํ ํ์ผ ๊ฒฝ๋ก ๊ตฌ์ฑ**: `command` ํ๋๋ Claude Code ์คํ ํ์ผ์ ์ฐธ์กฐํด์ผ ํฉ๋๋ค. `claude` ๋ช
๋ น์ด ์์คํ
์ PATH์ ์์ผ๋ฉด ์คํ ํ์ผ์ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
977
978 ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ์ฐพ์ผ๋ ค๋ฉด:
979
980 ```bash theme={null}
981 which claude
982 ```
983
984 ๊ทธ๋ฐ ๋ค์ ๊ตฌ์ฑ์์ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค:
985
986 ```json theme={null}
987 {
988 "mcpServers": {
989 "claude-code": {
990 "type": "stdio",
991 "command": "/full/path/to/claude",
992 "args": ["mcp", "serve"],
993 "env": {}
994 }
995 }
996 }
997 ```
998
999 ์ฌ๋ฐ๋ฅธ ์คํ ํ์ผ ๊ฒฝ๋ก๊ฐ ์์ผ๋ฉด `spawn claude ENOENT`์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
1000</Warning>
1001
1002<Tip>
1003 ํ:
1004
1005 * ์๋ฒ๋ View, Edit, LS ๋ฑ๊ณผ ๊ฐ์ Claude์ ๋๊ตฌ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค
1006 * Claude Desktop์์ Claude์๊ฒ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ์ฝ๊ณ , ํธ์งํ๋ ๋ฑ์ ์์ฒญํด ๋ณด์ธ์
1007 * ์ด MCP ์๋ฒ๋ Claude Code์ ๋๊ตฌ๋ง MCP ํด๋ผ์ด์ธํธ์ ๋
ธ์ถํ๋ฏ๋ก ํด๋ผ์ด์ธํธ๋ ๊ฐ๋ณ ๋๊ตฌ ํธ์ถ์ ๋ํ ์ฌ์ฉ์ ํ์ธ์ ๊ตฌํํ ์ฑ
์์ด ์์ต๋๋ค.
1008</Tip>
1009
1010## MCP ์ถ๋ ฅ ์ ํ ๋ฐ ๊ฒฝ๊ณ
1011
1012MCP ๋๊ตฌ๊ฐ ํฐ ์ถ๋ ฅ์ ์์ฑํ ๋ Claude Code๋ ํ ํฐ ์ฌ์ฉ๋์ ๊ด๋ฆฌํ์ฌ ๋ํ ์ปจํ
์คํธ๊ฐ ์๋๋์ง ์๋๋ก ํฉ๋๋ค:
1013
1014* **์ถ๋ ฅ ๊ฒฝ๊ณ ์๊ณ๊ฐ**: Claude Code๋ MCP ๋๊ตฌ ์ถ๋ ฅ์ด 10,000 ํ ํฐ์ ์ด๊ณผํ ๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค
1015* **๊ตฌ์ฑ ๊ฐ๋ฅํ ์ ํ**: `MAX_MCP_OUTPUT_TOKENS` ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ต๋ ํ์ฉ MCP ์ถ๋ ฅ ํ ํฐ์ ์กฐ์ ํ ์ ์์ต๋๋ค
1016* **๊ธฐ๋ณธ ์ ํ**: ๊ธฐ๋ณธ ์ต๋๊ฐ์ 25,000 ํ ํฐ์
๋๋ค
1017* **๋ฒ์**: ํ๊ฒฝ ๋ณ์๋ ์์ ์ ์ ํ์ ์ ์ธํ์ง ์๋ ๋๊ตฌ์ ์ ์ฉ๋ฉ๋๋ค. [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool)๋ฅผ ์ค์ ํ๋ ๋๊ตฌ๋ `MAX_MCP_OUTPUT_TOKENS`์ด ์ค์ ๋ ๊ฒ๊ณผ ๊ด๊ณ์์ด ํ
์คํธ ์ฝํ
์ธ ์ ๋ํด ํด๋น ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ ๋๊ตฌ๋ ์ฌ์ ํ `MAX_MCP_OUTPUT_TOKENS`์ ์ํฅ์ ๋ฐ์ต๋๋ค
1018
1019ํฐ ์ถ๋ ฅ์ ์์ฑํ๋ ๋๊ตฌ์ ์ ํ์ ๋๋ฆฌ๋ ค๋ฉด:
1020
1021```bash theme={null}
1022export MAX_MCP_OUTPUT_TOKENS=50000
1023claude
1024```
1025
1026์ด๋ ๋ค์์ ์ํํ๋ MCP ์๋ฒ๋ก ์์
ํ ๋ ํนํ ์ ์ฉํฉ๋๋ค:
1027
1028* ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ
1029* ์์ธํ ๋ณด๊ณ ์ ๋๋ ๋ฌธ์ ์์ฑ
1030* ๊ด๋ฒ์ํ ๋ก๊ทธ ํ์ผ ๋๋ ๋๋ฒ๊น
์ ๋ณด ์ฒ๋ฆฌ
1031
1032### ํน์ ๋๊ตฌ์ ์ ํ ๋๋ฆฌ๊ธฐ
1033
1034MCP ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ ๋๊ตฌ์ `tools/list` ์๋ต ํญ๋ชฉ์์ `_meta["anthropic/maxResultSizeChars"]`๋ฅผ ์ค์ ํ์ฌ ๊ฐ๋ณ ๋๊ตฌ๊ฐ ๊ธฐ๋ณธ ๋์คํฌ ์ ์ง ์๊ณ๊ฐ๋ณด๋ค ํฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค. Claude Code๋ ํด๋น ๋๊ตฌ์ ์๊ณ๊ฐ์ ์ฃผ์ ์ฒ๋ฆฌ๋ ๊ฐ์ผ๋ก ์ฌ๋ฆฝ๋๋ค (์ต๋ 500,000์์ ํ๋ ์ํ๊น์ง).
1035
1036์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋๋ ์ ์ฒด ํ์ผ ํธ๋ฆฌ์ ๊ฐ์ด ๋ณธ์ง์ ์ผ๋ก ํฌ์ง๋ง ํ์ํ ์ถ๋ ฅ์ ๋ฐํํ๋ ๋๊ตฌ์ ์ ์ฉํฉ๋๋ค. ์ฃผ์ ์ฒ๋ฆฌ ์์ด ๊ธฐ๋ณธ ์๊ณ๊ฐ์ ์ด๊ณผํ๋ ๊ฒฐ๊ณผ๋ ๋์คํฌ์ ์ ์ง๋๊ณ ๋ํ์์ ํ์ผ ์ฐธ์กฐ๋ก ๋์ฒด๋ฉ๋๋ค.
1037
1038```json theme={null}
1039{
1040 "name": "get_schema",
1041 "description": "Returns the full database schema",
1042 "_meta": {
1043 "anthropic/maxResultSizeChars": 200000
1044 }
1045}
1046```
1047
1048์ฃผ์ ์ฒ๋ฆฌ๋ ํ
์คํธ ์ฝํ
์ธ ์ ๋ํด `MAX_MCP_OUTPUT_TOKENS`๊ณผ ๋
๋ฆฝ์ ์ผ๋ก ์ ์ฉ๋๋ฏ๋ก ์ฌ์ฉ์๋ ๋๊ตฌ๊ฐ ์ ์ธํ๋ ๋๊ตฌ์ ๋ํด ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ๋ฆด ํ์๊ฐ ์์ต๋๋ค. ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ ๋๊ตฌ๋ ์ฌ์ ํ ํ ํฐ ์ ํ์ ์ํฅ์ ๋ฐ์ต๋๋ค.
1049
1050<Warning>
1051 ํน์ MCP ์๋ฒ์์ ์์ฃผ ์ถ๋ ฅ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ๋ฉด `MAX_MCP_OUTPUT_TOKENS` ์ ํ์ ๋๋ฆฌ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์. ๋ํ ์๋ฒ ์์ฑ์์๊ฒ `anthropic/maxResultSizeChars` ์ฃผ์์ ์ถ๊ฐํ๊ฑฐ๋ ์๋ต์ ํ์ด์ง ๋งค๊นํ๋๋ก ์์ฒญํ ์ ์์ต๋๋ค. ์ฃผ์์ ์ด๋ฏธ์ง ์ฝํ
์ธ ๋ฅผ ๋ฐํํ๋ ๋๊ตฌ์๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ `MAX_MCP_OUTPUT_TOKENS`์ ์ฌ๋ฆฌ๋ ๊ฒ์ด ์ ์ผํ ์ต์
์
๋๋ค.
1052</Warning>
1053
1054## MCP ๋ฆฌ์์ค ์์ฒญ์ ์๋ต
1055
1056MCP ์๋ฒ๋ ์์
์ค์ ๊ตฌ์กฐํ๋ ์
๋ ฅ์ ์์ฒญํ ์ ์์ต๋๋ค. ์๋ฒ๊ฐ ์์ฒด์ ์ผ๋ก ์ป์ ์ ์๋ ์ ๋ณด๊ฐ ํ์ํ ๋ Claude Code๋ ๋ํํ ๋ํ ์์๋ฅผ ํ์ํ๊ณ ์๋ต์ ์๋ฒ์ ๋ค์ ์ ๋ฌํฉ๋๋ค. ์ฌ์ฉ์ ์ธก์์ ๊ตฌ์ฑ์ด ํ์ํ์ง ์์ต๋๋ค: ์๋ฒ๊ฐ ์์ฒญํ ๋ ๋ฆฌ์์ค ์์ฒญ ๋ํ ์์๊ฐ ์๋์ผ๋ก ๋ํ๋ฉ๋๋ค.
1057
1058์๋ฒ๋ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์
๋ ฅ์ ์์ฒญํ ์ ์์ต๋๋ค:
1059
1060* **์์ ๋ชจ๋**: Claude Code๋ ์๋ฒ์์ ์ ์ํ ์์ ํ๋๊ฐ ์๋ ๋ํ ์์๋ฅผ ํ์ํฉ๋๋ค (์: ์ฌ์ฉ์ ์ด๋ฆ ๋ฐ ์ํธ ํ๋กฌํํธ). ํ๋๋ฅผ ์
๋ ฅํ๊ณ ์ ์ถํฉ๋๋ค.
1061* **URL ๋ชจ๋**: Claude Code๋ ์ธ์ฆ ๋๋ ์น์ธ์ ์ํด ๋ธ๋ผ์ฐ์ URL์ ์ฝ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ํ๋ฆ์ ์๋ฃํ ๋ค์ CLI์์ ํ์ธํฉ๋๋ค.
1062
1063๋ฆฌ์์ค ์์ฒญ์ ์๋์ผ๋ก ์๋ตํ๋ ค๋ฉด [`Elicitation` ํ
](/ko/hooks#Elicitation)์ ์ฌ์ฉํ์ธ์.
1064
1065๋ฆฌ์์ค ์์ฒญ์ ์ฌ์ฉํ๋ MCP ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ [MCP ๋ฆฌ์์ค ์์ฒญ ์ฌ์](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation)์์ ํ๋กํ ์ฝ ์ธ๋ถ ์ ๋ณด ๋ฐ ์คํค๋ง ์๋ฅผ ์ฐธ์กฐํ์ธ์.
1066
1067## MCP ๋ฆฌ์์ค ์ฌ์ฉ
1068
1069MCP ์๋ฒ๋ ํ์ผ์ ์ฐธ์กฐํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ @ ๋ฉ์
์ ์ฌ์ฉํ์ฌ ์ฐธ์กฐํ ์ ์๋ ๋ฆฌ์์ค๋ฅผ ๋
ธ์ถํ ์ ์์ต๋๋ค.
1070
1071### MCP ๋ฆฌ์์ค ์ฐธ์กฐ
1072
1073<Steps>
1074 <Step title="์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค ๋์ด">
1075 ํ๋กฌํํธ์ `@`๋ฅผ ์
๋ ฅํ์ฌ ์ฐ๊ฒฐ๋ ๋ชจ๋ MCP ์๋ฒ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ฅผ ํ์ธํฉ๋๋ค. ๋ฆฌ์์ค๋ ์๋ ์์ฑ ๋ฉ๋ด์ ํ์ผ๊ณผ ํจ๊ป ๋ํ๋ฉ๋๋ค.
1076 </Step>
1077
1078 <Step title="ํน์ ๋ฆฌ์์ค ์ฐธ์กฐ">
1079 `@server:protocol://resource/path` ํ์์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํฉ๋๋ค:
1080
1081 ```text theme={null}
1082 @github:issue://123์ ๋ถ์ํ๊ณ ์์ ์ฌํญ์ ์ ์ํ ์ ์๋์?
1083 ```
1084
1085 ```text theme={null}
1086 @docs:file://api/authentication์ API ๋ฌธ์๋ฅผ ๊ฒํ ํด ์ฃผ์ธ์
1087 ```
1088 </Step>
1089
1090 <Step title="์ฌ๋ฌ ๋ฆฌ์์ค ์ฐธ์กฐ">
1091 ๋จ์ผ ํ๋กฌํํธ์์ ์ฌ๋ฌ ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค:
1092
1093 ```text theme={null}
1094 @postgres:schema://users์ @docs:file://database/user-model์ ๋น๊ตํ์ธ์
1095 ```
1096 </Step>
1097</Steps>
1098
1099<Tip>
1100 ํ:
1101
1102 * ๋ฆฌ์์ค๋ ์ฐธ์กฐ๋ ๋ ์๋์ผ๋ก ๊ฐ์ ธ์์ง๊ณ ์ฒจ๋ถ ํ์ผ๋ก ํฌํจ๋ฉ๋๋ค
1103 * ๋ฆฌ์์ค ๊ฒฝ๋ก๋ @ ๋ฉ์
์๋ ์์ฑ์์ ํผ์ง ๊ฒ์ ๊ฐ๋ฅํฉ๋๋ค
1104 * Claude Code๋ ์๋ฒ๊ฐ ์ง์ํ ๋ MCP ๋ฆฌ์์ค๋ฅผ ๋์ดํ๊ณ ์ฝ์ ์ ์๋ ๋๊ตฌ๋ฅผ ์๋์ผ๋ก ์ ๊ณตํฉ๋๋ค
1105 * ๋ฆฌ์์ค๋ MCP ์๋ฒ๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ์ ํ์ ์ฝํ
์ธ ๋ฅผ ํฌํจํ ์ ์์ต๋๋ค (ํ
์คํธ, JSON, ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ๋ฑ)
1106</Tip>
1107
1108## MCP Tool Search๋ก ํ์ฅ
1109
1110Tool Search๋ MCP ์ปจํ
์คํธ ์ฌ์ฉ๋์ ๋ฎ๊ฒ ์ ์งํ์ฌ ๋๊ตฌ ์ ์๋ฅผ Claude๊ฐ ํ์ํ ๋๊น์ง ์ฐ๊ธฐํฉ๋๋ค. ์ธ์
์์ ์ ๋๊ตฌ ์ด๋ฆ๋ง ๋ก๋๋๋ฏ๋ก ๋ ๋ง์ MCP ์๋ฒ๋ฅผ ์ถ๊ฐํด๋ ์ปจํ
์คํธ ์๋์ฐ์ ๋ฏธ์น๋ ์ํฅ์ด ์ต์ํ๋ฉ๋๋ค.
1111
1112### ์๋ ๋ฐฉ์
1113
1114Tool Search๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค. MCP ๋๊ตฌ๋ ๋ฏธ๋ฆฌ ๋ก๋๋์ง ์๊ณ ์ฐ๊ธฐ๋๋ฉฐ, Claude๋ ๊ฒ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์
์ ํ์ํ ๋ ๊ด๋ จ ๋๊ตฌ๋ฅผ ๊ฒ์ํฉ๋๋ค. Claude๊ฐ ์ค์ ๋ก ์ฌ์ฉํ๋ ๋๊ตฌ๋ง ์ปจํ
์คํธ์ ๋ค์ด๊ฐ๋๋ค. ์ฌ์ฉ์ ๊ด์ ์์ MCP ๋๊ตฌ๋ ์ด์ ๊ณผ ์ ํํ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
1115
1116์๊ณ๊ฐ ๊ธฐ๋ฐ ๋ก๋ฉ์ ์ ํธํ๋ ๊ฒฝ์ฐ `ENABLE_TOOL_SEARCH=auto`๋ฅผ ์ค์ ํ์ฌ ์ปจํ
์คํธ ์๋์ฐ์ 10% ์ด๋ด์ ๋ง์ ๋ ์คํค๋ง๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๊ณ ์ค๋ฒํ๋ก์ฐ๋ง ์ฐ๊ธฐํฉ๋๋ค. ๋ชจ๋ ์ต์
์ [Tool Search ๊ตฌ์ฑ](#configure-tool-search)์ ์ฐธ์กฐํ์ธ์.
1117
1118### MCP ์๋ฒ ์์ฑ์์ฉ
1119
1120MCP ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ Tool Search๊ฐ ํ์ฑํ๋๋ฉด ์๋ฒ ์ง์นจ ํ๋๊ฐ ๋ ์ ์ฉํด์ง๋๋ค. ์๋ฒ ์ง์นจ์ Claude๊ฐ [skills](/ko/skills)์ ์๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ๋๊ตฌ๋ฅผ ๊ฒ์ํ ์๊ธฐ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
1121
1122๋ค์์ ์ค๋ช
ํ๋ ๋ช
ํํ๊ณ ์ค๋ช
์ ์ธ ์๋ฒ ์ง์นจ์ ์ถ๊ฐํฉ๋๋ค:
1123
1124* ๋๊ตฌ๊ฐ ์ฒ๋ฆฌํ๋ ์์
์ ๋ฒ์ฃผ
1125* Claude๊ฐ ๋๊ตฌ๋ฅผ ๊ฒ์ํด์ผ ํ ๋
1126* ์๋ฒ๊ฐ ์ ๊ณตํ๋ ์ฃผ์ ๊ธฐ๋ฅ
1127
1128Claude Code๋ ๋๊ตฌ ์ค๋ช
๋ฐ ์๋ฒ ์ง์นจ์ ๊ฐ๊ฐ 2KB์์ ์๋ฆ
๋๋ค. ์๋ฅด๊ธฐ๋ฅผ ํผํ๋ ค๋ฉด ๊ฐ๊ฒฐํ๊ฒ ์ ์งํ๊ณ ์ค์ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์์ ๋ถ๋ถ์ ๋ฐฐ์นํฉ๋๋ค.
1129
1130### Tool Search ๊ตฌ์ฑ
1131
1132Tool Search๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค: MCP ๋๊ตฌ๋ ์ฐ๊ธฐ๋๊ณ ํ์์ ๋ฐ๋ผ ๊ฒ์๋ฉ๋๋ค. Vertex AI์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค(๋๊ตฌ ๊ฒ์ ๋ฒ ํ ํค๋๋ฅผ ํ์ฉํ์ง ์์). `ANTHROPIC_BASE_URL`์ด ๋น ์์ฌ ํธ์คํธ๋ฅผ ๊ฐ๋ฆฌํฌ ๋๋ ๋นํ์ฑํ๋ฉ๋๋ค(๋๋ถ๋ถ์ ํ๋ก์๊ฐ `tool_reference` ๋ธ๋ก์ ์ ๋ฌํ์ง ์๊ธฐ ๋๋ฌธ). ๋ช
์์ ์ผ๋ก `ENABLE_TOOL_SEARCH`๋ฅผ ์ค์ ํ์ฌ ์ตํธ์ธํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ `tool_reference` ๋ธ๋ก์ ์ง์ํ๋ ๋ชจ๋ธ์ด ํ์ํฉ๋๋ค: Sonnet 4 ์ด์ ๋๋ Opus 4 ์ด์. Haiku ๋ชจ๋ธ์ Tool Search๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
1133
1134`ENABLE_TOOL_SEARCH` ํ๊ฒฝ ๋ณ์๋ก Tool Search ๋์์ ์ ์ดํฉ๋๋ค:
1135
1136| ๊ฐ | ๋์ |
1137| :--------- | :----------------------------------------------------------------------------------- |
1138| (์ค์ ๋์ง ์์) | ๋ชจ๋ MCP ๋๊ตฌ ์ฐ๊ธฐ๋๊ณ ํ์์ ๋ฐ๋ผ ๋ก๋๋จ. Vertex AI ๋๋ `ANTHROPIC_BASE_URL`์ด ๋น ์์ฌ ํธ์คํธ์ผ ๋ ๋ฏธ๋ฆฌ ๋ก๋๋ก ๋์๊ฐ |
1139| `true` | ๋ชจ๋ MCP ๋๊ตฌ ์ฐ๊ธฐ, Vertex AI ๋ฐ ๋น ์์ฌ `ANTHROPIC_BASE_URL` ํฌํจ |
1140| `auto` | ์๊ณ๊ฐ ๋ชจ๋: ๋๊ตฌ๊ฐ ์ปจํ
์คํธ ์๋์ฐ์ 10% ์ด๋ด์ ๋ง์ผ๋ฉด ๋ฏธ๋ฆฌ ๋ก๋, ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฐ๊ธฐ |
1141| `auto:<N>` | ์ฌ์ฉ์ ์ ์ ๋ฐฑ๋ถ์จ์ ์ฌ์ฉํ ์๊ณ๊ฐ ๋ชจ๋, `<N>`์ 0-100 (์: `auto:5`๋ 5%) |
1142| `false` | ๋ชจ๋ MCP ๋๊ตฌ ๋ฏธ๋ฆฌ ๋ก๋, ์ฐ๊ธฐ ์์ |
1143
1144```bash theme={null}
1145# ์ฌ์ฉ์ ์ ์ 5% ์๊ณ๊ฐ ์ฌ์ฉ
1146ENABLE_TOOL_SEARCH=auto:5 claude
1147
1148# Tool Search ์์ ํ ๋นํ์ฑํ
1149ENABLE_TOOL_SEARCH=false claude
1150```
1151
1152๋๋ [settings.json `env` ํ๋](/ko/settings#available-settings)์์ ๊ฐ์ ์ค์ ํฉ๋๋ค.
1153
1154`ToolSearch` ๋๊ตฌ๋ฅผ ํน๋ณํ ๋นํ์ฑํํ ์๋ ์์ต๋๋ค:
1155
1156```json theme={null}
1157{
1158 "permissions": {
1159 "deny": ["ToolSearch"]
1160 }
1161}
1162```
1163
1164### ์๋ฒ๋ฅผ ์ฐ๊ธฐ์์ ์ ์ธ
1165
1166์๋ฒ์ ๋๊ตฌ๊ฐ ๊ฒ์ ๋จ๊ณ ์์ด ํญ์ Claude์๊ฒ ํ์๋์ด์ผ ํ๋ ๊ฒฝ์ฐ ํด๋น ์๋ฒ์ ๊ตฌ์ฑ์์ `alwaysLoad`๋ฅผ `true`๋ก ์ค์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด `ENABLE_TOOL_SEARCH` ์ค์ ์ ๊ด๊ณ์์ด ํด๋น ์๋ฒ์ ๋ชจ๋ ๋๊ตฌ๊ฐ ์ธ์
์์ ์ ์ปจํ
์คํธ์ ๋ก๋๋ฉ๋๋ค. ๋งค ํด๋ง๋ค Claude๊ฐ ํ์๋ก ํ๋ ์์์ ๋๊ตฌ์ ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ฐ ๋ฏธ๋ฆฌ ๋ก๋๋ ๋๊ตฌ๋ ๋ํ์ ์ฌ์ฉํ ์ ์๋ ์ปจํ
์คํธ๋ฅผ ์๋นํ๊ธฐ ๋๋ฌธ์
๋๋ค.
1167
1168๋ค์ `.mcp.json` ํญ๋ชฉ์ ํ HTTP ์๋ฒ๋ฅผ ์ ์ธํ๋ฉด์ ๋ค๋ฅธ ์๋ฒ๋ ์ฐ๊ธฐ๋ ์ํ๋ก ์ ์งํฉ๋๋ค:
1169
1170```json theme={null}
1171{
1172 "mcpServers": {
1173 "core-tools": {
1174 "type": "http",
1175 "url": "https://mcp.example.com/mcp",
1176 "alwaysLoad": true
1177 }
1178 }
1179}
1180```
1181
1182`alwaysLoad` ํ๋๋ ๋ชจ๋ ์๋ฒ ์ ํ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ Claude Code v2.1.121 ์ด์์ด ํ์ํฉ๋๋ค. MCP ์๋ฒ๋ ๋๊ตฌ์ `_meta` ๊ฐ์ฒด์ `"anthropic/alwaysLoad": true`๋ฅผ ํฌํจํ์ฌ ๊ฐ๋ณ ๋๊ตฌ๋ฅผ ํญ์ ๋ก๋๋๋๋ก ํ์ํ ์๋ ์์ผ๋ฉฐ, ์ด๋ ํด๋น ๋๊ตฌ์๋ง ๋์ผํ ํจ๊ณผ๋ฅผ ๊ฐ์ต๋๋ค.
1183
1184## MCP ํ๋กฌํํธ๋ฅผ ๋ช
๋ น์ผ๋ก ์ฌ์ฉ
1185
1186MCP ์๋ฒ๋ Claude Code์์ ๋ช
๋ น์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ๋๋ ํ๋กฌํํธ๋ฅผ ๋
ธ์ถํ ์ ์์ต๋๋ค.
1187
1188### MCP ํ๋กฌํํธ ์คํ
1189
1190<Steps>
1191 <Step title="์ฌ์ฉ ๊ฐ๋ฅํ ํ๋กฌํํธ ๊ฒ์">
1192 `/`๋ฅผ ์
๋ ฅํ์ฌ MCP ์๋ฒ์ ํ๋กฌํํธ๋ฅผ ํฌํจํ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ช
๋ น์ ํ์ธํฉ๋๋ค. MCP ํ๋กฌํํธ๋ `/mcp__servername__promptname` ํ์์ผ๋ก ๋ํ๋ฉ๋๋ค.
1193 </Step>
1194
1195 <Step title="์ธ์ ์์ด ํ๋กฌํํธ ์คํ">
1196 ```text theme={null}
1197 /mcp__github__list_prs
1198 ```
1199 </Step>
1200
1201 <Step title="์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋กฌํํธ ์คํ">
1202 ๋ง์ ํ๋กฌํํธ๋ ์ธ์๋ฅผ ํ์ฉํฉ๋๋ค. ๋ช
๋ น ๋ค์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ ๋ฌํฉ๋๋ค:
1203
1204 ```text theme={null}
1205 /mcp__github__pr_review 456
1206 ```
1207
1208 ```text theme={null}
1209 /mcp__jira__create_issue "๋ก๊ทธ์ธ ํ๋ฆ์ ๋ฒ๊ทธ" high
1210 ```
1211 </Step>
1212</Steps>
1213
1214<Tip>
1215 ํ:
1216
1217 * MCP ํ๋กฌํํธ๋ ์ฐ๊ฒฐ๋ ์๋ฒ์์ ๋์ ์ผ๋ก ๊ฒ์๋ฉ๋๋ค
1218 * ์ธ์๋ ํ๋กฌํํธ์ ์ ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์๋ฉ๋๋ค
1219 * ํ๋กฌํํธ ๊ฒฐ๊ณผ๋ ๋ํ์ ์ง์ ์ฃผ์
๋ฉ๋๋ค
1220 * ์๋ฒ ๋ฐ ํ๋กฌํํธ ์ด๋ฆ์ ์ ๊ทํ๋ฉ๋๋ค (๊ณต๋ฐฑ์ ๋ฐ์ค์ด ๋จ)
1221</Tip>
1222
1223## ๊ด๋ฆฌ๋๋ MCP ๊ตฌ์ฑ
1224
1225MCP ์๋ฒ์ ๋ํ ์ค์ ์ง์ค์ ์ ์ด๊ฐ ํ์ํ ์กฐ์ง์ ๊ฒฝ์ฐ Claude Code๋ ๋ ๊ฐ์ง ๊ตฌ์ฑ ์ต์
์ ์ง์ํฉ๋๋ค:
1226
12271. **`managed-mcp.json`์ ์ฌ์ฉํ ๋
์ ์ ์ด**: ์ฌ์ฉ์๊ฐ ์์ ํ๊ฑฐ๋ ํ์ฅํ ์ ์๋ ๊ณ ์ ๋ MCP ์๋ฒ ์ธํธ ๋ฐฐํฌ
12282. **ํ์ฉ ๋ชฉ๋ก/๊ฑฐ๋ถ ๋ชฉ๋ก์ ์ฌ์ฉํ ์ ์ฑ
๊ธฐ๋ฐ ์ ์ด**: ์ฌ์ฉ์๊ฐ ์์ ์ ์๋ฒ๋ฅผ ์ถ๊ฐํ ์ ์์ง๋ง ํ์ฉ๋๋ ์๋ฒ๋ฅผ ์ ํ
1229
1230์ด๋ฌํ ์ต์
์ ํตํด IT ๊ด๋ฆฌ์๋ ๋ค์์ ์ํํ ์ ์์ต๋๋ค:
1231
1232* **์ง์์ด ์ก์ธ์คํ ์ ์๋ MCP ์๋ฒ ์ ์ด**: ์กฐ์ง ์ ์ฒด์ ํ์คํ๋ ์น์ธ๋ MCP ์๋ฒ ์ธํธ ๋ฐฐํฌ
1233* **์น์ธ๋์ง ์์ MCP ์๋ฒ ๋ฐฉ์ง**: ์ฌ์ฉ์๊ฐ ์น์ธ๋์ง ์์ MCP ์๋ฒ๋ฅผ ์ถ๊ฐํ์ง ๋ชปํ๋๋ก ์ ํ
1234* **MCP ์์ ํ ๋นํ์ฑํ**: ํ์ํ ๊ฒฝ์ฐ MCP ๊ธฐ๋ฅ์ ์์ ํ ์ ๊ฑฐ
1235
1236### ์ต์
1: managed-mcp.json์ ์ฌ์ฉํ ๋
์ ์ ์ด
1237
1238`managed-mcp.json` ํ์ผ์ ๋ฐฐํฌํ๋ฉด ๋ชจ๋ MCP ์๋ฒ์ ๋ํ **๋
์ ์ ์ด**๋ฅผ ๊ฐ์ต๋๋ค. ์ฌ์ฉ์๋ ์ด ํ์ผ์ ์ ์๋ ์๋ฒ ์ด์ธ์ MCP ์๋ฒ๋ฅผ ์ถ๊ฐ, ์์ ๋๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์์ ํ ์ ์ด๋ฅผ ์ํ๋ ์กฐ์ง์ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์
๋๋ค.
1239
1240์์คํ
๊ด๋ฆฌ์๋ ๊ตฌ์ฑ ํ์ผ์ ์์คํ
์ ์ฒด ๋๋ ํ ๋ฆฌ์ ๋ฐฐํฌํฉ๋๋ค:
1241
1242* macOS: `/Library/Application Support/ClaudeCode/managed-mcp.json`
1243* Linux ๋ฐ WSL: `/etc/claude-code/managed-mcp.json`
1244* Windows: `C:\Program Files\ClaudeCode\managed-mcp.json`
1245
1246<Note>
1247 ์ด๋ ์์คํ
์ ์ฒด ๊ฒฝ๋ก์
๋๋ค (`~/Library/...`์ ๊ฐ์ ์ฌ์ฉ์ ํ ๋๋ ํ ๋ฆฌ๊ฐ ์๋). IT ๊ด๋ฆฌ์๊ฐ ๋ฐฐํฌํ๊ธฐ ์ํด ๊ด๋ฆฌ์ ๊ถํ์ด ํ์ํฉ๋๋ค.
1248</Note>
1249
1250`managed-mcp.json` ํ์ผ์ ํ์ค `.mcp.json` ํ์ผ๊ณผ ๋์ผํ ํ์์ ์ฌ์ฉํฉ๋๋ค:
1251
1252```json theme={null}
1253{
1254 "mcpServers": {
1255 "github": {
1256 "type": "http",
1257 "url": "https://api.githubcopilot.com/mcp/"
1258 },
1259 "sentry": {
1260 "type": "http",
1261 "url": "https://mcp.sentry.dev/mcp"
1262 },
1263 "company-internal": {
1264 "type": "stdio",
1265 "command": "/usr/local/bin/company-mcp-server",
1266 "args": ["--config", "/etc/company/mcp-config.json"],
1267 "env": {
1268 "COMPANY_API_URL": "https://internal.company.com"
1269 }
1270 }
1271 }
1272}
1273```
1274
1275### ์ต์
2: ํ์ฉ ๋ชฉ๋ก ๋ฐ ๊ฑฐ๋ถ ๋ชฉ๋ก์ ์ฌ์ฉํ ์ ์ฑ
๊ธฐ๋ฐ ์ ์ด
1276
1277๋
์ ์ ์ด๋ฅผ ํ๋ ๋์ ๊ด๋ฆฌ์๋ ์ฌ์ฉ์๊ฐ ์์ ์ MCP ์๋ฒ๋ฅผ ๊ตฌ์ฑํ ์ ์๋๋ก ํ์ฉํ๋ฉด์ ํ์ฉ๋๋ ์๋ฒ์ ์ ํ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ [๊ด๋ฆฌ๋๋ ์ค์ ํ์ผ](/ko/settings#settings-files)์ `allowedMcpServers` ๋ฐ `deniedMcpServers`๋ฅผ ์ฌ์ฉํฉ๋๋ค.
1278
1279<Note>
1280 **์ต์
์ ํ**: ์ฌ์ฉ์ ์ฌ์ฉ์ ์ ์ ์์ด ๊ณ ์ ๋ ์๋ฒ ์ธํธ๋ฅผ ๋ฐฐํฌํ๋ ค๋ฉด ์ต์
1 (`managed-mcp.json`)์ ์ฌ์ฉํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ ์ฑ
์ ์ฝ ๋ด์์ ์์ ์ ์๋ฒ๋ฅผ ์ถ๊ฐํ ์ ์๋๋ก ํ๋ ค๋ฉด ์ต์
2 (ํ์ฉ ๋ชฉ๋ก/๊ฑฐ๋ถ ๋ชฉ๋ก)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
1281</Note>
1282
1283#### ์ ํ ์ต์
1284
1285ํ์ฉ ๋ชฉ๋ก ๋๋ ๊ฑฐ๋ถ ๋ชฉ๋ก์ ๊ฐ ํญ๋ชฉ์ ์ธ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์๋ฒ๋ฅผ ์ ํํ ์ ์์ต๋๋ค:
1286
12871. **์๋ฒ ์ด๋ฆ์ผ๋ก** (`serverName`): ์๋ฒ์ ๊ตฌ์ฑ๋ ์ด๋ฆ๊ณผ ์ผ์น
12882. **๋ช
๋ น์ผ๋ก** (`serverCommand`): stdio ์๋ฒ๋ฅผ ์์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ ํํ ๋ช
๋ น ๋ฐ ์ธ์์ ์ผ์น
12893. **URL ํจํด์ผ๋ก** (`serverUrl`): ์์ผ๋์นด๋ ์ง์์ ์ฌ์ฉํ์ฌ ์๊ฒฉ ์๋ฒ URL๊ณผ ์ผ์น
1290
1291**์ค์**: ๊ฐ ํญ๋ชฉ์ `serverName`, `serverCommand` ๋๋ `serverUrl` ์ค ์ ํํ ํ๋๋ฅผ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
1292
1293#### ๊ตฌ์ฑ ์
1294
1295```json theme={null}
1296{
1297 "allowedMcpServers": [
1298 // ์๋ฒ ์ด๋ฆ์ผ๋ก ํ์ฉ
1299 { "serverName": "github" },
1300 { "serverName": "sentry" },
1301
1302 // ์ ํํ ๋ช
๋ น์ผ๋ก ํ์ฉ (stdio ์๋ฒ์ ๊ฒฝ์ฐ)
1303 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },
1304 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },
1305
1306 // URL ํจํด์ผ๋ก ํ์ฉ (์๊ฒฉ ์๋ฒ์ ๊ฒฝ์ฐ)
1307 { "serverUrl": "https://mcp.company.com/*" },
1308 { "serverUrl": "https://*.internal.corp/*" }
1309 ],
1310 "deniedMcpServers": [
1311 // ์๋ฒ ์ด๋ฆ์ผ๋ก ์ฐจ๋จ
1312 { "serverName": "dangerous-server" },
1313
1314 // ์ ํํ ๋ช
๋ น์ผ๋ก ์ฐจ๋จ (stdio ์๋ฒ์ ๊ฒฝ์ฐ)
1315 { "serverCommand": ["npx", "-y", "unapproved-package"] },
1316
1317 // URL ํจํด์ผ๋ก ์ฐจ๋จ (์๊ฒฉ ์๋ฒ์ ๊ฒฝ์ฐ)
1318 { "serverUrl": "https://*.untrusted.com/*" }
1319 ]
1320}
1321```
1322
1323#### ๋ช
๋ น ๊ธฐ๋ฐ ์ ํ์ ์๋ ๋ฐฉ์
1324
1325**์ ํํ ์ผ์น**:
1326
1327* ๋ช
๋ น ๋ฐฐ์ด์ **์ ํํ** ์ผ์นํด์ผ ํฉ๋๋ค - ๋ช
๋ น๊ณผ ์ฌ๋ฐ๋ฅธ ์์์ ๋ชจ๋ ์ธ์
1328* ์: `["npx", "-y", "server"]`๋ `["npx", "server"]` ๋๋ `["npx", "-y", "server", "--flag"]`์ ์ผ์นํ์ง ์์ต๋๋ค
1329
1330**Stdio ์๋ฒ ๋์**:
1331
1332* ํ์ฉ ๋ชฉ๋ก์ **๋ชจ๋ ** `serverCommand` ํญ๋ชฉ์ด ํฌํจ๋๋ฉด stdio ์๋ฒ๋ ํด๋น ๋ช
๋ น ์ค ํ๋์ ์ผ์นํด์ผ ํฉ๋๋ค
1333* Stdio ์๋ฒ๋ ๋ช
๋ น ์ ํ์ด ์์ ๋ ์ด๋ฆ๋ง์ผ๋ก๋ ํต๊ณผํ ์ ์์ต๋๋ค
1334* ์ด๋ ๊ด๋ฆฌ์๊ฐ ์คํํ ์ ์๋ ๋ช
๋ น์ ์ ์ฉํ ์ ์๋๋ก ํฉ๋๋ค
1335
1336**๋น stdio ์๋ฒ ๋์**:
1337
1338* ์๊ฒฉ ์๋ฒ (HTTP, SSE, WebSocket)๋ ํ์ฉ ๋ชฉ๋ก์ `serverUrl` ํญ๋ชฉ์ด ์์ ๋ URL ๊ธฐ๋ฐ ์ผ์น๋ฅผ ์ฌ์ฉํฉ๋๋ค
1339* URL ํญ๋ชฉ์ด ์์ผ๋ฉด ์๊ฒฉ ์๋ฒ๋ ์ด๋ฆ ๊ธฐ๋ฐ ์ผ์น๋ก ๋์๊ฐ๋๋ค
1340* ๋ช
๋ น ์ ํ์ ์๊ฒฉ ์๋ฒ์ ์ ์ฉ๋์ง ์์ต๋๋ค
1341
1342#### URL ๊ธฐ๋ฐ ์ ํ์ ์๋ ๋ฐฉ์
1343
1344URL ํจํด์ `*`๋ฅผ ์ฌ์ฉํ์ฌ ์์ผ๋์นด๋๋ฅผ ์ง์ํ์ฌ ๋ชจ๋ ๋ฌธ์ ์ํ์ค์ ์ผ์นํฉ๋๋ค. ์ด๋ ์ ์ฒด ๋๋ฉ์ธ ๋๋ ํ์ ๋๋ฉ์ธ์ ํ์ฉํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
1345
1346**์์ผ๋์นด๋ ์**:
1347
1348* `https://mcp.company.com/*` - ํน์ ๋๋ฉ์ธ์ ๋ชจ๋ ๊ฒฝ๋ก ํ์ฉ
1349* `https://*.example.com/*` - example.com์ ๋ชจ๋ ํ์ ๋๋ฉ์ธ ํ์ฉ
1350* `http://localhost:*/*` - localhost์ ๋ชจ๋ ํฌํธ ํ์ฉ
1351
1352**์๊ฒฉ ์๋ฒ ๋์**:
1353
1354* ํ์ฉ ๋ชฉ๋ก์ **๋ชจ๋ ** `serverUrl` ํญ๋ชฉ์ด ํฌํจ๋๋ฉด ์๊ฒฉ ์๋ฒ๋ ํด๋น URL ํจํด ์ค ํ๋์ ์ผ์นํด์ผ ํฉ๋๋ค
1355* ์๊ฒฉ ์๋ฒ๋ URL ์ ํ์ด ์์ ๋ ์ด๋ฆ๋ง์ผ๋ก๋ ํต๊ณผํ ์ ์์ต๋๋ค
1356* ์ด๋ ๊ด๋ฆฌ์๊ฐ ํ์ฉ๋๋ ์๊ฒฉ ์๋ํฌ์ธํธ๋ฅผ ์ ์ฉํ ์ ์๋๋ก ํฉ๋๋ค
1357
1358<Accordion title="์: URL ์ ์ฉ ํ์ฉ ๋ชฉ๋ก">
1359 ```json theme={null}
1360 {
1361 "allowedMcpServers": [
1362 { "serverUrl": "https://mcp.company.com/*" },
1363 { "serverUrl": "https://*.internal.corp/*" }
1364 ]
1365 }
1366 ```
1367
1368 **๊ฒฐ๊ณผ**:
1369
1370 * `https://mcp.company.com/api`์ HTTP ์๋ฒ: โ
ํ์ฉ๋จ (URL ํจํด๊ณผ ์ผ์น)
1371 * `https://api.internal.corp/mcp`์ HTTP ์๋ฒ: โ
ํ์ฉ๋จ (์์ผ๋์นด๋ ํ์ ๋๋ฉ์ธ๊ณผ ์ผ์น)
1372 * `https://external.com/mcp`์ HTTP ์๋ฒ: โ ์ฐจ๋จ๋จ (URL ํจํด๊ณผ ์ผ์นํ์ง ์์)
1373 * ๋ชจ๋ ๋ช
๋ น์ Stdio ์๋ฒ: โ ์ฐจ๋จ๋จ (์ผ์นํ ์ด๋ฆ ๋๋ ๋ช
๋ น ํญ๋ชฉ ์์)
1374</Accordion>
1375
1376<Accordion title="์: ๋ช
๋ น ์ ์ฉ ํ์ฉ ๋ชฉ๋ก">
1377 ```json theme={null}
1378 {
1379 "allowedMcpServers": [
1380 { "serverCommand": ["npx", "-y", "approved-package"] }
1381 ]
1382 }
1383 ```
1384
1385 **๊ฒฐ๊ณผ**:
1386
1387 * `["npx", "-y", "approved-package"]`๋ฅผ ์ฌ์ฉํ Stdio ์๋ฒ: โ
ํ์ฉ๋จ (๋ช
๋ น๊ณผ ์ผ์น)
1388 * `["node", "server.js"]`๋ฅผ ์ฌ์ฉํ Stdio ์๋ฒ: โ ์ฐจ๋จ๋จ (๋ช
๋ น๊ณผ ์ผ์นํ์ง ์์)
1389 * "my-api"๋ผ๋ ์ด๋ฆ์ HTTP ์๋ฒ: โ ์ฐจ๋จ๋จ (์ผ์นํ ์ด๋ฆ ํญ๋ชฉ ์์)
1390</Accordion>
1391
1392<Accordion title="์: ํผํฉ ์ด๋ฆ ๋ฐ ๋ช
๋ น ํ์ฉ ๋ชฉ๋ก">
1393 ```json theme={null}
1394 {
1395 "allowedMcpServers": [
1396 { "serverName": "github" },
1397 { "serverCommand": ["npx", "-y", "approved-package"] }
1398 ]
1399 }
1400 ```
1401
1402 **๊ฒฐ๊ณผ**:
1403
1404 * `["npx", "-y", "approved-package"]`๋ฅผ ์ฌ์ฉํ "local-tool"์ด๋ผ๋ Stdio ์๋ฒ: โ
ํ์ฉ๋จ (๋ช
๋ น๊ณผ ์ผ์น)
1405 * `["node", "server.js"]`๋ฅผ ์ฌ์ฉํ "local-tool"์ด๋ผ๋ Stdio ์๋ฒ: โ ์ฐจ๋จ๋จ (๋ช
๋ น ํญ๋ชฉ์ด ์์ง๋ง ์ผ์นํ์ง ์์)
1406 * `["node", "server.js"]`๋ฅผ ์ฌ์ฉํ "github"๋ผ๋ Stdio ์๋ฒ: โ ์ฐจ๋จ๋จ (๋ช
๋ น ํญ๋ชฉ์ด ์์ ๋ stdio ์๋ฒ๋ ๋ช
๋ น๊ณผ ์ผ์นํด์ผ ํจ)
1407 * "github"๋ผ๋ ์ด๋ฆ์ HTTP ์๋ฒ: โ
ํ์ฉ๋จ (์ด๋ฆ๊ณผ ์ผ์น)
1408 * "other-api"๋ผ๋ ์ด๋ฆ์ HTTP ์๋ฒ: โ ์ฐจ๋จ๋จ (์ด๋ฆ๊ณผ ์ผ์นํ์ง ์์)
1409</Accordion>
1410
1411<Accordion title="์: ์ด๋ฆ ์ ์ฉ ํ์ฉ ๋ชฉ๋ก">
1412 ```json theme={null}
1413 {
1414 "allowedMcpServers": [
1415 { "serverName": "github" },
1416 { "serverName": "internal-tool" }
1417 ]
1418 }
1419 ```
1420
1421 **๊ฒฐ๊ณผ**:
1422
1423 * ๋ชจ๋ ๋ช
๋ น์ ์ฌ์ฉํ "github"๋ผ๋ Stdio ์๋ฒ: โ
ํ์ฉ๋จ (๋ช
๋ น ์ ํ ์์)
1424 * ๋ชจ๋ ๋ช
๋ น์ ์ฌ์ฉํ "internal-tool"์ด๋ผ๋ Stdio ์๋ฒ: โ
ํ์ฉ๋จ (๋ช
๋ น ์ ํ ์์)
1425 * "github"๋ผ๋ ์ด๋ฆ์ HTTP ์๋ฒ: โ
ํ์ฉ๋จ (์ด๋ฆ๊ณผ ์ผ์น)
1426 * "other"๋ผ๋ ์ด๋ฆ์ ๋ชจ๋ ์๋ฒ: โ ์ฐจ๋จ๋จ (์ด๋ฆ๊ณผ ์ผ์นํ์ง ์์)
1427</Accordion>
1428
1429#### ํ์ฉ ๋ชฉ๋ก ๋์ (`allowedMcpServers`)
1430
1431* `undefined` (๊ธฐ๋ณธ๊ฐ): ์ ํ ์์ - ์ฌ์ฉ์๋ ๋ชจ๋ MCP ์๋ฒ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค
1432* ๋น ๋ฐฐ์ด `[]`: ์์ ํ ์ ๊ธ - ์ฌ์ฉ์๋ MCP ์๋ฒ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค
1433* ํญ๋ชฉ ๋ชฉ๋ก: ์ฌ์ฉ์๋ ์ด๋ฆ, ๋ช
๋ น ๋๋ URL ํจํด๊ณผ ์ผ์นํ๋ ์๋ฒ๋ง ๊ตฌ์ฑํ ์ ์์ต๋๋ค
1434
1435#### ๊ฑฐ๋ถ ๋ชฉ๋ก ๋์ (`deniedMcpServers`)
1436
1437* `undefined` (๊ธฐ๋ณธ๊ฐ): ์ฐจ๋จ๋ ์๋ฒ ์์
1438* ๋น ๋ฐฐ์ด `[]`: ์ฐจ๋จ๋ ์๋ฒ ์์
1439* ํญ๋ชฉ ๋ชฉ๋ก: ์ง์ ๋ ์๋ฒ๋ ๋ชจ๋ ๋ฒ์์์ ๋ช
์์ ์ผ๋ก ์ฐจ๋จ๋ฉ๋๋ค
1440
1441#### ์ค์ํ ์ฐธ๊ณ ์ฌํญ
1442
1443* **์ต์
1๊ณผ ์ต์
2๋ฅผ ๊ฒฐํฉํ ์ ์์ต๋๋ค**: `managed-mcp.json`์ด ์กด์ฌํ๋ฉด ๋
์ ์ ์ด๋ฅผ ๊ฐ์ง๋ฉฐ ์ฌ์ฉ์๋ ์๋ฒ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ํ์ฉ ๋ชฉ๋ก/๊ฑฐ๋ถ ๋ชฉ๋ก์ ์ฌ์ ํ ๊ด๋ฆฌ๋๋ ์๋ฒ ์์ฒด์ ์ ์ฉ๋ฉ๋๋ค.
1444* **๊ฑฐ๋ถ ๋ชฉ๋ก์ด ์ ๋ ์ฐ์ ์์๋ฅผ ๊ฐ์ต๋๋ค**: ์๋ฒ๊ฐ ๊ฑฐ๋ถ ๋ชฉ๋ก ํญ๋ชฉ๊ณผ ์ผ์นํ๋ฉด (์ด๋ฆ, ๋ช
๋ น ๋๋ URL๋ก) ํ์ฉ ๋ชฉ๋ก์ ์์ด๋ ์ฐจ๋จ๋ฉ๋๋ค
1445* ์ด๋ฆ ๊ธฐ๋ฐ, ๋ช
๋ น ๊ธฐ๋ฐ ๋ฐ URL ๊ธฐ๋ฐ ์ ํ์ด ํจ๊ป ์๋ํฉ๋๋ค: ์๋ฒ๋ ์ด๋ฆ ํญ๋ชฉ, ๋ช
๋ น ํญ๋ชฉ ๋๋ URL ํจํด๊ณผ ์ผ์นํ๋ฉด ํต๊ณผํฉ๋๋ค (๊ฑฐ๋ถ ๋ชฉ๋ก์ผ๋ก ์ฐจ๋จ๋์ง ์๋ ํ)
1446
1447<Note>
1448 **`managed-mcp.json` ์ฌ์ฉ ์**: ์ฌ์ฉ์๋ `claude mcp add` ๋๋ ๊ตฌ์ฑ ํ์ผ์ ํตํด MCP ์๋ฒ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. `allowedMcpServers` ๋ฐ `deniedMcpServers` ์ค์ ์ ์ฌ์ ํ ์ค์ ๋ก ๋ก๋๋๋ ๊ด๋ฆฌ๋๋ ์๋ฒ๋ฅผ ํํฐ๋งํ๊ธฐ ์ํด ์ ์ฉ๋ฉ๋๋ค.
1449</Note>