Skip to content

Bağlantı Modları

Bu kılavuz, desteklenen her bağlantı modu için LenserFight MCP sunucusunu ürününüze nasıl entegre edeceğinizi gösterir. Dağıtım (deployment) ortamınıza en uygun modu seçin.

ModNe zaman kullanılırKurulum süresiYerel depo gerekir mi?
LF Cloud (HTTP)Üretim — ürününüz barındırılan uç noktaya bağlanır~5 dkHayır
stdioLenserFight deposu içinde yerel geliştirme~5 dkEvet
HTTP + tünelDağıtımdan önce yerel MCP değişikliklerini test etme~10 dkEvet

LF Cloud (HTTP)

Tüm üretim entegrasyonları için bunu kullanın.

LenserFight MCP sunucusu Cloudflare üzerinden proxy'lenen kararlı bir genel adrese sahiptir. Dağıtılacak veya sürdürülecek ayrı bir sunucu yoktur. İstemciniz HTTPS üzerinden standart MCP JSON-RPC istekleri gönderir.

Uç nokta (Endpoint)

https://mcp.lenserfight.com/mcp

OAuth keşfi (Uyumlu istemciler için otomatik)

MCP standartlarına tam uyumlu bir istemci keşif belgesini okur ve OAuth işlemlerini otomatik olarak gerçekleştirir:

bash
curl https://mcp.lenserfight.com/.well-known/oauth-authorization-server
json
{
  "issuer": "https://mcp.lenserfight.com",
  "authorization_endpoint": "https://mcp.lenserfight.com/oauth/authorize",
  "token_endpoint": "https://mcp.lenserfight.com/oauth/token",
  "registration_endpoint": "https://mcp.lenserfight.com/oauth/register",
  "response_types_supported": ["code"],
  "grant_types_supported": ["authorization_code"],
  "code_challenge_methods_supported": ["S256"],
  "token_endpoint_auth_methods_supported": ["none"]
}

Claude.ai özel bağlayıcı

  1. claude.ai → Ayarlar → Bağlayıcılar → Özel bağlayıcı ekle yolunu izleyin.
  2. Bilgileri doldurun:
    • Adı (Name): LenserFight
    • Uzak MCP sunucu URL'si (Remote MCP server URL): https://mcp.lenserfight.com/mcp
    • OAuth İstemci Kimliği (OAuth Client ID): boş bırakın (dinamik kayıt)
    • OAuth İstemci Parolası (OAuth Client Secret): boş bırakın (yalnızca PKCE — parola yok)
  3. Ekle (Add) seçeneğine tıklayın.
  4. Açılan pencerede LenserFight kimlik bilgilerinizle yetkilendirme işlemini tamamlayın.

Cursor

~/.cursor/mcp.json dosyasında (veya proje dizininizin kökündeki projeye özel .mcp.json dosyasında):

json
{
  "mcpServers": {
    "lenserfight": {
      "url": "https://mcp.lenserfight.com/mcp"
    }
  }
}

Cursor uygulamasını yeniden başlatın. Bir LenserFight aracını ilk kez kullandığınızda Cursor, OAuth akışı için bir tarayıcı penceresi açacaktır.

Herhangi bir HTTP MCP istemcisi

Yukarıdaki uç noktayı gösteren uzak bir MCP sunucu girdisi ekleyin. İstemci şunları desteklemelidir:

  • OAuth 2.1 yetkilendirme kodu (authorization code) akışı
  • PKCE (S256 kod sınaması)
  • RFC 7591 dinamik istemci kaydı (veya önceki bir kayıttan elde edilen bir client_id değerini manuel olarak girmek)

İstemciniz dinamik kaydı desteklemiyorsa, POST /oauth/register isteğini bir kez manuel olarak gönderin (bkz. OAuth ve Kimlik Doğrulama) ve dönen client_id değerini uygulamanıza sabit olarak (hard-code) kodlayın.

Özel arka uç istemci örneği (Node.js)

typescript
import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'

const transport = new StreamableHTTPClientTransport(
  new URL('https://mcp.lenserfight.com/mcp'),
  {
    // OAuth akışını tamamladıktan sonra lf_mcp_* erişim jetonunu buraya girin
    requestInit: {
      headers: { Authorization: `Bearer ${process.env.LF_MCP_TOKEN}` },
    },
  }
)

const client = new Client({ name: 'my-product', version: '1.0.0' }, { capabilities: {} })
await client.connect(transport)

const result = await client.callTool({ name: 'list_lenses', arguments: { limit: 10 } })
console.log(result)

stdio (yerel geliştirme)

Bunu yalnızca LenserFight deposu içinde geliştirme yaparken kullanın.

stdio modunda, MCP sunucusu bir alt süreç (child process) olarak başlatılır. İletişim stdin/stdout üzerinden gerçekleşir. Service role anahtarı tüm RLS korumalarını atlar — bu mod üretim kullanımı için güvenli değildir.

Ön koşullar

  1. Çalışan bir yerel Supabase örneği: supabase start
  2. Derlenmiş MCP sunucusu: pnpm nx build mcp-server
  3. Node.js 22+, pnpm 9+

Ortam değişkenleri

DeğişkenDeğer
SUPABASE_URLhttp://127.0.0.1:54321
SUPABASE_SERVICE_ROLE_KEYsupabase status -o env komutundan alınır
SUPABASE_ANON_KEYsupabase status -o env komutundan alınır
SUPABASE_JWT_SECRETsuper-secret-jwt-token-with-at-least-32-characters-long
MCP_TRANSPORTstdio
LENSERFIGHT_LENSER_ID(isteğe bağlı) Çağrıların sınırlandırılacağı lenser'ın UUID'si

.mcp.json (zaten depo kök dizininde mevcuttur)

json
{
  "mcpServers": {
    "lenserfight": {
      "command": "node",
      "args": ["dist/apps/mcp-server/main.js"],
      "env": {
        "SUPABASE_URL": "${SUPABASE_URL}",
        "SUPABASE_SERVICE_ROLE_KEY": "${SUPABASE_SERVICE_ROLE_KEY}",
        "SUPABASE_ANON_KEY": "${SUPABASE_ANON_KEY}",
        "SUPABASE_JWT_SECRET": "${SUPABASE_JWT_SECRET}",
        "MCP_TRANSPORT": "stdio"
      }
    }
  }
}

Ortam değişkenlerinizi yükleyin (source edin), ardından depo kök dizininden Claude Code veya Cursor uygulamasını açın. İstemci .mcp.json dosyasını otomatik olarak okuyacaktır.


HTTP + tünel (yerel geliştirme)

Claude.ai veya uzak bir istemcinin yerel MCP sunucu değişikliklerinize erişmesini istediğinizde bunu kullanın.

Claude.ai'nin jeton değişimi Anthropic bulut altyapısından gerçekleşir. localhost adresine erişemez. Genel bir tünel (public tunnel) kurmanız gerekir.

Adım 1 — ngrok uygulamasını başlatın

bash
ngrok http 3001
# Yönlendirme: https://<id>.ngrok-free.app -> http://localhost:3001

Sunucu, ngrok'un yerel API'sinden ngrok genel URL'sini otomatik olarak algılar. Manuel kopyalama/yapıştırma gerekmez.

Bunun yerine cloudflared kullanmak isterseniz:

bash
cloudflared tunnel --url http://localhost:3001
export MCP_OAUTH_BASE_URL=https://<your-id>.trycloudflare.com

Adım 2 — Sunucuyu HTTP modunda derleyin ve başlatın

Supabase'in çalıştığından ve ortam değişkenlerinin yüklendiğinden emin olun, ardından:

bash
export MCP_TRANSPORT=http
export MCP_HTTP_PORT=3001
node dist/apps/mcp-server/main.js

Başlangıç başlığı:

[lenserfight-mcp] auto-detected public tunnel: https://<tunnel>.ngrok-free.app
[lenserfight-mcp] HTTP transport ready on http://localhost:3001/mcp

  ┌─ Local dev OAuth credentials ──────────────────────────────────┐
  │  OAuth Client ID : lf_mcp_client_localdev                      │
  │  Auth method     : PKCE (no client secret required)            │
  │  Server base URL : https://<tunnel>.ngrok-free.app             │
  │                                                                 │
  │  Claude.ai → Settings → Connectors → Add connector:            │
  │    URL       : https://<tunnel>.ngrok-free.app/mcp             │
  │    Client ID : lf_mcp_client_localdev                          │
  └─────────────────────────────────────────────────────────────────┘

Adım 3 — Claude.ai'de bağlayıcıyı ekleyin

localhost yerine başlangıç başlığındaki tünel URL'sini kullanın:

  • URL: https://<tunnel>.ngrok-free.app/mcp
  • OAuth Client ID: lf_mcp_client_localdev

ngrok uygulamasını yeniden başlattıktan sonra

Ücretsiz ngrok katmanı, her yeniden başlatmada yeni bir URL atar. Her yeniden başlatmadan sonra:

  1. MCP sunucusunu yeniden başlatın — yeni URL'yi otomatik olarak algılar.
  2. Claude.ai'de bağlayıcıyı silin ve güncellenmiş URL ile yeniden ekleyin.

Sorun Giderme

mcp_token_exchange_failed

Keşif belgesi, uzak istemcinin erişemeyeceği bir yerel ana bilgisayar (localhost) URL'si sundu.

  • Başlangıç başlığının http://localhost değil, tünel URL'sini gösterdiğini doğrulayın.
  • Claude.ai'deki bağlayıcı URL'sinin /mcp ile bittiğini ve tünel URL'siyle tam olarak eşleştiğini doğrulayın.
  • ngrok uygulamasını yeniden başlattıysanız URL değişmiştir — bağlayıcıyı silip yeniden ekleyin.

POST /mcp isteğinde 401 Unauthorized

  • Taşıyıcı jeton (bearer token) eksik, süresi dolmuş veya hatalı biçimlendirilmiş.
  • Bağlayıcı ayarlarından yeniden yetkilendirme yapın.
  • Jeton biçiminin lf_mcp_<64 onaltılık karakter> olduğunu kontrol edin.

Sign-in failed

  • OAuth giriş formunda yanlış e-posta veya şifre girildi.
  • lenserfight.com adresinden kimlik bilgilerinizi doğrulayın.

No Lenser profile found

  • Kullanıcı hesap oluşturma işlemini tamamladı ancak katılım adımlarını (kullanıcı adı seçimi) bitirmedi.
  • Kullanıcı adı seçim adımını tamamlaması için kullanıcıyı lenserfight.com adresine yönlendirin ve ardından yeniden deneyin.

Başlangıçta PUBLIC URL REQUIRED uyarısı (tünel modu)

  • ngrok çalışmıyor veya MCP sunucusundan önce başlatılmadı.
  • Önce ngrok'u, ardından MCP sunucusunu başlatın.
  • Veya başlatmadan önce MCP_OAUTH_BASE_URL=https://sizin-urlniz değerini manuel olarak ayarlayın.

WARN: environment variable is unset

  • Ortam değişkenleri yüklenmedi. source ./.env.mcp.local komutunu çalıştırın.