제5장 — 전송 프로토콜과 발견

게시일: 2026-04-03 마지막 업데이트 날짜: 2026-06-12 버전: 1

์ œ5์žฅ โ€” ์ „์†ก ํ”„๋กœํ† ์ฝœ๊ณผ ๋ฐœ๊ฒฌ

LLM Primer IV: MCP๋กœ ์„ค๊ณ„ํ•˜๋Š” AI ์ธ์ง€๋ฅผ ์ฑ•ํ„ฐ๋ณ„๋กœ ๋”ฐ๋ผ๊ฐ€๋Š” ์›Œํฌ์Šค๋ฃจ์˜ ๋‹ค์„ฏ ๋ฒˆ์งธ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ œ3์žฅ๊ณผ ์ œ4์žฅ์˜ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋Š” ํ˜ธ์ŠคํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์˜ ๊ณต๊ธฐ ์ค‘์— ๋–  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฉ”์‹œ์ง€๋Š” ๋œจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” ์ „์†ก ์œ„๋ฅผ ํƒ€๋ฉฐ, ์ „์†ก์€ ํ†ตํ•ฉ์— ๊ด€ํ•œ ๊ฑฐ์˜ ๋ชจ๋“  ์šด์˜์ ์ธ ๊ฒƒ์„ ์กฐ์šฉํžˆ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.


์ด ์žฅ์ด ์กด์žฌํ•˜๋Š” ์ด์œ 

MCP๋Š” ์ž์‹ ์˜ ๋ฉ”์‹œ์ง€ ํฌ๋งท โ€” ์–‘๋ฐฉํ–ฅ ์ฑ„๋„ ์œ„์˜ JSON-RPC 2.0 โ€” ์„ ์ •์˜ํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ๊ทธ ์ฑ„๋„์„ ๊ตฌํ˜„ํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ์ „์†ก์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ „์†ก์€ ๊ตํ™˜ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ์€ ๋ฐฐํฌ ํŒจํ„ด์— ๋“ค์–ด๋งž๊ณ , ๋‹ค๋ฅธ ์šด์˜์  ๋ถ€๋‹ด์„ ์ง€๋ฉฐ, ๋‹ค๋ฅธ ๋ณด์•ˆ ํ‘œ๋ฉด์„ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ์˜์—ญ ์œ„์— ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์ด ๊ฑธ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๋Š” ์• ์ดˆ์— ์„œ๋ฒ„๋ฅผ ์–ด๋–ป๊ฒŒ ์ฐพ๋Š”๊ฐ€? ํ˜ธ์ŠคํŠธ๊ฐ€ ์„œ๋ฒ„๊ฐ€ ์กด์žฌํ•˜๊ณ  ์–ด๋”” ์‚ฌ๋Š”์ง€ ์•Œ ๋•Œ๊นŒ์ง€๋Š”, ๊ฐ€์žฅ ์•„๋ฆ„๋‹ต๊ฒŒ ๋ช…์„ธ๋œ ํ”„๋กœํ† ์ฝœ์ด๋ผ๋„ ๋Œ€ํ™”๋ฅผ ๋งŒ๋“ค์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

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

ํ•œ ์ค„๋กœ: stdio๋Š” ๊ฐ™์€ ์ž๋ฆฌ์˜ ์‹ ๋ขฐ, Streamable HTTP๋Š” ๋„คํŠธ์›Œํฌ ์ธ์ฆ, SSE๋Š” ํ๊ธฐ๋œ ์ค‘๊ฐ„ โ€” ๊ทธ๋ฆฌ๊ณ  .well-known/mcp.json๊ณผ ์„œ๋ฒ„ ์นด๋“œ๋Š” ์„ค์ • ๋ฌธ์ œ๋ฅผ ์กฐํšŒ ๋ฌธ์ œ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

5.1 stdio, SSE, ๊ทธ๋ฆฌ๊ณ  Streamable HTTP

stdio๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ ์„œ๋ฒ„๋ฅผ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋กœ ๋„์šฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๋Š” ์ž์‹์˜ stdin์— JSON-RPC๋ฅผ ์“ฐ๊ณ  stdout์—์„œ ์‘๋‹ต์„ ์ฝ์Šต๋‹ˆ๋‹ค. stderr๋Š” ๋กœ๊ทธ๋ฅผ ์šด๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ํฌํŠธ๋„, ์†Œ์ผ“๋„, ๋„คํŠธ์›Œํฌ๋„ ์—†์Šต๋‹ˆ๋‹ค. ์ธ์ฆ์€ OS ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ๊ฒฝ๊ณ„๊ฐ€ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Claude Desktop, Cursor, ๊ทธ๋ฆฌ๊ณ  ๊ณต์‹ MCP ์ธ์ŠคํŽ™ํ„ฐ๋Š” ๋ชจ๋‘ ๋กœ์ปฌ ์„œ๋ฒ„์— stdio๋ฅผ ์”๋‹ˆ๋‹ค. ๋ชจ๋ธ์€ ์ž์‹ ์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ์ •์งํ•ฉ๋‹ˆ๋‹ค โ€” ์—ฌ๋Ÿฌ๋ถ„ ๊ธฐ๊ณ„ ์œ„์˜ ๋„๊ตฌ, ๊ฐ™์€ ์ž๋ฆฌ์— ์žˆ๋Š”, ํ˜ธ์ŠคํŠธ์™€ ๊ฐ™์€ ์‹ ๋ขฐ ๋„๋ฉ”์ธ์—. ํ˜ธ์ŠคํŠธ ๊ฐ„์— ๊ณต์œ ๋  ์ˆ˜ ์—†๊ณ , ๋‹ค๋ฅธ ๊ธฐ๊ณ„์—์„œ ๋Œ ์ˆ˜ ์—†๊ณ , ํ˜ธ์ŠคํŠธ๋‹น ํ•˜๋‚˜๊ฐ€ ์œ ์ผํ•˜๊ฒŒ ๊ฐ€๋Šฅํ•œ ๋‹ค์ค‘๋„์ž…๋‹ˆ๋‹ค โ€” ๋‹ค์„ฏ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ™์€ ์„œ๋ฒ„๋ฅผ ์›ํ•˜๋ฉด ๋‹ค์„ฏ ํ”„๋กœ์„ธ์Šค๋ฅผ ํƒœ์›๋‹ˆ๋‹ค.

HTTP+SSE๋Š” MCP์˜ ๋„คํŠธ์›Œํฌ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ฒซ ๋‹ต์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์–‘๋ฐฉํ–ฅ์ด์ง€๋งŒ, ๋‘ ๊ฐœ์˜ ๋‹จ๋ฐฉํ–ฅ ์กฐ๊ฐ์œผ๋กœ ์ด์–ด ๋ถ™์ธ ๋“€ํ”Œ๋ ‰์Šค. ํ๊ธฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์•ผ์ƒ์— ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ๋™์•ˆ์€ SSE ๊ธฐ๋ฐ˜ ์„œ๋ฒ„๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Streamable HTTP๋Š” ์„ ํ˜ธ๋˜๋Š” ๋„คํŠธ์›Œํฌ ์ „์†ก์ž…๋‹ˆ๋‹ค. ๋‹จ์ผ ์—”๋“œํฌ์ธํŠธ โ€” ์ผ๋ฐ˜์ ์œผ๋กœ /mcp โ€” ๋Š” JSON-RPC ์š”์ฒญ์„ ๋ฐ›์•„ ๋‹จ์ผ ์‘๋‹ต(๋™๊ธฐ ํ˜ธ์ถœ์˜ ๊ฒฝ์šฐ)์œผ๋กœ ๋‹ตํ•˜๊ฑฐ๋‚˜, ์„œ๋ฒ„ ์‹œ์ž‘ ์•Œ๋ฆผ์„ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์„ ๋•Œ Server-Sent Events ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋‹ตํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜์€ ์ดˆ๊ธฐํ™” ์‹œ ์„ค์ •๋˜๊ณ  ๋ชจ๋“  ํ›„์† ์š”์ฒญ์— ๊ฟฐ์–ด์ง„ Mcp-Session-Id ํ—ค๋”๋กœ ์‹๋ณ„๋ฉ๋‹ˆ๋‹ค. ์„ธ์…˜์€ ์ƒํƒœ์˜ ๋‹จ์œ„์ด๊ณ , DELETE๋กœ ํ’€๊ฑฐ๋‚˜ ํƒ€์ž„์•„์›ƒ์œผ๋กœ ๊ฑฐ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์†ก์€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ, ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ, ์—์ง€ ์บ์‹œ, TLS์™€ ๊น”๋”ํžˆ ์กฐํ•ฉ๋ฉ๋‹ˆ๋‹ค. ์ˆ˜ํ‰ ํ™•์žฅ์€ ์„ธ์…˜ ID ์œ„์˜ ์Šคํ‹ฐํ‚ค ์„ธ์…˜์ž…๋‹ˆ๋‹ค. ์ด ์ค‘ ์–ด๋А ๊ฒƒ๋„ ์ƒˆ๋กœ์šด HTTP ์—”์ง€๋‹ˆ์–ด๋ง์ด ์•„๋‹™๋‹ˆ๋‹ค. ์š”์ ์€ MCP๊ฐ€ ์ƒˆ๋กœ์šด ์ธต์„ ๋ฐœ๋ช…ํ•˜์ง€ ์•Š๊ณ ๋„ ๊ทธ ์•ˆ์— ๋“ค์–ด๋งž๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„ ํƒ์€ ๋ฐฐํฌ ๊ฒฐ์ •๋งŒํผ์ด๋‚˜ ๋ณด์•ˆ ๊ฒฐ์ •์ž…๋‹ˆ๋‹ค. stdio ์„œ๋ฒ„๋Š” ๊ณผ๋„ํ•œ ๊ถŒํ•œ์œผ๋กœ ๊ธฐ์šธ์–ด์ง‘๋‹ˆ๋‹ค โ€” ์›๊ฒฉ ํ˜ธ์ถœ์ž๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ธ์ฆ ์—†์ด ์‚ฌ์šฉ์ž์˜ ํŒŒ์ผ์‹œ์Šคํ…œ๊ณผ ๋„คํŠธ์›Œํฌ ๊ถŒํ•œ์„ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ์„œ๋ฒ„๋Š” ์—ด๋ฆฐ ์ธํ„ฐ๋„ท์„ ๋งˆ์ฃผํ•˜๊ณ  ๋ชจ๋“  ์š”์ฒญ์„ ์ธ์ฆํ•ด์•ผ ํ•˜๋ฉฐ, OAuth 2.1์ด ์ด์ œ ์ˆ˜๋ ด ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ณด์•ˆ ์ž์„ธ์— ์ž˜๋ชป๋œ ์ „์†ก์„ ๊ณ ๋ฅด๋ฉด ๋ณธ๋ž˜ ๋‚ด์žฅ๋˜์—ˆ์–ด์•ผ ํ•  ๊ฒƒ์„ ๋ง๋ถ™์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

5.2 ์„œ๋ฒ„ ๋ฐœ๊ฒฌ: .well-known/mcp.json๊ณผ ์„œ๋ฒ„ ์นด๋“œ

๋ชจ๋“  ํ˜ธ์ŠคํŠธ๊ฐ€ ๋ชจ๋“  ์„œ๋ฒ„์˜ ์ฃผ์†Œ๋กœ ์†์ˆ˜ ์„ค์ •๋˜์–ด์•ผ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์€ ์ƒํƒœ๊ณ„๊ฐ€ ๋˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์„ค์ • ์•…๋ชฝ์ด ๋ฉ๋‹ˆ๋‹ค. MCP์˜ ๋ฐœ๊ฒฌ ์ธต์€ RFC 8615์˜ well-known URI ํŒจํ„ด์„ ๋นŒ๋ฆฝ๋‹ˆ๋‹ค โ€” robots.txt์™€ .well-known/openid-configuration์ด ์“ฐ๋Š” ๊ฐ™์€ ๋ฉ”์ปค๋‹ˆ์ฆ˜. ์„œ๋ฒ„๋Š” ์ž๊ธฐ ๋ฒ ์ด์Šค URL์— .well-known/mcp.json์„ ๋ฐœํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๋Š” ๊ทธ๊ฒƒ์„ ๊ฐ€์ ธ์™€ ํŒŒ์‹ฑํ•˜๊ณ , ์„œ๋ฒ„๊ฐ€ ์ž์‹ ์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ์ฃผ์žฅํ•˜๋Š”์ง€ โ€” MCP ์—”๋“œํฌ์ธํŠธ, ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „, ์ธ์ฆ ๋ฐฉ์‹, ์‹ ์› ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ์„œ๋ฒ„ ์นด๋“œ ํฌ์ธํ„ฐ โ€” ๋ฅผ ๋ฐฐ์›๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์นด๋“œ๋Š” MCP์˜ openapi.json์ž…๋‹ˆ๋‹ค. ๊ธฐ๊ณ„์™€ ์‚ฌ๋žŒ์ด ํ•จ๊ป˜ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๊ธฐ ๊ธฐ์ˆ  ์‚ฐ์ถœ๋ฌผ์ž…๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๋Š” ์—ฐ๊ฒฐ ํ๋ฆ„ ์ค‘์— ์‚ฌ์šฉ์ž์—๊ฒŒ ์นด๋“œ๋ฅผ ๋ณด์—ฌ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค โ€” ใ€Œ์ด ์„œ๋ฒ„๋Š” ์—ฌ๋Ÿฌ๋ถ„์˜ Linear ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ํ‹ฐ์ผ“์„ ์ฝ์ง€๋งŒ ์‚ญ์ œ๋Š” ํ•˜์ง€ ์•Š๊ณ , Linear ๋ณธ์‚ฌ๊ฐ€ ์šด์˜ํ•˜๋ฉฐ, OAuth๋ฅผ ์”๋‹ˆ๋‹คใ€ โ€” ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž๋Š” ๊ทธ ์ฃผ์žฅ์ด ๋ฐ›์•„๋“ค์ผ ๋งŒํ•œ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ช…๋˜์ง€ ์•Š์€ ํ˜•ํƒœ์˜ ์นด๋“œ๋Š” ์ฃผ์žฅ์ด์ง€ ์ฆ๋ช…์ด ์•„๋‹™๋‹ˆ๋‹ค. ์™„ํ™”์ฑ…์€ ์„œ๋ช…๋œ ์ฆ๋ช…์ด๋ฉฐ, ์„œ๋ช… ๋ชจ๋ธ์€ sigstore ์Šคํƒ€์ผ OIDC๋กœ ์ˆ˜๋ ดํ–ˆ์Šต๋‹ˆ๋‹ค. github.com/some-org/mcp-server ์•„๋ž˜ GitHub์˜ OIDC ํ†ตํ•ฉ์œผ๋กœ ์„œ๋ช…๋œ ์นด๋“œ๋Š” GitHub์˜ ์‹ ์› ์ฃผ์žฅ์„ ์‹ ๋ขฐํ•˜๋Š” ๋ชจ๋“  ํ˜ธ์ŠคํŠธ๊ฐ€ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๋Š” ์œ„์— ์ •์ฑ…์„ ์Œ“์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค โ€” ์„œ๋ช…๋œ ์นด๋“œ๋งŒ, ํŠน์ • ๊ณต๊ธ‰์ž์˜ ์„œ๋ช…๋œ ์นด๋“œ๋งŒ, ํ๊ธฐ ๋ชฉ๋ก์— ์—†๋Š” ๊ฒƒ๋งŒ ์‹ ๋ขฐ.

ํ๋ฆ„์€ Wi-Fi ๋„คํŠธ์›Œํฌ๋ฅผ ๋”ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ. ํ˜ธ์ŠคํŠธ๋Š” ์„ค์ •์„ ์ €์žฅํ•˜๊ณ , ์ดํ›„ ์„ธ์…˜์€ ๋ฐœ๊ฒฌ์„ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ใ€Œ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋ฐ”๋€Œ์—ˆ๋‹คใ€๊ฐ€ ๋œปํ•˜๋Š” ๊ฒƒ โ€” ๋ฒ„์ „ ๋ฒ”ํ”„, ๋ฒ”์œ„ ํ™•์žฅ, ๋Šฅ๋ ฅ ์ด๋™ โ€” ์€ TLS ์ธ์ฆ์„œ ๋ณ€๊ฒฝ์ด ๊ทธ๋Ÿฌํ•˜๋“ฏ ๊ฐฑ์‹ ๋œ ๋™์˜๋ฅผ ์ด‰๋ฐœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ๋Š” ํ˜ธ์ŠคํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉฐ ์กฐ์šฉํžˆ ์˜ํ–ฅ์„ ๋„“ํžˆ๊ฒŒ ๋‘ก๋‹ˆ๋‹ค. ์–ด๋–ค ์žฅ์ˆ˜๋ช… ํ†ตํ•ฉ์—์„œ๋„ ์‹ ๋ขฐ๋ฅผ ์†์ƒ์‹œํ‚ค๋Š” ์ •ํ™•ํžˆ ๊ทธ ๋А๋ฆฐ ๋Šฅ๋ ฅ ์นจํˆฌ์ž…๋‹ˆ๋‹ค.

5.3 ์ถœํ•˜ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋”ฐ๋ถ„ํ•œ ๋ถ€๋ถ„๋“ค

์„ธ ๊ฐ€์ง€ ์šด์˜์  ๊ด€์‹ฌ์‚ฌ๋Š” ์ž์‹ ์˜ ์ฒ˜์šฐ๋ฅผ ๋ฐ›์„ ๋งŒํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์ด ๋ถ€์ฃผ์˜ํ•œ ๊ตฌํ˜„์ด ๊นจ์ง„ ํ†ตํ•ฉ์ด๋‚˜ ๋ณด์•ˆ ๊ตฌ๋ฉ์„ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ์ž๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

CORS๋Š” ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ ํ˜ธ์ŠคํŠธ์—์„œ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  MCP ์„œ๋ฒ„์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์œ ํ˜น์€ Access-Control-Allow-Origin: *์„ ๋‘๊ณ  ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค. ์ฟ ํ‚ค ์ธ์ฆ๊ณผ ๊ฒฐํ•ฉํ•˜๋ฉด CSRF ์žฌ์•™์ด๊ณ , localStorage์˜ ๋ฒ ์–ด๋Ÿฌ ํ† ํฐ๊ณผ ๊ฒฐํ•ฉํ•˜๋ฉด ํ† ํฐ ์œ ์ถœ ์œ„ํ—˜์ž…๋‹ˆ๋‹ค. ์˜ค๋ฆฌ์ง„๋ณ„ ํ—ˆ์šฉ ๋ชฉ๋ก์„ ์“ฐ๊ณ , ๋™์ผ ์ถœ์ฒ˜๊ฐ€ ์œ ์ผํ•œ ๋ฐฉ์–ด์„ ์ด ๋˜์ง€ ์•Š๋„๋ก ์ฟ ํ‚ค๋ณด๋‹ค Authorization ํ—ค๋”๋ฅผ ์„ ํ˜ธํ•˜์‹ญ์‹œ์˜ค.

์˜ค๋ฆฌ์ง„ ๊ฒ€์ฆ์€ ์„œ๋ฒ„ ์ธก์— ์ ์šฉ๋œ CORS์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•„๋‹Œ ํด๋ผ์ด์–ธํŠธ๋Š” ์•„๋ฌด๊ฒƒ๋„ ๊ฐ•์ œํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ณ ์ „์  ์‹คํŒจ: ๊ฐœ๋ฐœ์ž๊ฐ€ localhost:8000์— MCP ์„œ๋ฒ„๋ฅผ ๋Œ๋ฆฌ๊ณ , ์ปจ๋ฒค์…˜์„ ์•„๋Š” ์›นํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜๊ณ , ํŽ˜์ด์ง€๊ฐ€ ์š”์ฒญ์„ ๋ฐœ์‚ฌํ•˜๊ณ , ์„œ๋ฒ„๋Š” โ€” ์˜ค๋ฆฌ์ง„ ํ™•์ธ ์—†์ด โ€” ํŽ˜์ด์ง€๊ฐ€ ์š”์ฒญํ•œ ๊ฒƒ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  Streamable HTTP ์„œ๋ฒ„์—์„œ Origin์„ ๊ฒ€์ฆํ•˜์‹ญ์‹œ์˜ค.

์บ์‹ฑ ํ—ค๋”๊ฐ€ ์„ธ ๋ฒˆ์งธ์ž…๋‹ˆ๋‹ค. ์ •์  ๋ฌธ์„œ๋Š” ๊ณต๊ฒฉ์ ์œผ๋กœ ์บ์‹œํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ–‰์€ ๊ตฌ๋…์ด ๋ฐฐ์„ ๋œ ๋™์•ˆ๋งŒ, ํ™œ๋ฐœํžˆ ํŽธ์ง‘ ์ค‘์ธ ๋ฌธ์„œ๋Š” ์ „ํ˜€. ๋ฆฌ์†Œ์Šค๋ณ„๋กœ ์•Œ๋งž์€ Cache-Control๊ณผ ETag๋ฅผ ๋ฐ˜ํ™˜ํ•˜์‹ญ์‹œ์˜ค. ์บ์‹ฑ๊ณผ ๊ตฌ๋…์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋ฌผ๋ฆฌ๋Š” ์ž๋ฆฌ์ž…๋‹ˆ๋‹ค โ€” ์ง„๋ถ€ํ•œ ์‚ฌ๋ณธ์„ ์ œ๊ณตํ•˜๋Š” ์ค‘๊ฐ„์ž๊ฐ€ ์žˆ์œผ๋ฉด ํ˜ธ์ŠคํŠธ์˜ resources/updated ์•Œ๋ฆผ์ด ๊ฒฐ์ฝ” ๋ฐœํ™”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ตฌ๋… ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์‚ด์•„ ์žˆ๋Š” ์„œ๋ฒ„์— ๊ฒฐ์ฝ” ๋„๋‹ฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

DNS ๋ฆฌ๋ฐ”์ธ๋”ฉ์ด ์ด์›ƒ์„ ๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ ๋กœ์ปฌ ์„œ๋ฒ„์— ๋ถˆ๊ท ํ˜•ํ•˜๊ฒŒ ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. 0.0.0.0์ด ์•„๋‹ˆ๋ผ 127.0.0.1์— ๋ฐ”์ธ๋“œํ•˜๊ณ , ํ—ˆ์šฉ ๋ชฉ๋ก์— ๋Œ€ํ•ด Host ํ—ค๋”๋ฅผ ๊ฒ€์ฆํ•˜๊ณ , ๋กœ์ปฌํ˜ธ์ŠคํŠธ์—์„œ์กฐ์ฐจ ์ธ์ฆ ํ† ํฐ์„ ์š”๊ตฌํ•˜์‹ญ์‹œ์˜ค. ์ด๋Ÿฐ ๊ฒƒ์ด ์—†๋Š” ๋กœ์ปฌ MCP ์„œ๋ฒ„๋Š” ๋ณด์•ˆ ๊ถŒ๊ณ ๋ฅผ ํ–ฅํ•œ ํ•œ ๋ฒˆ์˜ ๋ฐ๋ชจ ๊ฑฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์–ตํ•ด ๋‘˜ ๊ฒƒ: ์ „์†ก๊ณผ ๋ฐœ๊ฒฌ์€ ํ”„๋กœํ† ์ฝœ ์žกํ•™์ฒ˜๋Ÿผ ๋“ค๋ฆฌ๊ณ , ๋Œ€๋ถ€๋ถ„์˜ MCP ๋ฐฐํฌ๊ฐ€ ์กฐ์šฉํžˆ ์‹คํŒจํ•˜๋Š” ์ž๋ฆฌ์ž…๋‹ˆ๋‹ค. Streamable HTTP์˜€์–ด์•ผ ํ•  stdio ์„œ๋ฒ„๋Š” ๊ณต์œ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์™€์ผ๋“œ์นด๋“œ CORS ์ •์ฑ…์„ ๊ฐ€์ง„ ๋„คํŠธ์›Œํฌ ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Š” ์–ด๋А ํƒญ์ด๋“  ๋นŒ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์นด๋“œ๊ฐ€ ์—†๋Š” ์„œ๋ฒ„๋Š” ์ €์ž๊ฐ€ ์ง์ ‘ ์„ค์ •ํ•œ ํ˜ธ์ŠคํŠธ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ํ˜ธ์ŠคํŠธ์— ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ ๋ขฐ ๋„๋ฉ”์ธ์— ๋งž์ถฐ ์ „์†ก์„ ๊ณ ๋ฅด์‹ญ์‹œ์˜ค. ๋ฐœ๊ฒฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถœํ•˜ํ•˜์‹ญ์‹œ์˜ค. ํ—ค๋”๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋‘์‹ญ์‹œ์˜ค.

์ œ5์žฅ์ด ์ค€๋น„ํ•˜๋Š” ๊ฒƒ

์ด๋กœ์จ ์ฑ…์˜ ์ œ2๋ถ€๊ฐ€ ๋‹ซํž™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ”„๋กœํ† ์ฝœ์„ ์†์— ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ3์žฅ์˜ ์„œ๋ฒ„ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ, ์ œ4์žฅ์˜ ํด๋ผ์ด์–ธํŠธ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ, ์—ฌ๊ธฐ์„œ์˜ ์™€์ด์–ด์™€ ๋ฐœ๊ฒฌ ์ธต. ์–ด๋–ค ๋ฉ”์‹œ์ง€๊ฐ€, ์–ด๋А ๋ฐฉํ–ฅ์œผ๋กœ, ์–ด๋–ค ์ „์†ก ์œ„์—์„œ, ์–ด๋–ค ์‹ ๋ขฐ ๋„๋ฉ”์ธ ์‚ฌ์ด์—์„œ, ์–ด๋–ค ์•…์ˆ˜ ํ›„์— ๊ฐ€๋Š”์ง€ ์••๋‹ˆ๋‹ค. ์ œ3๋ถ€๋Š” ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ์—์„œ ํŒจํ„ด์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐ๋œ ๋‹จ์ผ ์„œ๋ฒ„๋Š” ์“ธ๋ชจ ์žˆ์Šต๋‹ˆ๋‹ค. MCP์˜ ์•„ํ‚คํ…์ฒ˜์  ๋ณด์ƒ์€ ์กฐํ•ฉ โ€” ๋‹ค์ค‘ ์„œ๋ฒ„, ๋‹ค์ค‘ ์—์ด์ „ํŠธ, ๋‹ค์ค‘ ๋ชจ๋ธ โ€” ์ด ๋” ํฐ ๋ชฉํ‘œ๋ฅผ ํ–ฅํ•ด ํ˜‘๋ ฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๋‹ค์Œ โ†’ ์ œ6์žฅ: ๊ธฐ์ดˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์ „๋žต. ๋‹จ์ผ ์ž˜ ๋„๊ตฌํ™”๋œ ์—์ด์ „ํŠธ๊ฐ€ ๋‹ค์ค‘ ์—์ด์ „ํŠธ ์„ค๊ณ„๋ฅผ ์ด๊ธฐ๋Š” ๋•Œ, ๊ทธ๋ฆฌ๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ๊ฐ€ ์˜์กดํ•˜๋Š” ๋‘ ๊ธฐ์ดˆ ๋ชจ์–‘ โ€” ์ˆœ์ฐจ ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ์‚ฐ-์ˆ˜์ง‘ ๋™์‹œ์„ฑ.

์ „์ฒด ๊ทธ๋ฆผ์„ ๋ณด๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด? ์ฑ…์€ ๊ฐ ์ „์†ก์˜ ์ง€์—ฐ ์‹œ๊ฐ„ ํ”„๋กœํŒŒ์ผ, ์‹คํŒจ ๊ฒฉ๋ฆฌ ํ–‰๋™, OAuth 2.1 ํ†ตํ•ฉ์„ ๊ฑธ์–ด๊ฐ€๊ณ , ์„œ๋ฒ„ ์นด๋“œ ์„œ๋ช… ๋ชจ๋ธ์„ ๊นŠ์ด ๋‹ค๋ฃจ๋ฉฐ, ๋ชจ๋“  ํ”„๋กœ๋•์…˜ Streamable HTTP ์„œ๋ฒ„๋ฅผ ์œ„ํ•œ ์šด์˜ ์œ„์ƒ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. Amazon์—์„œ LLM Primer IV ๋ณด๊ธฐ โ†’

SHO
SHO