MCP Sunucu — Kullanıcı Kılavuzu
Nedir Bu?
MCP sunucusu (Model Context Protocol) masamenu.tr için, AI asistanlarını (Claude, ChatGPT, Cursor, VS Code Copilot ve diğerleri) restoranınızın verilerine bağlamanızı sağlar. AI, menü, lokasyonlar, siparişler, görseller gibi verilere erişebilir ve bunları sizin adınıza yönetebilir.
Hızlı Başlangıç
1. API Anahtarı Alın
API anahtarı, restoranınızın yönetim panelinde oluşturulur.
Adım adım:
- admin.masamenu.tr adresinden Yönetim Paneli'ne giriş yapın
- Yan menüden ⚙️ Ayarlar → 🔑 Erişim'i açın
- Sayfada 🤖 MCP API Anahtarları bölümünü bulun
- «Yeni anahtar oluştur» butonuna tıklayın
- Anahtar adı girin (örneğin, «Claude Desktop», «Cursor», «Benim GPT») — bu, anahtarları birbirinden ayırt etmenize yardımcı olur
- Anahtarı hemen kopyalayın — sadece bir kez gösterilir!
💡 Aynı sayfada Sunucu URL'si (
https://api.masamenu.tr/mcp) de görüntülenir ve tek tıklamayla kopyalanabilir.
Anahtar Yönetimi
- Hesap başına 10 anahtar oluşturabilirsiniz
- Her anahtar herhangi bir zamanda iptal edilebilir — anahtarın yanındaki «İptal Et» butonu
- İptal edildikten sonra anahtar hemen çalışmayı durdurur
- Anahtar kaybolursa — iptal edin ve yenisini oluşturun
2. AI Asistanını Bağlayın
Claude Desktop / Claude Code
claude_desktop_config.json yapılandırma dosyası:
{
"mcpServers": {
"meni": {
"url": "https://api.masamenu.tr/mcp",
"headers": {
"Authorization": "Bearer SİZİN_API_ANAHTARINIZ"
}
}
}
}
Cursor
Cursor ayarlarında → MCP Servers → Add, veya .cursor/mcp.json dosyası:
{
"mcpServers": {
"meni": {
"url": "https://api.masamenu.tr/mcp",
"headers": {
"Authorization": "Bearer SİZİN_API_ANAHTARINIZ"
}
}
}
}
VS Code (GitHub Copilot)
Projedeki .vscode/mcp.json:
{
"servers": {
"meni": {
"type": "http",
"url": "https://api.masamenu.tr/mcp",
"headers": {
"Authorization": "Bearer SİZİN_API_ANAHTARINIZ"
}
}
}
}
Diğer AI Araçları
Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Cline, Continue, ChatGPT ve diğerleri için ayrıntılı adım adım talimatlar:
👉 AI Araçlarını MCP'ye Bağlama
AI Asistanı Ne Yapabilir?
Restoran Sahipleri İçin (normal kullanıcılar)
| Komut | Açıklama |
|---|---|
whoami |
Hesap bilgilerini göster (userId, email, rol) |
my_profile |
Kullanıcı profilinizi alın |
update_my_profile |
Profilinizdeki alanları güncelleyin |
my_locations |
Tüm lokasyonlarınızın listesi |
my_orders |
Siparişlerinizin listesi |
my_images |
Görsellerinizin listesi (menü, kategoriler, lokasyonlar) |
Kullanıcı Profilleri
| Komut | Açıklama |
|---|---|
get_user_profile |
userId ile kullanıcı profilini alın |
update_user_profile |
Kullanıcı profil alanlarını güncelleyin |
list_users |
[ADMIN] Tüm kullanıcıların listesi |
search_user_by_email |
[ADMIN] Cognito üzerinden email ile kullanıcı arayın |
Lokasyonlarla Çalışma
| Komut | Açıklama |
|---|---|
list_locations |
Kullanıcının tüm lokasyonları |
get_location_profile |
Lokasyon profili (isim, adres, çalışma saatleri, ayarlar) |
update_location_profile |
Lokasyon ayarlarını güncelleyin (CDN ile otomatik senkronize edilir) |
get_location_menu |
Kategoriler ve pozisyonlarla birlikte lokasyonun tam menüsü |
Menü ile Çalışma
| Komut | Açıklama |
|---|---|
list_menu_items |
Tüm menü pozisyonları (categoryId ile — tam veriler, olmadan — item/category ID çiftleri) |
get_menu_item |
Tam verilerle pozisyonu alın (çeviriler, varyantlar, ekler dahil) |
update_menu_item |
Menü pozisyonunu güncelleyin (fiyat, açıklama, durum, etiketler, varyantlar, ekler) |
create_menu_item |
Kategoride yeni bir menü pozisyonu oluşturun |
create_menu_category |
Yeni bir menü kategorisi oluşturun |
update_menu_category |
Kategoriyi güncelleyin (isim, çeviriler, durum, sıralama düzeni) |
move_menu_item |
Pozisyonu bir kategoriden diğerine taşıyın |
merge_categories |
İki kategoriyi birleştirin (tüm pozisyonlar taşınır, kaynak silinir) |
delete_menu_category |
Kategoriyi silin (force: true ile — tüm pozisyonlarla birlikte) |
Siparişler
| Komut | Açıklama |
|---|---|
list_orders |
Siparişlerin listesi (userId veya domain ile) |
get_order |
Belirli bir siparişin detayları |
Domainler
| Komut | Açıklama |
|---|---|
check_domain_availability |
Domain adının kullanılabilirliğini kontrol edin |
set_location_domain |
Lokasyonun domain adını değiştirin (CDN ve eşlemeleri günceller) |
resolve_domain |
Domain üzerinden userId ve locationId öğrenin |
list_domains |
[ADMIN] Kayıtlı tüm domainlerin listesi |
CDN (yayınlanmış veriler)
| Komut | Açıklama |
|---|---|
get_cdn_profile |
Lokasyonun yayınlanmış profili (CDN'de) |
get_cdn_menu |
Belirtilen dilde yayınlanmış menü |
list_cdn_files |
Domainin tüm yayınlanmış dosyaları |
invalidate_cdn_cache |
[ADMIN] CloudFront CDN önbelleğini sıfırlayın |
Görseller
| Komut | Açıklama |
|---|---|
list_user_images |
Kullanıcının tüm görselleri |
get_image_upload_url |
S3'e görsel yüklemek için presigned URL alın (JPEG/PNG/WebP) |
delete_image |
Görseli silin (kullanıcılar — sadece kendi görsellerini) |
S3'e Düşük Seviyeli Erişim
| Komut | Açıklama |
|---|---|
s3_read |
S3'ten dosya okuyun (kullanıcılar — sadece kendi dosyalarını) |
s3_write |
[ADMIN] S3'e JSON verisi yazın |
s3_list |
S3'teki dosyaların listesi (kullanıcılar — sadece kendi ön eklerini) |
s3_delete |
[ADMIN] S3'ten nesne silin |
Cognito
| Komut | Açıklama |
|---|---|
cognito_list_users |
[ADMIN] Cognito User Pool'dan kullanıcı listesi |
cognito_get_user |
[ADMIN] Cognito kullanıcısı hakkında detaylı bilgi |
İstatistik
| Komut | Açıklama |
|---|---|
get_system_stats |
[ADMIN] Sistem genelinde istatistik |
Kimlik Doğrulama
Sunucu üç tür yetkilendirme yöntemi destekler:
1. API Anahtarı (AI asistanları için önerilir)
Authorization: Bearer sizin_64_karakterli_anahtarınız
Anahtar, yönetim panelinde oluşturulur. Hesabınıza bağlıdır — AI sadece sizin verilerinizi görür.
2. Cognito JWT Token
Programatik entegrasyon için giriş yaparak token alabilirsiniz:
# Token al
curl -X POST https://api.masamenu.tr/mcp/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "sizin@email.com", "password": "sizin_şifreniz"}'
# Yanıt idToken içerir — bunu kullanın:
Authorization: Bearer eyJraWQ...
Token 1 saat geçerlidir, ardından tekrar giriş yapılması gerekir.
3. Admin API Anahtarı (sadece yöneticiler için)
Authorization: Bearer admin_key
Yönetici anahtarı, tüm kullanıcıların tüm verilerine tam erişim sağlar.
Güvenlik
- Her API anahtarı belirli bir hesaba bağlıdır
- Normal kullanıcılar sadece kendi verilerini görür
- Anahtar, yönetim panelinde herhangi bir zamanda iptal edilebilir
- Hesap başına maksimum 10 anahtar
- Tüm istekler HTTPS üzerinden yapılır
[ADMIN]etiketi olan komutlar normal kullanıcılara kapalıdır
Kullanım Örnekleri
AI'dan bir yemeğin fiyatını güncellemesini istemek
«Menümdeki «Haçapuri» pozisyonunun fiyatını güncelle — 12 lari yerine 15 lari yap»
AI, my_locations → get_location_menu → update_menu_item komutlarını çağırır.
Menüye yeni bir pozisyon eklemek
«Tatlılar kategorisine 8 lari fiyatla yeni bir yemek «Çurçhela» ekle»
AI, my_locations → get_location_menu → create_menu_item komutlarını çağırır.
Yeni bir kategori oluşturmak
«Gürcüce ve İngilizce çevirileriyle «İçecekler» kategorisi oluştur»
AI, create_menu_category komutunu nameTranslations ile çağırır.
Bir yemeği kategoriler arasında taşımak
««Limonata»yı «Soğuk İçecekler»den «Alkolsüz»e taşı»
AI, move_menu_item komutunu kaynak ve hedef kategoriyi belirterek çağırır.
Bugünkü siparişleri görmek
«Bugünkü siparişlerimi göster»
AI, my_orders komutunu çağırır ve tarihe göre filtreler.
Yayınlanmış menüyü kontrol etmek
«Ziyaretçiler için menüm Rusça dilinde nasıl görünüyor?»
AI, resolve_domain → get_cdn_menu komutlarını ru diliyle çağırır.
Restoranın domainini değiştirmek
«my-restaurant domaini müsait mi kontrol et, eğer öyleyse ayarla»
AI, check_domain_availability → set_location_domain komutlarını çağırır.
Yemek fotoğrafı yüklemek
«X yemeği için fotoğraf yükleme bağlantısı ver»
AI, get_image_upload_url komutunu çağırır ve yükleme için presigned URL döner.
API Uç Noktaları
| Yöntem | URL | Açıklama |
|---|---|---|
GET |
https://api.masamenu.tr/mcp |
Sunucu hakkında bilgi + araç listesi |
POST |
https://api.masamenu.tr/mcp |
MCP JSON-RPC (ana protokol) |
GET |
https://api.masamenu.tr/mcp/health |
Çalışırlık kontrolü |
POST |
https://api.masamenu.tr/mcp/auth/login |
Giriş → JWT tokenler |
GET |
https://api.masamenu.tr/mcp/api/keys |
API anahtarlarınızın listesi |
POST |
https://api.masamenu.tr/mcp/api/keys |
Yeni API anahtarı oluştur |
DELETE |
https://api.masamenu.tr/mcp/api/keys/{id} |
API anahtarını iptal et |
Anahtar Yönetimi
Anahtarları Görüntüleme
Yönetim panelinde → Ayarlar → Erişim → MCP API Anahtarları. Veya API üzerinden:
curl https://api.masamenu.tr/mcp/api/keys \
-H "Authorization: Bearer COGNITO_JWT_TOKEN"
Anahtar Oluşturma
curl -X POST https://api.masamenu.tr/mcp/api/keys \
-H "Authorization: Bearer COGNITO_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Claude Desktop"}'
Yanıt key alanını içerir — bu sizin anahtarınızdır. Kaydedin!
Anahtar İptali
curl -X DELETE https://api.masamenu.tr/mcp/api/keys/mk_abc123 \
-H "Authorization: Bearer COGNITO_JWT_TOKEN"
⚠️ Anahtar oluşturma ve iptal etme, Cognito JWT token gerektirir (API anahtarı değil). Yönetim panelini kullanın — daha kolaydır.
Sorun Giderme
| Sorun | Çözüm |
|---|---|
401 Unauthorized |
API anahtarını kontrol edin. İptal edildiyse — yenisini oluşturun |
403 user identity required |
Anahtar yönetimi için Cognito JWT kullanın |
🔒 admin access required |
Komut sadece yöneticilere açıktır |
🔒 access denied |
Başka bir kullanıcının verilerini almaya çalışıyorsunuz |
| Anahtar çalışmıyor | Anahtarın iptal edilmediğini ve formatın doğru olduğunu kontrol edin: Bearer <anahtar> |