Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben az oktatóanyagban megtanulhatja, hogyan teheti elérhetővé egy Spring Boot-webalkalmazás funkcióit a Model Context Protocol (MCP) használatával, hogyan adhat hozzá eszközt a GitHub Copilothoz, és hogyan használhatja az alkalmazást természetes nyelven a Copilot Csevegőügynök módban.
Ha a webalkalmazás már rendelkezik olyan hasznos funkciókkal, mint a vásárlás, a szállodai foglalás vagy az adatkezelés, könnyen elérhetővé teheti ezeket a képességeket a következő célokra:
- Minden olyan alkalmazás, amely támogatja az MCP-integrációt, például a GitHub Copilot Csevegőügynök mód a Visual Studio Code-ban vagy a GitHub Codespacesben.
- Egy egyéni ügynök, amely egy MCP-ügyféllel fér hozzá a távoli eszközökhöz.
Ha mcp-kiszolgálót ad hozzá a webalkalmazáshoz, lehetővé teszi az ügynök számára az alkalmazás képességeinek megértését és használatát, amikor az válaszol a felhasználói kérésekre. Ez azt jelenti, hogy amit az alkalmazás meg tud tenni, azt az ügynök is meg tudja tenni.
- Adjon hozzá egy MCP-kiszolgálót a webalkalmazáshoz.
- Tesztelje az MCP-kiszolgálót helyileg a GitHub Copilot Csevegőügynök módban.
- Telepítse az MCP-kiszolgálót az Azure App Service-ben, és csatlakozzon hozzá a GitHub Copilot Chatben.
Prerequisites
Ez az oktatóanyag feltételezi, hogy az oktatóanyagban használt mintával dolgozik : Java Spring Boot-webalkalmazás létrehozása Linuxon és Azure Cosmos DB-n futó Azure App Service-lel.
Legalább nyissa meg a mintaalkalmazást a GitHub Codespacesben, és futtassa azd upaz alkalmazást.
MCP-kiszolgáló hozzáadása a webalkalmazáshoz
A kódtérben nyissa meg a pom.xml , és adja hozzá a
spring-ai-starter-mcp-server-webmvccsomagot a projekthez:<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-mcp-server-webmvc</artifactId> <version>1.0.0</version> </dependency>Nyissa meg az src/main/java/com/microsoft/azure/appservice/examples/springbootmongodb/TodoApplication.java. A forgatókönyv egyszerűsége érdekében itt adja hozzá az összes MCP-kiszolgálókódot.
A TodoApplication.java végén adja hozzá a következő osztályt.
@Service class TodoListToolService { private final TodoItemRepository todoItemRepository; public TodoListToolService(TodoItemRepository todoItemRepository) { this.todoItemRepository = todoItemRepository; } @Tool(description = "Get a todo item by its id") public Optional<TodoItem> getTodoItem(String id) { return todoItemRepository.findById(id); } @Tool(description = "Get all todo items") public List<TodoItem> getAllTodoItems() { return todoItemRepository.findAll(); } @Tool(description = "Add a new todo item") public String addNewTodoItem(String description, String owner) { TodoItem item = new TodoItem(UUID.randomUUID().toString(), description, owner); todoItemRepository.save(item); return "Todo item created"; } @Tool(description = "Update an existing todo item") public String updateTodoItem(String id, String description, String owner, boolean finished) { if (!todoItemRepository.existsById(id)) { return "Todo item not found"; } TodoItem item = new TodoItem(id, description, owner); item.setFinish(finished); todoItemRepository.save(item); return "Todo item updated"; } @Tool(description = "Delete a todo item by its id") public String deleteTodoItem(String id) { if (!todoItemRepository.existsById(id)) { return "Todo item not found"; } todoItemRepository.deleteById(id); return "Todo item deleted"; } }A fenti kód az alábbi attribútumokkal teszi elérhetővé az eszközöket a Spring AI-hez :
-
@Service: Spring által felügyelt szolgáltatásként jelöli megTodoListToolService. -
@Tool: Egy metódust hívható eszközként jelöl meg a Spring AI-ben. -
description: Ezek az egyes eszközökhöz emberi olvasásra alkalmas leírásokat nyújtanak. Segít a hívóügynöknek megérteni az eszköz használatát.
Ez a kód duplikálja a meglévő src/main/java/com/microsoft/azure/appservice/examples/springbootmongodb/controller/TodoListController.java funkcióit, ami szükségtelen, de az egyszerűség kedvéért megtartja. Az ajánlott eljárás az alkalmazáslogika áthelyezése egy szolgáltatásosztályba, majd a szolgáltatás metódusainak meghívása a
TodoListControllerés aTodoListToolServiceosztályokból.-
A TodoApplication.java adja hozzá a következő metódust az
TodoApplicationosztályhoz.@Bean public ToolCallbackProvider todoTools(TodoListToolService todoListToolService) { return MethodToolCallbackProvider.builder().toolObjects(todoListToolService).build(); }Ez a módszer eszközöket biztosít
TodoListToolServiceformájában, melyek visszahívásokként szolgálnak a Spring AI számára. Alapértelmezés szerint aspring-ai-starter-mcp-server-webmvccsomagban található MCP-kiszolgáló automatikus konfigurációja automatikusan összekapcsolja ezeket az eszköz-visszahívásokat. Emellett alapértelmezés szerint az MCP-kiszolgáló végpontja is<base-url>/sse.A TodoApplication.java tetején adja hozzá a következő importálásokat.
import java.util.List; import java.util.Optional; import java.util.UUID; import org.springframework.ai.tool.ToolCallbackProvider; import org.springframework.ai.tool.annotation.Tool; import org.springframework.ai.tool.method.MethodToolCallbackProvider; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; import com.microsoft.azure.appservice.examples.springbootmongodb.dao.TodoItemRepository; import com.microsoft.azure.appservice.examples.springbootmongodb.model.TodoItem;
Az MCP-kiszolgáló helyi tesztelése
A kódtér termináljában futtassa az alkalmazást a következővel
mvn spring-boot:run: .Válassza a Megnyitás böngészőben lehetőséget, majd adjon hozzá egy feladatot.
Hagyja tovább futni a Spring Bootot. Az MCP-kiszolgáló végpontja éppen
http://localhost:8080/ssefut.A kódtérben nyissa meg a Copilot-csevegést, majd válassza az Ügynök mód lehetőséget a parancssorban.
Válassza az Eszközök gombot, majd válassza a További eszközök hozzáadása... lehetőséget a legördülő menüben.
Válassza az MCP-kiszolgáló hozzáadása lehetőséget.
Válassza a HTTP (HTTP vagy Server-Sent események) lehetőséget.
A Server URL bevitele mezőbe írja be a http://localhost:8080/sse értéket.
Az Enter Server ID mezőbe írja bea todos-mcp nevet vagy a kívánt nevet.
Válassza a Munkaterület beállításai lehetőséget.
Egy új Copilot-csevegési ablakban írja be a következőt: "Mutasd meg a todos".
Alapértelmezés szerint a GitHub Copilot biztonsági megerősítést jelenít meg egy MCP-kiszolgáló meghívásakor. Válassza a Folytatáslehetőséget.
Ekkor megjelenik egy válasz, amely azt jelzi, hogy az MCP-eszköz hívása sikeres.
Az MCP-kiszolgáló üzembe helyezése az App Service-ben
A kódtér termináljába visszatérve telepítse a módosításokat a módosítások véglegesítésével (GitHub Actions metódus) vagy futtassa
azd up(Azure Developer CLI-metódus).Az AZD-kimenetben keresse meg az alkalmazás URL-címét. Az URL-cím így néz ki az AZD-kimenetben:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <app-url>
Miután
azd upbefejeződött, nyissa meg a .vscode/mcp.json. Módosítsa az URL-címet a következőre:<app-url>/sse.A módosított MCP-kiszolgáló konfigurációja felett válassza a Start lehetőséget.
Hozzon létre egy új GitHub Copilot-csevegőablakot. A Copilot-ügynökben meg kell tudnia tekinteni, létrehozni, frissíteni és törölni a feladatokat.
Ajánlott biztonsági eljárások
Ha az MCP-kiszolgálót nagy nyelvi modellekkel (LLM) rendelkező ügynök hívja meg, vegye figyelembe a gyors injektálási támadásokat. Vegye figyelembe az alábbi ajánlott biztonsági eljárásokat:
- Hitelesítés és engedélyezés: Az MCP-kiszolgáló védelme Microsoft Entra-hitelesítéssel annak biztosítása érdekében, hogy csak a jogosult felhasználók vagy ügynökök férhessenek hozzá az eszközeihez. Részletes útmutatót a Visual Studio Code-ból az Azure App Service-be irányuló Biztonságos modell környezeti protokoll hívásai a Microsoft Entra-hitelesítéssel című témakörben talál.
- Bemenet-ellenőrzés és -tisztítás: Az oktatóanyagban szereplő példakód kihagyja a bemeneti ellenőrzést és a tisztítást az egyszerűség és az egyértelműség érdekében. Éles helyzetekben mindig valósítsa meg a megfelelő ellenőrzést és tisztítást az alkalmazás védelme érdekében. A Spring esetében lásd a Spring: Validating Form Input (Űrlapbemenet érvényesítése) című témakört.
- HTTPS: A minta az Azure App Service-ra támaszkodik, amely alapértelmezés szerint kényszeríti a HTTPS-t, és ingyenes TLS-/SSL-tanúsítványokat biztosít az átvitel közbeni adatok titkosításához.
- Minimális jogosultság elve: Csak a használati esethez szükséges eszközöket és adatokat tegye elérhetővé. Ha szükséges, kerülje a bizalmas műveletek felfedését.
- Sebességkorlátozás és szabályozás: Az API Management vagy az egyéni köztes szoftver használata a visszaélések és a szolgáltatásmegtagadásos támadások megelőzésére.
- Naplózás és figyelés: Az MCP-végpontok naplóhozzáférése és használata naplózáshoz és anomáliadetektáláshoz. Gyanús tevékenységek figyelése.
- CORS-konfiguráció: Ha az MCP-kiszolgáló böngészőkből érhető el, korlátozza a forrásközi kérelmeket megbízható tartományokra. További információ: CORS engedélyezése.
- Rendszeres frissítések: A függőségek naprakészen tartása az ismert biztonsági rések csökkentése érdekében.