{"id":39423,"date":"2026-02-21T07:30:45","date_gmt":"2026-02-21T04:30:45","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/"},"modified":"2026-02-21T07:30:45","modified_gmt":"2026-02-21T04:30:45","slug":"cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/","title":{"rendered":"Cursor\/Claude i\u00e7in Kendi MCP Sunucunuzu 4 Ad\u0131mda Kurun"},"content":{"rendered":"<h2>Cursor\/Claude i\u00e7in Kendi MCP Sunucunuzu 4 Ad\u0131mda Kurun<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz yapay zeka destekli geli\u015ftirme ortamlar\u0131nda, Cursor gibi IDE&#8217;ler veya Claude gibi g\u00fc\u00e7l\u00fc dil modelleri, \u00fcretkenli\u011fi inan\u0131lmaz seviyelere ta\u015f\u0131yor. Ancak bu ara\u00e7lar\u0131 kullan\u0131rken gizlilik, maliyet ve performans gibi endi\u015feler ortaya \u00e7\u0131kabilir. \u0130\u015fte tam da bu noktada kendi Multi-Cloud Proxy (MCP) sunucunuzu kurmak devreye giriyor. Bu makalede, Cursor veya Claude gibi ara\u00e7lar\u0131 yerel veya \u00f6zel API&#8217;lerinizle daha g\u00fcvenli, uygun maliyetli ve y\u00fcksek performansl\u0131 bir \u015fekilde entegre etmenizi sa\u011flayacak bir MCP sunucusunu ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde anlataca\u011f\u0131z. Bu rehber sayesinde veri kontrol\u00fcn\u00fcz\u00fc elinizde tutarken, AI modellerinin g\u00fcc\u00fcnden \u00f6d\u00fcn vermeyeceksiniz.<\/p>\n<h3>Neden Kendi MCP Sunucunuza \u0130htiyac\u0131n\u0131z Var?<\/h3>\n<p>Kendi MCP sunucunuzu kurmak, yapay zeka tabanl\u0131 geli\u015ftirme s\u00fcre\u00e7lerinizde size \u00f6nemli avantajlar sa\u011flar. Bu avantajlar, \u00f6zellikle hassas verilerle \u00e7al\u0131\u015f\u0131rken veya maliyetleri optimize etmek istedi\u011finizde kritik hale gelir.<\/p>\n<h4>Gizlilik ve Veri G\u00fcvenli\u011fi<\/h4>\n<p>Harici AI hizmetlerini kullan\u0131rken, kodunuz veya verileriniz \u00fc\u00e7\u00fcnc\u00fc taraf sunucular\u0131na g\u00f6nderilir. Bu durum, \u00f6zellikle kurumsal veya ki\u015fisel gizlili\u011fi y\u00fcksek projelerde \u00f6nemli g\u00fcvenlik riskleri olu\u015fturabilir. Kendi MCP sunucunuzu kurarak, hassas verilerinizin \u015firket a\u011f\u0131n\u0131zdan veya yerel makinenizden ayr\u0131lmamas\u0131n\u0131 sa\u011flayabilirsiniz. Sunucu, istekleri i\u015flerken verileri do\u011frudan harici sa\u011flay\u0131c\u0131lara g\u00f6ndermek yerine, belirli kurallar \u00e7er\u00e7evesinde y\u00f6nlendirme veya maskeleme yapabilir. Bu sayede, veri ihlali riskini minimize eder ve veri egemenli\u011finizi korursunuz.<\/p>\n<h4>Maliyet Kontrol\u00fc ve Optimizasyon<\/h4>\n<p>B\u00fcy\u00fck dil modellerinin (LLM) API \u00e7a\u011fr\u0131lar\u0131, \u00f6zellikle yo\u011fun kullan\u0131mlarda \u00f6nemli maliyetlere yol a\u00e7abilir. Kendi MCP sunucunuz, bu maliyetleri optimize etmenize olanak tan\u0131r. \u00d6rne\u011fin, daha uygun maliyetli veya \u00fccretsiz yerel LLM&#8217;leri (Ollama, Llama.cpp gibi) ana model olarak kullanabilir, sadece belirli ve karma\u015f\u0131k istekler i\u00e7in pahal\u0131 harici API&#8217;lere y\u00f6nlendirme yapabilirsiniz. Ayr\u0131ca, ayn\u0131 iste\u011fin birden fazla kez yap\u0131lmas\u0131 durumunda \u00f6nbellekleme (caching) mekanizmalar\u0131 uygulayarak gereksiz API \u00e7a\u011fr\u0131lar\u0131n\u0131 ortadan kald\u0131rabilir, b\u00f6ylece faturalar\u0131n\u0131z\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde d\u00fc\u015f\u00fcrebilirsiniz.<\/p>\n<h4>D\u00fc\u015f\u00fck Gecikme ve Y\u00fcksek Performans<\/h4>\n<p>Harici API&#8217;lere yap\u0131lan her \u00e7a\u011fr\u0131, a\u011f gecikmesi (latency) ve bant geni\u015fli\u011fi s\u0131n\u0131rlamalar\u0131 nedeniyle yava\u015flayabilir. Kendi sunucunuzu yerel a\u011f\u0131n\u0131zda veya size yak\u0131n bir konumda bar\u0131nd\u0131rarak bu gecikmeyi minimuma indirebilirsiniz. \u00d6zellikle yerel olarak \u00e7al\u0131\u015fan AI modelleriyle entegre edildi\u011finde, yan\u0131t s\u00fcreleri neredeyse anl\u0131k hale gelir. Bu, Cursor gibi interaktif ara\u00e7larda kod tamamlama, hata ay\u0131klama veya sohbet tabanl\u0131 yard\u0131m al\u0131rken \u00e7ok daha ak\u0131c\u0131 ve kesintisiz bir deneyim sunar.<\/p>\n<h4>\u00d6zelle\u015ftirme ve Esneklik<\/h4>\n<p>Kendi MCP sunucunuz, AI isteklerini ve yan\u0131tlar\u0131n\u0131 diledi\u011finiz gibi \u00f6zelle\u015ftirme ve d\u00f6n\u00fc\u015ft\u00fcrme konusunda size tam esneklik sa\u011flar. \u0130stekleri belirli kriterlere g\u00f6re farkl\u0131 modellere y\u00f6nlendirebilir, yan\u0131tlar\u0131 belirli formatlara d\u00f6n\u00fc\u015ft\u00fcrebilir, hata i\u015fleme mant\u0131\u011f\u0131n\u0131 geli\u015ftirebilir veya kendi i\u015f ak\u0131\u015flar\u0131n\u0131za \u00f6zel ek katmanlar ekleyebilirsiniz. Bu \u00f6zelle\u015ftirme yetene\u011fi, standart API&#8217;lerin sundu\u011fu s\u0131n\u0131rlamalar\u0131n \u00f6tesine ge\u00e7erek, geli\u015ftirme s\u00fcre\u00e7lerinizi tamamen kontrol etmenizi ve kendi ihtiya\u00e7lar\u0131n\u0131za g\u00f6re optimize etmenizi sa\u011flar.<\/p>\n<h3>Ad\u0131m 1: Gerekli \u00d6n Haz\u0131rl\u0131klar ve Ara\u00e7lar<\/h3>\n<p>MCP sunucunuzu kurmaya ba\u015flamadan \u00f6nce, gerekli t\u00fcm yaz\u0131l\u0131m ve donan\u0131m gereksinimlerini kar\u015f\u0131lad\u0131\u011f\u0131n\u0131zdan emin olmal\u0131s\u0131n\u0131z. Bu ad\u0131m, sorunsuz bir kurulum s\u00fcreci i\u00e7in temel olu\u015fturur.<\/p>\n<h4>Donan\u0131m ve Yaz\u0131l\u0131m Gereksinimleri<\/h4>\n<p>Bir MCP sunucusu, genellikle \u00e7ok y\u00fcksek donan\u0131m gereksinimlerine ihtiya\u00e7 duymaz, ancak AI modellerini yerel olarak \u00e7al\u0131\u015ft\u0131rmay\u0131 planl\u0131yorsan\u0131z durum de\u011fi\u015febilir.<\/p>\n<ul>\n<li><strong>Donan\u0131m:<\/strong>\n<ul>\n<li><strong>CPU:<\/strong> \u00c7o\u011fu proxy i\u015flemi i\u00e7in modern bir d\u00f6rt \u00e7ekirdekli CPU yeterlidir. Yerel LLM&#8217;leri \u00e7al\u0131\u015ft\u0131rmak istiyorsan\u0131z daha g\u00fc\u00e7l\u00fc bir CPU (veya GPU) gerekebilir.<\/li>\n<li><strong>RAM:<\/strong> En az 8 GB RAM \u00f6nerilir. Yerel LLM&#8217;ler i\u00e7in 16 GB veya daha fazlas\u0131 idealdir.<\/li>\n<li><strong>Depolama:<\/strong> SSD, h\u0131zl\u0131 okuma\/yazma performans\u0131 i\u00e7in tercih edilir. \u0130\u015fletim sistemi ve k\u00fct\u00fcphaneler i\u00e7in yeterli alan (en az 20 GB) gereklidir.<\/li>\n<li><strong>A\u011f Ba\u011flant\u0131s\u0131:<\/strong> Kararl\u0131 ve h\u0131zl\u0131 bir internet ba\u011flant\u0131s\u0131, harici API&#8217;lere eri\u015fim i\u00e7in \u00f6nemlidir.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Yaz\u0131l\u0131m:<\/strong>\n<ul>\n<li><strong>\u0130\u015fletim Sistemi:<\/strong> Linux (Ubuntu, Debian), macOS veya Windows (WSL ile daha iyi performans) kullanabilirsiniz.<\/li>\n<li><strong>Python:<\/strong> Python 3.8 veya \u00fczeri s\u00fcr\u00fcm\u00fc y\u00fckl\u00fc olmal\u0131d\u0131r.<\/li>\n<li><strong>PIP:<\/strong> Python paket y\u00f6neticisi (genellikle Python ile birlikte gelir).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>Python ve PIP Kurulumu<\/h4>\n<p>Python, sunucumuzun kalbi olacak. Kurulumu i\u015fletim sisteminize g\u00f6re de\u011fi\u015fiklik g\u00f6sterebilir:<\/p>\n<ul>\n<li><strong>Linux (Ubuntu\/Debian):<\/strong>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install python3 python3-pip<\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>macOS:<\/strong> Homebrew ile kolayca kurabilirsiniz:\n<pre><code class=\"language-bash\">brew install python<\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Windows:<\/strong> Python'\u0131n resmi web sitesinden (python.org) indirme ve kurulum sihirbaz\u0131n\u0131 kullan\u0131n. Kurulum s\u0131ras\u0131nda \"Add Python to PATH\" se\u00e7ene\u011fini i\u015faretlemeyi unutmay\u0131n.<\/li>\n<\/ul>\n<p>Kurulumu do\u011frulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">python3 --version\npip3 --version<\/pre>\n<p><\/code><\/p>\n<h4>Sanal Ortam Olu\u015fturma<\/h4>\n<p>Projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 sisteminizdeki di\u011fer Python projelerinden izole etmek i\u00e7in bir sanal ortam kullanmak en iyi uygulamad\u0131r.<\/p>\n<pre><code class=\"language-bash\"># Proje dizininizi olu\u015fturun ve i\u00e7ine girin\nmkdir mcp_server\ncd mcp_server\n\n# Sanal ortam\u0131 olu\u015fturun\npython3 -m venv venv\n\n# Sanal ortam\u0131 etkinle\u015ftirin\n# Linux\/macOS\nsource venv\/bin\/activate\n\n# Windows\n.\\venv\\Scripts\\activate<\/pre>\n<p><\/code><\/p>\n<p>Sanal ortam etkinle\u015ftirildi\u011finde, komut sat\u0131r\u0131n\u0131z\u0131n ba\u015f\u0131nda <code>(venv)<\/code> gibi bir ibare g\u00f6receksiniz.<\/p>\n<h4>Gerekli K\u00fct\u00fcphanelerin Y\u00fcklenmesi<\/h4>\n<p>Sunucumuz i\u00e7in FastAPI, Uvicorn ve Requests gibi temel k\u00fct\u00fcphanelere ihtiyac\u0131m\u0131z var.<\/p>\n<ul>\n<li><strong>FastAPI:<\/strong> Modern, h\u0131zl\u0131 (Starlette ve Pydantic'e dayal\u0131) bir web framework'\u00fc.<\/li>\n<li><strong>Uvicorn:<\/strong> ASGI sunucusu, FastAPI uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><strong>Requests:<\/strong> HTTP istekleri yapmak i\u00e7in pop\u00fcler bir k\u00fct\u00fcphane.<\/li>\n<li><strong>python-dotenv:<\/strong> \u00c7evre de\u011fi\u015fkenlerini y\u00f6netmek i\u00e7in (API anahtarlar\u0131 gibi).<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">pip install fastapi uvicorn requests python-dotenv<\/pre>\n<p><\/code><\/p>\n<p>Bu ad\u0131mlar\u0131 tamamlad\u0131\u011f\u0131n\u0131zda, MCP sunucunuzu geli\u015ftirmeye ba\u015flamak i\u00e7in haz\u0131r bir ortama sahip olacaks\u0131n\u0131z.<\/p>\n<h3>Ad\u0131m 2: Temel Proxy Sunucusu Mant\u0131\u011f\u0131n\u0131 Geli\u015ftirme<\/h3>\n<p>\u015eimdi s\u0131ra, AI isteklerini y\u00f6nlendirecek ve i\u015fleyecek temel proxy sunucusu mant\u0131\u011f\u0131n\u0131 olu\u015fturmaya geldi. Bu ad\u0131mda FastAPI'nin g\u00fcc\u00fcnden faydalanaca\u011f\u0131z.<\/p>\n<h4>FastAPI ile API Olu\u015fturma<\/h4>\n<p>\u00d6ncelikle, sunucumuzun ana dosyas\u0131n\u0131 (\u00f6rne\u011fin <code>main.py<\/code>) olu\u015ftural\u0131m ve FastAPI uygulamas\u0131n\u0131 ba\u015flatal\u0131m. Bu dosya, gelen istekleri dinleyecek ve y\u00f6nlendirecek ana mant\u0131\u011f\u0131 i\u00e7erecek.<\/p>\n<pre><code class=\"language-python\"># main.py\nfrom fastapi import FastAPI, Request, HTTPException, status\nfrom fastapi.responses import JSONResponse\nimport requests\nimport os\nfrom dotenv import load_dotenv\n\n# .env dosyas\u0131ndaki de\u011fi\u015fkenleri y\u00fckle\nload_dotenv()\n\napp = FastAPI()\n\n# Hedef AI API URL'sini .env dosyas\u0131ndan al\n# Varsay\u0131lan olarak Ollama'n\u0131n yerel API'si ayarlanm\u0131\u015ft\u0131r.\nTARGET_AI_API_URL = os.getenv(\"TARGET_AI_API_URL\", \"http:\/\/localhost:11434\/v1\/chat\/completions\")\n# Harici API anahtar\u0131 (\u00f6rn: Claude, OpenAI)\nEXTERNAL_API_KEY = os.getenv(\"EXTERNAL_API_KEY\")\n\n@app.get(\"\/\")\nasync def read_root():\n    return {\"message\": \"MCP Proxy Sunucusu \u00c7al\u0131\u015f\u0131yor!\"}\n\n@app.post(\"\/v1\/chat\/completions\")\nasync def proxy_chat_completions(request: Request):\n    # Gelen iste\u011fin g\u00f6vdesini al\n    request_body = await request.json()\n\n    # \u0130stek ba\u015fl\u0131klar\u0131n\u0131 kopyala, ancak host ve content-length gibi ba\u015fl\u0131klar\u0131 d\u0131\u015far\u0131da b\u0131rak\n    headers = {k: v for k, v in request.headers.items() if k.lower() not in [\"host\", \"content-length\"]}\n\n    # E\u011fer harici bir API anahtar\u0131 tan\u0131mlanm\u0131\u015fsa, Authorization ba\u015fl\u0131\u011f\u0131n\u0131 ekle\n    if EXTERNAL_API_KEY:\n        # \u00d6rnek: Claude API i\u00e7in X-API-Key veya OpenAI i\u00e7in Authorization Bearer\n        # Kullanaca\u011f\u0131n\u0131z API'ye g\u00f6re bu k\u0131sm\u0131 ayarlay\u0131n.\n        # \u00d6rne\u011fin Claude i\u00e7in:\n        # headers[\"x-api-key\"] = EXTERNAL_API_KEY\n        # headers[\"anthropic-version\"] = \"2023-06-01\" # Claude i\u00e7in versiyon ba\u015fl\u0131\u011f\u0131\n        \n        # \u00d6rne\u011fin OpenAI i\u00e7in:\n        headers[\"Authorization\"] = f\"Bearer {EXTERNAL_API_KEY}\"\n\n\n    try:\n        # Hedef AI API'ye iste\u011fi ilet\n        response = requests.post(TARGET_AI_API_URL, json=request_body, headers=headers, stream=True)\n        response.raise_for_status() # HTTP hatalar\u0131n\u0131 yakala\n\n        # Yan\u0131t\u0131 do\u011frudan istemciye ak\u0131\u015f olarak ilet\n        return JSONResponse(content=response.json(), status_code=response.status_code)\n\n    except requests.exceptions.RequestException as e:\n        raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=f\"Proxy iste\u011fi ba\u015far\u0131s\u0131z oldu: {e}\")\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kod par\u00e7as\u0131, <code>\/v1\/chat\/completions<\/code> endpoint'ine gelen t\u00fcm POST isteklerini alacak ve bunlar\u0131 <code>TARGET_AI_API_URL<\/code> adresine y\u00f6nlendirecektir. Bu endpoint, hem OpenAI hem de Ollama gibi bir\u00e7ok LLM hizmeti taraf\u0131ndan kullan\u0131lan standart bir formatt\u0131r.<\/p>\n<h4>\u0130stekleri Y\u00f6nlendirme ve \u0130\u015fleme<\/h4>\n<p>Yukar\u0131daki kodda <code>requests.post<\/code> fonksiyonu, gelen iste\u011fi hedef API'ye iletmek i\u00e7in kullan\u0131l\u0131r. Bu noktada, iste\u011fi de\u011fi\u015ftirebilir veya zenginle\u015ftirebilirsiniz:<\/p>\n<ul>\n<li><strong>Model Se\u00e7imi:<\/strong> Gelen iste\u011fin g\u00f6vdesindeki <code>model<\/code> alan\u0131na g\u00f6re farkl\u0131 hedef URL'lere y\u00f6nlendirme yapabilirsiniz. \u00d6rne\u011fin, <code>\"model\": \"gpt-4\"<\/code> ise OpenAI'ye, <code>\"model\": \"llama2\"<\/code> ise yerel Ollama sunucusuna y\u00f6nlendirme gibi.<\/li>\n<li><strong>Parametre D\u00f6n\u00fc\u015f\u00fcm\u00fc:<\/strong> Baz\u0131 API'ler farkl\u0131 parametre isimleri veya formatlar\u0131 bekleyebilir. \u0130stek g\u00f6vdesini hedef API'nin bekledi\u011fi formata d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz.<\/li>\n<li><strong>\u0130stek Ekleme:<\/strong> Her iste\u011fe otomatik olarak bir API anahtar\u0131 veya ba\u015fka bir kimlik do\u011frulama bilgisi ekleyebilirsiniz.<\/li>\n<\/ul>\n<h4>Yan\u0131tlar\u0131 Y\u00f6netme ve D\u00f6n\u00fc\u015ft\u00fcrme<\/h4>\n<p>Hedef API'den gelen yan\u0131t\u0131 da i\u015fleyebilir ve d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz:<\/p>\n<ul>\n<li><strong>Yan\u0131t Filtreleme:<\/strong> Yan\u0131ttan hassas bilgileri \u00e7\u0131karabilir veya belirli alanlar\u0131 maskeleyebilirsiniz.<\/li>\n<li><strong>Yan\u0131t D\u00f6n\u00fc\u015f\u00fcm\u00fc:<\/strong> Yan\u0131t format\u0131n\u0131, istemcinizin (Cursor gibi) bekledi\u011fi formata uyacak \u015fekilde de\u011fi\u015ftirebilirsiniz.<\/li>\n<li><strong>Hata \u0130\u015fleme:<\/strong> Hedef API'den gelen hatalar\u0131 yakalay\u0131p, istemciye daha anlaml\u0131 hata mesajlar\u0131 d\u00f6nd\u00fcrebilirsiniz.<\/li>\n<li><strong>\u00d6nbellekleme (Caching):<\/strong> Belirli istekler i\u00e7in yan\u0131tlar\u0131 \u00f6nbelle\u011fe alarak tekrar eden ayn\u0131 isteklerde hedef API'ye gitmeyi engelleyebilir, b\u00f6ylece gecikmeyi azalt\u0131p maliyeti d\u00fc\u015f\u00fcrebilirsiniz.<\/li>\n<\/ul>\n<h4>G\u00fcvenlik ve Kimlik Do\u011frulama (Opsiyonel)<\/h4>\n<p>Proxy sunucunuzun g\u00fcvenli\u011fini art\u0131rmak i\u00e7in temel kimlik do\u011frulama mekanizmalar\u0131 ekleyebilirsiniz. \u00d6rne\u011fin, gelen iste\u011fin belirli bir API anahtar\u0131 i\u00e7erip i\u00e7ermedi\u011fini kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-python\"># main.py dosyas\u0131nda proxy_chat_completions fonksiyonunun ba\u015f\u0131na eklenebilir\n# \u0130stemciden beklenen bir API anahtar\u0131\nEXPECTED_CLIENT_API_KEY = os.getenv(\"CLIENT_API_KEY\")\n\n@app.post(\"\/v1\/chat\/completions\")\nasync def proxy_chat_completions(request: Request):\n    if EXPECTED_CLIENT_API_KEY:\n        client_api_key = request.headers.get(\"X-Client-API-Key\") # veya Authorization ba\u015fl\u0131\u011f\u0131\n        if not client_api_key or client_api_key != EXPECTED_CLIENT_API_KEY:\n            raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail=\"Ge\u00e7ersiz istemci API anahtar\u0131\")\n    \n    # ... (geri kalan kod)\n<\/pre>\n<p><\/code><\/p>\n<p>Bu, sunucunuza yetkisiz eri\u015fimi engellemeye yard\u0131mc\u0131 olur. <code>.env<\/code> dosyan\u0131za <code>CLIENT_API_KEY=\"sizin_cok_gizli_anahtar\u0131n\u0131z\"<\/code> \u015feklinde ekleyebilirsiniz.<\/p>\n<h3>Ad\u0131m 3: AI Modelleriyle Entegrasyon ve Test<\/h3>\n<p>Temel proxy mant\u0131\u011f\u0131n\u0131 kurduktan sonra, s\u0131ra onu ger\u00e7ek AI modelleriyle entegre etmeye ve do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in test etmeye geliyor.<\/p>\n<h4>Yerel LLM Entegrasyonu (Ollama, Llama.cpp \u00f6rnekleri)<\/h4>\n<p>Yerel LLM'ler, gizlilik ve maliyet avantajlar\u0131 nedeniyle pop\u00fclerdir. Ollama, \u00e7e\u015fitli LLM'leri yerel olarak \u00e7al\u0131\u015ft\u0131rmay\u0131 kolayla\u015ft\u0131ran harika bir ara\u00e7t\u0131r. E\u011fer Ollama'y\u0131 kurduysan\u0131z ve bir model \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z (\u00f6rne\u011fin <code>ollama run llama2<\/code>), genellikle <code>http:\/\/localhost:11434\/v1\/chat\/completions<\/code> adresinde bir OpenAI uyumlu API sunar.<\/p>\n<p><code>.env<\/code> dosyan\u0131z\u0131 a\u015fa\u011f\u0131daki gibi g\u00fcncelleyerek proxy'nizi Ollama'ya y\u00f6nlendirebilirsiniz:<\/p>\n<pre><code class=\"language-ini\"># .env\nTARGET_AI_API_URL=\"http:\/\/localhost:11434\/v1\/chat\/completions\"\nEXTERNAL_API_KEY=\"\" # Yerel LLM kullan\u0131rken bu bo\u015f kalabilir<\/pre>\n<p><\/code><\/p>\n<p>Bu sayede, Cursor'dan gelen t\u00fcm istekler \u00f6nce MCP sunucunuza, oradan da yerel Ollama modelinize y\u00f6nlendirilir.<\/p>\n<h4>Harici API'lerle K\u00f6pr\u00fc Kurma (Claude, OpenAI API'leri)<\/h4>\n<p>E\u011fer daha g\u00fc\u00e7l\u00fc veya spesifik modeller i\u00e7in harici API'lere ihtiya\u00e7 duyuyorsan\u0131z, MCP sunucunuzu bu API'lere k\u00f6pr\u00fc kuracak \u015fekilde yap\u0131land\u0131rabilirsiniz.<\/p>\n<ul>\n<li><strong>Claude API i\u00e7in:<\/strong>\n<p>Claude API, genellikle <code>https:\/\/api.anthropic.com\/v1\/messages<\/code> adresini kullan\u0131r. Ancak, Cursor gibi ara\u00e7lar genellikle OpenAI'nin <code>\/v1\/chat\/completions<\/code> format\u0131n\u0131 bekler. Bu durumda, proxy sunucunuzun gelen iste\u011fi Claude'un bekledi\u011fi formata d\u00f6n\u00fc\u015ft\u00fcrmesi ve yan\u0131t\u0131 da tekrar OpenAI format\u0131na \u00e7evirmesi gerekir. Bu, <code>main.py<\/code> dosyan\u0131zda daha karma\u015f\u0131k bir d\u00f6n\u00fc\u015ft\u00fcrme mant\u0131\u011f\u0131 gerektirecektir.<\/p>\n<p>Basit bir yakla\u015f\u0131mla, e\u011fer Claude'un OpenAI uyumlu bir API katman\u0131 varsa, onu kullanabilirsiniz. Aksi takdirde, <code>TARGET_AI_API_URL<\/code>'yi Claude'un endpoint'ine ayarlay\u0131p, <code>EXTERNAL_API_KEY<\/code>'yi Claude API anahtar\u0131n\u0131zla doldurman\u0131z gerekir. Ayr\u0131ca, Claude'un <code>X-API-Key<\/code> ve <code>Anthropic-Version<\/code> ba\u015fl\u0131klar\u0131n\u0131 eklemek i\u00e7in <code>main.py<\/code> dosyas\u0131ndaki ba\u015fl\u0131k k\u0131sm\u0131n\u0131 d\u00fczenlemeniz gerekecektir (yukar\u0131daki kod \u00f6rne\u011finde yorum sat\u0131rlar\u0131nda belirtilmi\u015ftir).<\/p>\n<pre><code class=\"language-ini\"># .env\nTARGET_AI_API_URL=\"https:\/\/api.anthropic.com\/v1\/messages\" # Claude'un mesajlar endpoint'i\nEXTERNAL_API_KEY=\"sk-ant-api03-YOUR_CLAUDE_API_KEY\"<\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>OpenAI API i\u00e7in:<\/strong>\n<p>OpenAI API, proxy'mizle en uyumlu olan\u0131d\u0131r, \u00e7\u00fcnk\u00fc <code>\/v1\/chat\/completions<\/code> endpoint'ini do\u011frudan kullan\u0131r. Sadece <code>.env<\/code> dosyan\u0131z\u0131 g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-ini\"># .env\nTARGET_AI_API_URL=\"https:\/\/api.openai.com\/v1\/chat\/completions\"\nEXTERNAL_API_KEY=\"sk-YOUR_OPENAI_API_KEY\"<\/pre>\n<p><\/code>\n    <\/li>\n<\/ul>\n<h4>Cursor ile Ba\u011flant\u0131 Kurma<\/h4>\n<p>Cursor IDE'yi kendi MCP sunucunuza ba\u011flamak olduk\u00e7a basittir:<\/p>\n<ol>\n<li>Cursor'\u0131 a\u00e7\u0131n.<\/li>\n<li>Ayarlar'a (Settings) gidin (genellikle sol alttaki \u00e7ark simgesi).<\/li>\n<li>\"AI Providers\" veya \"Language Model\" ayarlar\u0131na gidin.<\/li>\n<li>\"Custom URL\" veya \"OpenAI Compatible API\" se\u00e7ene\u011fini aray\u0131n.<\/li>\n<li>URL olarak kendi proxy sunucunuzun adresini girin: <code>http:\/\/localhost:8000\/v1\/chat\/completions<\/code> (e\u011fer sunucunuz 8000 portunda \u00e7al\u0131\u015f\u0131yorsa).<\/li>\n<li>Gerekirse, e\u011fer proxy'nizde kimlik do\u011frulama etkinse, \"API Key\" alan\u0131na <code>CLIENT_API_KEY<\/code> de\u011ferinizi girin.<\/li>\n<\/ol>\n<p>Art\u0131k Cursor, t\u00fcm AI isteklerini sizin MCP sunucunuz \u00fczerinden yapacak!<\/p>\n<h4>Sunucuyu Test Etme<\/h4>\n<p>Sunucunuzun do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in basit testler yapabilirsiniz.<\/p>\n<ol>\n<li>\u00d6nce sunucuyu ba\u015flat\u0131n (bir sonraki ad\u0131mda detayl\u0131ca anlat\u0131lacak, \u015fimdilik manuel olarak):\n<pre><code class=\"language-bash\">uvicorn main:app --host 0.0.0.0 --port 8000<\/pre>\n<p><\/code>\n    <\/li>\n<li>Yeni bir terminal penceresi a\u00e7\u0131n ve bir <code>curl<\/code> iste\u011fi g\u00f6nderin:\n<pre><code class=\"language-bash\">curl -X POST http:\/\/localhost:8000\/v1\/chat\/completions \\\n     -H \"Content-Type: application\/json\" \\\n     -d '{\n           \"model\": \"llama2\",\n           \"messages\": [\n             {\"role\": \"user\", \"content\": \"Merhaba, nas\u0131ls\u0131n?\"}\n           ],\n           \"temperature\": 0.7\n         }'<\/pre>\n<p><\/code><\/p>\n<p>Bu istek, proxy sunucunuza gidecek ve oradan <code>TARGET_AI_API_URL<\/code>'ye y\u00f6nlendirilecektir. Yan\u0131t\u0131 terminalinizde g\u00f6rmelisiniz.<\/p>\n<\/li>\n<li>Cursor'da bir AI iste\u011fi (\u00f6rne\u011fin kod tamamlama veya sohbet) deneyin ve yan\u0131t\u0131n gelip gelmedi\u011fini kontrol edin.<\/li>\n<\/ol>\n<h3>Ad\u0131m 4: Sunucuyu Da\u011f\u0131tma ve Y\u00f6netme<\/h3>\n<p>Sunucunuzu geli\u015ftirdikten ve test ettikten sonra, onu s\u00fcrekli \u00e7al\u0131\u015f\u0131r durumda tutmak ve y\u00f6netmek i\u00e7in uygun y\u00f6ntemleri uygulaman\u0131z gerekir.<\/p>\n<h4>Uvicorn ile Sunucuyu Ba\u015flatma<\/h4>\n<p>Geli\u015ftirme s\u0131ras\u0131nda kulland\u0131\u011f\u0131m\u0131z <code>uvicorn main:app --host 0.0.0.0 --port 8000<\/code> komutu, sunucuyu ba\u015flat\u0131r.<\/p>\n<ul>\n<li><code>main:app<\/code>: <code>main.py<\/code> dosyas\u0131ndaki <code>app<\/code> de\u011fi\u015fkenini belirtir.<\/li>\n<li><code>--host 0.0.0.0<\/code>: Sunucunun t\u00fcm a\u011f aray\u00fczlerinden eri\u015filebilir olmas\u0131n\u0131 sa\u011flar (yerel a\u011f\u0131n\u0131zdaki di\u011fer cihazlardan eri\u015fmek i\u00e7in). Sadece kendi bilgisayar\u0131n\u0131zdan eri\u015fecekseniz <code>127.0.0.1<\/code> veya <code>localhost<\/code> kullanabilirsiniz.<\/li>\n<li><code>--port 8000<\/code>: Sunucunun 8000 numaral\u0131 portta dinlemesini sa\u011flar.<\/li>\n<\/ul>\n<p>\u00dcretim ortam\u0131nda daha kararl\u0131 bir \u00e7al\u0131\u015fma i\u00e7in <code>--workers<\/code> parametresiyle birden fazla worker s\u00fcreci \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4<\/pre>\n<p><\/code><\/p>\n<p>Bu, sunucunuzun daha fazla e\u015fzamanl\u0131 iste\u011fi i\u015flemesine yard\u0131mc\u0131 olur.<\/p>\n<h4>Arka Planda \u00c7al\u0131\u015ft\u0131rma (systemd, pm2)<\/h4>\n<p>Sunucunuzun terminali kapatt\u0131\u011f\u0131n\u0131zda durmamas\u0131n\u0131 sa\u011flamak ve sistem yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flamak \u00f6nemlidir.<\/p>\n<ul>\n<li><strong>Linux (systemd ile):<\/strong>\n<p>Bir <code>systemd<\/code> servisi olu\u015fturmak en sa\u011flam yoldur. <code>\/etc\/systemd\/system\/mcp_server.service<\/code> ad\u0131nda bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-ini\">[Unit]\nDescription=MCP Proxy Server\nAfter=network.target\n\n[Service]\nUser=your_username # Kendi kullan\u0131c\u0131 ad\u0131n\u0131zla de\u011fi\u015ftirin\nWorkingDirectory=\/path\/to\/your\/mcp_server # Proje dizininizin tam yolu\nExecStart=\/path\/to\/your\/mcp_server\/venv\/bin\/uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4\nRestart=always\n\n[Install]\nWantedBy=multi-user.target<\/pre>\n<p><\/code><\/p>\n<p>Dosyay\u0131 kaydettikten sonra:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl daemon-reload\nsudo systemctl start mcp_server\nsudo systemctl enable mcp_server # Sistem ba\u015flang\u0131c\u0131nda otomatik ba\u015flar\nsudo systemctl status mcp_server<\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>pm2 (Node.js tabanl\u0131, ancak Python uygulamalar\u0131 i\u00e7in de kullan\u0131labilir):<\/strong>\n<p>E\u011fer Node.js y\u00fckl\u00fcyse, pm2 kullan\u0131\u015fl\u0131 bir ara\u00e7t\u0131r:<\/p>\n<pre><code class=\"language-bash\">npm install -g pm2\npm2 start \"uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4\" --name \"mcp_server\"<\/pre>\n<p><\/code><\/p>\n<p><code>pm2 startup<\/code> komutu ile sistem ba\u015flang\u0131c\u0131nda otomatik ba\u015flamas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<\/li>\n<li><strong>Basit Arka Plan \u00c7al\u0131\u015ft\u0131rma (ge\u00e7ici):<\/strong>\n<p><code>nohup<\/code> ve <code>&<\/code> kullanarak terminali kapatsan\u0131z bile \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirsiniz, ancak bu y\u00f6ntem <code>systemd<\/code> kadar sa\u011flam de\u011fildir:<\/p>\n<pre><code class=\"language-bash\">nohup uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4 &<\/pre>\n<p><\/code>\n    <\/li>\n<\/ul>\n<h4>G\u00fcvenlik Duvar\u0131 ve A\u011f Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>E\u011fer sunucunuza yerel a\u011f\u0131n\u0131z d\u0131\u015f\u0131ndan eri\u015fim sa\u011flamak istiyorsan\u0131z (ki bu genellikle \u00f6nerilmez, ancak gerekirse), g\u00fcvenlik duvar\u0131n\u0131zda 8000 numaral\u0131 portu a\u00e7man\u0131z gerekebilir.<\/p>\n<ul>\n<li><strong>Linux (UFW ile):<\/strong>\n<pre><code class=\"language-bash\">sudo ufw allow 8000\/tcp\nsudo ufw enable<\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Windows:<\/strong> Windows Defender G\u00fcvenlik Duvar\u0131 ayarlar\u0131ndan 8000 portunu gelen ba\u011flant\u0131lar i\u00e7in izin vermelisiniz.<\/li>\n<\/ul>\n<p>E\u011fer sunucunuzu internete a\u00e7\u0131yorsan\u0131z, mutlaka g\u00fc\u00e7l\u00fc kimlik do\u011frulama ve HTTPS (SSL\/TLS) kullanmal\u0131s\u0131n\u0131z. Bunun i\u00e7in Nginx veya Caddy gibi bir ters proxy (reverse proxy) kullanmak en iyi y\u00f6ntemdir.<\/p>\n<h4>\u0130zleme ve G\u00fcncelleme<\/h4>\n<ul>\n<li><strong>Loglar:<\/strong> Sunucunuzun loglar\u0131n\u0131 d\u00fczenli olarak kontrol edin (<code>systemctl status mcp_server<\/code> veya pm2 loglar\u0131). FastAPI ve Uvicorn, varsay\u0131lan olarak terminale \u00f6nemli bilgileri basar.<\/li>\n<li><strong>G\u00fcncellemeler:<\/strong> Python k\u00fct\u00fcphanelerinizi ve i\u015fletim sisteminizi d\u00fczenli olarak g\u00fcncelleyin.\n<pre><code class=\"language-bash\"><\/p>\n","protected":false},"excerpt":{"rendered":"G\u00fcn\u00fcm\u00fcz yapay zeka destekli geli\u015ftirme ortamlar\u0131nda, Cursor gibi IDE&#8217;ler veya Claude gibi g\u00fc\u00e7l\u00fc dil modelleri, \u00fcretkenli\u011fi inan\u0131lmaz seviyelere ta&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-39423","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cursor\/Claude i\u00e7in Kendi MCP Sunucunuzu 4 Ad\u0131mda Kurun - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cursor\/Claude i\u00e7in Kendi MCP Sunucunuzu 4 Ad\u0131mda Kurun\" \/>\n<meta property=\"og:description\" content=\"G\u00fcn\u00fcm\u00fcz yapay zeka destekli geli\u015ftirme ortamlar\u0131nda, Cursor gibi IDE&#039;ler veya Claude gibi g\u00fc\u00e7l\u00fc dil modelleri, \u00fcretkenli\u011fi inan\u0131lmaz seviyelere ta...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-21T04:30:45+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Cursor\/Claude i\u00e7in Kendi MCP Sunucunuzu 4 Ad\u0131mda Kurun\",\"datePublished\":\"2026-02-21T04:30:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/\"},\"wordCount\":2219,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/\",\"name\":\"Cursor\/Claude i\u00e7in Kendi MCP Sunucunuzu 4 Ad\u0131mda Kurun - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-21T04:30:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cursor\/Claude i\u00e7in Kendi MCP Sunucunuzu 4 Ad\u0131mda Kurun\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cursor\/Claude i\u00e7in Kendi MCP Sunucunuzu 4 Ad\u0131mda Kurun - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/","og_locale":"tr_TR","og_type":"article","og_title":"Cursor\/Claude i\u00e7in Kendi MCP Sunucunuzu 4 Ad\u0131mda Kurun","og_description":"G\u00fcn\u00fcm\u00fcz yapay zeka destekli geli\u015ftirme ortamlar\u0131nda, Cursor gibi IDE'ler veya Claude gibi g\u00fc\u00e7l\u00fc dil modelleri, \u00fcretkenli\u011fi inan\u0131lmaz seviyelere ta...","og_url":"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-21T04:30:45+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Cursor\/Claude i\u00e7in Kendi MCP Sunucunuzu 4 Ad\u0131mda Kurun","datePublished":"2026-02-21T04:30:45+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/"},"wordCount":2219,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/","url":"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/","name":"Cursor\/Claude i\u00e7in Kendi MCP Sunucunuzu 4 Ad\u0131mda Kurun - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-21T04:30:45+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/cursor-claude-icin-kendi-mcp-sunucunuzu-4-adimda-kurun\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Cursor\/Claude i\u00e7in Kendi MCP Sunucunuzu 4 Ad\u0131mda Kurun"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=39423"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39423\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}