AI Genel Çalışma Rehberi

Blog / Rehber

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

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:

Ş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:

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:
{
  "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

{
  "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:


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:

# 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:

{
  "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

# 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

# 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ışı:

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:

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:

VS Code Konfigürasyonu

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

Sorun Giderme

"No allowed servers available" Hatası

Neden?

Çö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?

Çö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:

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: