Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticide, Model Bağlam Protokolü (MCP) aracılığıyla Spring Boot web uygulamasının işlevselliğini kullanıma sunma, GitHub Copilot'a araç olarak ekleme ve Copilot Sohbet aracı modunda doğal dil kullanarak uygulamanızla etkileşim kurma hakkında bilgi edineceksiniz.
Web uygulamanızın alışveriş, otel rezervasyonu veya veri yönetimi gibi yararlı özellikleri zaten varsa, bu özellikleri şu özellikler için kullanılabilir hale getirmek kolaydır:
- Visual Studio Code'da veya GitHub Codespaces'ta GitHub Copilot Sohbet aracısı modu gibi MCP tümleştirmesini destekleyen tüm uygulamalar.
- MCP istemcisi kullanarak uzak araçlara erişen özel bir aracı.
Web uygulamanıza bir MCP sunucusu ekleyerek, bir aracının kullanıcı istemlerine yanıt verirken uygulamanızın özelliklerini anlamasını ve kullanmasını sağlarsınız. Bu, uygulamanızın yapabileceği her şeyi aracın da yapabileceği anlamına gelir.
- Web uygulamanıza bir MCP sunucusu ekleyin.
- MCP sunucusunu GitHub Copilot Sohbet aracı modunda yerel olarak test edin.
- MCP sunucusunu Azure App Service'e dağıtın ve GitHub Copilot Sohbeti'nde bu sunucuya bağlanın.
Prerequisites
Bu öğretici, Tutorial: Linux ve Azure Cosmos DB üzerinde Azure App Service ile Java Spring Boot web uygulaması derleme bölümünde kullanılan örnekle çalıştığınızı varsayar.
En azından GitHub Codespaces'ta örnek uygulamayı açın ve komutunu çalıştırarak azd upuygulamayı dağıtın.
Web uygulamanıza MCP sunucusu ekleme
kod alanında pom.xml açın ve paketi projenize ekleyin
spring-ai-starter-mcp-server-webmvc:<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-mcp-server-webmvc</artifactId> <version>1.0.0</version> </dependency>src/main/java/com/microsoft/azure/appservice/examples/springbootmongodb/TodoApplication.java dosyasını açın. Senaryonun basitliği için tüm MCP sunucu kodunuzu buraya ekleyeceksiniz.
TodoApplication.java sonuna aşağıdaki sınıfı ekleyin.
@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"; } }Yukarıdaki kod, aşağıdaki belirli öznitelikleri kullanarak Spring AI için araçlar sağlar:
-
@Service: Spring tarafından yönetilen bir hizmet olarak işaretlerTodoListToolService. -
@Tool: Spring AI'da bir yöntemi çağrılabilen bir araç olarak işaretler. -
description: Bunlar her araç için insan tarafından okunabilen açıklamalar sağlar. Çağrı temsilcisinin aracın nasıl kullanılacağını anlamasına yardımcı olur.
Bu kod, var olan src/main/java/com/microsoft/azure/appservice/examples/springbootmongodb/controller/TodoListController.java işlevlerini yinelediğinden, bu gerekli değildir, ancak kolaylık sağlamak için bu işlevi kullanacaksınız. En iyi uygulama, uygulama mantığını bir hizmet sınıfına taşımak ve ardından hizmet yöntemlerini hem
TodoListControllerhem deTodoListToolServiceöğelerinden çağırmaktır.-
TodoApplication.java aşağıdaki yöntemi sınıfına
TodoApplicationekleyin.@Bean public ToolCallbackProvider todoTools(TodoListToolService todoListToolService) { return MethodToolCallbackProvider.builder().toolObjects(todoListToolService).build(); }Bu yöntem, Spring AI için
TodoListToolServiceiçindeki araçları geri çağırma işlevleri olarak sağlar. Varsayılan olarak,spring-ai-starter-mcp-server-webmvcpaketindeki MCP Sunucusu'nun otomatik yapılandırması, bu araç geri çağrımlarını otomatik olarak bağlar. Ayrıca, varsayılan olarak MCP Sunucusu uç noktasıdır<base-url>/sse.TodoApplication.java en üstüne aşağıdaki içeri aktarmaları ekleyin.
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;
MCP sunucusunu yerel olarak test edin
Codespace terminalinde, uygulamayı
mvn spring-boot:runile çalıştırın.Tarayıcıda Aç'ı seçin ve bir görev ekleyin.
Spring Boot'u çalışır durumda bırak. MCP sunucu uç noktanız şu anda çalışmakta
http://localhost:8080/sse.Codespace'a geri dönün, Copilot Sohbeti'ni açın ve ardından istem kutusunda Aracı modu'nu seçin.
Araçlar düğmesini ve ardından açılan listeden Daha Fazla Araç Ekle... öğesini seçin.
MCP Sunucusu Ekle'yi seçin.
HTTP (HTTP veya Server-Sent Olayları) öğesini seçin.
Sunucu URL'sini Girin alanına yazınhttp://localhost:8080/sse.
Sunucu Kimliğini Girin alanına todos-mcp veya istediğiniz adı yazın.
Çalışma Alanı Ayarları'nı seçin.
Yeni bir Copilot Sohbet penceresine "Yapılacakları göster" gibi bir ifade yazın.
Varsayılan olarak, Bir MCP sunucusunu çağırdığınızda GitHub Copilot size bir güvenlik onayı gösterir. Devamtuşuna basın.
Şimdi MCP araç çağrısının başarılı olduğunu belirten bir yanıt görmeniz gerekir.
MCP sunucunuzu App Service'e dağıtma
Kod alanı terminaline geri dönerek, değişikliklerinizi işleyerek (GitHub Actions yöntemi) veya
azd upkomutunu çalıştırarak (Azure Geliştirici CLI yöntemi) değişikliklerinizi dağıtın.AZD çıkışında uygulamanızın URL'sini bulun. AZD çıktısındaki URL şöyle görünür:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <app-url>
İşlem tamamlandıktan sonra
azd up.vscode/mcp.jsondosyasını açın. URL'yi<app-url>/sseolarak değiştirin.Değiştirilen MCP sunucu yapılandırmanızın üst kısmındaki Başlat'ı seçin.
Yeni bir GitHub Copilot Sohbet penceresi başlatın. Copilot aracısında görevleri görüntüleyebilmeniz, oluşturabilmeniz, güncelleştirebilmeniz ve silebilmeniz gerekir.
En iyi güvenlik uygulamaları
MCP sunucunuz, büyük dil modelleri (LLM) tarafından desteklenen bir aracı tarafından çağrıldığında, prompt ekleme saldırılarına dikkat edin. Aşağıdaki en iyi güvenlik uygulamalarını göz önünde bulundurun:
- Kimlik Doğrulaması ve Yetkilendirme: Araçlarınıza yalnızca yetkili kullanıcıların veya aracıların erişebildiğinden emin olmak için MCP sunucunuzun güvenliğini Microsoft Entra kimlik doğrulaması ile sağlayın. Adım adım kılavuz için bkz. Microsoft Entra kimlik doğrulaması ile Visual Studio Code'dan Azure App Service'e Güvenli Model Bağlam Protokolü çağrıları .
- Giriş Doğrulama ve Temizleme: Bu öğreticideki örnek kod, basitlik ve netlik için giriş doğrulama ve temizlemeyi atlar. Üretim senaryolarında, uygulamanızı korumak için her zaman doğru doğrulama ve temizleme uygulayın. Spring için bkz . Spring: Form Girişi Doğrulanıyor.
- HTTPS: Örnek, varsayılan olarak HTTPS'yi zorlayan ve aktarımdaki verileri şifrelemek için ücretsiz TLS/SSL sertifikaları sağlayan Azure App Service'e dayanır.
- En Az Ayrıcalık İlkesi: Yalnızca kullanım örneğininiz için gerekli araçları ve verileri kullanıma sunma. Gerekli olmadıkça hassas işlemleri ortaya çıkarmaktan kaçının.
- Hız Sınırlama ve Azaltma: Kötüye kullanım ve hizmet reddi saldırılarını önlemek için API Management veya özel ara yazılım kullanın.
- Günlük ve İzleme: Denetim ve anomali algılama için MCP uç noktalarının günlük erişimi ve kullanımı. Şüpheli etkinliği izleyin.
- CORS Yapılandırması: MCP sunucunuza tarayıcılardan erişiliyorsa, çapraz kökenli istekleri güvenilen etki alanlarıyla kısıtlayın. Daha fazla bilgi için bkz. CORS'yi etkinleştirme.
- Düzenli Güncelleştirmeler: Bilinen güvenlik açıklarını azaltmak için bağımlılıklarınızı güncel tutun.