# πŸ”§ αž˜αŸ‰αžΌαžŒαž»αž› 3αŸ– αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αž MCP αž‡αŸ†αž αžΆαž“αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž˜αž½αž™ Microsoft Foundry Toolkit ![Duration](https://img.shields.io/badge/Duration-20_minutes-blue?style=flat-square) ![Microsoft Foundry Toolkit](https://img.shields.io/badge/Microsoft_Foundry_Toolkit-Required-orange?style=flat-square) ![Python](https://img.shields.io/badge/Python-3.10+-green?style=flat-square) ![MCP SDK](https://img.shields.io/badge/MCP_SDK-1.9.3-purple?style=flat-square) ![Inspector](https://img.shields.io/badge/MCP_Inspector-0.14.0-blue?style=flat-square) ## 🎯 αž‚αŸ„αž›αž”αŸ†αžŽαž„αžšαŸ€αž“ αž“αŸ…αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž˜αž“αŸ’αž‘αžΈαžš this lab, αž’αŸ’αž“αž€αž“αžΉαž„αž’αžΆαž…: - βœ… αž”αž„αŸ’αž€αžΎαžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ MCP αž›αž€αŸ’αžαžŽαŸˆαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžŠαŸ„αž™αž”αŸ’αžšαžΎ Microsoft Foundry Toolkit - βœ… αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„αž”αŸ’αžšαžΎ MCP Python SDK αž‡αŸ†αž“αžΆαž“αŸ‹αž…αž»αž„αž€αŸ’αžšαŸ„αž™ (v1.9.3) - βœ… αž€αŸ†αžŽαžαŸ‹ αž“αž·αž„αž”αŸ’αžšαžΎ MCP Inspector αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ - βœ… αž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸαŸ‹αž€αŸ†αž αž»αžŸαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ MCP αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸ Agent Builder αž“αž·αž„ Inspector - βœ… αž™αž›αŸ‹αžŠαžΉαž„αž–αžΈαž›αŸ†αžŠαžΆαž”αŸ‹αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ MCP αž‡αŸ†αž αžΆαž“αžαŸ’αž–αžŸαŸ‹ ## πŸ“‹ αž›αž€αŸ’αžαžαŸαžŽαŸ’αžŒαž˜αž»αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš - αž”αž‰αŸ’αž…αž”αŸ‹ Lab 2 (αž‚αŸ’αžšαžΉαŸ‡αž˜αžΌαž› MCP) - VS Code αž‡αžΆαž˜αž½αž™αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜ Microsoft Foundry Toolkit αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„ - αž”αžšαž·αž™αžΆαž€αžΆαžŸ Python 3.10+ - Node.js αž“αž·αž„ npm αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹ Inspector ## πŸ—οΈ αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αž“αžΉαž„αž”αž„αŸ’αž€αžΎαž αž€αŸ’αž“αž»αž„αž˜αž“αŸ’αž‘αžΈαžšαž“αŸαŸ‡ αž’αŸ’αž“αž€αž“αžΉαž„αž”αž„αŸ’αž€αžΎαž **αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ Weather MCP** αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαŸ– - αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ MCP αž›αž€αŸ’αžαžŽαŸˆαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“ - αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™ Microsoft Foundry Toolkit Agent Builder - αž›αŸ†αžŠαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž˜αžΆαž“αž‡αŸ†αžšαž»αž‰αžœαž·αž‡αŸ’αž‡αžΆαž‡αžΈαžœαŸˆ - αž›αŸ†αž“αžΆαŸ†αž”αŸ’αžšαžΎ MCP SDK αžŸαž˜αŸαž™αžαŸ’αž˜αžΈ --- ## πŸ”§ αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αžŸαž˜αžΆαžŸαž—αžΆαž‚αžŸαŸ’αž“αžΌαž› ### 🐍 MCP Python SDK Model Context Protocol Python SDK αž•αŸ’αžαž›αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ MCP αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αŸ” αž’αŸ’αž“αž€αž“αžΉαž„αž”αŸ’αžšαžΎαž‡αŸ†αž“αžΆαž“αŸ‹ 1.9.3 αž‡αžΆαž˜αž½αž™αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αŸ” ### πŸ” MCP Inspector αž§αž”αž€αžšαžŽαŸαž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž˜αžΆαž“αžαžΆαž˜αž–αž› αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αŸ– - αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎαž–αŸαž›αžœαŸαž›αžΆαž–αž·αž - αž€αžΆαžšαž˜αžΎαž›αžƒαžΎαž‰αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž§αž”αž€αžšαžŽαŸ - αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ†αž“αž·αž„αž…αž˜αŸ’αž›αžΎαž™αž”αžŽαŸ’αžŠαžΆαž‰ - αž”αžšαž·αž™αžΆαž€αžΆαžŸαžŸαžΆαž€αž›αŸ’αž”αž„αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜ --- ## πŸ“– αž’αž“αž»αžœαžαŸ’αžαž‡αŸ†αž αžΆαž“-αž”αŸ’αžšαž…αžΆαŸ†αž‡αŸ†αž αžΆαž“ ### αž‡αŸ†αž αžΆαž“ 1αŸ– αž”αž„αŸ’αž€αžΎαž WeatherAgent αž€αŸ’αž“αž»αž„ Agent Builder 1. **αž”αžΎαž€ Agent Builder** 在 VS Code αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜ Microsoft Foundry Toolkit 2. **αž”αž„αŸ’αž€αžΎαž agent αžαŸ’αž˜αžΈ** αž‡αžΆαž˜αž½αž™αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ– - αžˆαŸ’αž˜αŸ„αŸ‡ Agent: `WeatherAgent` ![Agent Creation](../../../../translated_images/km/Agent.c9c33f6a412b4cde.webp) ### αž‡αŸ†αž αžΆαž“ 2αŸ– αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‚αž˜αŸ’αžšαŸ„αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ MCP 1. **αž‘αŸ…αž€αžΆαž“αŸ‹ Tools** β†’ **Add Tool** αž€αŸ’αž“αž»αž„ Agent Builder 2. **αž‡αŸ’αžšαžΎαžŸ "MCP Server"** αž–αžΈαž‡αž˜αŸ’αžšαžΎαžŸαž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ 3. **αž‡αŸ’αžšαžΎαžŸ "Create A new MCP Server"** 4. **αž‡αŸ’αžšαžΎαžŸαž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆ `python-weather`** 5. **αžŠαžΆαž€αŸ‹αžˆαŸ’αž˜αŸ„αŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€:** `weather_mcp` ![Python Template Selection](../../../../translated_images/km/Pythontemplate.9d0a2913c6491500.webp) ### αž‡αŸ†αž αžΆαž“ 3αŸ– αž”αžΎαž€ αž“αž·αž„αž–αž·αž“αž·αžαŸ’αž™αž‚αž˜αŸ’αžšαŸ„αž„ 1. **αž”αžΎαž€αž‚αž˜αŸ’αžšαŸ„αž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž** αž“αŸ…αž€αŸ’αž“αž»αž„ VS Code 2. **αž–αž·αž“αž·αžαŸ’αž™αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‚αž˜αŸ’αžšαŸ„αž„αŸ–** ``` weather_mcp/ β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ __init__.py β”‚ └── server.py β”œβ”€β”€ inspector/ β”‚ β”œβ”€β”€ package.json β”‚ └── package-lock.json β”œβ”€β”€ .vscode/ β”‚ β”œβ”€β”€ launch.json β”‚ └── tasks.json β”œβ”€β”€ pyproject.toml └── README.md ``` ### αž‡αŸ†αž αžΆαž“ 4αŸ– αž”αž„αŸ’αž‚αžŽαŸαž‘αŸ… MCP SDK αž‡αŸ†αž“αžΆαž“αŸ‹αž…αž»αž„αž€αŸ’αžšαŸ„αž™ > **πŸ” αž˜αžΆαžαžΆαž›αžΎαž€αž˜αž€αžαŸ’αž˜αžΈ?** αž–αž½αž€αž™αžΎαž„αž…αž„αŸ‹αž”αŸ’αžšαžΎ MCP SDK αž‡αŸ†αž“αžΆαž“αŸ‹αž…αž»αž„αž€αŸ’αžšαŸ„αž™ (v1.9.3) αž“αž·αž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ Inspector (0.14.0) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’ αž“αž·αž„αž‡αŸ†αž“αž½αž™αž€αŸ†αž αž»αžŸαž†αŸ’αž–αŸ„αŸ‡αž˜αž»αžαŸ” #### 4a. αž”αž“αŸ’αž‘αžΆαž“αŸ‹αžŸαž˜αŸαž™αž•αŸ’αž“αŸ‚αž€ Python Dependencies **αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› `pyproject.toml`:** αž”αž“αŸ’αž‘αžΆαž“αŸ‹αžŸαž˜αŸαž™ [./code/weather_mcp/pyproject.toml](../../../../10-StreamliningAIWorkflowsBuildingAnMCPServerWithAIToolkit/lab3/code/weather_mcp/pyproject.toml) #### 4b. αž”αž“αŸ’αž‘αžΆαž“αŸ‹αžŸαž˜αŸαž™αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ Inspector **αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› `inspector/package.json`:** αž”αž“αŸ’αž‘αžΆαž“αŸ‹αžŸαž˜αŸαž™ [./code/weather_mcp/inspector/package.json](../../../../10-StreamliningAIWorkflowsBuildingAnMCPServerWithAIToolkit/lab3/code/weather_mcp/inspector/package.json) #### 4c. αž”αž“αŸ’αž‘αžΆαž“αŸ‹αžŸαž˜αŸαž™ Dependencies Inspector **αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› `inspector/package-lock.json`:** αž”αž“αŸ’αž‘αžΆαž“αŸ‹αžŸαž˜αŸαž™ [./code/weather_mcp/inspector/package-lock.json](../../../../10-StreamliningAIWorkflowsBuildingAnMCPServerWithAIToolkit/lab3/code/weather_mcp/inspector/package-lock.json) > **πŸ“ αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αŸ–** αž―αž€αžŸαžΆαžšαž“αŸαŸ‡αž˜αžΆαž“αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž›αž€αŸ’αžαžαžŽαŸ’αžŒ dependency αž’αŸ†αž‘αžΌαž›αžΆαž™αŸ” αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž‡αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαŸ†αžαžΆαž“αŸ‹ - αž˜αžΆαžαž·αž€αžΆαž–αŸαž‰αž›αŸαž‰αž’αžΆαž“αžΆαž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ dependency αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ” > **⚑ αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž–αŸαž‰αž›αŸαž‰ Package Lock:** package-lock.json αž–αŸαž‰αž›αŸαž‰αž˜αžΆαž“αž‡αžΆαž™αžΌαžšαž›αžΆαž“αŸ… ~3000 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹ dependencyαŸ” αžαžΆαž„αž›αžΎαž”αž„αŸ’αž αžΆαž‰αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαŸ†αžαžΆαž“αŸ‹ -Β  αž”αŸ’αžšαžΎαž―αž€αžŸαžΆαžšαž”αŸ†αž”αŸ‚αž€αž“αŸαŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ dependency αž‘αžΆαŸ†αž„αž˜αžΌαž›αŸ” ### αž‡αŸ†αž αžΆαž“ 5αŸ– αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ VS Code αžšαž”αžŸαŸ‹αž€αžΆαžšαž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ *αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αŸ– αžŸαžΌαž˜αž…αž˜αŸ’αž›αž„αž―αž€αžŸαžΆαžšαž“αŸ…αž‘αžΈαžαžΆαŸ†αž„αž€αŸ†αžŽαžαŸ‹αž‘αŸ…αž›αžΎαž―αž€αžŸαžΆαžšαž€αŸ’αž“αž»αž„αž˜αŸ’αžŠαž„αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€* #### 5a. αž”αž“αŸ’αž‘αžΆαž“αŸ‹αžŸαž˜αŸαž™αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ **αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› `.vscode/launch.json`:** ```json { "version": "0.2.0", "configurations": [ { "name": "Attach to Local MCP", "type": "debugpy", "request": "attach", "connect": { "host": "localhost", "port": 5678 }, "presentation": { "hidden": true }, "internalConsoleOptions": "neverOpen", "postDebugTask": "Terminate All Tasks" }, { "name": "Launch Inspector (Edge)", "type": "msedge", "request": "launch", "url": "http://localhost:6274?timeout=60000&serverUrl=http://localhost:3001/sse#tools", "cascadeTerminateToConfigurations": [ "Attach to Local MCP" ], "presentation": { "hidden": true }, "internalConsoleOptions": "neverOpen" }, { "name": "Launch Inspector (Chrome)", "type": "chrome", "request": "launch", "url": "http://localhost:6274?timeout=60000&serverUrl=http://localhost:3001/sse#tools", "cascadeTerminateToConfigurations": [ "Attach to Local MCP" ], "presentation": { "hidden": true }, "internalConsoleOptions": "neverOpen" } ], "compounds": [ { "name": "Debug in Agent Builder", "configurations": [ "Attach to Local MCP" ], "preLaunchTask": "Open Agent Builder", }, { "name": "Debug in Inspector (Edge)", "configurations": [ "Launch Inspector (Edge)", "Attach to Local MCP" ], "preLaunchTask": "Start MCP Inspector", "stopAll": true }, { "name": "Debug in Inspector (Chrome)", "configurations": [ "Launch Inspector (Chrome)", "Attach to Local MCP" ], "preLaunchTask": "Start MCP Inspector", "stopAll": true } ] } ``` **αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› `.vscode/tasks.json`:** ``` { "version": "2.0.0", "tasks": [ { "label": "Start MCP Server", "type": "shell", "command": "python -m debugpy --listen 127.0.0.1:5678 src/__init__.py sse", "isBackground": true, "options": { "cwd": "${workspaceFolder}", "env": { "PORT": "3001" } }, "problemMatcher": { "pattern": [ { "regexp": "^.*$", "file": 0, "location": 1, "message": 2 } ], "background": { "activeOnStart": true, "beginsPattern": ".*", "endsPattern": "Application startup complete|running" } } }, { "label": "Start MCP Inspector", "type": "shell", "command": "npm run dev:inspector", "isBackground": true, "options": { "cwd": "${workspaceFolder}/inspector", "env": { "CLIENT_PORT": "6274", "SERVER_PORT": "6277", } }, "problemMatcher": { "pattern": [ { "regexp": "^.*$", "file": 0, "location": 1, "message": 2 } ], "background": { "activeOnStart": true, "beginsPattern": "Starting MCP inspector", "endsPattern": "Proxy server listening on port" } }, "dependsOn": [ "Start MCP Server" ] }, { "label": "Open Agent Builder", "type": "shell", "command": "echo ${input:openAgentBuilder}", "presentation": { "reveal": "never" }, "dependsOn": [ "Start MCP Server" ], }, { "label": "Terminate All Tasks", "command": "echo ${input:terminate}", "type": "shell", "problemMatcher": [] } ], "inputs": [ { "id": "openAgentBuilder", "type": "command", "command": "ai-mlstudio.agentBuilder", "args": { "initialMCPs": [ "local-server-weather_mcp" ], "triggeredFrom": "vsc-tasks" } }, { "id": "terminate", "type": "command", "command": "workbench.action.tasks.terminate", "args": "terminateAll" } ] } ``` --- ## πŸš€ αžšαžαŸ‹ αž“αž·αž„ αžŸαžΆαž€αž›αŸ’αž”αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ MCP αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ ### αž‡αŸ†αž αžΆαž“ 6αŸ– αžŠαŸ†αž‘αžΎαž„ Dependencies αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž’αŸ’αžœαžΎαž”αž˜αŸ’αžšαŸ‚αž”αž˜αŸ’αžšαž½αž›αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αž‰αŸ’αž‡αžΆαž›αŸαžαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ– **αžŠαŸ†αž‘αžΎαž„ Python dependencies:** ```bash uv sync ``` **αžŠαŸ†αž‘αžΎαž„ Inspector dependencies:** ```bash cd inspector npm install ``` ### αž‡αŸ†αž αžΆαž“ 7αŸ– αž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž‡αžΆαž˜αž½αž™ Agent Builder 1. **αž…αž»αž… F5** αž¬αž”αŸ’αžšαžΎαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ **"Debug in Agent Builder"** 2. **αž‡αŸ’αžšαžΎαžŸαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ compound** αž–αžΈαž•αŸ’αž‘αžΆαŸ†αž„ debug 3. **αžšαž„αŸ‹αž…αžΆαŸ†αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜** αž“αž·αž„ Agent Builder αž”αžΎαž€αž‘αžΎαž„ 4. **αžŸαžΆαž€αž›αŸ’αž”αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ weather MCP αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€** αž‡αžΆαž˜αž½αž™αžŸαŸ†αžŽαž½αžšαž—αžΆαžŸαžΆαž’αž˜αŸ’αž˜αžαžΆ αž”αž‰αŸ’αž…αžΌαž› prompt αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜ SYSTEM_PROMPT ``` You are my weather assistant ``` USER_PROMPT ``` How's the weather like in Seattle ``` ![Agent Builder Debug Result](../../../../translated_images/km/Result.6ac570f7d2b1d538.webp) ### αž‡αŸ†αž αžΆαž“ 8αŸ– αž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž‡αžΆαž˜αž½αž™ MCP Inspector 1. **αž”αŸ’αžšαžΎαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ "Debug in Inspector"** (Edge ឬ Chrome) 2. **αž”αžΎαž€αž•αŸ’αž‘αžΆαŸ†αž„ Inspector** αž“αŸ… `http://localhost:6274` 3. **αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž”αžšαž·αž™αžΆαž€αžΆαžŸαžŸαžΆαž€αž›αŸ’αž”αž„αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αŸ–** - αž˜αžΎαž›αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ - αžŸαžΆαž€αž›αŸ’αž”αž„αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž§αž”αž€αžšαžŽαŸ - αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŸαŸ†αžŽαžΎαž”αžŽαŸ’αžŠαžΆαž‰ - αž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž…αž˜αŸ’αž›αžΎαž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ ![MCP Inspector Interface](../../../../translated_images/km/Inspector.5672415cd02fe873.webp) --- ## 🎯 αž›αž‘αŸ’αž’αž•αž›αž€αžΆαžšαžšαŸ€αž“αžŸαŸ†αžαžΆαž“αŸ‹αŸ— αžŠαŸ„αž™αž”αž‰αŸ’αž…αž”αŸ‹αž˜αž“αŸ’αž‘αžΈαžšαž“αŸαŸ‡ αž’αŸ’αž“αž€αž”αžΆαž“: - [x] **αž”αž„αŸ’αž€αžΎαžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ MCP αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“** αžŠαŸ„αž™αž”αŸ’αžšαžΎαž‚αŸ†αžšαžΌ Microsoft Foundry Toolkit - [x] **αž”αž“αŸ’αž‘αžΆαž“αŸ‹αžŸαž˜αŸαž™αž‘αŸ… MCP SDK αž‡αŸ†αž“αžΆαž“αŸ‹αž…αž»αž„αž€αŸ’αžšαŸ„αž™** (v1.9.3) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž»αžαž„αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’ - [x] **αž€αŸ†αžŽαžαŸ‹αž›αŸ†αžŠαžΆαž”αŸ‹αž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž‡αžΆαž„αžœαž·αž‡αŸ’αž‡αžΆαž‡αžΈαžœαŸˆ** αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Agent Builder αž“αž·αž„ Inspector - [x] **αžŠαŸ†αž‘αžΎαž„ MCP Inspector** αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαžΆαž€αž›αŸ’αž”αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜ - [x] **αž˜αžΆαž“αž‡αŸ†αž“αžΆαž‰αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹ VS Code αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ MCP** ## πŸ”§ αž˜αž»αžαž„αžΆαžšαž›αž˜αŸ’αž’αž·αžαžŠαŸ‚αž›αž”αžΆαž“αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹ | αž˜αž»αžαž„αžΆαžš | αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆ | αž€αžšαžŽαžΈαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ | |---------|-------------|----------| | **MCP Python SDK v1.9.3** | αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž–αž·αž’αžΈαž€αžΆαžšαžαŸ’αž˜αžΈ | αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎαžŸαž˜αŸαž™αžαŸ’αž˜αžΈ | | **MCP Inspector 0.14.0** | αž§αž”αž€αžšαžŽαŸαž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜ | αžŸαžΆαž€αž›αŸ’αž”αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎαž–αŸαž›αžœαŸαž›αžΆαž–αž·αž | | **αž€αžΆαžšαž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ VS Code** | αžœαž·αžŸαŸ’αžœαž€αž˜αŸ’αž˜αž’αž—αž·αžœαžŒαŸ’αžαž”αž·αž‘αž‡αž»αŸ† | αž›αŸ†αž“αžΆαŸ†αž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž‡αžΆαž„αžœαž·αž‡αŸ’αž‡αžΆαž‡αžΈαžœαŸˆ | | **αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„ Agent Builder** | αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž•αŸ’αž‘αžΆαž›αŸ‹ Microsoft Foundry Toolkit | αžŸαžΆαž€αž›αŸ’αž”αž„ agent αž–αŸαž‰αž›αŸαž‰ | ## πŸ“š αž―αž€αžŸαžΆαžšαž”αž“αŸ’αžαŸ‚αž˜ - [αž―αž€αžŸαžΆαžš MCP Python SDK](https://modelcontextprotocol.io/docs/sdk/python) - [αž˜αž‚αŸ’αž‚αž»αž‘αŸαžŸαž€αŸ Microsoft Foundry Toolkit Extension](https://code.visualstudio.com/docs/ai/ai-toolkit) - [αž―αž€αžŸαžΆαžšαž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ VS Code](https://code.visualstudio.com/docs/editor/debugging) - [αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ Model Context Protocol](https://modelcontextprotocol.io/docs/concepts/architecture) --- **πŸŽ‰ αžŸαžΌαž˜αž’αž”αž’αžšαžŸαžΆαž‘αžš!** αž’αŸ’αž“αž€αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹ Lab 3 αž‡αŸ„αž‚αž‡αŸαž™ αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αžΆαž…αž”αž„αŸ’αž€αžΎαž αž€αŸ†αž αž»αžŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αž“αž·αž„αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ MCP αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžŠαŸ„αž™αž›αŸ†αž“αžΆαŸ†αž’αž—αž·αžœαžŒαŸ’αžαžœαž·αž‡αŸ’αž‡αžΆαž‡αžΈαžœαŸˆαŸ” ### πŸ”œ αž”αž“αŸ’αžαž‘αŸ…αž˜αŸ‰αžΌαžŒαž»αž›αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αžšαž½αž…αžšαžΆαž›αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαžŠαžΆαž€αŸ‹αž”αž‰αŸ’αž…αžΌαž›αž‡αŸ†αž“αžΆαž‰ MCP αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‘αŸ…αž›αŸ†αž“αžΆαŸ†αž’αž—αž·αžœαžŒαŸ’αžαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„? αž”αž“αŸ’αžαž‘αŸ… **[Module 4: Practical MCP Development - Custom GitHub Clone Server](../lab4/README.md)** αžŠαŸ‚αž›αž’αŸ’αž“αž€αž“αžΉαž„αŸ– - αž”αž„αŸ’αž€αžΎαžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ MCP αž‘αžΈαž”αŸ†αž•αž»αžαžŠαŸ‚αž›αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž€αŸ’αž“αž»αž„ GitHub repository - αž’αž“αž»αžœαžαŸ’αžαž˜αž»αžαž„αžΆαžšαž…αž˜αŸ’αž›αž„ GitHub repository តអម MCP - αž”αž‰αŸ’αž…αžΌαž›αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ MCP αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αž‡αžΆαž˜αž½αž™ VS Code αž“αž·αž„ GitHub Copilot Agent Mode - αžŸαžΆαž€αž›αŸ’αž”αž„ αž“αž·αž„αžŠαžΆαž€αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž”αž˜αŸ’αžšαžΎ MCP αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαž•αž›αž·αžαž€αž˜αŸ’αž˜ - αžšαŸ€αž“αž›αŸ†αž“αžΆαŸ†αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαžαžΆαž„αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž€αžΆαžš --- **αž€αžΆαžšαž”αžŠαž·αžŸαŸαž’**: αž―αž€αžŸαžΆαžšαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž˜αŸ’αž›αŸ‚αž„αž—αžΆαžŸαžΆ αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸαžœαžΆαž”αž˜αŸ’αž›αŸ‚αž„αž—αžΆαžŸαžΆ AI [Co-op Translator](https://github.com/Azure/co-op-translator)αŸ” αž‘αŸ„αŸ‡αž™αžΎαž„αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“αž€αŸ’αžαžΈαž”αŸ’αžšαžΆαžαŸ’αž“αžΆαž±αŸ’αž™αž”αžΆαž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹ αžαŸ‚αžŸαžΌαž˜αž™αž›αŸ‹αžŠαžΉαž„αžαžΆαž€αžΆαžšαž”αž˜αŸ’αž›αŸ‚αž„αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αŸαž’αžΆαž…αž˜αžΆαž“αž€αŸ†αž αž»αžŸαž¬αž—αžΆαž–αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ” αž―αž€αžŸαžΆαžšαžŠαžΎαž˜αž‡αžΆαž—αžΆαžŸαžΆαž‘αžΈαžαžΆαŸ†αž„αž‚αž½αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž”αŸ’αžšαžΎαž‡αžΆαž”αŸ’αžšαž—αž–αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžŸαŸ†αžαžΆαž“αŸ‹αŸ— αžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαžšαž”αŸ’αžšαŸ‚αžŠαŸ„αž™αž˜αž“αž»αžŸαŸ’αžŸαž‡αŸ†αž“αžΆαž‰αŸ” αž™αžΎαž„αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž™αž›αŸ‹αž…αŸ’αžšαž‘αŸ† αž¬αž€αžΆαžšαž”αž€αžŸαŸ’αžšαžΆαž™αžαž»αžŸαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαžšαž”αž˜αŸ’αž›αŸ‚αž„αž“αŸαŸ‡αž“αŸ„αŸ‡αž‘αŸαŸ”