# 🔧 Moduuli 3: Edistynyt MCP-kehitys Microsoft Foundry Toolkitilla ![Kesto](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) ## 🎯 Oppimistavoitteet TĂ€mĂ€n laboratorion lopussa osaat: - ✅ Luoda mukautettuja MCP-palvelimia Microsoft Foundry Toolkitin avulla - ✅ MÀÀrittÀÀ ja kĂ€yttÀÀ uusinta MCP Python SDK:ta (v1.9.3) - ✅ Asentaa ja kĂ€yttÀÀ MCP Inspector -työkalua virheenkorjaukseen - ✅ Virheenkorjata MCP-palvelimia sekĂ€ Agent Builderissa ettĂ€ Inspectorissa - ✅ YmmĂ€rtÀÀ edistyneitĂ€ MCP-palvelinkehityksen työnkulkuja ## 📋 Esivaatimukset - Lab 2 (MCP Fundamentals) suoritettuna - VS Code, johon on asennettu Microsoft Foundry Toolkit -laajennus - Python 3.10+ -ympĂ€ristö - Node.js ja npm Inspectorin asentamista varten ## đŸ—ïž MitĂ€ rakennat TĂ€ssĂ€ laboratoriossa rakennat **Weather MCP Serverin**, joka demonstroi: - Mukautetun MCP-palvelimen toteutusta - Integraatiota Microsoft Foundry Toolkit Agent Builderin kanssa - Ammattimaisia virheenkorjausprosessseja - Modernin MCP SDK:n kĂ€yttötapoja --- ## 🔧 Keskeiset komponentit yleiskuva ### 🐍 MCP Python SDK Model Context Protocolin Python SDK tarjoaa perustan mukautettujen MCP-palvelimien rakentamiselle. KĂ€ytĂ€t versiota 1.9.3, jossa on parannetut virheenkorjausmahdollisuudet. ### 🔍 MCP Inspector Tehokas virheenkorjaustyökalu, joka tarjoaa: - Palvelimen reaaliaikaisen valvonnan - Työkalujen suorituksen visualisoinnin - Verkko-pyyntöjen ja -vastauksien tarkastelun - Interaktiivisen testausympĂ€ristön --- ## 📖 Vaihe vaiheelta toteutus ### Vaihe 1: Luo WeatherAgent Agent Builderissa 1. **KĂ€ynnistĂ€ Agent Builder** VS Codessa Microsoft Foundry Toolkit -laajennuksen kautta 2. **Luo uusi agentti** seuraavilla asetuksilla: - Agentin nimi: `WeatherAgent` ![Agentin luonti](../../../../translated_images/fi/Agent.c9c33f6a412b4cde.webp) ### Vaihe 2: Aloita MCP-palvelinprojekti 1. **Siirry Tools** → **Add Tool** Agent Builderissa 2. **Valitse "MCP Server"** saatavilla olevista vaihtoehdoista 3. **Valitse "Create A new MCP Server"** 4. **Valitse `python-weather`-pohja** 5. **NimeĂ€ palvelimesi:** `weather_mcp` ![Python-pohjan valinta](../../../../translated_images/fi/Pythontemplate.9d0a2913c6491500.webp) ### Vaihe 3: Avaa ja tarkastele projektia 1. **Avaa luotu projekti** VS Codessa 2. **Tarkastele projektin rakennetta:** ``` weather_mcp/ ├── src/ │ ├── __init__.py │ └── server.py ├── inspector/ │ ├── package.json │ └── package-lock.json ├── .vscode/ │ ├── launch.json │ └── tasks.json ├── pyproject.toml └── README.md ``` ### Vaihe 4: PĂ€ivitĂ€ uusimpaan MCP SDK:han > **🔍 Miksi pĂ€ivittÀÀ?** Haluamme kĂ€yttÀÀ uusinta MCP SDK:ta (v1.9.3) ja Inspector-palvelua (0.14.0) parannettujen ominaisuuksien ja paremman virheenkorjauksen saavuttamiseksi. #### 4a. PĂ€ivitĂ€ Python-riippuvuudet **Muokkaa `pyproject.toml`:** pĂ€ivitĂ€ [./code/weather_mcp/pyproject.toml](../../../../10-StreamliningAIWorkflowsBuildingAnMCPServerWithAIToolkit/lab3/code/weather_mcp/pyproject.toml) #### 4b. PĂ€ivitĂ€ Inspectorin konfiguraatio **Muokkaa `inspector/package.json`:** pĂ€ivitĂ€ [./code/weather_mcp/inspector/package.json](../../../../10-StreamliningAIWorkflowsBuildingAnMCPServerWithAIToolkit/lab3/code/weather_mcp/inspector/package.json) #### 4c. PĂ€ivitĂ€ Inspectorin riippuvuudet **Muokkaa `inspector/package-lock.json`:** pĂ€ivitĂ€ [./code/weather_mcp/inspector/package-lock.json](../../../../10-StreamliningAIWorkflowsBuildingAnMCPServerWithAIToolkit/lab3/code/weather_mcp/inspector/package-lock.json) > **📝 Huom:** TĂ€mĂ€ tiedosto sisĂ€ltÀÀ laajat riippuvuusmÀÀrittelyt. Alla on oleellinen rakenne - koko sisĂ€ltö varmistaa riippuvuuksien oikean ratkaisun. > **⚡ TĂ€ysi Package Lock:** TĂ€ysi package-lock.json sisĂ€ltÀÀ noin 3000 riviĂ€ riippuvuuksien mÀÀrittelyjĂ€. YllĂ€ on avainrakenne - kĂ€ytĂ€ toimitettua tiedostoa tĂ€ydelliseen riippuvuuksien ratkaisuun. ### Vaihe 5: MÀÀritĂ€ VS Coden virheenkorjaus *Huom. Kopioi tiedosto ilmoitettuun polkuun korvaamaan vastaava paikallinen tiedosto* #### 5a. PĂ€ivitĂ€ kĂ€ynnistyskonfiguraatio **Muokkaa `.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 } ] } ``` **Muokkaa `.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-palvelimen ajaminen ja testaaminen ### Vaihe 6: Asenna riippuvuudet Muutosten tekemisen jĂ€lkeen suorita seuraavat komennot: **Asenna Python-riippuvuudet:** ```bash uv sync ``` **Asenna Inspectorin riippuvuudet:** ```bash cd inspector npm install ``` ### Vaihe 7: Virheenkorjaus Agent Builderissa 1. **Paina F5** tai kĂ€ytĂ€ **"Debug in Agent Builder"** -konfiguraatiota 2. **Valitse yhdistelmĂ€konfiguraatio** debug-paneelista 3. **Odota palvelimen kĂ€ynnistymistĂ€** ja Agent Builderin avaamista 4. **Testaa Weather MCP serveriĂ€si** luonnollisilla kielipyyntöillĂ€ Anna syöte kuten tĂ€mĂ€ SYSTEM_PROMPT ``` You are my weather assistant ``` USER_PROMPT ``` How's the weather like in Seattle ``` ![Agent Builder Debug-tulos](../../../../translated_images/fi/Result.6ac570f7d2b1d538.webp) ### Vaihe 8: Virheenkorjaus MCP Inspectorilla 1. **KĂ€ytĂ€ "Debug in Inspector"** -konfiguraatiota (Edge tai Chrome) 2. **Avaa Inspector-kĂ€yttöliittymĂ€** osoitteessa `http://localhost:6274` 3. **Tutki interaktiivista testausympĂ€ristöÀ:** - Katso saatavilla olevat työkalut - Testaa työkalujen suoritus - Tarkkaile verkkopyyntöjĂ€ - Virheenkorjaa palvelimen vastauksia ![MCP Inspector -kĂ€yttöliittymĂ€](../../../../translated_images/fi/Inspector.5672415cd02fe873.webp) --- ## 🎯 Keskeiset oppimistulokset TĂ€mĂ€n laboratorion suorittamalla olet: - [x] **Luonut mukautetun MCP-palvelimen** Microsoft Foundry Toolkit -pohjien avulla - [x] **PĂ€ivittĂ€nyt uusimpaan MCP SDK:han** (v1.9.3) parennetun toiminnallisuuden saavuttamiseksi - [x] **MÀÀrittĂ€nyt ammattimaiset virheenkorjausprosessit** sekĂ€ Agent Builderille ettĂ€ Inspectorille - [x] **Asentanut MCP Inspectorin** interaktiiviseen palvelintestaukseen - [x] **Hallinnut VS Code -virheenkorjauskonfiguraatiot** MCP-kehitystĂ€ varten ## 🔧 Tutkitut edistyneet ominaisuudet | Ominaisuus | Kuvaus | KĂ€yttötapaus | |-----------------------|--------------------------------|---------------------------| | **MCP Python SDK v1.9.3** | Uusin protokollatoteutus | Moderni palvelinkehitys | | **MCP Inspector 0.14.0** | Interaktiivinen virheenkorjaustyökalu | Reaaliaikainen palvelintestaus | | **VS Code Debugging** | Integroitu kehitysympĂ€ristö | Ammattimainen virheenkorjaus | | **Agent Builder Integration** | Suora yhteys Microsoft Foundry Toolkit -työkaluun | PÀÀtĂ€-pÀÀhĂ€n agenttitestaus | ## 📚 LisĂ€resurssit - [MCP Python SDK Documentation](https://modelcontextprotocol.io/docs/sdk/python) - [Microsoft Foundry Toolkit Extension Guide](https://code.visualstudio.com/docs/ai/ai-toolkit) - [VS Code Debugging Documentation](https://code.visualstudio.com/docs/editor/debugging) - [Model Context Protocol Specification](https://modelcontextprotocol.io/docs/concepts/architecture) --- **🎉 Onneksi olkoon!** Olet suorittanut Lab 3:n onnistuneesti ja osaat nyt luoda, virheenkorjata ja ottaa kĂ€yttöön mukautettuja MCP-palvelimia ammattimaisten kehitysprosessien avulla. ### 🔜 Jatka seuraavaan moduuliin Valmis soveltamaan MCP-taitojasi kĂ€ytĂ€nnön kehitystyön työnkulkuun? Jatka **[Moduuliin 4: KĂ€ytĂ€nnön MCP-kehitys – Mukautettu GitHub Clone Server](../lab4/README.md)**, jossa: - Rakennat tuotantovalmiin MCP-palvelimen, joka automatisoi GitHub-repositorion hallintaa - Toteutat GitHub-repositorion kloonaustoiminnallisuuden MCP:n avulla - Integroi mukautetut MCP-palvelimet VS Coden ja GitHub Copilot Agent Moden kanssa - Testaat ja otat kĂ€yttöön mukautetut MCP-palvelimet tuotantoympĂ€ristöissĂ€ - Opit kĂ€ytĂ€nnön työnkulkuautomaatioita kehittĂ€jille --- **Vastuuvapauslauseke**: TĂ€mĂ€ asiakirja on kÀÀnnetty kĂ€yttĂ€mĂ€llĂ€ tekoĂ€lypohjaista kÀÀnnöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, otathan huomioon, ettĂ€ automaattiset kÀÀnnökset saattavat sisĂ€ltÀÀ virheitĂ€ tai epĂ€tarkkuuksia. AlkuperĂ€inen asiakirja sen alkuperĂ€iskielellĂ€ on virallinen lĂ€hde. TĂ€rkeissĂ€ asioissa suositellaan ammattimaista ihmiskÀÀnnöstĂ€. Emme ole vastuussa tĂ€mĂ€n kÀÀnnöksen kĂ€ytöstĂ€ aiheutuvista vÀÀrinymmĂ€rryksistĂ€ tai tulkinnoista.