Rehber

Telegram MCP kurulumu: yapay zekâ ajanını kanala bağlama

Yapay zeka ajanını kanalına MCP ile bağlamak: önceden ne hazırlanır, claude.ai, ChatGPT, Claude Code ve Cursor adımları ve bir araç reddettiğinde ne yapılır.

AdminHub

Özet. Herhangi bir istemci bağlanmadan önce üç şeyin doğru olması gerekir: çalışma alanının kendi botu vardır, o bot kanalda yöneticidir ve sahibi onunla özel sohbette Start’a basmıştır. Sonra yolu seçersin — https://backend-git-production-cb93.up.railway.app/mcp sunucu adresini Telegram girişli özel bağlayıcı olarak eklemek ya da Ayarlar → Yapay zeka ajanları (MCP) bölümünden alınan bir anahtarı Authorization başlığına koymak. Ardından on dört araç geliyor: beşi kanalı okur, yedisi gönderilerle çalışır, ikisi kitleyi okur. Ürün, sipariş ve özel sohbet yok; bot olmadan da hiçbir şey yok. İstemci adımları 8 Eylül 2026’da doğrulandı.

Bu, Telegram MCP sunucuları karşılaştırmasının pratik yarısı: orada bot yolunun senin istediğin yol olup olmadığı kararlaştırılıyor, burada ise bağlanıyorsun ve olmadığında ne yapacağını öğreniyorsun.

Bağlamadan önce

Reddedilmelerin neredeyse tamamı burada, daha tek bir araç çağrılmadan yaşanır.

Çalışma alanının kendi botu gerekiyor. AdminHub’ın MCP sunucusu, kanal sahibinin kendi kanalı için kurduğu bot üzerinden yayınlar — asla ortak bir AdminHub botu üzerinden ve asla kişisel hesabın üzerinden değil. Bot yokken araçlar sessizce bozulmaz: bot_required ile ve botu tek dokunuşla kuran bir bağlantıyla reddederler — telegram.me/tg_adminhub_bot?startapp=bot. get_workspace bunun istisnasıdır ve yine de cevap verir, böylece bir ajan neyin eksik olduğunu kendisi bulabilir.

Bot kanalın yöneticisi olmalı. Yalnızca üye olan bir bot yayın yapamaz ve Telegram bu konuda bir gönderim başarısız olana kadar hiçbir şey söylemez. list_channels her kanalda bot_is_admin işaretini tam da bu yüzden taşır; create_post da bu işaretin kapalı olduğu kanalı channel_not_postable ile reddeder — sonradan kaybolacak bir gönderiyi kabul etmek yerine.

Sahibinin botla özel sohbeti açık olmalı. Bu yalnızca görseller için geçerlidir ve kural bizim değil, Telegram’ındır: bir bot yalnızca kendi gönderdiği bir dosya için file id alabilir. Bu yüzden add_post_image görseli indirir, o id’yi almak için sahibinin botla sohbeti üzerinden bir kez iletir, gönderiye ekler ve ilettiği mesajı siler. Sahibi orada hiç Start’a basmamışsa, araç daha hiçbir şey indirmeden owner_bot_not_started ile reddeder.

Yan etkiyi açıkça söylemekte fayda var: bir ajanın eklediği her görsel, kısa süreliğine ve bildirimle birlikte, sahibinin kendi botuyla olan sohbetine düşer. Sonrasında siliniyor, ama teslim edilmiş oluyor; görsel istememiş biri de onun nereden geldiğini merak ediyor. get_workspace owner_dm_open alanını döndürür, dolayısıyla bu, başarısız bir çağrının ardından değil, öncesinde kontrol edilebilir.

İki bağlanma yolu

Sunucu adresiyle, anahtarsız. claude.ai, ChatGPT, Claude Desktop ve Claude Code için. https://backend-git-production-cb93.up.railway.app/mcp adresini gösteren özel bir bağlayıcı eklersin, bir AdminHub sayfası açılır, Telegram ile girersin, bir çalışma alanı seçersin ve İzin ver’e basarsın. Botu olmayan bir çalışma alanı listede görünür ama seçilemez — yayın yapacak bir şey olmazdı. Erişim üç izni birden kapsar: channel:read, posts:write ve audience:read.

Başlıktaki anahtarla. Claude Code, Cursor ve Authorization başlığı gönderen her şey için. Ayarlar → Yapay zeka ajanları (MCP) → Anahtar oluştur yolunu aç. Anahtar tam olarak bir kez gösterilir, ikinci bir bakış yoktur: veritabanında yalnızca bir özet durur. İki yol da aynı yerden iptal edilir ve iptal edilen bağlantı anında çalışmayı bırakır.

Bir şeyi önceden planlamakta fayda var: anahtar ile adres üzerinden bağlantı, ikisi de birer bağlantı sayılır ve Free bir tane veriyor.

claude.ai

Customize → ConnectorsAdd custom connector → adresi yapıştır → Add. Kimlik doğrulama varsayılanları yeterli: sunucu hem Anthropic’in barındırdığı istemci meta verilerini hem de dinamik kaydı kabul ediyor, yani elle doldurulacak bir şey yok. Sonra bağlarsın, Telegram girişini tamamlarsın ve kullanmak istediğin sohbette açarsın.

Özel bağlayıcılar Free, Pro, Max, Team ve Enterprise’da çalışır; Free bir taneyle sınırlıdır. Team ve Enterprise’da bağlayıcıyı yalnızca bir Owner ekler, Organization settings → Connectors yolundan; geri kalan herkes sonrasında kendi Connectors sayfasından ona bağlanır.

ChatGPT

Bağlayıcılar Temmuz 2026’da Apps oldu ve özel bir MCP sunucusu için ayrıca geliştirici modu gerekiyor: Settings → Security and login → Developer mode, ardından uygulamayı Apps bölümünden oluşturuyorsun — sunucu adresi ve kimlik doğrulama yöntemi olarak OAuth. Bir çalışma alanında geliştirici modunu yönetici Permissions & Roles altından açar, uygulamayı da çalışma alanı ayarlarından yayımlar.

Önceden bilinmesi gereken iki sınır var: bu bir web özelliği ve mobil desteği yok; ve tam MCP — yazan yarısı — şu anda Business ve Enterprise/Edu hesaplarına açık, Pro hesabı ise bir sunucuyu yalnızca okuma ve fetch izinleriyle bağlıyor. Pro’da okuyan araçların çalışmasını bekle, yayınlayanların çalışmamasını.

Claude Desktop

claude.ai’deki bağlayıcı akışının aynısı, yapılandırma dosyası değil — claude_desktop_config.json yerel stdio sunucuları içindir, bu ise öyle bir sunucu değil. Claude uzak bir bağlayıcıya senin makinenden değil Anthropic’in kendi altyapısından ulaşır; burada bu hiçbir şeyi değiştirmiyor, çünkü bu adres herkese açık.

Claude Code

Claude Code iki yolla da yapıyor ve bunu, belki hiç gerekmeyecek bir anahtar oluşturmadan önce bilmekte fayda var. Anahtarla:

claude mcp add --transport http adminhub https://backend-git-production-cb93.up.railway.app/mcp --header "Authorization: Bearer <anahtar>"

Anahtarsız olarak aynı sunucuyu başlıksız ekle ve girişi Claude Code’un kendisi yapsın:

claude mcp add --transport http adminhub https://backend-git-production-cb93.up.railway.app/mcp

sonra /mcp komutunu çalıştır ve tarayıcıdaki akışı izle. Bağlantının bir tarayıcı oturumundan uzun yaşaması gerekiyorsa anahtarı seç; bir sırrı yapılandırma dosyasında tutmak istemiyorsan girişi seç.

Cursor ve başlıkla bağlanan diğer istemciler

Cursor bütün projeler için ~/.cursor/mcp.json, tek bir proje için .cursor/mcp.json dosyasını okur. Uzak sunucu, url ve headers içeren bir kayıttır — transport alanı yoktur; onu uzak yapan şey url’in kendisidir:

{
  "mcpServers": {
    "adminhub": {
      "url": "https://backend-git-production-cb93.up.railway.app/mcp",
      "headers": {
        "Authorization": "Bearer ${env:ADMINHUB_MCP_KEY}"
      }
    }
  }
}

Cursor ${env:...} ifadesini url ve headers içinde çözer, böylece anahtar yanlışlıkla commit’leyebileceğin bir dosyada değil, ortam değişkeninde durabilir. Streamable HTTP konuşan başka her şey de aynı şekilde bağlanır: adres, artı bearer token olarak anahtar.

On dört araç

AraçNe yapar
get_workspaceÇalışma alanı, plan, bot durumu, owner_dm_open, bu ayki MCP gönderi kullanımı
list_channelsBütün kanallar; abone sayısı, bot_is_admin ve is_active ile
get_channel_statsToplamlar ve gün gün katılma-ayrılma, 90 güne kadar pencere
list_postsSon gönderiler; kanala ya da duruma göre süzülebilir
get_postBir gönderinin metni, kanal başına teslim durumu ve hatası
create_postBir ya da birden çok kanala metin: taslak, zamanlanmış veya hemen
publish_postKayıtlı bir taslağı gönderir
update_postTaslak, zamanlanmış veya başarısız bir gönderinin metnini, başlığını ya da saatini değiştirir
edit_published_postKanalda yayımlanmış bir gönderinin metnini değiştirir
cancel_postTaslak, zamanlanmış veya başarısız gönderiyi siler — yayımlananlar kalır
retry_post_deliveryTeslimin başarısız olduğu ya da iptal edildiği kanalları yeniden dener
add_post_imageURL’den tek bir görsel ekler, sahibinin sohbeti üzerinden iletilerek
list_subscribersBir kanalın aboneleri: ad, kullanıcı adı, Telegram kimliği
get_subscriberTek bir kişi için aynısı

Gönderi metni Telegram HTML’idir, asla Markdown değil; zamanlanmış saatler de UTC farkı taşımak zorundadır. Yayın kuyrukla ilerler: yazan araçlar hemen dönüş yapar, teslim bir dakika içinde gerçekleşir, dolayısıyla sonuç get_post ile geri okunur.

Yapmayacakları

Ürün yok, sipariş yok, mini CRM yok, bilgi tabanı yok — AdminHub’ın ticaret ve yapay zeka destek yarıları MCP üzerinden hiç açılmıyor. Özel sohbet yok, rastgele sohbet yok, mesaj geçmişi yok: buradaki hiçbir araç bir konuşmaya dokunmuyor, ve bunun ile bir userbot sunucusu arasındaki bütün fark tam olarak budur.

Kitle verisi kendi satırını hak ediyor, çünkü içindeki sınırı gözden kaçırmak kolay. Adlar, kullanıcı adları ve Telegram kimlikleri audience:read ile geri gelir; harcama ve yaşam boyu değer onlarla birlikte gelmez, yalnızca ajan o çağrıda include_spend gönderdiğinde görünür. Bu bilerek çizilmiş bir sınır ve onu tartma zamanı, bir ajan en iyi müşterilerini özetledikten sonra değil, bağlanmadan öncedir.

Çalışmadığında

Bütün araçlar bot_required ile reddediyor. Çalışma alanının botu yok. Bağlantı zaten hata metninin içinde geliyor ve bot var olana kadar başka hiçbir şey çalışmıyor.

Gönderi oluştu ama hiç ulaşmadı. Bir dakika bekle — teslim kuyrukla ilerliyor — sonra get_post’u çağır ve kanal başına status ile error alanlarını oku. Alışıldık sebep, botun orada artık yönetici olmamasıdır. Yetkileri geri ver, ardından retry_post_delivery.

Görsel eklenmiyor. owner_bot_not_started, sahibinin çalışma alanı botuyla hiç özel sohbet açmadığı anlamına gelir. Ondan botu açıp Start’a basmasını iste; get_workspace içindeki owner_dm_open bunu doğrular. owner_unreachable ise komşu durumdur — sohbet açıktı, ama bot o zamandan beri engellenmiş.

plan_limit_reached. Free ayda bir bağlantı ve MCP ile oluşturulmuş otuz gönderi veriyor. Sayaç oluşturmayı sayar, dolayısıyla taslaklar da hesaba girer; teslimi başarısız olan gönderiler girmez. Bağlantı sınırı her iki yolu birden kapsar — anahtar ile adres üzerinden bağlantı tek slotu aynı şekilde doldurur — ve ikincisi çağrı anında değil, oluşturma anında reddedilir. Pro’da bu sınırların ikisi de yok.

Ajan aboneleri göremiyor. Ya bağlantının audience:read izni yoktur — bu izin var olmadan önce çıkarılmış anahtarlar yalnızca eski iki izni taşır ve çözümü yeni bir anahtardır — ya da istemci giriş sırasında izinlerin bir kısmını istemiştir; bu sunucu böyle bir isteği sessizce daraltılmış erişim vererek değil, bütünüyle reddeder. Üçünü birden isteyerek yeniden bağlan.

MCP sayfasında adres, araç listesi ve sık sorulanlar var; anahtar ise ayarlarda iki dokunuş uzakta.

Kaynaklar

İstemci adımları 8 Eylül 2026’da her sağlayıcının kendi belgeleriyle doğrulandı: claude.ai ve Claude Desktop için Anthropic’in yardım merkezi ve bağlayıcı belgeleri, claude mcp add için Claude Code MCP belgeleri, ChatGPT uygulamaları için OpenAI’ın geliştirici modu kılavuzu ve yardım merkezi, mcp.json biçimi için de Cursor MCP belgeleri. AdminHub’ın kendi davranışı — on dört araç, yukarıda adı geçen retler, izinler ve Free sınırları — MCP sayfasından geliyor.

Genelde sorulanlar

AdminHub MCP sunucusunu bağlamadan önce neye ihtiyacım var?
Üç şey, ve üçü de botla ilgili. Çalışma alanının kendi Telegram botu gerekiyor: ajan onun üzerinden yayınlar, AdminHub'ın ortak botu üzerinden değil, ve bot yoksa her araç bot_required ile reddeder. O botun, yayın yapmak istediğin her kanalda yönetici olması gerekir; yoksa create_post kanalı en baştan reddeder. Bir de sahibinin o botla özel sohbetinin açık olması, yani en az bir kez Start'a basmış olması gerekir — görsel eklemeyi mümkün kılan şey budur.
Bağlanmak için anahtar gerekiyor mu?
Yalnızca başlıkla bağlanan istemciler için. claude.ai, ChatGPT, Claude Desktop ve Claude Code tek başına sunucu adresini alır ve kendi girişini yapar: bir AdminHub sayfası açılır, Telegram ile girersin, bir çalışma alanı seçersin ve erişimi verirsin. Claude Code, Cursor ve Authorization başlığı gönderen her şey bunun yerine anahtar kullanabilir. Anahtar Ayarlar, Yapay zeka ajanları (MCP), Anahtar oluştur bölümünde üretilir ve yalnızca bir kez gösterilir: veritabanında sadece bir özet tutulur, dolayısıyla kaybolan anahtar kurtarılmaz, yenisi çıkarılır.
Ajan abonelerim hakkında neyi görebiliyor?
Adları, kullanıcı adlarını ve Telegram kimliklerini — hem de yalnızca ayrı bir audience:read iznine bağlı olarak: bu izni olmayan bir bağlantı boş liste değil, izin hatası alır. Para alanları, yani toplam harcama, yaşam boyu değer ve ödeme sayısı, ajan o çağrıda include_spend göndermedikçe dışarıda kalır. Bu sınır bilerek çizildi: kimin abone olduğu ile ne kadar ödediği iki ayrı sorudur, ve ikincisini yüksek sesle sormak gerekir.
Free planı MCP üzerinden ne veriyor?
Ayda bir bağlantı ve MCP ile oluşturulmuş otuz gönderi. İki sayı da tam kulağa geldiği gibi sayılır. Anahtar ile adres üzerinden bağlantı iki ayrı bağlantıdır, dolayısıyla Free'de ikisinden biri olur, ikisi birden değil. Gönderi sayacı, taslaklar dahil oluşturulanları sayar, teslim edilenleri değil; teslimi başarısız olan gönderiler ise hiç sayılmaz. Pro her iki sınırı da kaldırır.
Ajan gönderinin çıktığını söylüyor ama kanal boş. Neden?
Yayın kuyrukla ilerler, o yüzden bir dakika bekle ve get_post'u çağır: her kanal için durumu ve hatayı ayrı ayrı gösterir. En sık sebep, botun artık o kanalda yönetici olmamasıdır. create_post, botun yazamadığı bir kanalı zaten reddeder; dolayısıyla teslime kadar hayatta kalan durum, gönderi oluşturulduktan sonra botun yetkisinin düşürülmesidir. Yönetici yetkisini geri ver ve retry_post_delivery'yi çağır.