Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie leert u hoe u de functionaliteit van een Spring Boot-web-app beschikbaar maakt via Model Context Protocol (MCP), deze toevoegt als een hulpprogramma aan GitHub Copilot en hoe u met uw app communiceert met behulp van natuurlijke taal in de copilot Chat-agentmodus.
Als uw webtoepassing al nuttige functies heeft, zoals winkelen, hotelreservering of gegevensbeheer, kunt u deze mogelijkheden eenvoudig beschikbaar maken voor:
- Elke toepassing die ondersteuning biedt voor MCP-integratie, zoals de GitHub Copilot Chat-agentmodus in Visual Studio Code of in GitHub Codespaces.
- Een aangepaste agent die externe hulpprogramma's opent met behulp van een MCP-client.
Door een MCP-server toe te voegen aan uw web-app, stelt u een agent in staat om de mogelijkheden van uw app te begrijpen en te gebruiken wanneer deze reageert op gebruikersprompts. Dit betekent dat alles wat uw app kan doen, de agent ook kan doen.
- Voeg een MCP-server toe aan uw web-app.
- Test de MCP-server lokaal in de GitHub Copilot Chat-agentmodus.
- Implementeer de MCP-server in Azure App Service en maak er verbinding mee in GitHub Copilot Chat.
Prerequisites
In deze zelfstudie wordt ervan uitgegaan dat u met het voorbeeld werkt dat in zelfstudie wordt gebruikt : Een Java Spring Boot-web-app bouwen met Azure App Service op Linux en Azure Cosmos DB.
Open minimaal de voorbeeldtoepassing in GitHub Codespaces en implementeer de app door deze uit te voeren azd up.
MCP-server toevoegen aan uw web-app
Open in de codespace pom.xml en voeg het
spring-ai-starter-mcp-server-webmvcpakket toe aan uw project:<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-mcp-server-webmvc</artifactId> <version>1.0.0</version> </dependency>Open src/main/java/com/microsoft/azure/appservice/examples/springbootmongodb/TodoApplication.java. Voor het gemak van het scenario voegt u hier al uw MCP-servercode toe.
Voeg aan het einde van TodoApplication.java de volgende klasse toe.
@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"; } }De bovenstaande code maakt hulpprogramma's beschikbaar voor Spring AI met behulp van de volgende specifieke kenmerken:
-
@Service: MarkeertTodoListToolServiceals een door Spring beheerde service. -
@Tool: Markeert een methode als een aanroepbaar hulpprogramma in Spring AI. -
description: Deze bieden leesbare beschrijvingen voor elk hulpmiddel. Het helpt de aanroepende agent te begrijpen hoe u het hulpprogramma gebruikt.
Deze code dupliceert de functionaliteit van de bestaande src/main/java/com/microsoft/azure/appservice/examples/springbootmongodb/controller/TodoListController.java, wat niet nodig is, maar u behoudt deze voor het gemak. Een goede praktijk is om de app-logica te verplaatsen naar een serviceklasse en vervolgens de servicemethoden zowel vanaf
TodoListControllerals vanafTodoListToolServiceaan te roepen.-
Voeg in TodoApplication.java de volgende methode toe aan de
TodoApplicationklasse.@Bean public ToolCallbackProvider todoTools(TodoListToolService todoListToolService) { return MethodToolCallbackProvider.builder().toolObjects(todoListToolService).build(); }Deze methode biedt de hulpprogramma's in
TodoListToolServiceals callbacks voor Spring AI aan. Standaard configureert de MCP Server in hetspring-ai-starter-mcp-server-webmvc-pakket automatisch deze tool-callbacks. Standaard is het MCP-servereindpunt ook<base-url>/sse.Voeg bovenaan TodoApplication.java de volgende importbewerkingen toe.
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;
De MCP-server lokaal testen
Voer in de codespace-terminal de toepassing uit met
mvn spring-boot:run.Selecteer Openen in browser en voeg vervolgens een taak toe.
Laat Spring Boot draaiend. Uw MCP-servereindpunt draait nu bij
http://localhost:8080/sse.Open Copilot Chat in de coderuimte en selecteer vervolgens de agentmodus in het promptvak.
Selecteer de knop Hulpmiddelen en selecteer Meer hulpprogramma's toevoegen... in de vervolgkeuzelijst.
Selecteer MCP-server toevoegen.
Selecteer HTTP (HTTP of Server-Sent-gebeurtenissen).
In Voer Server-URL in typt u http://localhost:8080/sse.
Typ in Enter Server IDtodos-mcp of een willekeurige naam die u wilt.
Selecteer Werkruimte-instellingen.
Typ in een nieuw Copilot Chat-venster iets als 'Toon me de todos'.
GitHub Copilot toont standaard een beveiligingsbevestiging wanneer u een MCP-server aanroept. Klik op Doorgaan.
U ziet nu een antwoord dat aangeeft dat de MCP-hulpprogramma-aanroep is geslaagd.
Uw MCP-server implementeren in App Service
Implementeer uw wijzigingen in de codespace-terminal door uw wijzigingen door te voeren (GitHub Actions-methode) of door deze uit te voeren
azd up(Azure Developer CLI-methode).Zoek in de AZD-uitvoer de URL van uw app. De URL ziet er in de AZD-uitvoer zo uit:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <app-url>
Zodra
azd upis voltooid, open .vscode/mcp.json. Wijzig de URL in<app-url>/sse.Selecteer Start boven de gewijzigde MCP-serverconfiguratie.
Start een nieuw GitHub Copilot Chat-venster. U moet taken in de Copilot-agent kunnen weergeven, maken, bijwerken en verwijderen.
Aanbevolen procedures voor beveiliging
Wanneer uw MCP-server wordt aangeroepen door een agent die wordt aangedreven door grote taalmodellen (LLM), moet u rekening houden met promptinjectieaanvallen . Houd rekening met de volgende aanbevolen beveiligingsprocedures:
- Verificatie en autorisatie: beveilig uw MCP-server met Microsoft Entra-verificatie om ervoor te zorgen dat alleen geautoriseerde gebruikers of agents toegang hebben tot uw hulpprogramma's. Zie Secure Model Context Protocol-aanroepen naar Azure App Service vanuit Visual Studio Code met Microsoft Entra-verificatie voor een stapsgewijze handleiding.
- Invoervalidatie en opschoning: de voorbeeldcode in deze zelfstudie laat invoervalidatie en opschoning weg voor eenvoud en duidelijkheid. Implementeer in productiescenario's altijd de juiste validatie en opschoning om uw toepassing te beveiligen. Zie Spring: Validatie van formulierinvoer.
- HTTPS: Het voorbeeld is afhankelijk van Azure App Service, dat HTTPS standaard afdwingt en gratis TLS/SSL-certificaten biedt om gegevens tijdens overdracht te versleutelen.
- Principe van minimale bevoegdheden: alleen de benodigde hulpprogramma's en gegevens beschikbaar maken die nodig zijn voor uw use-case. Vermijd het blootstellen van gevoelige bewerkingen, tenzij dat nodig is.
- Snelheidsbeperking en beperking: gebruik API Management of aangepaste middleware om misbruik en denial-of-service-aanvallen te voorkomen.
- Logboekregistratie en bewaking: logboektoegang en gebruik van MCP-eindpunten voor controle en anomaliedetectie. Controleren op verdachte activiteiten.
- CORS-configuratie: grensoverschrijdende aanvragen beperken tot vertrouwde domeinen als uw MCP-server toegankelijk is vanuit browsers. Zie CORS inschakelen voor meer informatie.
- Regelmatige updates: houd uw afhankelijkheden up-to-date om bekende beveiligingsproblemen te beperken.