# Bağlanma

> Claude, Claude Code ve diğer MCP istemcilerini Solk kurulumunuza adım adım bağlayın; OAuth keşfinin nasıl çalıştığını görün.

## Claude

:::steps
### Bağlayıcıyı ekleyin

Claude'da (web, masaüstü ya da mobil) **Customize → Connectors → + Add → Add custom connector**'ı seçin. Ad: `Solk`, adres: `https://<firma>.solk.app/mcp`. Gelişmiş ayarlardaki istemci kimliği alanlarını boş bırakın — Claude kendini otomatik kaydeder.

### Bağlanın

Bağlayıcının yanındaki **Connect**'e basın. Solk kurulumunuzun giriş sayfası açılır; giriş yaptıktan sonra onay ekranı Claude'un istediği izinleri gösterir:

- **Kayıtları okuma** — firma, kişi, fırsat, aksiyon, e-posta yazışması, takvim ve panolar
- **Kayıt oluşturma ve güncelleme** — firma, kişi, fırsat, görev, not ve görüşme kaydı; görev tamamlama; aşama değiştirme

**İzin ver**'e basınca Claude'a dönersiniz.

### Kullanın

Sohbette Solk'u açık tutun ve sorunuzu yazın. Claude bir aracı ilk kez kullanırken izin ister; okuma araçları için "her zaman izin ver" seçebilirsiniz.
:::

**Team / Enterprise:** Bağlayıcıyı kuruluş sahibi **Organization settings → Connectors → Add → Custom → Web** ile ekler. Üyeler bağlayıcıyı kendi listelerinde görür ve **Connect** ile kendi Solk hesaplarıyla bağlanır — her üyenin yetkisi kendi Solk rolüyle sınırlıdır.

## Claude Code

```bash
claude mcp add --transport http solk https://ornek.solk.app/mcp
```

Ardından Claude Code'da `/mcp` → **solk** → **Authenticate**. Claude Code yerel bir dönüş adresi (`http://localhost:<kapı>/callback`) kullanır; Solk yerel geri döngü adreslerinde kapı numarasını eşleşmede yok sayar.

Projede herkesin kullanması için kapsamı proje yapabilirsiniz (`--scope project`, `.mcp.json`'a yazılır); her geliştirici yine kendi hesabıyla izin verir.

## ChatGPT, Cursor, VS Code ve diğerleri

Uzak MCP sunucusu (Streamable HTTP) destekleyen istemcilere aynı adresi girin. OAuth destekleyen istemciler keşfi kendileri yapar. Desteklemeyenlerde yönetici bir [API anahtarı](/rest-api/authentication) açıp `Authorization: Bearer sk_…` başlığıyla verebilir — bu durumda araçlar anahtarı açan yöneticinin yetkisiyle ve her iki kapsamla çalışır.

## OAuth keşfi nasıl işler?

İstemciler için ek yapılandırma gerekmez; akış standartlara göredir (MCP Authorization, OAuth 2.1):

1. İstemci belirteçsiz `POST /mcp` gönderir → `401` ve `WWW-Authenticate: Bearer … resource_metadata="https://ornek.solk.app/.well-known/oauth-protected-resource/mcp"`.
2. İstemci [korunan kaynak bilgisini](/rest-api/oauth/protected-resource) okur (RFC 9728) → yetkilendirme sunucusu `https://ornek.solk.app`.
3. [Yetkilendirme sunucusu bilgisini](/rest-api/oauth/authorization-server) okur (RFC 8414).
4. Kendini [kaydeder](/rest-api/oauth/register) (RFC 7591) ya da istemci bilgi belgesi (CIMD) adresini `client_id` olarak kullanır.
5. Kullanıcıyı PKCE (S256) ile [onay ekranına](/rest-api/oauth/authorize) yönlendirir, kodu [belirteçle](/rest-api/oauth/token) değiştirir.
6. `Authorization: Bearer mcp_…` ile MCP isteklerini gönderir; belirteç süresi dolunca yeniler.

## Protokol ayrıntıları

| | |
|---|---|
| Taşıma | Streamable HTTP, JSON yanıt (SSE akışı yok) |
| Protokol sürümleri | `2025-11-25`, `2025-06-18`, `2025-03-26`, `2024-11-05` |
| Yöntemler | `initialize`, `tools/list`, `tools/call`, `ping` ve bildirimler |
| `GET /mcp` | `405` (sunucudan istemciye akış yok) |
| Oturum | Durumsuz; `Mcp-Session-Id` gerekmez |
| Yetersiz kapsam | Yazma aracı `crm.write` olmadan çağrılırsa `403` + `WWW-Authenticate: … error="insufficient_scope"` |

```bash
curl https://ornek.solk.app/mcp \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```