Skip to content

teddynote-lab/mcp-tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ€– MCP (Model Context Protocol) Tutorial

μž…λ¬Έμžλ₯Ό μœ„ν•œ 체계적인 Model Context Protocol ν•™μŠ΅ κ°€μ΄λ“œ

πŸ“‹ ν”„λ‘œμ νŠΈ κ°œμš”

이 νŠœν† λ¦¬μ–Όμ€ Model Context Protocol(MCP) 을 처음 μ ‘ν•˜λŠ” κ°œλ°œμžλ“€μ„ μœ„ν•œ μ‹€μŠ΅ 쀑심 ν•™μŠ΅ μžλ£Œμž…λ‹ˆλ‹€. LangGraph와 MCPλ₯Ό ν†΅ν•©ν•˜μ—¬ λ‹€μ–‘ν•œ μ™ΈλΆ€ 도ꡬ와 μ„œλΉ„μŠ€λ₯Ό ν™œμš©ν•˜λŠ” κ°•λ ₯ν•œ AI μ—μ΄μ „νŠΈλ₯Ό κ΅¬μΆ•ν•˜λŠ” 방법을 λ‹¨κ³„λ³„λ‘œ ν•™μŠ΅ν•©λ‹ˆλ‹€.

🎯 ν•™μŠ΅ λͺ©ν‘œ

  • MCP의 핡심 κ°œλ…κ³Ό μ•„ν‚€ν…μ²˜ 이해
  • FastMCPλ₯Ό ν™œμš©ν•œ MCP μ„œλ²„ 개발
  • LangGraph와 MCP의 효과적인 톡합
  • 닀쀑 MCP μ„œλ²„ 관리 및 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜
  • μ‹€μ „ RAG μ‹œμŠ€ν…œ κ΅¬ν˜„

πŸš€ μ£Όμš” κΈ°λŠ₯

  • ν‘œμ€€ν™”λœ ν”„λ‘œν† μ½œ: MCP ν‘œμ€€μ„ λ”°λ₯΄λŠ” 도ꡬ μΈν„°νŽ˜μ΄μŠ€ κ΅¬ν˜„
  • λ‹€μ–‘ν•œ 전솑 방식: stdio 및 Streamable HTTP 지원
  • 동적 도ꡬ 검색: λŸ°νƒ€μž„ 도ꡬ μžλ™ 검색 및 λ‘œλ“œ
  • ν™•μž₯ κ°€λŠ₯ν•œ μ•„ν‚€ν…μ²˜: μ—¬λŸ¬ MCP μ„œλ²„ λ™μ‹œ μ—°κ²° 지원
  • μ‹€μŠ΅ 쀑심 ν•™μŠ΅: Jupyter Notebook을 ν†΅ν•œ μΈν„°λž™ν‹°λΈŒ ν•™μŠ΅

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

mcp-tutorial/
β”œβ”€β”€ 01-LangGraph-MCP-Tutorial.ipynb  # 메인 νŠœν† λ¦¬μ–Ό λ…ΈνŠΈλΆ
β”œβ”€β”€ server/                           # MCP μ„œλ²„ κ΅¬ν˜„μ²΄
β”‚   β”œβ”€β”€ mcp_server_local.py         # 둜컬 날씨 μ„œλΉ„μŠ€ (stdio)
β”‚   β”œβ”€β”€ mcp_server_remote.py        # 원격 μ‹œκ°„ μ„œλΉ„μŠ€ (HTTP)
β”‚   β”œβ”€β”€ mcp_server_rag.py           # RAG μ„œλΉ„μŠ€ (벑터 검색)
β”‚   └── rag/                        # RAG κ΄€λ ¨ μœ ν‹Έλ¦¬ν‹°
β”‚       β”œβ”€β”€ base.py
β”‚       β”œβ”€β”€ pdf.py
β”‚       └── utils.py
β”œβ”€β”€ assets/                          # 이미지 및 λ¦¬μ†ŒμŠ€
β”œβ”€β”€ pyproject.toml                   # ν”„λ‘œμ νŠΈ μ„€μ •
└── .env.example                     # ν™˜κ²½ λ³€μˆ˜ μ˜ˆμ‹œ

πŸ›  μ„€μΉ˜ 방법

사전 μš”κ΅¬μ‚¬ν•­

μ„€μΉ˜ 단계

  1. μ €μž₯μ†Œ 클둠
git clone https://github.com/teddynote-lab/mcp-tutorial.git
cd mcp-tutorial
  1. ν™˜κ²½ λ³€μˆ˜ μ„€μ •
cp .env.example .env
# .env νŒŒμΌμ„ μ—΄μ–΄ ν•„μš”ν•œ API ν‚€ μž…λ ₯
  1. μ˜μ‘΄μ„± μ„€μΉ˜
# UVλ₯Ό μ‚¬μš©ν•œ κ°€μƒν™˜κ²½ 생성 및 νŒ¨ν‚€μ§€ μ„€μΉ˜
uv sync

# κ°€μƒν™˜κ²½ ν™œμ„±ν™”
source .venv/bin/activate  # macOS/Linux
# λ˜λŠ”
.venv\Scripts\activate  # Windows

πŸŽ“ ν•™μŠ΅ 경둜

Part 1: MCP κΈ°λ³Έ κ°œλ…

  • MCP ν”„λ‘œν† μ½œ 이해
  • κΈ°λ³Έ μ•„ν‚€ν…μ²˜ ν•™μŠ΅

Part 2: κΈ°λ³Έ MCP μ„œλ²„ 생성

  • FastMCPλ₯Ό ν™œμš©ν•œ μ„œλ²„ κ΅¬ν˜„
  • stdio 전솑 방식 이해

Part 3: MultiServerMCPClient μ„€μ •

  • 닀쀑 μ„œλ²„ 관리 방법
  • 도ꡬ 동적 λ‘œλ“œ

Part 4: React Agent와 MCP 톡합

  • LangGraph React Agent ꡬ성
  • MCP 도ꡬ 바인딩

Part 5: ToolNode와 MCP 톡합

  • μ»€μŠ€ν…€ μ›Œν¬ν”Œλ‘œμš° ꡬ좕
  • μ„Έλ°€ν•œ μ œμ–΄ κ΅¬ν˜„

Part 6: μ™ΈλΆ€ MCP μ„œλ²„ ν™œμš©

  • Smithery AI ν”Œλž«νΌ 연동
  • μ„œλ“œνŒŒν‹° 도ꡬ 톡합

Part 7: Dify MCP μ„œλ²„ 연동

  • Dify ν”Œλž«νΌ ν™œμš©
  • μ‹€μ „ 톡합 예제

πŸ’» μ‹€ν–‰ 방법

MCP μ„œλ²„ μ‹€ν–‰

# 둜컬 날씨 μ„œλ²„ (stdio)
uv run python server/mcp_server_local.py

# 원격 μ‹œκ°„ μ„œλ²„ (HTTP, 포트 8002)
uv run python server/mcp_server_remote.py

# RAG μ„œλ²„ (λ¬Έμ„œ 검색)
uv run python server/mcp_server_rag.py

MCP Inspector둜 ν…ŒμŠ€νŠΈ

# λΈŒλΌμš°μ €μ—μ„œ MCP μ„œλ²„ ν…ŒμŠ€νŠΈ
npx @modelcontextprotocol/inspector

νŠœν† λ¦¬μ–Ό μ‹€ν–‰

# Jupyter Notebook μ‹€ν–‰
jupyter notebook 01-LangGraph-MCP-Tutorial.ipynb

πŸ”§ ν™˜κ²½ μ„€μ •

.env νŒŒμΌμ— λ‹€μŒ ν™˜κ²½ λ³€μˆ˜ 섀정이 ν•„μš”ν•©λ‹ˆλ‹€:

# ν•„μˆ˜
OPENAI_API_KEY=your_openai_api_key
TAVILY_API_KEY=your_tavily_api_key

# 선택 (μΆ”κ°€ κΈ°λŠ₯)
LANGCHAIN_API_KEY=your_langchain_api_key
CONTEXT7_API_KEY=your_context7_api_key

πŸ“š 핡심 μ˜μ‘΄μ„±

  • LangGraph: AI μ—μ΄μ „νŠΈ μ›Œν¬ν”Œλ‘œμš° ꡬ좕
  • FastMCP: MCP μ„œλ²„ 개발 ν”„λ ˆμž„μ›Œν¬
  • langchain-mcp-adapters: LangChain-MCP 톡합
  • FAISS: 벑터 μŠ€ν† λ¦¬μ§€ (RAG용)
  • PyMuPDF: PDF λ¬Έμ„œ 처리

🀝 κΈ°μ—¬ 방법

이 ν”„λ‘œμ νŠΈλŠ” ꡐ윑 λͺ©μ μœΌλ‘œ μ œμž‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κ°œμ„  μ‚¬ν•­μ΄λ‚˜ 버그λ₯Ό λ°œκ²¬ν•˜μ‹œλ©΄ Issueλ₯Ό 등둝해 μ£Όμ„Έμš”.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“– μ°Έκ³  자료

πŸŽ₯ ν•™μŠ΅ λ¦¬μ†ŒμŠ€

πŸ“„ λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” ꡐ윑 λͺ©μ μœΌλ‘œλ§Œ μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ LICENSE νŒŒμΌμ„ μ°Έμ‘°ν•˜μ„Έμš”.

✨ μ œμž‘

Made by TeddyNote LAB


MCP와 LangGraph둜 μ°¨μ„ΈλŒ€ AI μ—μ΄μ „νŠΈλ₯Ό κ΅¬μΆ•ν•˜μ„Έμš”! πŸš€

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published