AI ๊ฐœ๋ฐœ

FastAPI-MCP : AI ์—์ด์ „ํŠธ์™€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์—ฐ๊ฒฐ

Pro.Dev 2025. 4. 17. 01:43
๋ฐ˜์‘ํ˜•

๐Ÿš€ FastAPI์™€ AI ์—์ด์ „ํŠธ์˜ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ, FastAPI-MCP ๊ณต๊ฐœ!

์š”์ฆ˜ AI ์‹œ์Šคํ…œ๊ณผ ๊ธฐ์กด ์›น ์„œ๋น„์Šค์˜ ํ†ตํ•ฉ์— ๊ด€์‹ฌ์ด ๋งŽ์œผ์‹ ๊ฐ€์š”?
๊ทธ๋ ‡๋‹ค๋ฉด ์ฃผ๋ชฉํ•  ๋งŒํ•œ ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.
๋ฐ”๋กœ FastAPI-MCP์ž…๋‹ˆ๋‹ค.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” FastAPI ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ AI ์—์ด์ „ํŠธ์™€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” Model Context Protocol(MCP) ๋ธŒ๋ฆฟ์ง€์ž…๋‹ˆ๋‹ค.
๊ฐ€์žฅ ์ธ์ƒ์ ์ธ ํŠน์ง•์€ ๋ฐ”๋กœ โ€œ์ œ๋กœ ์„ค์ •(Zero-config)โ€ โ€” ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๊ฑฐ์˜ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋„, FastAPI ์—”๋“œํฌ์ธํŠธ๋ฅผ MCP ํ˜ธํ™˜ ํˆด๋กœ ์ž๋™ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.


๐Ÿง  FastAPI-MCP๋Š” ๋ฌด์—‡์„ ํ•ด๊ฒฐํ•ด์ฃผ๋Š”๊ฐ€?

FastAPI-MCP๋Š” ๊ธฐ์กด์˜ REST API๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ AI ์นœํ™”์ ์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

  • FastAPI์˜ ๋ชจ๋“  ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ž๋™ ํƒ์ƒ‰ํ•˜๊ณ , MCP ํˆด๋กœ ๋…ธ์ถœ
  • ๊ธฐ์กด Swagger/OpenAPI ๋ฌธ์„œ ๊ธฐ๋ฐ˜์˜ ์Šคํ‚ค๋งˆ์™€ ๋ฌธ์„œ ์ •๋ณด ์œ ์ง€
  • MCP ์„œ๋ฒ„๋ฅผ FastAPI ๋‚ด์— ๋งˆ์šดํŠธํ•˜๊ฑฐ๋‚˜, ๋…๋ฆฝ ์„œ๋น„์Šค๋กœ ๋ฐฐํฌ ๊ฐ€๋Šฅ
  • uv, pip ๋ชจ๋‘ ์„ค์น˜ ์ง€์› โ†’ dev ํ™˜๊ฒฝ์ด๋‚˜ CI/CD์—์„œ ์œ ์—ฐํ•˜๊ฒŒ ์ ์šฉ ๊ฐ€๋Šฅ

๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด:
โ€œ์ฝ”๋“œ ์ˆ˜์ • ๊ฑฐ์˜ ์—†์ด, API๋ฅผ AI๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” MCP ํˆด๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ์ž๋™ํ™” ๋ ˆ์ด์–ดโ€์ž…๋‹ˆ๋‹ค.


๐Ÿ’ฌ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋ฐ˜์‘์€?

AI/ML ์ „๋ฌธ๊ฐ€ Pratham Chandratre๋Š” ์ด๋ ‡๊ฒŒ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค:

โ€œFastAPI๋ฅผ MCP์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฑด ์ง€๊ธˆ AI/LLM ์ƒํƒœ๊ณ„์— ๊ผญ ํ•„์š”ํ–ˆ๋˜ ์กฐ์น˜์•ผ. ๊ธฐ์กด ํˆด์„ ์žฌ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ํ”„๋กœ๋•์…˜์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑด ์—„์ฒญ๋‚œ ์ด์ .โ€

๋˜ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์ธ Murat Aslan์€ ํ˜„์‹ค์ ์ธ ์งˆ๋ฌธ์„ ๋˜์กŒ์Šต๋‹ˆ๋‹ค:

โ€œFastAPI ์•ฑ์„ ์ด๋ ‡๊ฒŒ ์‰ฝ๊ฒŒ MCP ์„œ๋ฒ„๋กœ ๋ฐ”๊พธ๋Š” ๊ฑด ์ •๋ง ์ธ์ƒ์ ์ด์•ผ. ๊ทธ๋Ÿฐ๋ฐ ์ปค์Šคํ…€ ๋ฏธ๋“ค์›จ์–ด๋‚˜ ์ธ์ฆ ์‹œ์Šคํ…œ๋„ ์ž˜ ์ž‘๋™ํ• ๊นŒ?โ€

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


๐Ÿ”ง ์–ด๋–ค ๊ณณ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?

FastAPI-MCP๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๊ฐ•๋ ฅํ•œ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๋Œ€ํ™”ํ˜• ๋ฌธ์„œํ™” (Conversational Docs): AI๊ฐ€ API ์‚ฌ์šฉ๋ฒ•์„ ์„ค๋ช…ํ•ด์ฃผ๋ฉฐ ์ธํ„ฐ๋ž™์…˜ ์ œ๊ณต
  • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ž๋™ํ™”: ๋‚ด๋ถ€ API๋ฅผ ์—์ด์ „ํŠธ๊ฐ€ ํ˜ธ์ถœํ•ด ๋ฐ˜๋ณต ์ž‘์—… ์ž๋™ํ™”
  • ๋ฐ์ดํ„ฐ ์กฐํšŒ/์—…๋ฐ์ดํŠธ ์—์ด์ „ํŠธ: API๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ƒํ˜ธ์ž‘์šฉ
  • ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ํ˜‘์—…: ์—ฌ๋Ÿฌ AI๊ฐ€ MCP API๋กœ ํ†ต์‹ ํ•˜๋ฉฐ ๋ณตํ•ฉ์ ์ธ ์ž‘์—… ์ฒ˜๋ฆฌ

๐Ÿ› ๏ธ ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ ์˜ˆ์‹œ

pip install fastapi-mcp
# ๋˜๋Š”
uv pip install fastapi-mcp

FastAPI ์•ฑ ์•ˆ์—์„œ ๋‹ค์Œ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํžˆ MCP ์„œ๋ฒ„๋ฅผ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

from fastapi_mcp import mount_mcp

app = FastAPI()

# MCP ์„œ๋ฒ„๋ฅผ FastAPI ์•ฑ์— ํ†ตํ•ฉ
mount_mcp(app)

๐Ÿ”— ์˜คํ”ˆ์†Œ์Šค ์ฐธ์—ฌ ๋ฐ ๋งํฌ

FastAPI-MCP๋Š” MIT ๋ผ์ด์„ ์Šค๋กœ ๋ฐฐํฌ๋˜๋ฉฐ, ๋ˆ„๊ตฌ๋‚˜ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐœ์„ ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ์—ฌ๋ฅผ ์›ํ•˜์‹œ๋Š” ๋ถ„๋“ค์€ ๊ณต์‹ ๊ธฐ์—ฌ ๊ฐ€์ด๋“œ๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”!

๐Ÿ“ฆ GitHub: github.com/tadata-ai/fastapi-mcp
๐ŸŒ ๋ฌธ์„œ: tadata.ai/docs/fastapi-mcp


๋ฐ˜์‘ํ˜•