Server MCP
taploka-mcp memungkinkan agen coding menerbitkan game dengan bicara ke arcade lewat Model Context Protocol. Isinya
satu berkas tanpa dependensi dan butuh Node 20 atau lebih baru.
Pasang
taploka-mcp adalah server MCP stdio biasa, jadi agen mana pun yang bicara MCP bisa menjalankannya: Claude Code,
Codex CLI, Cursor, Windsurf, Gemini CLI, VS Code Copilot, dan lainnya yang membaca blok mcpServers. Claude Code
menulis entri sendiri dengan satu baris:
claude mcp add taploka -- npx -y taploka-mcp@latest
Harness lain memakai registrasi yang sama dalam bentuk JSON, di tempat konfigurasi masing-masing (~/.codex/config.toml
untuk Codex, .cursor/mcp.json untuk Cursor, .vscode/mcp.json untuk VS Code, ~/.gemini/settings.json untuk
Gemini CLI):
{
"mcpServers": {
"taploka": {
"command": "npx",
"args": ["-y", "taploka-mcp@latest"]
}
}
}
Lalu sambungkan:
npx -y taploka-mcp@latest login
login meminta kode pendek ke arcade, membuka halaman persetujuan, lalu menyimpan kunci yang diberikan di
~/.taploka/credentials.json dengan izin khusus pemilik. Lihat Harness API untuk apa
yang terjadi di balik layar.
| Perintah | Efek |
|---|---|
login [--url=…] [--profile=…] |
Sambungkan mesin ini ke sebuah arcade: arcade resmi, kecuali --url menunjuk arcade buatan sendiri |
whoami [--profile=…] |
Tampilkan arcade mana yang ditunjuk sebuah profil |
logout [--profile=…] |
Lupakan sebuah profil |
help |
Cara pakai |
Tanpa perintah, skripnya bicara MCP lewat stdio, dan begitulah klien menjalankannya.
Tool
push_game
Unggah bundle lalu rilis.
| Argumen | Arti |
|---|---|
zip |
Path ke ZIP atau ke folder. Folder di-zip lokal, melewati dotfile dan node_modules. |
title |
Nama game. Di push pertama slug diturunkan dari sini; setelah itu diabaikan. |
game |
Slug game yang sudah ada. Pakai ini di setiap push setelah yang pertama. |
rollout |
Persentase pemain yang disajikan versi ini, 0-100. Default 100. |
changelog |
Catatan pendek yang disimpan bersama versinya. |
draft |
Simpan dan validasi tanpa merilis. Default false. |
Mengembalikan nomor versi, status, rollout, jumlah berkas, URL main, dan daftar lengkap pemeriksaan validasi.
update_game
Ubah apa yang dilihat pemain. Hanya kolom yang kamu kirim yang tersentuh.
game (wajib), title, tagline, description, translations (teks toko per bahasa), cover (path gambar lokal),
cover_url, banner (path gambar
lokal), banner_url, screenshots (path
gambar lokal, sampai 6: mengganti seluruh set), screenshots_url (URL yang sudah di-host), categories (slug huruf
kecil, maksimal 5), features (offline, leaderboard, cloud_save), orientation, max_score,
max_score_per_second, cumulative_score, sort_order, coin_price, shop.
coin_price adalah yang membuat game premium: angka membuatnya tetap bisa dilihat, tapi memulai sesi butuh pembelian
koin (baris game_unlocks dibuat saat pembayaran), null mengembalikannya jadi gratis. Pembeliannya mengkredit
pemilik game dan unlock-nya permanen. Lihat Koin dan toko.
translations adalah pengecualian kedua: dia mengganti seluruh peta. Tulis title, tagline, dan description
dalam bahasa Indonesia, bahasa rumah arcade, lalu taruh versi Inggrisnya di translations.en. Hanya tagline dan
description yang diterjemahkan, dan kode bahasa yang tidak diiklankan arcade dibuang, bukan disimpan, jadi baca dulu
kode yang diterima lewat game_status.
update_game(game: 'rosok-garage', translations: {
en: { tagline: 'Fix junk, sell gold.', description: 'Run the yard, chase the record.' },
})
shop adalah pengecualian dari "hanya kolom yang kamu kirim": dia mengganti seluruh daftar harga koin game itu, dan
menonaktifkan sku mana pun yang tidak ikut disebut.
update_game(game: 'rosok-garage', shop: [
{ sku: 'engine_lv2', title: 'Mesin Lv2', coin_price: 800 },
{ sku: 'fuel', title: 'Bensin', coin_price: 150, type: 'consumable' },
])
Lihat Koin dan toko untuk apa yang dilakukan game dengan daftar itu.
cover diunggah apa adanya (PNG, JPEG, atau WebP, sampai 3 MB) dan arcade meng-encode ulang jadi WebP yang diskalakan
muat 1200x800. Kirim gambar sumbernya, tidak perlu dikonversi atau dikecilkan dulu.
banner lewat unggahan yang sama dan merupakan gambar lebar (sekitar 1200x500) untuk hero beranda dan header halaman
detail game kamu. Dibiarkan kosong, kedua slot itu memakai sampul.
list_games
Semua game dengan status, jumlah versi, versi yang tayang, dan URL main.
game_status
Satu game secara rinci: metadata, tangga versi lengkap dengan rollout dan ukurannya, total skor, URL main, dan URL
papan peringkat. Daftar languages-nya adalah kode bahasa yang diterima translations.
Profil
Satu profil untuk satu arcade. Login lagi dengan nama profil untuk menambah target lain:
npx -y taploka-mcp@latest login --profile=prod --url=https://your-arcade.example.com
claude mcp add taploka-prod -e TAPLOKA_PROFILE=prod -- npx -y taploka-mcp@latest
Sebuah profil tidak pernah jatuh ke pengaturan profil lain. Kalau sebuah profil tidak punya kunci, push-nya berhenti dengan pesan, bukan diam-diam menghubungi server yang berbeda.
Lingkungan
Variabel lingkungan menang atas kredensial tersimpan, persis yang dibutuhkan mesin build.
| Variabel | Arti |
|---|---|
TAPLOKA_URL |
Arcade yang dituju. Hanya untuk arcade buatan sendiri: bawaannya adalah arcade resmi |
TAPLOKA_KEY |
Token harness |
TAPLOKA_PROFILE |
Memilih profil: prod membaca TAPLOKA_PROD_URL dan TAPLOKA_PROD_KEY |
TAPLOKA_NO_BROWSER |
Isi apa saja untuk mencegah login membuka browser |
Tanpa URL, profil default mengarah ke arcade taploka resmi (atau URL aplikasi ini sendiri saat dijalankan dari repo
ini). Kunci dari environment tetap tidak pernah dipasangkan dengan URL sisa login.
Dukungan protokol
Servernya melayani dua era. Klien di MCP 2026-07-28 mendapat server/discover, versioning _meta per permintaan,
resultType, petunjuk cache di tools/list, dan structuredContent di hasilnya. Klien yang masih memakai handshake
initialize (2025-11-25, 2025-06-18) dijawab dalam bentuk yang mereka harapkan. Versi yang tidak didukung dibalas
error -32022 yang menyebutkan versi apa saja yang tersedia.