Skip to main content
Glama
appsap2026
by appsap2026
README.md
# SAP Bağlantı Kurulumu

Claude Code'u SAP sistemine bağlayan kurulum sihirbazı. Kullanıcı tek bir
dosyaya çift tıklar, yedi adımı sırayla geçer, sonunda Claude Code SAP
verisiyle çalışmaya hazır olur.

**VS Code gerekmez.** Uygulama SAP'ye ADT arayüzü üzerinden kendi bağlanır
ve Claude Code için kendi MCP sunucusunu çalıştırır.

---

## Kurulumu kendi sisteminize uyarlama

Depo hiçbir kuruma ait sunucu adresi, IP veya DNS bilgisi içermez.
Kendi ortamınız için:

```bash
cp kurulum-varsayilanlari.ornek.json kurulum-varsayilanlari.json
# dosyayı açıp kendi SAP sunucunuzun bilgilerini yazın
```

Bu dosya `.gitignore` içindedir, depoya gitmez. Hiç oluşturmazsanız da
sihirbaz çalışır; bilgileri kurulum sırasında kullanıcıdan ister.

---

## Kullanıcılara dağıtım

Paketi hazırlamak için:

```bash
./paketle.sh
```

Masaüstünde `sap-baglanti-kurulumu-<tarih>.zip` oluşur (yaklaşık 32 KB).
Kullanıcıya bu dosyayı gönderin. İçinde, teknik olmayan kullanıcılar için
yazılmış `KURULUM.txt` yönergesi de bulunur.

**Tek paket, iki platform.** Aynı zip hem Mac hem Windows kullanıcısına
gönderilir; içinde iki başlatıcı vardır ve kullanıcı kendi sistemine ait
olanı çalıştırır. Ayrı paket hazırlamaya gerek yoktur.

**Gönderme yolu.** Kurumsal e-posta sistemleri `.bat` ve `.command`
uzantılı dosyaları çoğu zaman engeller. Bu yüzden zip'i Teams, SharePoint
veya ortak ağ sürücüsü üzerinden paylaşmak daha güvenilirdir.

**İlk açılış uyarıları.** İndirilen dosyalar işletim sistemi tarafından
karantinaya alınır ve bu işaret zip'in içinden çıkan her dosyaya geçer:

| Platform | Uyarı | Çözüm |
|---|---|---|
| macOS | "Mac'inize zarar verebilir" / "gizliliği ihlal edebilir" | Sistem Ayarları › Gizlilik ve Güvenlik › **Yine de Aç**, ya da Terminal'de tek satırlık komut |
| Windows | "Windows bilgisayarınızı korudu" | Zip'i açmadan önce Özellikler › **Engellemeyi kaldır** |

İkisi de `KURULUM.txt` içinde adım adım anlatılıyor. macOS için en
garanti yol şu tek satır:

```bash
K=$(find ~/Downloads ~/Desktop ~/Documents -maxdepth 3 -name baslat-mac.command 2>/dev/null | head -1); [ -z "$K" ] && echo "Klasor bulunamadi" || { cd "$(dirname "$K")"; xattr -dr com.apple.quarantine . 2>/dev/null; bash baslat-mac.command; }
```

Komut klasörü İndirilenler, Masaüstü ve Belgeler altında kendisi arar,
karantina işaretini kaldırır ve sihirbazı başlatır. Kullanıcının klasörü
nereye açtığını bilmesi gerekmez.

Uyarı penceresinde **"Çöp Sepeti'ne Taşı" seçeneği dosyayı siler**;
kullanıcıya "Bitti" demesi gerektiğini söyleyin.

### Uyarısız dağıtım: ortak ağ sürücüsü

Karantina ve engelleme işaretlerini koyan şey dosyanın **nasıl indirildiği**.
Tarayıcı, e-posta ve sohbet uygulamaları indirdikleri dosyaya bu işareti
koyar. Ağ sürücüsünden kopyalanan dosyaya koymaz.

**Kritik ayrım:** SharePoint veya Teams'in *web arayüzünden* indirmek
işe yaramaz, çünkü indirmeyi tarayıcı yapar ve işaret yine konur. Paylaşımın
**ağ sürücüsü olarak bağlanmış** olması gerekir.

Hazırlık:

```bash
./paylas.sh
```

Masaüstünde `SAP-Baglanti-Kurulumu` klasörü oluşur. Zip değil, açılmış
klasördür; kullanıcı arşiv açma adımını da atlar. Bu klasörün tamamını
ortak sürücünüze kopyalayın. İçinde kullanıcı için kısa bir `BENI-OKU.txt`
bulunur.

Kullanıcıların erişimi:

| Platform | Yöntem |
|---|---|
| macOS | Finder › Git › Sunucuya Bağlan (Command + K) › `smb://sunucu/paylasim` |
| Windows | Dosya Gezgini adres çubuğuna `\\sunucu\paylasim` |

Kullanıcı klasörü sürücüden **kendi bilgisayarına kopyalar**, sonra
başlatıcıya çift tıklar. Sürücü üzerinden doğrudan çalıştırmak yerine
kopyalaması önemlidir; ağ gecikmesi ve yazma izni sorunlarını önler.

Doğrulama (Mac'te, kopyaladıktan sonra):

```bash
xattr -l ~/Desktop/SAP-Baglanti-Kurulumu/baslat-mac.command
```

Çıktı boşsa işaret yok demektir, uyarı çıkmayacaktır.

### Diğer seçenekler

Kod imzalama sertifikası uyarıyı kalıcı olarak kaldırır ama ücretli bir
Apple geliştirici hesabı ve noter onayı süreci gerektirir. Kurumsal cihaz
yönetimi (Jamf, Intune) kullanıyorsanız paketi oradan dağıtmak da aynı
sonucu verir ve en az kullanıcı müdahalesi gerektiren yoldur.

## Gereklilikler nasıl karşılanıyor

| Gereklilik | Kim halleder | Nasıl |
|---|---|---|
| Node.js 18+ | Başlatıcı, sonra sihirbaz 1. adım | Resmi kurulum paketini indirip sistemin parola penceresiyle kurar (macOS) veya winget kullanır (Windows) |
| npm | Sihirbaz, 1. adım | Node.js ile gelir; çalışmıyorsa Node.js yeniden kurularak düzeltilir |
| Claude Code | Sihirbaz, 2. adım | `npm install -g`, izin gerekirse yönetici penceresiyle |
| Sunucu bilgisi | Sihirbaz, 3. adım | Varsayılan dosyadan gelir veya kullanıcıdan alınır |
| Ad çözümlemesi | Sihirbaz, 4. adım | Gerekirse sistemin parola penceresiyle kalıcı kural tanımlar |
| Ağ erişimi | Sihirbaz, 5. adım | Denetlenir; VPN şart koşulmaz, doğrudan ağ da kabul edilir |
| SAP erişimi | Sihirbaz, 6. adım | Giriş alınır ve doğrulanır |

Node.js iki yerde ele alınır. Başlatıcı ilk savunma hattıdır: sihirbaz
Node.js üzerinde çalıştığı için, Node.js yoksa sihirbaz hiç açılamaz ve
kurulumu başlatıcı yapar. Sihirbazın birinci adımı ise sürümü ve npm'in
çalıştığını doğrular; sürüm 18'in altındaysa veya npm bozuksa oradan
güncellenebilir.

## Çalıştırma

| Platform | Dosya |
|---|---|
| macOS | `baslat-mac.command` (çift tıklayın) |
| Windows | `baslat-windows.bat` (çift tıklayın) |

Node.js kurulu değilse başlatıcı önce onu kurar; macOS'ta resmi kurulum
paketini indirip sistemin kendi parola penceresini açar, Windows'ta winget
kullanır. Sonra tarayıcıda sihirbaz açılır.

macOS ilk açılışta "doğrulanamadı" uyarısı verirse dosyaya sağ tıklayıp
**Aç** deyin.

Windows'ta indirilen zip dosyası engellenmiş olabilir ve bu engel içinden
çıkan bütün dosyalara geçer. Kullanıcı zip'i **açmadan önce** sağ tık ›
Özellikler › **Engellemeyi kaldır** kutusunu işaretlemelidir. Bu adım
`KURULUM.txt` içinde anlatılıyor.

## Sekiz adım

1. **Node.js ve npm** — sürümler doğrulanır; eksik veya eskiyse kurulur
2. **Claude Code** — kurulu değilse indirir ve kurar
3. **Sunucu bilgileri** — hangi SAP sistemine bağlanılacağı tanımlanır
4. **Sunucu adı çözümlemesi** — adın doğru adrese çevrildiği denetlenir
5. **SAP sunucusuna erişim** — sunucuya ağ üzerinden ulaşılıp ulaşılamadığı denetlenir
6. **SAP girişi** — kullanıcı adı ve parola alınır, SAP'ye doğrulanır
7. **Claude Code bağlantısı** — bağlantı Claude Code'a kullanıcı genelinde tanıtılır
8. **Bağlantı testi** — bağlantı, Claude Code'un yaptığı gibi başlatılıp denenir

Sıra bilinçlidir ve zincirin doğal akışını izler: önce sunucu tanımlanır,
sonra adının çözülüp çözülmediğine bakılır, sonra ağ üzerinden erişim
denenir, en sonunda giriş yapılır. Böylece bir adım başarısız olduğunda
sebebi tek bir halkaya indirgenir.

Erişim adımı VPN varlığını şart koşmaz. Kurum ağına doğrudan bağlı
makineler (örneğin veri merkezindeki bir sunucu) VPN olmadan da SAP'ye
erişebilir; denetim yalnızca sunucuya ulaşılıp ulaşılmadığına bakar.
FortiClient önerisi de ancak bilgisayarda kurulu olduğunda gösterilir.

Her adım açıldığında kendini bir kez denetler, sonra kullanıcıyı bekler.
Adımlar arasında geçişi kullanıcı yapar; her sayfada **Kontrol Et** ve
**İleri** düğmeleri vardır, üstteki numaralara tıklayarak da atlanabilir.

Geçmiş bir adımı yeniden çalıştırmak isterseniz, tamamlanmış adımlarda da
ikincil bir düğme bulunur: Claude Code için **Yeniden Kur**, ad çözümlemesi
için **Ayarı Yenile**, bağlantı için **Yeniden Tanıt**.

Üç sonuç durumu vardır:

| Durum | Anlamı | Devam |
|---|---|---|
| Yeşil | Sorun yok | İleri |
| Turuncu | Şu an çalışıyor ama ideal değil | İleri (isterse düzeltir) |
| Kırmızı | Engelleyici sorun | Yine de Devam Et |

Sorun varsa tek bir eylem düğmesi gösterilir ve işi uygulama kendisi yapar;
kullanıcı başka bir programa yönlendirilmez.

### Ayarları değiştirme

Dördüncü adımdaki **Sunucu ayarları** bölümünden sunucu adresi, port,
istemci, dil ve kurum DNS sunucuları değiştirilip kaydedilebilir. Kayıtlar
ana dizindeki `.sap-claude-kurulum.json` dosyasında tutulur; paket
güncellense de korunur.

SAP kullanıcı bilgileri 6. adımda değiştirilir. Form her zaman ekranda
durur ve kayıtlı kullanıcı adı doldurulmuş gelir; üzerine yazıp parolayı
girmeniz yeterlidir. Kayıtlı parola güvenlik gereği gösterilmez, bu yüzden
kullanıcı adını değiştirmeseniz bile parolayı yeniden girmeniz gerekir.

## Parolalar

İki ayrı parola söz konusudur ve ikisi de farklı yerde alınır:

- **Bilgisayar parolası** (yönetici gerektiren işlemler için) işletim
  sisteminin kendi penceresinde sorulur. macOS'ta klasik parola kutusu,
  Windows'ta UAC onayı çıkar. Bu parola uygulamanın koduna hiç ulaşmaz.
- **SAP parolası** sihirbazın kendi giriş ekranında alınır, anında SAP'ye
  doğrulanır ve işletim sisteminin güvenli deposuna yazılır: macOS'ta
  Anahtar Zinciri, Windows'ta DPAPI ile kullanıcıya özel şifrelenmiş dosya.
  Düz metin olarak hiçbir yerde tutulmaz. Parola kabuğa hiç verilmez;
  komutlar argüman dizisi veya stdin ile çalıştırılır, böylece özel
  karakterler bozulmaz.

## Kurulum nereye yazılır

Bağlantı sunucusu, kurulum klasöründen bağımsız çalışsın diye kalıcı bir
dizine kopyalanır:

```
~/.sap-claude-kurulum/          (Windows: %USERPROFILE%\.sap-claude-kurulum)
```

Böylece zip'i açtığınız klasörü silseniz veya taşısanız da bağlantı
çalışmaya devam eder.

Kayıt Claude Code'a **kullanıcı genelinde** (`--scope user`) eklenir. Bu
önemlidir: varsayılan kapsam yalnızca içinde bulunulan klasörü kapsar ve
kullanıcı kendi proje klasöründe Claude Code'u açtığında SAP araçlarını
göremez.

Bağlantı iki yere birden tanıtılır:

| Ortam | Kayıt yeri |
|---|---|
| Claude Code (terminal) | `claude mcp add --scope user` ile kullanıcı geneline |
| Claude masaüstü uygulaması | `claude_desktop_config.json` dosyasına |

Masaüstü uygulaması bir arayüz programıdır ve terminalin `PATH` değişkenini
devralmaz; bu yüzden kayıtta Node'un tam yolu yazılır. Mevcut MCP
sunucularınız korunur, dosyanın yedeği alınır.

Kurulum sonrası Claude Code ve masaüstü uygulaması açıksa kapatıp yeniden
açın; MCP bağlantıları yalnızca başlangıçta kurulur.

## Bağlantı ne zaman açık?

Sürekli çalışan bir program yoktur.

| Bileşen | Ne zaman çalışır |
|---|---|
| Kurulum sihirbazı | Yalnızca siz açtığınızda. Pencereyi kapatınca durur; kurulum yerinde kalır. |
| SAP bağlantı sunucusu | Claude Code SAP'ye ihtiyaç duyduğunda kendisi başlatır, işi bitince kapatır. |
| Kullanıcı bilgileri | İşletim sisteminin güvenli kasasında durur; siz silene kadar kalır. |

Yani kurulumdan sonra bilgisayarınızda arka planda dinleyen bir servis ya da
açık bir SAP oturumu kalmaz. Sihirbazı yeniden açmanız yalnızca bir ayarı
değiştirmek, durumu kontrol etmek veya kurulumu kaldırmak istediğinizde
gerekir.

## Kurulumu kaldırma

Bitiş ekranındaki **Kurulumu kaldır** bağlantısından, ya da doğrudan
`http://127.0.0.1:4899/?kaldir=1` adresinden ulaşılır.

Kaldırma ekranı önce bilgisayarınızda neyin kurulu olduğunu bulur ve
listeler. Yalnızca işaretlediğiniz öğelere dokunulur:

| Öğe | Varsayılan |
|---|---|
| Claude Code bağlantı kaydı | Seçili |
| SAP kullanıcı bilgileri (kasadan) | Seçili |
| Kaydedilmiş ayarlar | Seçili |
| Ağ ayarı (DNS kuralı) | Seçili değil — bilgisayar parolası ister |
| Claude Code uygulamasının kendisi | Seçili değil |

Zaten var olmayan öğeler soluk gösterilir ve seçilemez.

## Claude Code'a eklenen araçlar

Kurulum sonrası Claude Code şu araçlara sahip olur:

| Araç | İşlevi |
|---|---|
| `sap_ara` | ABAP nesnesi arar (CDS view, sınıf, tablo, fonksiyon modülü) |
| `sap_oku` | Nesnenin kaynak kodunu okur |
| `sap_sql` | Salt okunur SQL sorgusu çalıştırır |
| `sap_durum` | Hangi sisteme, hangi kullanıcıyla bağlı olunduğunu bildirir |

`sap_sql` yazma komutlarını (INSERT, UPDATE, DELETE, DROP …) reddeder.

Sunucu, MCP protokolünün `instructions` alanıyla istemciye bu araçların ne
zaman kullanılacağını da bildirir. Bu olmadan modeller SAP sorularını
internette aramaya çalışır. İlk denemede şunu kullanın:

```
claude "sap_durum"
```

Doğrulandıktan sonra doğal dille sorabilirsiniz. Claude yine de internete
yönelirse isteğinize "SAP araçlarını kullan" ekleyin.

## Dosya düzeni

```
baslat.command / baslat.bat   Başlatıcılar
server/
  config.js        Genel varsayılanlar (kurum bilgisi içermez)
  settings.js      Ayar katmanları ve kalıcı kayıt
  platform.js      macOS / Windows farkları, yetki penceresi, kasa
  adt.js           SAP ADT REST istemcisi
  mcp-sunucu.js    Claude Code'un çalıştırdığı bağlantı sunucusu
  steps.js         Altı adım ve denetim mantığı
  jobs.js          Uzun işler için canlı günlük
  server.js        Yerel HTTP sunucusu
ui/index.html      Sihirbaz arayüzü
```

Kuruma özel değerler koda gömülmez. Depo kökündeki
`kurulum-varsayilanlari.json` dosyasından okunur; bu dosya `.gitignore`
ile depo dışında tutulur ve yalnızca dahili pakete konur. Örneği
`kurulum-varsayilanlari.ornek.json` dosyasındadır. Dosya yoksa sihirbaz
bilgileri kullanıcıdan ister.

## Sorun giderme

Kurulum bir adımda takılırsa tanı aracını çalıştırın:

| Platform | Dosya |
|---|---|
| macOS | `tani-mac.command` |
| Windows | `tani-windows.bat` |

Araç işletim sistemi bilgisini, PowerShell sürümünü, ayarları ve kimlik
deposunun yazma/okuma turunu dener; sonucu ekrana yazar. Gerçek parolanıza
dokunmaz, ayrı bir test kaydı kullanır. Çıktının tamamını destek ekibine
iletmek sorunu tek adımda daraltır.

## Destek

Belirli bir adımdan başlatmak için adrese `?adim=<id>` eklenebilir,
örneğin `http://127.0.0.1:4899/?adim=giris`.

## Test nasıl yapılır

Altıncı adım, Claude Code'un yaptığı işi birebir tekrarlar: bağlantı
sunucusunu başlatır, güvenli kasadan kimlik bilgisini okur, SAP'ye bağlanır
ve bir araç çağırır. Ardından okuma yetkisini doğrulamak için her ABAP
sisteminde bulunan nesnelerle (`T000`, `CL_ABAP_TYPEDESCR`, `SYST`) örnek
bir arama yapar. Belirli bir modüle ya da projeye bağlı değildir.

## Bilinen sınır

Windows yolu yazıldı ancak Windows makinede test edilmedi. macOS yolu
uçtan uca, gerçek SAP kullanıcısıyla doğrulandı: altı adımın tamamı geçti,
bağlantı sunucusu araç çağrısını yanıtladı ve örnek okuma başarılı oldu.