Files

🔧 Modul 3: Pokročilý vývoj MCP s Microsoft Foundry Toolkit

Duration Microsoft Foundry Toolkit Python MCP SDK Inspector

🎯 Ciele učenia

Na konci tohto laboratória budete schopní:

  • Vytvárať vlastné MCP servery pomocou Microsoft Foundry Toolkit
  • Konfigurovať a používať najnovší MCP Python SDK (v1.9.3)
  • Nastaviť a využiť MCP Inspector na ladenie
  • Ladiť MCP servery v prostrediach Agent Builder aj Inspector
  • Pochopiť pokročilé pracovné postupy vývoja MCP serverov

📋 Predpoklady

  • Dokončenie laboratória 2 (MCP základy)
  • VS Code s nainštalovaným rozšírením Microsoft Foundry Toolkit
  • Prostredie Python 3.10+
  • Node.js a npm pre nastavenie Inspectora

🏗️ Čo si vytvoríte

V tomto laboratóriu vytvoríte Weather MCP Server, ktorý demonštruje:

  • Vlastnú implementáciu MCP servera
  • Integráciu s Microsoft Foundry Toolkit Agent Builderom
  • Profesionálne pracovné postupy ladenia
  • Moderné vzory používania MCP SDK

🔧 Prehľad hlavných komponentov

🐍 MCP Python SDK

Model Context Protocol Python SDK poskytuje základ pre tvorbu vlastných MCP serverov. Použijete verziu 1.9.3 s rozšírenými možnosťami ladenia.

🔍 MCP Inspector

Výkonný nástroj na ladenie, ktorý ponúka:

  • Monitorovanie servera v reálnom čase
  • Vizualizáciu vykonávania nástrojov
  • Inšpekciu sieťových požiadaviek/odpovedí
  • Interaktívne testovacie prostredie

📖 Krok za krokom implementácia

Krok 1: Vytvorenie WeatherAgenta v Agent Builder

  1. Spustite Agent Builder vo VS Code cez rozšírenie Microsoft Foundry Toolkit
  2. Vytvorte nového agenta s touto konfiguráciou:
    • Názov agenta: WeatherAgent

Agent Creation

Krok 2: Inicializácia projektu MCP servera

  1. Prejdite na ToolsAdd Tool v Agent Builder
  2. Vyberte "MCP Server" zo zoznamu dostupných možností
  3. Zvoľte "Create A new MCP Server"
  4. Vyberte šablónu python-weather
  5. Pomenujte server: weather_mcp

Python Template Selection

Krok 3: Otvorte a preskúmajte projekt

  1. Otvorte vygenerovaný projekt vo VS Code
  2. Prezrite si štruktúru projektu:
    weather_mcp/
    ├── src/
    │   ├── __init__.py
    │   └── server.py
    ├── inspector/
    │   ├── package.json
    │   └── package-lock.json
    ├── .vscode/
    │   ├── launch.json
    │   └── tasks.json
    ├── pyproject.toml
    └── README.md
    

Krok 4: Upgrade na najnovšie MCP SDK

🔍 Prečo upgrade? Chceme použiť najnovšie MCP SDK (v1.9.3) a službu Inspector (0.14.0) pre lepšie funkcie a rozšírené možnosti ladenia.

4a. Aktualizujte Python závislosti

Upravte pyproject.toml: aktualizujte ./code/weather_mcp/pyproject.toml

4b. Aktualizujte konfiguráciu Inspectora

Upravte inspector/package.json: aktualizujte ./code/weather_mcp/inspector/package.json

4c. Aktualizujte závislosti Inspectora

Upravte inspector/package-lock.json: aktualizujte ./code/weather_mcp/inspector/package-lock.json

📝 Poznámka: Tento súbor obsahuje rozsiahle definície závislostí. Nižšie je základná štruktúra celý obsah zabezpečuje správne vyriešenie závislostí.

Kompletný Package Lock: Celý package-lock.json obsahuje približne 3000 riadkov definícií závislostí. Vyššie je zobrazená kľúčová štruktúra pre úplné vyriešenie závislostí používajte dodaný súbor.

Krok 5: Konfigurácia ladenia vo VS Code

Poznámka: Skopírujte súbor na uvedenú cestu, aby ste nahradili príslušný lokálny súbor

5a. Aktualizujte konfiguráciu spúšťania

Upravte .vscode/launch.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
    }
  ]
}

Upravte .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"
    }
  ]
}

🚀 Spustenie a testovanie MCP servera

Krok 6: Inštalácia závislostí

Po vykonaní zmien v konfigurácii spustite nasledujúce príkazy:

Inštalácia Python závislostí:

uv sync

Inštalácia závislostí Inspectora:

cd inspector
npm install

Krok 7: Ladenie pomocou Agent Builder

  1. Stlačte F5 alebo použite konfiguráciu "Debug in Agent Builder"
  2. Vyberte zloženú konfiguráciu v paneli ladenia
  3. Počkajte na spustenie servera a otvorenie Agent Buildera
  4. Otestujte váš weather MCP server pomocou prirodzených jazykových dopytov

Zadajte prompt ako tento

SYSTEM_PROMPT

You are my weather assistant

USER_PROMPT

How's the weather like in Seattle

Agent Builder Debug Result

Krok 8: Ladenie pomocou MCP Inspectora

  1. Použite konfiguráciu "Debug in Inspector" (Edge alebo Chrome)
  2. Otvorte rozhranie Inspectora na adrese http://localhost:6274
  3. Preskúmajte interaktívne testovacie prostredie:
    • Prezrite dostupné nástroje
    • Otestujte vykonávanie nástrojov
    • Sledujte sieťové požiadavky
    • Ladiť odpovede servera

MCP Inspector Interface


🎯 Kľúčové výsledky učenia

Dokončením tohto laboratória ste:

  • Vytvorili vlastný MCP server pomocou Microsoft Foundry Toolkit šablón
  • Upgradovali na najnovší MCP SDK (v1.9.3) pre rozšírenú funkcionalitu
  • Nakonfigurovali profesionálne pracovné postupy ladenia pre Agent Builder i Inspector
  • Nastavili MCP Inspector na interaktívne testovanie servera
  • Osvojili si konfigurácie ladenia vo VS Code pre vývoj MCP

🔧 Preskúmané pokročilé funkcie

Funkcia Popis Použitie
MCP Python SDK v1.9.3 Najnovšia implementácia protokolu Moderný vývoj serverov
MCP Inspector 0.14.0 Interaktívny nástroj na ladenie Testovanie servera v reálnom čase
Ladenie vo VS Code Integrované vývojové prostredie Profesionálny pracovný postup ladenia
Integrácia s Agent Builder Priame prepojenie s Microsoft Foundry Toolkit Testovanie agenta end-to-end

📚 Dodatočné zdroje


🎉 Gratulujeme! Úspešne ste dokončili Laboratórium 3 a teraz môžete vytvárať, ladiť a nasadzovať vlastné MCP servery s použitím profesionálnych pracovných postupov vývoja.

🔜 Pokračujte do ďalšieho modulu

Ste pripravení aplikovať svoje MCP zručnosti v reálnom vývojovom workflow? Pokračujte do Modul 4: Praktický vývoj MCP - vlastný server pre klonovanie GitHub, kde budete:

  • Stavať produkčne pripravený MCP server, ktorý automatizuje operácie so skladiskami GitHub
  • Implementovať funkcionalitu klonovania GitHub repozitárov cez MCP
  • Integrovať vlastné MCP servery s VS Code a režimom agenta GitHub Copilot
  • Testovať a nasadzovať vlastné MCP servery v produkčných prostrediach
  • Učiť sa praktickú automatizáciu pracovných postupov pre vývojárov

Vyhlásenie o zodpovednosti: Tento dokument bol preložený pomocou AI prekladateľskej služby Co-op Translator. Hoci sa snažíme o presnosť, vezmite prosím na vedomie, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho natívnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.