13 KiB
🔧 Moduł 3: Zaawansowany rozwój MCP z Microsoft Foundry Toolkit
🎯 Cele nauki
Na koniec tego laboratorium będziesz potrafił:
- ✅ Tworzyć niestandardowe serwery MCP przy użyciu Microsoft Foundry Toolkit
- ✅ Konfigurować i używać najnowszego SDK MCP dla Pythona (wersja 1.9.3)
- ✅ Konfigurować i korzystać z MCP Inspector do debugowania
- ✅ Debugować serwery MCP zarówno w środowisku Agent Builder, jak i Inspector
- ✅ Rozumieć zaawansowane przepływy pracy przy tworzeniu serwerów MCP
📋 Wymagania wstępne
- Ukończenie Laboratorium 2 (Podstawy MCP)
- VS Code z zainstalowanym rozszerzeniem Microsoft Foundry Toolkit
- Środowisko Python 3.10 lub nowsze
- Node.js i npm do konfiguracji Inspector
🏗️ Co zbudujesz
W tym laboratorium stworzysz Weather MCP Server, który demonstruje:
- Implementację niestandardowego serwera MCP
- Integrację z Microsoft Foundry Toolkit Agent Builder
- Profesjonalne przepływy debugowania
- Wzorce nowoczesnego wykorzystania SDK MCP
🔧 Przegląd kluczowych komponentów
🐍 MCP Python SDK
Model Context Protocol Python SDK stanowi podstawę do budowy niestandardowych serwerów MCP. Będziesz korzystać z wersji 1.9.3 z rozszerzonymi możliwościami debugowania.
🔍 MCP Inspector
Potężne narzędzie do debugowania oferujące:
- Monitorowanie serwera w czasie rzeczywistym
- Wizualizację wykonywania narzędzi
- Inspekcję żądań i odpowiedzi sieciowych
- Interaktywne środowisko testowe
📖 Implementacja krok po kroku
Krok 1: Utwórz WeatherAgent w Agent Builder
- Uruchom Agent Builder w VS Code przez rozszerzenie Microsoft Foundry Toolkit
- Utwórz nowego agenta z następującą konfiguracją:
- Nazwa agenta:
WeatherAgent
- Nazwa agenta:
Krok 2: Zainicjuj projekt serwera MCP
- Przejdź do Narzędzia → Dodaj narzędzie w Agent Builder
- Wybierz "MCP Server" z dostępnych opcji
- Wybierz "Utwórz nowy serwer MCP"
- Wybierz szablon
python-weather - Nazwij swój serwer:
weather_mcp
Krok 3: Otwórz i przejrzyj projekt
- Otwórz wygenerowany projekt w VS Code
- Przejrzyj strukturę 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: Aktualizacja do najnowszego SDK MCP
🔍 Dlaczego aktualizować? Chcemy korzystać z najnowszego SDK MCP (wersja 1.9.3) oraz usługi Inspector (0.14.0) dla udoskonalonych funkcji i lepszych możliwości debugowania.
4a. Aktualizacja zależności Pythona
Edytuj pyproject.toml: aktualizacja ./code/weather_mcp/pyproject.toml
4b. Aktualizacja konfiguracji Inspector
Edytuj inspector/package.json: aktualizacja ./code/weather_mcp/inspector/package.json
4c. Aktualizacja zależności Inspector
Edytuj inspector/package-lock.json: aktualizacja ./code/weather_mcp/inspector/package-lock.json
📝 Uwaga: Ten plik zawiera rozległe definicje zależności. Poniżej znajduje się istotna struktura – pełna zawartość zapewnia prawidłowe rozwiązywanie zależności.
⚡ Pełen package lock: Pełny plik package-lock.json zawiera około 3000 linii definicji zależności. Powyżej pokazano kluczową strukturę – użyj dostarczonego pliku dla kompletnych zależności.
Krok 5: Konfiguracja debugowania w VS Code
Uwaga: proszę skopiować plik do wskazanej ścieżki, zastępując odpowiedni lokalny plik
5a. Aktualizacja konfiguracji uruchamiania
Edytuj .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
}
]
}
Edytuj .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"
}
]
}
🚀 Uruchamianie i testowanie Twojego serwera MCP
Krok 6: Instalacja zależności
Po dokonaniu zmian konfiguracyjnych, wykonaj następujące polecenia:
Instalacja zależności Pythona:
uv sync
Instalacja zależności Inspector:
cd inspector
npm install
Krok 7: Debugowanie za pomocą Agent Builder
- Naciśnij F5 lub użyj konfiguracji „Debuguj w Agent Builder”
- Wybierz konfigurację związaną z compound w panelu debugowania
- Poczekaj na uruchomienie serwera i otwarcie Agent Builder
- Przetestuj swój serwer weather MCP naturalnymi zapytaniami językowymi
Wpisz prompt taki jak poniżej
SYSTEM_PROMPT
You are my weather assistant
USER_PROMPT
How's the weather like in Seattle
Krok 8: Debugowanie z użyciem MCP Inspector
- Użyj konfiguracji „Debuguj w Inspector” (Edge lub Chrome)
- Otwórz interfejs Inspector pod adresem
http://localhost:6274 - Eksploruj interaktywne środowisko testowe:
- Przeglądaj dostępne narzędzia
- Testuj wykonywanie narzędzi
- Monitoruj żądania sieciowe
- Debuguj odpowiedzi serwera
🎯 Kluczowe rezultaty nauki
Po ukończeniu tego laboratorium:
- Utworzyłeś niestandardowy serwer MCP korzystając z szablonów Microsoft Foundry Toolkit
- Zaktualizowałeś do najnowszego SDK MCP (wersja 1.9.3) dla rozszerzonej funkcjonalności
- Skonfigurowałeś profesjonalne przepływy debugowania dla Agent Builder i Inspector
- Skonfigurowałeś MCP Inspector dla interaktywnego testowania serwera
- Opanowałeś konfigurację debugowania w VS Code do rozwoju MCP
🔧 Zaawansowane funkcje, które omówiono
| Funkcja | Opis | Przypadek użycia |
|---|---|---|
| MCP Python SDK v1.9.3 | Najnowsza implementacja protokołu | Nowoczesny rozwój serwerów |
| MCP Inspector 0.14.0 | Narzędzie do interaktywnego debugowania | Testowanie serwera w czasie rzeczywistym |
| Debugowanie VS Code | Zintegrowane środowisko programistyczne | Profesjonalne przepływy debugowania |
| Integracja z Agent Builder | Bezpośrednie połączenie z Microsoft Foundry Toolkit | Testowanie agenta end-to-end |
📚 Dodatkowe zasoby
- Dokumentacja MCP Python SDK
- Przewodnik po rozszerzeniu Microsoft Foundry Toolkit
- Dokumentacja debugowania w VS Code
- Specyfikacja Model Context Protocol
🎉 Gratulacje! Pomyślnie ukończyłeś Laboratorium 3 i teraz potrafisz tworzyć, debugować oraz wdrażać niestandardowe serwery MCP korzystając z profesjonalnych przepływów rozwojowych.
🔜 Przejdź do następnego modułu
Gotowy, aby zastosować swoje umiejętności MCP w rzeczywistym środowisku rozwojowym? Przejdź do Moduł 4: Praktyczny rozwój MCP - niestandardowy serwer klonowania GitHub, gdzie:
- Zbudujesz produkcyjny serwer MCP automatyzujący operacje na repozytoriach GitHub
- Wdrożysz funkcjonalność klonowania repozytoriów GitHub przez MCP
- Zintegrujesz niestandardowe serwery MCP z VS Code i trybem agenta GitHub Copilot
- Przetestujesz i wdrożysz serwery MCP w środowiskach produkcyjnych
- Nauczysz się praktycznej automatyzacji przepływów pracy dla programistów
Zastrzeżenie: Niniejszy dokument został przetłumaczony za pomocą usługi tłumaczenia AI Co-op Translator. Choć dążymy do dokładności, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub niedokładności. Oryginalny dokument w jego języku źródłowym należy uznawać za autorytatywne źródło. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia.



