Bu konteynerin içindeki MCP sunucusu¶
Laravel Boost, bir asistana yalnızca sizin uygulamanızın cevaplayabileceği soruları veriyor: users tablosunda ne var, hangi rotalar tanımlı, bu framework sürümü ne diyor, ve gerçekten çalıştırabileceği bir tinker. Bunun için küçük bir MCP sunucusu kuruyor.
Sonra onu kaydediyor — ve yazdığı satır php artisan boost:mcp.
O satır burada niye çalışmaz¶
Makinenizde bir php olduğunu varsayıyor. StackVo oraya bir php koymuyor, ve bu bir eksiklik değil bir karar: PHP sürümü bir projenin özelliğidir, bir shim'in tahmin ettiği bir dizinin değil. Projenizin PHP'si, uzantıları ve php.ini'si imajın içinde — depoyu açan her makinede aynı oldukları yerde.
Yani Laravel'in kendi kurucusu burada başlayamayacak bir yapılandırma üretiyor. Hiçbir şey uyarmıyor. Asistan başlamayan bir sunucu bildiriyor, ve sebebi sizin hiç görmediğiniz bir günlükte duruyor.
Bu kartın onun yerine yazdığı şey¶
Bu uygulamanın zaten sahip olduğu geçiş:
stackvo artisan değil docker exec, iki sebeple. CLI hangi projeyi kastettiğini başlatıldığı dizinden çıkarıyor, ve bir asistan sunucularını nerede olursa orada başlatıyor — konteyneri adıyla söyleyen geçiş, yanlış projeyi seçemeyen geçiştir. Ayrıca docker bu uygulamanın zaten zorunlu koşulu, stackvo ikilisi ise PATH'inizde olmak zorunda değil.
-i var, -t yok: stdio üzerinden MCP bir borudur, ve bir TTY, JSON-RPC akışının ortasına satır disiplini koyar.
İki sunucu, yan yana¶
Bu, StackVo'nun kendi MCP sunucusunun yerini almıyor; ikisi de ötekinin yerini alamaz:
| Sunucu | Cevapladığı soru |
|---|---|
| StackVo (Ayarlar → Asistanlar) | "shop.loc niye açılmıyor?" — preflight, hosts, sertifika SAN'ları, konteyner günlüğü |
| Boost (bu kart) | "users tablosunda ne var?" — şema, rota listesi, tinker, artisan envanteri, elinizdeki sürümün belgeleri |
Birincisi makine için bir kez kaydediliyor. Bu ise proje başına, proje dizininde duran dosyalara — çünkü yalnızca bu projenin konteyneri ayaktayken var olan bir sunucu, diskinizdeki her dizin için geçerli olan bir dosyaya ait değildir.
Ne okunuyor, ve ne asla tahmin edilmiyor¶
| Olgu | Nereden geliyor |
|---|---|
laravel/boost, laravel/mcp ya da laravel/ai kurulu mu |
composer.lock — bağımlılık kartının okuduğu dosyanın aynısı, yani ikisi çelişemez |
| Bu projenin yayımladığı sunucular | kendi routes/ai.php'niz — içindeki Mcp::local() ve Mcp::web() satırları |
| Bugün ne kayıtlı | bu projedeki .mcp.json, .cursor/mcp.json, .vscode/mcp.json |
İlk argümanı bir sabit ya da bir değişken olan bir kayıt atlanıyor, tahmin edilmiyor. Okunacak bir dizge yok, ve burada uydurulan bir ad, asistanınızda düşen bir artisan mcp:start something demek olurdu.
Mcp::web() hiçbir şeye ihtiyaç duymuyor¶
Bir Mcp::web() kaydı, uygulamanızın içinde sıradan bir rotadır. Zaten bu projenin kendi alan adı altında, tarayıcınızın güvendiği sertifikayla servis ediliyor. Başlatılacak bir süreç, uzatılacak bir sertifika, yazılacak bir hosts kaydı ve ikinci bir yönlendirici yok — o yüzden o satır size adresi gösteriyor ve düğme sunmuyor.
Yazmanın uyduğu kurallar¶
Ayarlar'daki asistan kaydının uyduğu üç kuralın aynısı, aynı türden bir dosya üzerinde:
- Oku, tek anahtarı değiştir, geri yaz. Dosyadaki her şey — bu kodun hiç duymadığı anahtarlar dahil — hayatta kalır.
- Ayrıştırılamayan dosya düzenlenmez. İçinde yorum olan ya da yarısı düzenlenmiş bir
mcp.jsonbildirilir ve olduğu gibi bırakılır. - Eski içerik saklanır, dosyanın yanında
.stackvo-backupolarak.
Ve bu karta ait bir kural daha: bu sunucuyu zaten çalıştıran bir kayıt adını korur. Onu yeniden adlandırmak, istemcinizde çalışan bir sunucu yerine iki sunucu bırakırdı.