.NET ile MCP sunucusunda tek kullanımlık sipariş onayı
Martin Pisacreta, .NET 8 ile yazdığı küçük bir MCP sunucusunda sipariş iptal aracını model onayına bağlamadan, ayrı kaydedilmiş tek kullanımlık bir onay dosyasıyla koruyor. Yazı, yetkilendirmenin nerede başlayıp nerede bittiğini somut kod parçalarıyla gösteriyor.
Kilit noktalar
- cancel_order yalnızca orderId alır; modelin approved gibi bir parametresi ve onay oluşturan bir aracı yoktur.
- Onay dosyası yalnızca cancel_order eylemi ve tam sipariş kimliği için geçerlidir ve beş dakika sonra sona erer.
- Onay, doğrulamadan önce yeniden adlandırılarak talep edilir; böylece aynı izin iki kez kullanılamaz.
- Sunucuda stdout yalnızca MCP protokol mesajları için ayrılmıştır, loglar stderr'e yazılır.
- Onay dizini model tarafından yazılabilir alanın dışında tutulmalıdır; örnek işletim sistemi sınırı sağlamaz.
- Siparişler yeniden başlatmada sıfırlanır, kullanılmamış onay dosyaları kalabilir; yazar yeniden başlatmadan önce temizlemeyi öneriyor.
Yazar, sipariş okuyan bir MCP aracının kolay olduğunu, ancak iptal aracı eklenince asıl sorunun "değişikliği kim yetkilendirir" olduğunu anlatıyor. dotnet-mcp-orders-server adlı proje, sahte siparişler üzerinde list_orders, get_order ve cancel_order araçlarını stdio üzerinden sunuyor. cancel_order yalnızca sipariş kimliği alıyor; model onay oluşturamıyor. Onay, bir operatörün ayrı bir komutla yazdığı ve yalnızca belirli bir sipariş için, beş dakika geçerli olan bir JSON dosyası.
Sunucu onayı kullanmadan önce dosyayı benzersiz bir adla yeniden adlandırarak talep ediyor; böylece iki çağrının aynı izni kullanması engelleniyor. Eylem, sipariş kimliği ve süre doğrulanıyor, sonra dosya siliniyor. Sipariş durumu kilit altında kontrol ediliyor. Testler doğrudan araç sınıfına karşı çalışıyor, bir Claude oturumu içermiyor. Yazar, üretim için kalıcı durum, kimlik doğrulamalı onay ve denetim kaydının gerekeceğini belirtiyor.
Gerçek dünyada kullanımı
- Müşteri destek ajanının sipariş sorgulayabildiği ama iptali yalnızca operatör onayıyla yapabildiği bir iç araç.
- Yapay zeka asistanının ödeme veya stok etkisi olan işlemleri, insan onayı ayrı bir kanaldan alınmadan çalıştırmadığı bir MCP sunucusu.
- Test ortamında onay akışını ve yetkilendirme sınırlarını doğrudan xUnit testleriyle doğrulamak isteyen bir ekip.
Neden önemli
Modelin ürettiği bir onay metni yetki sayılmaz; yetkiyi araç çağrısının dışında, bağımsız ve kısa ömürlü bir kayıtla kontrol etmek gerekir. Yazının örneği bu sınırın kodda nasıl kurulabileceğini gösteriyor, ama üretim için kimlik doğrulama, dayanıklı durum ve denetim kaydı eklenmelidir.