.cursor/mcp.json ile Shager'ı Cursor'a ekleyin: Sürüm notlarını her müşteri hesabı için taslağa çevirin

Shager'ın uzak MCP sunucusunu Cursor'da url ve ortam değişkenli Authorization başlığıyla kurun, sonra değişiklik günlüğünü hesap bazında taslaklara çevirin.

Shager'ı Cursor'a bağlamak için projenizde .cursor/mcp.json dosyasını (tüm projeler için ~/.cursor/mcp.json dosyasını) oluşturun ve içine url değeri https://app.shager.ai/api/mcp olan, headers alanında Authorization değerini Bearer ${env:SHAGER_API_KEY} olarak ayarlayan bir shager girdisi ekleyin. Cursor değişkeni ortamınızdan çözer, HTTP üzerinden bağlanır ve ajan Shager'ın araçlarına kavuşur. Yerel sunucu yok, köprü yok.

Cursor, dağıtımı yönetmek için ilginç bir yer; çünkü kaynak malzeme zaten depoda duruyor: değişiklik günlükleri, dokümanlar, sürüm notları, blog taslakları. Bu rehber bağlantıyı doğru şekilde kuruyor ve ardından onu tam da bu iş için kullanıyor.

Cursor'ın MCP yapılandırması uzak bir sunucu için nasıl görünür?

Cursor'ın MCP dokümantasyonu, uzak bir sunucuyu bir url ve isteğe bağlı bir headers nesnesi olarak gösterir; url ve headers alanlarında ${env:NAME} biçiminde değişken yerleştirmeyi de belgeler. İki konumdan söz eder: projeye özel araçlar için projedeki .cursor/mcp.json ve her yerde kullanılabilecek araçlar için ana dizindeki ~/.cursor/mcp.json.

Shager için:

{
  "mcpServers": {
    "shager": {
      "url": "https://app.shager.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer ${env:SHAGER_API_KEY}"
      }
    }
  }
}

Kabuk profilinizde de:

export SHAGER_API_KEY="shgr_live_your_key_here"

Cursor ortam değişkenlerini onu başlatan süreçten okur. macOS'ta Dock'tan açılan bir uygulama, ~/.zshrc dosyasında tanımladığınız değişkenleri görmeyebilir. Anahtar doğru olduğu halde sunucu 401 ile başarısız oluyorsa, Cursor'dan çıkın ve nedenin bu olduğunu doğrulamak için onu bir terminalden cursor . ile başlatın.

Cursor'ın mcp.json dosyası: shager sunucusu, URL'si ve anahtarı bir ortam değişkeninden okuyan Authorization başlığı.
Aynı dosya proje bazında veya genel olarak çalışır.

Proje dosyası mı, genel dosya mı?

Konum Ne için uygun Nelere dikkat etmeli
Depodaki .cursor/mcp.json İçerik işlerinin yapıldığı bir pazarlama sitesi ya da doküman deposu Yalnızca ${env:...} biçimiyle commit edin, asla anahtarın kendisiyle değil
~/.cursor/mcp.json Shager'ın her çalışma alanında hazır olmasını istiyorsanız Artık her projenin ajanı Shager çalışma alanlarınıza erişebilir

Birkaç müşteri sitesinin bakımını yapan bir ajans geliştiricisi için proje dosyası genellikle daha uygun seçenektir. A müşterisinin deposundaki bir ajanın, B müşterisinin çalışma alanına gelişigüzel taslak yazabilmesi doğru olmaz. Proje dosyasını, kuruluşunda yalnızca o depo için anlamlı çalışma alanları bulunan bir anahtarla eşleştirin ya da en azından komutlarınızda çalışma alanlarının adını açıkça belirtin.

Anahtar nereden gelir?

Anahtarı bir insan https://app.shager.ai/dashboard/agents adresinde oluşturur ve kapsamları seçer. Düzenleyici içindeki işler için doğru varsayılan read artı write: Ajan medya yükleyebilir ve taslak oluşturabilir, ama publish kapsamı olmadan Shager planlamayı ya da yayınlamayı reddeder. Prototip geliştiriyorsanız ve henüz hesabınız yoksa, bir ajan kendi kendine kayıt yoluyla bir test ortamı oluşturabilir; tarif shager.ai/auth.md adresinde yayımlanmıştır.

Cursor'ın araçları gördüğünü nasıl kontrol edersiniz?

Cursor'ın MCP ayarlarını açın ve shager girdisini bağlı durumuyla ve araç listesiyle birlikte arayın: whoami, list_workspaces, create_workspace, list_channels, create_connect_link, list_groups, create_group, upload_media_from_url, create_post, schedule_post, request_approval, get_post, list_posts, cancel_post ve get_analytics. Sunucu hata gösteriyorsa olağan üç neden şunlardır: eksik bir ortam değişkeni, başlık değerinde eksik Bearer ya da dosyada bir JSON söz dizimi hatası.

Ardından ajan sohbetinde:

Call shager whoami and tell me which scopes this key has.
Diyagram: brif, her hesap için taslak, müşteri onayı, kademeli yayın ve hesap başına tıklama raporu.
Beş sabit aşama. Gönderi başına onay her müşteri için isteğe bağlıdır; yayınlamak için bir insan sahibi ve anahtarda ayrı bir yayın yetkisi gerekir.

İş akışı: Değişiklik günlüğü hesap bazında taslaklara dönüşüyor

Cursor'a çok uyan somut bir iş örneği. Diyelim ki Facebook ve Instagram'da on iki bölgesel iş ortağı sayfası olan bir yazılım bayisinin sitesini yönetiyorsunuz. Her sürümde biri değişiklik günlüğünü elle sosyal medya gönderilerine dönüştürüyor. Shager bağlıyken ilk taslağı ajan çıkarabilir.

Read CHANGELOG.md and take the entry for v4.2 only.
In Shager workspace "Brightline Partners":
1. list_groups and use the group "Regional partners".
2. list_channels so you know each channel's name and network.
3. Write one short post about v4.2 for a non-technical audience.
4. Create a DRAFT with create_post (no schedule_at):
   group_ids: the "Regional partners" group
   per_channel: a caption per channel that names the region from the channel
   name and varies the opening line; keep facts identical
   cta_url: https://brightline.example/releases/4-2
   campaign: "release-4-2"
   first_comment: "Full notes: " followed by the link
5. Print the post id and a table of channel, caption first line, format.

Bu komuttaki birkaç tercih bilinçli.

Bilgiler aynı kalırken ifadeler değişir. per_channel her hesabın açıklamasını ayrı ayrı belirler; önerilen kalıp da budur. Birbiriyle bağlantılı sayfalarda aynı metnin on iki kopyası, ölçekli paylaşımda spam engellerinden kaçınma yazımızda uyardığımız türden bir tekrardır; bu sayfalardan ikisini takip eden biri için de kötü görünür.

Link hesap bazında takip edilir. cta_url verildiğinde Shager her hesap için ayrı bir kısa link ve UTM seti oluşturur; utm_content hesabı tanımlar. Daha sonra get_analytics tıklamaları hesaba ve gönderiye göre döndürür; böylece bir bölgedeki iş ortağı kendi sayfasının ne getirdiğini görebilir.

Çıktı bir taslaktır. Yayına çıkmadan önce birinin onu Shager'da okuması gerekir: ya ekipten bir onaylayan ya da onay linki üzerinden müşteri.

API'yi doğrudan koddan çağırmayı tercih ederseniz?

Bazen bunu bir sohbet yerine depoda bir betik olarak istersiniz. Örneğin CI'daki bir sürüm akışı, birinin Cursor'ı açmasına bağlı olmamalıdır. Aynı işlemler REST üzerinden de sunulur ve OpenAPI belgesinde tanımlanmıştır. Yukarıdaki 4. adımın TypeScript karşılığı:

const API = "https://app.shager.ai/api/v1";
const headers = {
  Authorization: `Bearer ${process.env.SHAGER_API_KEY}`,
  "Content-Type": "application/json",
};

const res = await fetch(`${API}/workspaces/${workspaceId}/posts`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    caption: defaultCaption,
    group_ids: [groupId],
    per_channel: captions.map((c) => ({ channel_id: c.channelId, caption: c.text })),
    cta_url: "https://brightline.example/releases/4-2",
    campaign: "release-4-2",
    first_comment: "Full notes: https://brightline.example/releases/4-2",
  }),
});

const body = await res.json();
if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message}`);
console.log(body.data.id, body.data.status); // a DRAFT post

Yanıtlar { "data": ... }, hatalar ise { "error": { "code", "message" } } içinde döner; bu yüzden hata yönetimi her yerde aynıdır. Tüm sırayı REST hızlı başlangıç rehberi anlatıyor.

Projeye eklemeye değer kurallar

Cursor proje kurallarını destekler ve kısa bir kural, kısıtları her komutta tekrar yazmaktan sizi kurtarır. Örneğin:

When using the shager MCP server:
Never pass schedule_at unless I explicitly give a date and time.
Always use per_channel captions when posting to more than one account.
Always pass cta_url for any link instead of pasting raw URLs into captions.
Use ISO 8601 with an offset for any time, in the workspace timezone.

Kurallar modele yol gösterir ama bir yaptırım değildir. Yaptırımı anahtarın kapsamı sağlar. Düzenleyicide kullandığınız anahtarda publish kapalı kalsın; model ilk kuralı görmezden gelse bile kural çiğnenemez.

SSS

Cursor, Shager'ı OAuth olmadan destekliyor mu?

Evet. Cursor yapılandırdığınız başlıkları olduğu gibi gönderir, dolayısıyla bearer API anahtarı doğrudan çalışır. Shager'ın MCP sunucusu, bunu tercih eden istemciler için OAuth ile girişi de destekler; ama Cursor'da anahtar yeterli.

Cursor'da ve Claude Code'da aynı anahtarı kullanabilir miyim?

Kullanabilirsiniz, ama ayrı anahtarlar daha iyi. Her çağrı Shager'ın denetim kaydına onu yapan anahtarla düşer; ayrı anahtarlar sayesinde birini bozmadan diğer aracın erişimini iptal edebilirsiniz. Claude Code kurulumunun bu serideki kendi rehberi var.

"Bunu yayınla" dersem ajan hemen paylaşır mı?

Yalnızca anahtarda publish kapsamı varsa, hesap bir insan tarafından sahiplenilmişse ve çalışma alanı önce müşteri onayı istemiyorsa. Okuma ve yazma anahtarıyla istek açık bir 403 ile başarısız olur ve hiçbir şey yayına çıkmaz.

Sonraki adım

Bağlantı çalıştıktan sonra asıl kazanç, zekice yazılmış komutlardan değil, tekrarlanabilir bir prosedürden gelir. Yapı için Shager için Claude skill'i nasıl oluşturulur yazısını okuyun; aynı talimatlar Cursor kurallarına da rahatça uyarlanır. Her araç ve alan için başvuru kaynağı olarak ajanlar sayfasını açık tutun.

Kendi hesaplarınızda deneyin.

Lansman döneminde ücretsiz, kart gerekmez. Bağlayın, bir kez yazın; Shager yayınlasın ve ölçsün.