← BlogRehber1 Ocak 2026~12 dk okuma

Cloudflare ve MCP

Kurumsal MCP Sunucularını Güvence Altına Alma: Portals, Access for SaaS, Linked Apps

Cloudflare ve MCP: Kurumsal MCP Sunucularını Güvence Altına Alma

MCP (Model Context Protocol) sunucuları artık sadece localhost'ta değil, uzak sunucularda da çalışıyor. Peki bu sunuculara erişimi nasıl kontrol edeceksiniz? Cloudflare Zero Trust, tam da bu problemi çözmek için AI Controls adı altında üç güçlü araç sunuyor.

TL;DR - Hızlı Karar Rehberi

  • Birden fazla MCP sunucusunu tek endpoint'te toplamak istiyorsanız: MCP Server Portals
  • MCP sunucusuna OAuth ile güvenli erişim sağlamak istiyorsanız: Access for SaaS
  • MCP sunucusunun şirket içi uygulamalara erişmesini istiyorsanız: Linked Apps

Cloudflare AI Controls Nedir?

Cloudflare Zero Trust platformunda "AI Controls" adlı yeni bir bölüm var. Bu bölüm üç ana özellik sunuyor:

AI Controls içindeki araçlar:

  • MCP Server Portals (Beta): Birden fazla MCP sunucusunu tek endpoint'te birleştirir
  • Access for SaaS: OAuth/OIDC ile MCP sunucu güvenliği sağlar
  • Linked Apps: MCP'den şirket içi uygulamalara güvenli erişim

Şimdi her birini detaylıca inceleyelim.


1. MCP Server Portals (Beta)

Ne İşe Yarar?

MCP Server Portal, birden fazla MCP sunucusunu tek bir HTTP endpoint altında birleştiren bir "gateway" görevi görür. Claude Desktop veya VS Code'dan tek bir URL'e bağlanıp, arka planda birçok farklı MCP sunucusuna erişebilirsiniz.

Mimarisi

Yapı şöyle çalışır:

  • MCP Client (Claude Desktop, VS Code) → portal.example.com/mcp → Cloudflare Access
  • Cloudflare Access içinde MCP Server Portal bulunur
  • Portal, arka planda GitHub MCP Server, Slack MCP Server ve Database MCP Server'a bağlanır
  • Kullanıcı tek endpoint üzerinden tüm sunuculara erişir

Temel Avantajları

Tek Endpoint: Kullanıcılar tek bir URL üzerinden tüm sunuculara erişir

Merkezi Yetkilendirme: Access Policy ile kimin neye erişeceğini belirlersiniz

Tool Seçimi: Her portal için hangi tool ve prompt'ların aktif olacağını seçebilirsiniz

Loglama: Tüm istekler merkezi olarak loglanır

Kurulum Adımları

Adım 1: MCP Sunucusu Ekleme

  1. Cloudflare One Dashboard → Access Controls → AI Controls
  2. "MCP servers" sekmesine gidin
  3. "Add an MCP server" butonuna tıklayın
  4. Sunucu bilgilerini girin:
json
{
  "name": "My GitHub MCP Server",
  "server_id": "github-mcp-01",
  "http_url": "https://github-mcp.example.com/sse",
  "access_policies": ["Allow Engineering Team"]
}

Adım 2: Portal Oluşturma

  1. "Add MCP server portal" butonuna tıklayın
  2. Portal adı ve subdomain belirleyin
  3. Portala eklenecek MCP sunucularını seçin
  4. Access Policy tanımlayın

Adım 3: Client Konfigürasyonu

json
{
  "mcpServers": {
    "company-portal": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "https://portal.yourcompany.com/mcp"
      ]
    }
  }
}

Sunucu Durumları

Ready: Sunucu senkronize, kullanıma hazır - Aksiyon gerekmez

Waiting: Tool ve prompt'lar senkronize ediliyor - Bekleyin

Error: Kimlik doğrulama hatası - Yeniden authenticate edin

User Auth Seçenekleri

Portal oluştururken "Require user auth" seçeneği var:

  • Enabled (Varsayılan): Her kullanıcı kendi hesabıyla MCP sunucusuna login olur
  • Disabled: Tüm kullanıcılar admin credential'ı üzerinden erişir

2. Access for SaaS - MCP OAuth Güvenliği

Ne İşe Yarar?

MCP sunucunuzu doğrudan OAuth ile korumak istiyorsanız, Cloudflare Access'i OAuth provider olarak kullanabilirsiniz. Kullanıcılar MCP client'tan bağlandığında şirketin Identity Provider'ına (Okta, Google, Azure AD) yönlendirilir.

Akış Diyagramı

OAuth akışı şöyle çalışır:

  1. MCP Client → MCP Server'a bağlanmak ister
  2. MCP Server (Cloudflare Workers) → Cloudflare Access'e yönlendirir
  3. Cloudflare Access → Identity Provider'a (Google, Okta, Azure AD, GitHub) yönlendirir
  4. Kullanıcı login olur → access_token alınır
  5. MCP Client artık authenticated durumda

Workers ile MCP Server Deploy Etme

Cloudflare'in örnek projesini kullanarak hızlıca başlayabilirsiniz:

bash
# Projeyi oluştur
npm create cloudflare@latest -- mcp-server-cf-access \
  --template=cloudflare/ai/demos/remote-mcp-cf-access

cd mcp-server-cf-access

# KV namespace oluştur (OAuth token'ları için)
npx wrangler kv namespace create "OAUTH_KV"

wrangler.jsonc dosyasına KV binding ekleyin:

jsonc
{
  "kv_namespaces": [
    {
      "binding": "OAUTH_KV",
      "id": "<YOUR_KV_NAMESPACE_ID>"
    }
  ]
}

Access for SaaS Uygulaması Oluşturma

  1. Cloudflare One → Access Controls → Applications
  2. "Add an application" → SaaS seçin
  3. OIDC protokolünü seçin
  4. Redirect URL'i girin:
https://mcp-server-cf-access.<YOUR_SUBDOMAIN>.workers.dev/callback
  1. Şu değerleri not edin:
    • Client ID
    • Client Secret
    • Token Endpoint
    • Authorization Endpoint
    • Key Endpoint

Worker Secrets Tanımlama

bash
# Her birini tek tek ekleyin
wrangler secret put ACCESS_CLIENT_ID
wrangler secret put ACCESS_CLIENT_SECRET
wrangler secret put ACCESS_TOKEN_URL
wrangler secret put ACCESS_AUTHORIZATION_URL
wrangler secret put ACCESS_JWKS_URL

# Cookie şifreleme anahtarı
openssl rand -hex 32  # Çıktıyı kopyalayın
wrangler secret put COOKIE_ENCRYPTION_KEY

Deploy ve Test

bash
# Deploy
npx wrangler deploy

# Test için Workers AI Playground kullanın
# https://playground.ai.cloudflare.com/
# URL: https://mcp-server-cf-access.<YOUR_SUBDOMAIN>.workers.dev/mcp

3. Linked Apps - MCP'den Şirket İçi Uygulamalara Erişim

Ne İşe Yarar?

MCP sunucunuzun şirket içi uygulamalara (wiki, dashboard, internal API) erişmesi gerekiyorsa, Linked Apps özelliğini kullanırsınız. Bu, bir OAuth token'ının başka bir uygulamaya yetki vermesini sağlar.

Kullanım Senaryosu

Linked Apps akışı:

  • MCP Client (VS Code) → MCP Server (Internal Tools) → OAuth token alır
  • Token, Cloudflare Access'e gönderilir (Token Validator)
  • Cloudflare Access, token'ı doğrularsa şirket içi uygulamalara erişim verir:
    • Admin Dashboard
    • Company Wiki
    • Internal API

Kurulum Adımları

Adım 1: MCP Sunucusu için Access for SaaS Kurulumu

Önce MCP sunucunuzu Access for SaaS ile koruyun (yukarıdaki bölüme bakın).

Adım 2: Linked App Token Policy Oluşturma

  1. Cloudflare One → Access Controls → Applications
  2. Şirket içi uygulamayı bulun (örn: internal-wiki.company.com)
  3. Yeni bir Access Policy ekleyin:
    • Action: Service Auth
    • Selector: Linked App Token
    • Value: mcp-server-cf-access (SaaS app adı)

Adım 3: MCP Server'ı Yapılandırma

MCP sunucunuz, her API isteğinde OAuth token'ı header olarak göndermelidir:

python
import httpx

class MCPServerWithLinkedApps:
    def __init__(self, access_token: str):
        self.access_token = access_token
    
    async def call_internal_api(self, endpoint: str):
        """Şirket içi API'ya token ile erişim"""
        async with httpx.AsyncClient() as client:
            response = await client.get(
                f"https://internal-api.company.com{endpoint}",
                headers={
                    "Authorization": f"Bearer {self.access_token}"
                }
            )
            return response.json()
    
    @mcp.tool()
    async def get_wiki_page(self, page_id: str) -> str:
        """Company wiki'den sayfa çeker"""
        data = await self.call_internal_api(f"/wiki/pages/{page_id}")
        return data["content"]

Authorization Akışı

Adım adım akış:

  1. Kullanıcı MCP Client'tan bağlanır
  2. MCP Server, Access for SaaS üzerinden OAuth yapar
  3. Kullanıcı Identity Provider'a login olur
  4. MCP Server, access_token alır
  5. MCP Server, şirket içi API'ya istek yapar (Authorization: Bearer <access_token>)
  6. Cloudflare Access, token'ı doğrular: Token geçerli mi? Token, linked SaaS app'ten mi geldi?
  7. İstek başarılı veya 401/403 döner

Bilinen Kısıtlamalar

Sadece Self-Hosted Apps: SaaS uygulamalarında çalışmaz

JWT Bazlı Auth: Uygulama, Cloudflare Access JWT'sine güvenmeli

Uygulama Katmanı Auth: Uygulama kendi auth'u varsa sorun çıkabilir


Karşılaştırma: Hangi Çözümü Seçmeli?

5+ MCP sunucusu var, tek endpoint istiyorsanız: MCP Server Portals - Merkezi yönetim ve loglama sağlar

Tek MCP sunucusu, OAuth güvenliği istiyorsanız: Access for SaaS - Doğrudan OIDC entegrasyonu sunar

MCP'den internal API'lara erişim gerekiyorsa: Linked Apps - Token delegation yapar

Hepsi birden gerekiyorsa: Üçünü de kombine kullanın - En güvenli kurulum


Pratik Örnek: Kurumsal MCP Kurulumu

Örnek mimari:

  • Developer (VS Code) → MCP Server Portal (portal.company.com/mcp) üzerinden bağlanır
  • Portal, Access Policy ile Engineering Team'e erişim verir
  • Portal arkasında 3 MCP sunucusu bulunur:
    • GitHub MCP (Public)
    • Jira MCP (Public)
    • Internal Tools MCP (Access for SaaS + Linked Apps ile korumalı)
  • Internal Tools MCP, şirket içi uygulamalara erişir:
    • Internal Wiki
    • Admin Dashboard
    • Customer Database

VS Code Konfigürasyonu

json
{
  "mcpServers": {
    "company-ai-tools": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "https://portal.company.com/mcp"
      ]
    }
  }
}

Sorun Giderme

"No allowed servers available" Hatası

Neden?

  • Portal'a bağlı sunucularda Access Policy eksik
  • Admin auth süresi dolmuş

Çözüm:

  1. Her MCP sunucusunun bir Access Policy'si olduğundan emin olun
  2. Sunucu durumunu kontrol edin (Ready olmalı)
  3. Error varsa, sunucuyu yeniden authenticate edin

Portal URL Authentication Sorunu

Neden?

  • Portal'da Access Policy tanımlı değil
  • Başka bir Cloudflare yapılandırması (Workers, Page Rules) çakışıyor

Çözüm:

  1. Portal'a Access Policy ekleyin
  2. Portal URL'inin başka yapılandırmalarla çakışıp çakışmadığını kontrol edin

Session Temizleme

MCP client'ın yeniden authenticate olmasını istiyorsanız:

bash
rm -rf ~/.mcp-auth

Bu komut tüm mcp-remote@latest kullanan sunucuların session'ını temizler.


Sonuç

Cloudflare'in AI Controls özellikleri, MCP sunucularını kurumsal düzeyde yönetmek için güçlü araçlar sunuyor:

  1. MCP Server Portals: Birden fazla MCP sunucusunu tek endpoint'te birleştirin
  2. Access for SaaS: OAuth ile güvenli erişim sağlayın
  3. Linked Apps: MCP sunucusunun şirket içi uygulamalara erişmesini sağlayın

Bu üç özelliği birlikte kullanarak, AI araçlarınızı güvenli ve yönetilebilir bir şekilde kurumsal ortamınıza entegre edebilirsiniz.


Kaynaklar:

Tartışma

0 yorum

Yorum yapmak için giriş yapın

GitHub ile Giriş Yap

Yorumlar yükleniyor...