Tutorial
This is a comprehensive tutorial for MCP, especially from the perspective of a developer. Come on, get your hands dirty and show me the code!
Installation
npx mcp-tutorialAsk AI about Tutorial
Powered by Claude Β· Grounded in docs
I know everything about Tutorial. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
π€ 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 # νκ²½ λ³μ μμ
π μ€μΉ λ°©λ²
μ¬μ μꡬμ¬ν
- Python 3.11 μ΄μ
- UV ν¨ν€μ§ λ§€λμ (μ€μΉ κ°μ΄λ)
μ€μΉ λ¨κ³
- μ μ₯μ ν΄λ‘
git clone https://github.com/teddynote-lab/mcp-tutorial.git
cd mcp-tutorial
- νκ²½ λ³μ μ€μ
cp .env.example .env
# .env νμΌμ μ΄μ΄ νμν API ν€ μ
λ ₯
- μμ‘΄μ± μ€μΉ
# 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λ₯Ό λ±λ‘ν΄ μ£ΌμΈμ.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
π μ°Έκ³ μλ£
π₯ νμ΅ λ¦¬μμ€
π λΌμ΄μ μ€
μ΄ νλ‘μ νΈλ κ΅μ‘ λͺ©μ μΌλ‘λ§ μ¬μ© κ°λ₯ν©λλ€. μμΈν λ΄μ©μ LICENSE νμΌμ μ°Έμ‘°νμΈμ.
β¨ μ μ
Made by TeddyNote LAB
MCPμ LangGraphλ‘ μ°¨μΈλ AI μμ΄μ νΈλ₯Ό ꡬμΆνμΈμ! π
