Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
[Ten temat pochodzi ze wstępnej wersji dokumentacji i może ulec zmianie.]
W tym artykule wyjaśniono, jak używać narzędzi do generowania kodu AI, takich jak GitHub Copilot CLI lub Claude Code, aby wygenerować aplikacje interaktywnego protokołu kontekstu modelu (MCP) dla opartych na modelu narzędziach MCP w usłudze Power Apps. Aplikacje MCP to samodzielne pliki HTML, które wizualnie prezentują dane wyjściowe JSON narzędzia jako karty, wykresy, pulpity nawigacyjne lub mapy w dowolnym hoście zgodnym z aplikacjami MCP, w tym Microsoft 365 Copilot, Claude i Visual Studio Code.
Jeśli masz narzędzie MCP, które zwraca dane JSON, umiejętność generate-mcp-app-ui może utworzyć dopracowany widżet obsługujący motyw, który wyświetla te dane w kompaktowym formacie wizualnym bezpośrednio wewnątrz konwersacji czatu.
Important
- To jest funkcja w wersji zapoznawczej.
- Funkcje w wersji zapoznawczej nie są przeznaczone do użytku w środowiskach produkcyjnych i mogą mieć ograniczoną funkcjonalność. Te funkcje są udostępniane przed oficjalnym wydaniem, dzięki czemu klienci mogą szybciej uzyskać do nich dostęp i przekazać opinie na ich temat.
- Obsługa aplikacji MCP na platformie Microsoft 365 Copilot Chat jest ogólnie dostępna od marca 2026 r. Obsługa aplikacji MCP w agentach deklaratywnych w usłudze Power Apps jest obecnie dostępna w publicznej wersji zapoznawczej. Aby zapoznać się z pełnym ogłoszeniem, zobacz Aplikacje MCP są teraz dostępne w aplikacji Copilot Chat.
Co można zrobić za pomocą umiejętności generate-mcp-app-ui
- Tworzenie widżetów wizualizacji dla dowolnego narzędzia MCP przez opisanie żądanych elementów i wklejanie danych wyjściowych JSON narzędzia.
- Wybierz odpowiednią wizualizację danych, taką jak wykresy trendów liczbowych, karty rekordów strukturalnych, tabele dla porównań, mapy współrzędnych itd.
- Obsługa motywów jasnych i ciemnych automatycznie za pomocą tokenów projektowych interfejsu użytkownika Fluent.
- Dodaj interakcyjność, aby widżety mogły ponownie wywołać narzędzie w czasie wykonywania (na przykład przycisk odświeżania).
- Udoskonalaj doświadczenie użytkownika w sposób iteracyjny, opisując zmiany w języku naturalnym. Na przykład "utwórz kompakt galerii", "dodaj wykres" lub "użyj układu karty".
Wymagania wstępne
Wymagania dotyczące oprogramowania
| Składnik | Minimalna wersja | Więcej informacji |
|---|---|---|
| GitHub Copilot CLI, Claude Code lub inne narzędzie generowania kodu | Latest | Claude Code, GitHub Copilot CLI |
| Nowoczesna przeglądarka | Dowolna | Podgląd wygenerowanych widżetów lokalnie |
Wymagania dodatkowe
- Narzędzie MCP zwracające dane wyjściowe JSON. Typ danych wyjściowych narzędzia musi być ustawiony na JSON.
- Działające połączenie internetowe. Widżety ładują Fluent UI i inne biblioteki z CDN w trakcie działania.
Instalowanie wtyczki
Uruchom następujące polecenie instalatora z narzędzia GitHub Copilot CLI lub Claude Code. Instalator automatycznie wykrywa dostępne narzędzia i instaluje wszystkie wtyczki platformy Power Platform, w tym generate-mcp-app-ui.
/plugin marketplace add microsoft/power-platform-skills
Aby zainstalować tylko funkcję widżetu aplikacji MCP:
/plugin install mcp-apps@power-platform-skills
Tip
Włącz automatyczną aktualizację, aby automatycznie otrzymywać aktualizacje umiejętności.
/plugin Użyj polecenia, przejdź do Marketplaces, wybierz marketplace i włącz automatyczną aktualizację.
Omówienie umiejętności
| Kwalifikacje | Polecenie | Description |
|---|---|---|
| Generator widżetów aplikacji MCP | /generate-mcp-app-ui |
Generowanie samodzielnego widżetu aplikacji MCP (pliku HTML) dla danych wyjściowych JSON narzędzia MCP |
Umiejętność jest również wyzwalana przez frazy języka naturalnego, takie jak "tworzenie widżetu", "tworzenie widżetu dla mojego narzędzia" lub "tworzenie aplikacji MCP".
Generowanie widżetu
Wykonaj następujące kroki, aby utworzyć nowy widżet dla narzędzia MCP.
Utwórz i przetestuj niestandardowe narzędzie w projektantach aplikacji opartych na modelu i skopiuj pełne dane wyjściowe JSON. Upewnij się, że typ danych wyjściowych narzędzia jest ustawiony na wartość JSON. Więcej informacji: Tworzenie narzędzi niestandardowych
Wywołaj umiejętności i opisz, co chcesz wyświetlić, wklejając dane wyjściowe JSON do konwersacji:
/generate-mcp-app-ui Visualizes flights using an animated arc map for routes and a synchronized Gantt timeline for departure and arrival schedules, enabling quick understanding of flight coverage, timing, and overlaps. Here's an example of the tool's output: {"flight_records":[{"Departure Time":"2024-07-02T05:00:00Z","Arrival Time":"2024-07-02T07:30:00Z","Flight Name":"Zava 1001","Status":"Active","Airport":"Seattle-Tacoma","Airport1":"Los Angeles Intl"},{"Departure Time":"2024-07-02T03:00:00Z","Arrival Time":"2024-07-02T10:00:00Z","Flight Name":"Zava 103","Status":"Active","Airport":"Seattle-Tacoma","Airport1":"Hartsfield-Jackson"}]}Przejrzyj wygenerowany plik HTML. Funkcja zapisuje samodzielny plik HTML, na przykład,
flight-map.htmldo katalogu roboczego.Podgląd w przeglądarce. Otwórz plik HTML lokalnie, ponieważ widżet ma opcję rezerwową do testowania. Jeśli brakuje osobnej wersji podglądu HTML, możesz poprosić agenta czatu o dodanie jej.
Iteruj. Opisz wszelkie zmiany bezpośrednio na czacie:
- "Utwórz mapę większą"
- „Dodaj etykietki narzędzi na wykresie”
- „Zmniejsz wysokość i dopasuj obraz do 250 pikseli z układem dynamicznym i bez pasków przewijania”
Uwaga / Notatka
Umiejętność wymaga rzeczywistych danych JSON z narzędzia — a nie przykładowych lub symulowanych danych. Kształt danych napędza generowanie widżetu. Jeśli wklejasz pozorne dane, wygenerowany widżet może nie działać poprawnie po nawiązaniu połączenia z rzeczywistym narzędziem.
Wdrażanie widżetu
Gdy widżet będzie gotowy, skopiuj plik HTML do wejścia UX odpowiedniego narzędzia, a zostanie on zwrócony jako odpowiedź tego narzędzia w interfejsie użytkownika. Aby uzyskać szczegółowe informacje, zapoznaj się z dokumentacją tworzenia narzędzi niestandardowych .
Dodawanie interakcyjności za pomocą narzędzia callServerTool
Jeśli podasz również nazwę narzędzia podczas wywoływania umiejętności, wygenerowany widżet może zawierać interaktywną integrację wywołań narzędzi. Dzięki temu widżet może ponownie wywołać narzędzie w czasie wykonywania. Na przykład przycisk odświeżania w interfejsie użytkownika narzędzia może wywołać sam siebie.
/generate-mcp-app-ui Show the current weather conditions with a refresh button. Tool name: get_weather. Tool output: {"city":"Seattle","temp_f":54,"condition":"Overcast","humidity":78,"forecast":[...]}
Umiejętność uruchamiania app.callServerTool w widżecie, aby po wybraniu przez użytkowników opcji Odśwież widżet pobrał zaktualizowane dane bezpośrednio z Twojego narzędzia.
Jeśli nie podasz nazwy narzędzia, widżet jest tylko do odczytu i renderuje tylko dane dostarczane za pośrednictwem wywołania zwrotnego ontoolresult .
- Microsoft 365 Copilot Chat: zobacz Aplikacje MCP w Copilot Chat, aby poznać ścieżki wdrożenia, w tym ręczne ładowanie do testowania, wdrażanie przez centrum administracyjne Microsoft 365 do użytku w organizacji oraz publikowanie w sklepie z agentami Microsoft 365.
- Agenci deklaratywne usługi Power Apps: zobacz dokumentację agenta deklaratywnego MCP usługi Power Apps , aby dowiedzieć się, jak połączyć narzędzia MCP z aplikacjami opartymi na modelu.
- Inne hosty MCP: zapoznaj się z dokumentacją hosta dotyczącą procesu rejestracji widżetu aplikacji MCP.
Szczegóły techniczne widżetu
Protokół aplikacji MCP
Widżety komunikują się z hostem czatu przy użyciu App klasy z @modelcontextprotocol/ext-apps pakietu. Protokół zarządza tymi wywołaniami zwrotnymi i metodami.
| Wywołanie zwrotne/metoda | Description |
|---|---|
app.ontoolresult |
Uruchamia się, gdy host dostarcza dane narzędzi.
Twoje dane są zawsze na result.structuredContent— nie na result.data ani na result samym. |
app.onhostcontextchanged |
Uruchamia się, gdy kontekst hosta ulegnie zmianie, w tym motyw (ctx.theme to 'light' lub 'dark'). |
app.onteardown |
Uruchamia się po usunięciu widżetu z konwersacji. |
app.connect() |
Ustanawia komunikację z hostem. Wszystkie programy obsługi zdarzeń muszą być zarejestrowane przed wywołaniem metody connect(). |
app.getHostContext() |
Zwraca bieżący kontekst hosta, w tym motyw początkowy, po zakończeniu connect(). |
app.callServerTool({ name, arguments }) |
Wywołuje narzędzie interaktywnie. Zwraca wartości result.isError i result.structuredContent. |
Importowanie sieci CDN
Widżety ładują wszystkie zależności z usługi CDN. Nie jest wymagany żaden krok kompilacji ani instalacja lokalna. Zależności mają dwa formaty:
Moduły ECMAScript (ESM) — importowane wewnątrz
<script type="module">przy użyciu adresu URL kończącego się na/+esmUniversal Module Definition (UMD) — ładowana za pośrednictwem zwykłego
<script src>tagu; rejestruje się globalnie jako efekt ubocznyBiblioteka Forma adres URL Przeznaczenie @modelcontextprotocol/ext-appsESM cdn.jsdelivr.net/npm/@modelcontextprotocol/ext-apps/+esmKlasa aplikacji AppMCP@fluentui/tokensESM cdn.jsdelivr.net/npm/@fluentui/tokens/+esmwebLightTheme/webDarkThemezestawy tokenów@fluentui/web-components@betaUMD (Uniwersalny Dysk Multimedialny) unpkg.com/@fluentui/web-components@beta/dist/web-components.min.jsElementy niestandardowe interfejsu użytkownika Fluent
Stany wizualne
Każdy widżet obsługuje trzy stany:
| Stan | Wskazówki |
|---|---|
| Ładowanie | Pokaż element <fluent-spinner> z kontekstowym komunikatem („Znajdowanie atrakcji...”, a nie tylko „Trwa ładowanie...”). |
| Załadowano | Renderuj zawartość kompaktowo. Użyj pełnej dostępnej szerokości. |
| Błąd | Pokaż przyjazny komunikat i przycisk "Spróbuj ponownie". Jeśli widżet używa callServerToolelementu , przycisk ponownie wywołuje narzędzie. |
Składniki interfejsu użytkownika Fluent
Następujące składniki internetowe interfejsu użytkownika Fluent są dostępne w widżetach:
<fluent-card>, <fluent-button>, <fluent-text-input>, <fluent-textarea>, <fluent-dropdown>, <fluent-listbox>, <fluent-option>, <fluent-checkbox>, <fluent-spinner>, <fluent-divider>, <fluent-badge>, <fluent-switch>, <fluent-tooltip>
Obsługa motywów
Widżety obsługują motywy jasne i ciemne za pomocą tokenów projektowych interfejsu użytkownika Fluent. Widżet stosuje prawidłowe wartości tokenu, gdy motyw hosta zmieni się za pośrednictwem elementu onhostcontextchanged. Zawsze używaj zmiennych tokenu, na przykład , var(--colorNeutralForeground1)a nie zakodowanych na stałe wartości kolorów, aby zapewnić poprawne renderowanie w obu motywach.
Tokeny kolorów
| Używanie | Token |
|---|---|
| Tekst podstawowy | var(--colorNeutralForeground1) |
| Tekst pomocniczy | var(--colorNeutralForeground2) |
| Podstawowe tło | var(--colorNeutralBackground1) |
| Tło karty/po najechaniu kursorem | var(--colorNeutralBackground2) |
| Znak/akcent | var(--colorBrandBackground) |
| Tekst na powierzchni marki | var(--colorNeutralForegroundOnBrand) |
| Granice | var(--colorNeutralStroke1) |
| Tekst błędu | var(--colorStatusDangerForeground1) |
| Tekst pomyślności | var(--colorStatusSuccessForeground1) |
Nigdy nie używaj na sztywno zakodowanych wartości szesnastkowych lub RGB. Nie wymyślaj nazw tokenów, które nie są wymienione tutaj.
Najlepsze praktyki
- Podaj rzeczywiste dane testowe. Umiejętność analizuje rzeczywistą strukturę JSON, aby wybrać odpowiednią wizualizację. Dane testowe generują widżety, które zawodzą przy połączeniu z rzeczywistym narzędziem.
- Należy być precyzyjnym odnośnie elementów wizualnych. Opisz żądany format, taki jak mapa, wykres, tabela lub układ karty. Niejasne opisy prowadzą do ogólnych wyników.
- Zacznij od jednego widoku. Widżety to kompaktowe karty konwersacji, a nie pełne aplikacje. Brak kart, nawigacji stron ani pasków wyszukiwania, które duplikują dane wejściowe czatu.
- Przetestuj oba motywy. Podgląd w trybie jasnym i ciemnym w celu zweryfikowania kontrastu i czytelności.
- Dopasuj wizualizację do danych. Mapy dla współrzędnych, wykresy dla danych liczbowych lub trendów, karty zapisów strukturalnych, tabele dla porównań.
Ograniczenia
- Widżety muszą ładować wszystkie biblioteki zewnętrzne z usługi CDN. Połączenie internetowe jest wymagane w czasie wykonywania.
- Tryb wyświetlania pełnoekranowego wymaga dodatkowej implementacji poza tym, co generuje umiejętność.
- Ta umiejętność nie obsługuje rejestracji ani wdrażania serwera MCP w centrum administracyjnym platformy Microsoft 365. Należy wykonać te kroki oddzielnie.
- Uwierzytelnianie (OAuth 2.1, Microsoft Entra SSO) jest obsługiwane przez środowisko hosta MCP, a nie sam kod HTML widżetu.
Powiązana dokumentacja
Dokumentacja dla deweloperów platformy Microsoft 365
- Aplikacje MCP są teraz dostępne w aplikacji Copilot Chat
- Zestaw narzędzi agentów platformy Microsoft 365
Dokumentacja platformy Power Platform
- Twórz i edytuj strony generatywne za pomocą narzędzi do generowania kodu opartego na sztucznej inteligencji
- Dokumentacja Power Platform CLI