Files

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

Duration Microsoft Foundry Toolkit Python MCP SDK Inspector

🎯 Výukové cíle

Na konci tohoto laboratoře budete schopni:

  • Vytvořit vlastní MCP servery pomocí Microsoft Foundry Toolkit
  • Nakonfigurovat a používat nejnovější MCP Python SDK (verze 1.9.3)
  • Nastavit a využít MCP Inspector pro ladění
  • Ladit MCP servery jak v prostředí Agent Builder, tak v Inspectoru
  • Pochopit pokročilé pracovní postupy vývoje MCP serverů

📋 Předpoklady

  • Dokončení Laboratoře 2 (Základy MCP)
  • VS Code s nainstalovaným rozšířením Microsoft Foundry Toolkit
  • Python 3.10+ prostředí
  • Node.js a npm pro nastavení Inspectoru

🏗️ Co vytvoříte

V této laboratoři vytvoříte Weather MCP Server, který demonstruje:

  • Implementaci vlastního MCP serveru
  • Integraci s Microsoft Foundry Toolkit Agent Builderem
  • Profesionální pracovní postupy ladění
  • Moderní vzory použití MCP SDK

🔧 Přehled základních komponent

🐍 MCP Python SDK

Model Context Protocol Python SDK poskytuje základy pro vytváření vlastních MCP serverů. Použijete verzi 1.9.3 s rozšířenými možnostmi ladění.

🔍 MCP Inspector

Výkonný nástroj pro ladění, který nabízí:

  • Monitorování serveru v reálném čase
  • Vizualizaci spouštění nástrojů
  • Kontrolu síťových požadavků/odpovědí
  • Interaktivní testovací prostředí

📖 Implementace krok za krokem

Krok 1: Vytvoření WeatherAgenta v Agent Builderu

  1. Spusťte Agent Builder ve VS Code přes rozšíření Microsoft Foundry Toolkit
  2. Vytvořte nového agenta s následující konfigurací:
    • Název agenta: WeatherAgent

Agent Creation

Krok 2: Inicializace projektu MCP serveru

  1. Přejděte do ToolsAdd Tool v Agent Builderu
  2. Vyberte "MCP Server" z dostupných možností
  3. Zvolte "Create A new MCP Server"
  4. Vyberte šablonu python-weather
  5. Pojmenujte svůj server: weather_mcp

Python Template Selection

Krok 3: Otevřete a prozkoumejte projekt

  1. Otevřete vygenerovaný projekt v VS Code
  2. Prohlédněte si strukturu 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: Aktualizace na nejnovější MCP SDK

🔍 Proč aktualizovat? Chceme používat nejnovější MCP SDK (verze 1.9.3) a službu Inspector (0.14.0) pro rozšířené funkce a lepší možnosti ladění.

4a. Aktualizace Python závislostí

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

4b. Aktualizace konfigurace Inspectoru

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

4c. Aktualizace závislostí Inspectoru

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

📝 Poznámka: Tento soubor obsahuje rozsáhlé definice závislostí. Níže je základní struktura celý obsah zajišťuje správné vyřešení závislostí.

Kompletní zámek balíčků: Kompletní package-lock.json má ~3000 řádků definic závislostí. Výše uvedená ukázka obsahuje klíčovou strukturu pro úplné vyřešení závislostí použijte poskytnutý soubor.

Krok 5: Konfigurace ladění ve VS Code

Poznámka: Prosím zkopírujte soubor na určené cestě tak, aby nahradil odpovídající lokální soubor

5a. Aktualizace konfiguračního souboru spuštění

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

🚀 Spuštění a testování vašeho MCP serveru

Krok 6: Instalace závislostí

Po provedení konfiguračních změn spusťte následující příkazy:

Instalace Python závislostí:

uv sync

Instalace závislostí Inspectoru:

cd inspector
npm install

Krok 7: Ladění v Agent Builderu

  1. Stiskněte F5 nebo použijte konfiguraci "Debug in Agent Builder"
  2. Vyberte složenou konfiguraci z ladícího panelu
  3. Počkejte na spuštění serveru a otevření Agent Builderu
  4. Otestujte svůj weather MCP server pomocí dotazů v přirozeném jazyce

Zadejte prompt jako tento

SYSTEM_PROMPT

You are my weather assistant

USER_PROMPT

How's the weather like in Seattle

Agent Builder Debug Result

Krok 8: Ladění v MCP Inspectoru

  1. Použijte konfiguraci "Debug in Inspector" (Edge nebo Chrome)
  2. Otevřete rozhraní Inspectoru na adrese http://localhost:6274
  3. Prozkoumejte interaktivní testovací prostředí:
    • Prohlížejte dostupné nástroje
    • Testujte spouštění nástrojů
    • Sledujte síťové požadavky
    • Laděte odpovědi serveru

MCP Inspector Interface


🎯 Klíčové dosažené výsledky

Úspěšným dokončením této laboratoře jste:

  • Vytvořili vlastní MCP server pomocí šablon Microsoft Foundry Toolkit
  • Aktualizovali na nejnovější MCP SDK (verze 1.9.3) pro rozšířenou funkcionalitu
  • Nakonfigurovali profesionální pracovní postupy ladění pro Agent Builder i Inspector
  • Nastavili MCP Inspector pro interaktivní testování serveru
  • Ovládáte konfigurace ladění ve VS Code pro vývoj MCP

🔧 Prozkoumané pokročilé funkce

Funkce Popis Případ použití
MCP Python SDK v1.9.3 Nejnovější implementace protokolu Moderní vývoj serverů
MCP Inspector 0.14.0 Interaktivní nástroj pro ladění Testování serveru v reálném čase
Ladění ve VS Code Integrované vývojové prostředí Profesionální pracovní postup ladění
Integrace s Agent Builderem Přímé propojení s Microsoft Foundry Toolkit Kompletní testování agenta

📚 Další zdroje


🎉 Gratulujeme! Úspěšně jste dokončili Laboratoř 3 a nyní můžete vytvářet, ladit a nasazovat vlastní MCP servery využívajíc profesionální pracovní postupy vývoje.

🔜 Pokračujte do dalšího modulu

Jste připraveni aplikovat své MCP dovednosti v reálném vývojovém workflow? Pokračujte do Modulu 4: Praktický vývoj MCP - Vlastní server klonování GitHubu, kde:

  • Vytvoříte produkčně připravený MCP server automatizující operace s repozitáři GitHubu
  • Implementujete funkci klonování repozitářů GitHub přes MCP
  • Integrujete vlastní MCP servery s VS Code a režimem agenta GitHub Copilot
  • Testujete a nasadíte vlastní MCP servery v produkčním prostředí
  • Naučíte se praktickou automatizaci pracovních toků pro vývojáře

Prohlášení o omezení odpovědnosti: Tento dokument byl přeložen pomocí AI překladatelské služby Co-op Translator. Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu.