Files

🔧 Module 3: Phát Triển MCP Nâng Cao với Microsoft Foundry Toolkit

Duration Microsoft Foundry Toolkit Python MCP SDK Inspector

🎯 Mục Tiêu Học Tập

Sau khi hoàn thành phòng thí nghiệm này, bạn sẽ có thể:

  • Tạo máy chủ MCP tùy chỉnh bằng Microsoft Foundry Toolkit
  • Cấu hình và sử dụng MCP Python SDK mới nhất (v1.9.3)
  • Thiết lập và sử dụng MCP Inspector để gỡ lỗi
  • Gỡ lỗi máy chủ MCP trong cả môi trường Agent Builder và Inspector
  • Hiểu các quy trình phát triển máy chủ MCP nâng cao

📋 Yêu Cầu Tiên Quyết

  • Hoàn thành Phòng thí nghiệm 2 (Kiến thức cơ bản về MCP)
  • VS Code đã cài tiện ích mở rộng Microsoft Foundry Toolkit
  • Môi trường Python 3.10+
  • Node.js và npm để cài đặt Inspector

🏗️ Bạn Sẽ Xây Dựng Gì

Trong bài lab này, bạn sẽ tạo một Weather MCP Server minh họa:

  • Triển khai máy chủ MCP tùy chỉnh
  • Tích hợp với Microsoft Foundry Toolkit Agent Builder
  • Quy trình gỡ lỗi chuyên nghiệp
  • Mẫu sử dụng MCP SDK hiện đại

🔧 Tổng Quan Các Thành Phần Chính

🐍 MCP Python SDK

Bộ SDK Protocol Ngữ cảnh Mô hình (Model Context Protocol) Python cung cấp nền tảng để xây dựng máy chủ MCP tùy chỉnh. Bạn sẽ sử dụng phiên bản 1.9.3 với khả năng gỡ lỗi nâng cao.

🔍 MCP Inspector

Một công cụ gỡ lỗi mạnh mẽ cung cấp:

  • Giám sát máy chủ theo thời gian thực
  • Hiển thị việc thực thi công cụ
  • Kiểm tra các yêu cầu/phản hồi mạng
  • Môi trường thử nghiệm tương tác

📖 Triển Khai Từng Bước

Bước 1: Tạo WeatherAgent trong Agent Builder

  1. Khởi chạy Agent Builder trong VS Code qua tiện ích Microsoft Foundry Toolkit
  2. Tạo một agent mới với cấu hình sau:
    • Tên Agent: WeatherAgent

Agent Creation

Bước 2: Khởi Tạo Dự Án MCP Server

  1. Đi tới ToolsAdd Tool trong Agent Builder
  2. Chọn "MCP Server" từ các tùy chọn có sẵn
  3. Chọn "Create A new MCP Server"
  4. Chọn mẫu python-weather
  5. Đặt tên máy chủ: weather_mcp

Python Template Selection

Bước 3: Mở và Kiểm Tra Dự Án

  1. Mở dự án được tạo trong VS Code
  2. Xem xét cấu trúc dự án:
    weather_mcp/
    ├── src/
    │   ├── __init__.py
    │   └── server.py
    ├── inspector/
    │   ├── package.json
    │   └── package-lock.json
    ├── .vscode/
    │   ├── launch.json
    │   └── tasks.json
    ├── pyproject.toml
    └── README.md
    

Bước 4: Nâng Cấp Lên MCP SDK Mới Nhất

🔍 Tại sao cần nâng cấp? Chúng ta muốn sử dụng MCP SDK mới nhất (v1.9.3) và dịch vụ Inspector (0.14.0) để có các tính năng nâng cao và cải thiện khả năng gỡ lỗi.

4a. Cập nhật các phụ thuộc Python

Chỉnh sửa pyproject.toml: cập nhật ./code/weather_mcp/pyproject.toml

4b. Cập nhật cấu hình Inspector

Chỉnh sửa inspector/package.json: cập nhật ./code/weather_mcp/inspector/package.json

4c. Cập nhật các phụ thuộc Inspector

Chỉnh sửa inspector/package-lock.json: cập nhật ./code/weather_mcp/inspector/package-lock.json

📝 Lưu ý: Tệp này chứa định nghĩa phụ thuộc chi tiết. Dưới đây là cấu trúc thiết yếu - nội dung đầy đủ đảm bảo giải quyết phụ thuộc chính xác.

Gói Khóa Đầy Đủ: File package-lock.json đầy đủ có khoảng ~3000 dòng định nghĩa phụ thuộc. Phần trên trình bày cấu trúc chính - hãy dùng file đi kèm để đảm bảo giải quyết phụ thuộc đầy đủ.

Bước 5: Cấu Hình Gỡ Lỗi VS Code

Lưu ý: Vui lòng sao chép file trong đường dẫn được chỉ định để thay thế file cục bộ tương ứng

5a. Cập nhật cấu hình khởi chạy

Chỉnh sửa .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
    }
  ]
}

Chỉnh sửa .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"
    }
  ]
}

🚀 Chạy và Kiểm Tra Máy Chủ MCP Của Bạn

Bước 6: Cài Đặt Phụ Thuộc

Sau khi thực hiện các thay đổi cấu hình, chạy các lệnh sau:

Cài đặt phụ thuộc Python:

uv sync

Cài đặt phụ thuộc Inspector:

cd inspector
npm install

Bước 7: Gỡ Lỗi với Agent Builder

  1. Nhấn F5 hoặc sử dụng cấu hình "Debug in Agent Builder"
  2. Chọn cấu hình compound trong bảng điều khiển gỡ lỗi
  3. Chờ máy chủ khởi động và Agent Builder mở ra
  4. Kiểm tra máy chủ weather MCP với các câu hỏi ngôn ngữ tự nhiên

Nhập lời nhắc như sau

SYSTEM_PROMPT

You are my weather assistant

USER_PROMPT

How's the weather like in Seattle

Agent Builder Debug Result

Bước 8: Gỡ Lỗi với MCP Inspector

  1. Sử dụng cấu hình "Debug in Inspector" (Edge hoặc Chrome)
  2. Mở giao diện Inspector tại http://localhost:6274
  3. Khám phá môi trường thử nghiệm tương tác:
    • Xem các công cụ có sẵn
    • Thử nghiệm thực thi công cụ
    • Giám sát các yêu cầu mạng
    • Gỡ lỗi các phản hồi từ máy chủ

MCP Inspector Interface


🎯 Kết Quả Học Tập Chính

Sau khi hoàn thành phòng thí nghiệm này, bạn đã:

  • Tạo máy chủ MCP tùy chỉnh bằng cách sử dụng mẫu Microsoft Foundry Toolkit
  • Nâng cấp lên MCP SDK mới nhất (v1.9.3) để có tính năng cải tiến
  • Cấu hình quy trình gỡ lỗi chuyên nghiệp cho cả Agent Builder và Inspector
  • Thiết lập MCP Inspector để thử nghiệm máy chủ tương tác
  • Thành thạo cấu hình gỡ lỗi VS Code cho phát triển MCP

🔧 Tính Năng Nâng Cao Đã Khám Phá

Tính Năng Mô Tả Trường Hợp Sử Dụng
MCP Python SDK v1.9.3 Triển khai giao thức mới nhất Phát triển máy chủ hiện đại
MCP Inspector 0.14.0 Công cụ gỡ lỗi tương tác Thử nghiệm máy chủ theo thời gian thực
Gỡ Lỗi VS Code Môi trường phát triển tích hợp Quy trình gỡ lỗi chuyên nghiệp
Tích Hợp Agent Builder Kết nối trực tiếp với Microsoft Foundry Toolkit Thử nghiệm agent đầu-cuối

📚 Tài Nguyên Bổ Sung


🎉 Chúc mừng! Bạn đã hoàn thành thành công Lab 3 và có thể tạo, gỡ lỗi, triển khai máy chủ MCP tùy chỉnh sử dụng quy trình phát triển chuyên nghiệp.

🔜 Tiếp tục sang Module tiếp theo

Sẵn sàng áp dụng kỹ năng MCP vào quy trình phát triển thực tế? Tiếp tục đến Module 4: Phát Triển MCP Thực Tiễn - Máy Chủ Nhân Bản GitHub Tùy Chỉnh nơi bạn sẽ:

  • Xây dựng máy chủ MCP sẵn sàng cho sản xuất tự động hóa thao tác kho GitHub
  • Triển khai chức năng nhân bản kho GitHub qua MCP
  • Tích hợp máy chủ MCP tùy chỉnh với VS Code và Chế Độ Agent GitHub Copilot
  • Thử nghiệm và triển khai máy chủ MCP tùy chỉnh trong môi trường sản xuất
  • Học cách tự động hóa quy trình thực tế cho nhà phát triển

Tuyên bố miễn trừ trách nhiệm: Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI Co-op Translator. Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng bản dịch tự động có thể chứa lỗi hoặc sai sót. Tài liệu gốc bằng ngôn ngữ gốc nên được coi là nguồn tin chính thức. Đối với thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm về bất kỳ hiểu lầm hoặc giải thích sai nào phát sinh từ việc sử dụng bản dịch này.