Shager di OpenAI Codex: config.toml, bearer_token_env_var, dan Allowlist Tool agar Draf Tetap Draf
Pasang server MCP remote Shager di Codex CLI lewat config.toml atau codex mcp add, baca kunci dari env var, batasi tool, lalu buat draf pertama.

Untuk menghubungkan Shager ke Codex CLI dari OpenAI, tambahkan tabel [mcp_servers.shager] ke ~/.codex/config.toml berisi url = "https://app.shager.ai/api/mcp" dan bearer_token_env_var = "SHAGER_API_KEY", lalu ekspor kunci shgr_live_ Anda ke variabel tersebut. Codex mendukung streamable HTTP secara native dan mengirim kunci sebagai bearer token, jadi tidak perlu jembatan atau proses lokal. Anda juga bisa melakukannya dalam satu baris dengan codex mcp add shager --url ... --bearer-token-env-var SHAGER_API_KEY.
Sisa panduan ini membahas cara melakukannya tanpa menyesal di kemudian hari: menjauhkan kunci dari file, membatasi tool Shager mana yang boleh dipanggil Codex, dan memilih tugas pertama yang membuktikan semuanya tersambung dengan benar.
Apa yang didukung Codex untuk server MCP remote?
Dokumentasi MCP Codex dari OpenAI menjelaskan server streamable HTTP yang dikonfigurasi dengan url, ditambah tiga cara autentikasi lewat header. Referensi konfigurasinya mendefinisikan ketiganya:
| Key | Fungsinya |
|---|---|
bearer_token_env_var |
Nama environment variable yang nilainya dikirim sebagai bearer token |
http_headers |
Header statis yang disertakan di setiap request |
env_http_headers |
Header yang nilainya dibaca dari environment variable |
Shager mengharapkan Authorization: Bearer shgr_live_..., persis seperti yang dihasilkan bearer_token_env_var. Itulah opsi yang sebaiknya dipakai.

Opsi A: edit config.toml
Buka ~/.codex/config.toml dan tambahkan:
[mcp_servers.shager]
url = "https://app.shager.ai/api/mcp"
bearer_token_env_var = "SHAGER_API_KEY"
Lalu simpan kuncinya di profil shell Anda, bukan di TOML:
export SHAGER_API_KEY="shgr_live_your_key_here"
Perhatikan bahwa konfigurasi hanya menyimpan nama variabelnya, bukan kuncinya. Artinya potongan konfigurasi ini aman di-commit atau dibagikan, dan setiap anggota tim memasukkan kuncinya sendiri. Kunci terpisah per orang akan terasa manfaatnya nanti, karena log audit Shager di https://app.shager.ai/dashboard/agents mencatat setiap panggilan atas nama kunci yang melakukannya.
Opsi B: codex mcp add
CLI-nya bisa menuliskan tabel yang sama untuk Anda. Kode sumber Codex untuk codex mcp add mendefinisikan --url untuk server streamable HTTP dan flag --bearer-token-env-var yang mensyaratkannya (mcp_cmd.rs di GitHub):
codex mcp add shager \
--url https://app.shager.ai/api/mcp \
--bearer-token-env-var SHAGER_API_KEY
Jika versi yang terpasang di komputer Anda berbeda, codex mcp add --help adalah acuan yang pasti.
Periksa hasilnya:
codex mcp list
Di dalam TUI Codex, /mcp menampilkan server yang aktif beserta tool-nya.
Bagaimana kalau memakai http_headers saja?
Bisa, tetapi sebaiknya jangan. http_headers = { "Authorization" = "Bearer shgr_live_..." } memang berfungsi, tetapi cara ini menaruh kredensial aktif di file teks biasa yang sering ikut tersalin ke repo dotfile. Jika Anda butuh header selain bearer token, env_http_headers memetakan nama header ke nama environment variable:
[mcp_servers.shager]
url = "https://app.shager.ai/api/mcp"
env_http_headers = { "Authorization" = "SHAGER_AUTH_HEADER" }
Dengan bentuk ini, variabelnya harus berisi nilai lengkap termasuk skemanya: export SHAGER_AUTH_HEADER="Bearer shgr_live_...". Untuk Shager, bearer_token_env_var lebih sederhana dan hasilnya sama.

Bagaimana membatasi apa yang bisa dilakukan Codex di Shager?
Bagian inilah yang biasanya dilewatkan panduan setup lain. Codex memungkinkan Anda menyaring tool sebuah server dengan enabled_tools (daftar yang diizinkan) dan disabled_tools (daftar yang ditolak, diterapkan setelahnya), keduanya terdokumentasi di referensi konfigurasi. Gabungkan dengan scope kunci Shager, dan Anda mendapat dua lapis pengaman yang sama-sama menolak secara default.
Profil penyusun draf yang bisa membaca semuanya dan membuat draf, tetapi tidak bisa menjadwalkan, membatalkan, atau membuat tautan koneksi:
[mcp_servers.shager]
url = "https://app.shager.ai/api/mcp"
bearer_token_env_var = "SHAGER_API_KEY"
enabled_tools = [
"whoami",
"list_workspaces",
"list_channels",
"list_groups",
"upload_media_from_url",
"create_post",
"get_post",
"list_posts",
"get_analytics",
]
tool_timeout_sec = 120
create_post tetap ada di daftar karena tanpa schedule_at ia hanya menyimpan draf. Jika kuncinya juga tidak punya scope publish, Shager menolak setiap create_post yang menyertakan schedule_at dengan 403, jadi model sekreatif apa pun tidak bisa menyelipkan postingan terjadwal.
tool_timeout_sec dinaikkan karena upload_media_from_url mengunduh file di sisi server, dan video vertikal yang besar bisa memakan waktu lebih lama dari default 60 detik yang tercantum di referensi.
Tugas pertama yang layak dijalankan
Mulailah dengan prompt yang menyentuh beberapa tool dan hanya meninggalkan draf:
Use the shager MCP server.
1. whoami, then list_workspaces.
2. In workspace "Lakeside Realty", list_channels and list_groups.
3. upload_media_from_url https://example.com/media/open-house.jpg
4. create_post as a draft to group "All agents" with a different caption per
channel (per_channel), mentioning each agent's neighborhood from the channel
name. cta_url https://lakesiderealty.example/open-house, campaign
"open-house-oct", first_comment "Details and RSVP: " followed by the link.
5. get_post and print a table of channel, network, format and state.
Yang seharusnya Anda lihat: sebuah postingan berstatus DRAFT dengan satu tujuan per akun, masing-masing dengan format yang sudah disesuaikan untuk platformnya. Di Shager, setiap akun mendapat tautan pendek dan tag UTM sendiri untuk cta_url, dengan utm_content berisi nama akun, dan inilah yang membuat atribusi per akun bisa berjalan nanti. Detailnya ada di atribusi prospek per akun.
Bisakah Codex menjalankan ini tanpa ada manusia di depan keyboard?
Codex punya mode non-interaktif codex exec untuk skrip dan CI. Perilaku persetujuan tool MCP dalam mode headless sudah berubah dari rilis ke rilis, jadi uji coba dulu di versi yang terpasang sebelum Anda menjadwalkannya. Untuk pekerjaan yang harus berjalan sendiri setiap minggu, banyak tim melewati lapisan chat dan memanggil REST API Shager dari skrip pendek, yang tidak punya prompt persetujuan yang bisa membuatnya macet. Apa pun pilihan Anda, beri pekerjaan itu kunci sendiri, jaga allowlist tool tetap ketat, dan putuskan dengan sadar apakah kunci itu membawa publish. Rutinitas yang dibangun di atas pilihan-pilihan itu dijabarkan di rutinitas distribusi mingguan.
Pemecahan masalah
| Yang Anda lihat | Penyebab | Solusi |
|---|---|---|
401 unauthorized |
Variabel belum diekspor di shell yang menjalankan Codex | echo $SHAGER_API_KEY di terminal yang sama, lalu restart Codex |
Tool tidak muncul di /mcp |
Nama tidak ada di enabled_tools, atau tercantum di disabled_tools |
Cocokkan ejaannya dengan daftar tool di /en/agents |
403 sandbox_unclaimed |
Kunci berasal dari pendaftaran mandiri agen dan belum diklaim manusia | Kirim claim_url ke seseorang |
403 forbidden saat menjadwalkan |
Kunci tidak punya publish |
Memang begitu untuk kunci penyusun draf |
429 rate_limited |
Lebih dari 120 request per menit per kunci | Gunakan grup dan satu create_post, bukan satu panggilan per akun |
FAQ
Apakah Codex perlu OAuth untuk berkomunikasi dengan Shager?
Tidak. Codex mendukung bearer token dari environment variable, dan Shager menerima kunci API dengan cara itu. Server MCP Shager juga mendukung login OAuth, dan Codex pun mendukung server OAuth, jadi Anda bisa login saja jika tidak ingin mengelola kunci.
Apakah pengaturan Shager berbeda di ekstensi IDE Codex?
Dokumentasi MCP OpenAI menyebut bahwa aplikasi desktop ChatGPT, Codex CLI, dan ekstensi IDE memakai konfigurasi yang sama, jadi tabel ~/.codex/config.toml yang sama berlaku untuk semuanya. Pastikan environment variable terlihat oleh proses editor, yang di macOS bisa berarti Anda perlu membuka editor dari terminal.
Bisakah Codex diarahkan ke REST API alih-alih MCP?
Bisa, jika Anda menulis kode dan bukan sekadar chatting. Dokumen OpenAPI menjelaskan operasi yang sama dengan tool MCP, dengan scope dan batasan yang sama.
Langkah berikutnya
Setelah Codex terhubung, kenali dulu operasi-operasinya sebelum mengotomatiskan apa pun. Quickstart REST API memandu urutan lengkap dari workspace hingga postingan terlacak dengan curl dan Python, yang sekaligus membantu Anda memahami apa yang dilakukan Codex saat memanggil tool MCP.


