@silakagent/mcp
v0.1.6
Published
MCP (Model Context Protocol) server yang mengekspos kemampuan Silak Agent — otomasi browser, sesi/tab, hingga testing/QA (roster tool silak_*) — ke AI coding assistant (Claude Code, Cursor) lewat bridge lokal ke extension.
Maintainers
Readme
@silakagent/mcp
Server MCP (Model Context Protocol) yang mengekspos kemampuan Silak Agent — otomasi browser, sesi/tab, hingga testing/QA (roster tool terbuka silak_*, bukan hanya QA) — ke AI coding assistant seperti Claude Code / Cursor. Server ini live-browser: ia tidak mengeksekusi sendiri — ia me-relay perintah ke extension Silak Agent yang menjalankannya di browser Anda.
Arsitektur (kenapa perlu proses terpisah)
Chrome extension Manifest V3 tidak bisa membuka listening socket / menjalankan proses Node (batasan MV3 yang sama dengan android-runner). Jadi:
Claude Code / Cursor ──stdio──> @silakagent/mcp (proses Node)
│ WS server 127.0.0.1:47812
▼
Silak extension (side panel) ──> qa-engine + page-agent (browser)@silakagent/mcp= proses Node yang dijalankan oleh MCP client (stdio) dan sekaligus membuka WS server di127.0.0.1:47812.- Silak extension menyambung ke WS itu sebagai klien dari background service worker-nya (aktifkan toggle MCP Bridge di Settings sekali (dashboard extension → Settings → MCP Bridge) — koneksi bertahan walau side panel ditutup & tetap satu koneksi walau panel dibuka di banyak tab).
- Banyak browser boleh menyambung ke satu bridge sekaligus (registry per-
browserId). Kalau lebih dari satu, pilih target lewatsilak_use_browser(lihat Tools). - Setiap
tools/calldi-relay ke extension → dieksekusi live di browser → hasil dikembalikan.
Menjalankan
npm (cara utama — sudah dipublish)
Generate token dulu di extension (dashboard → Settings → MCP Bridge → Generate token), lalu daftarkan di config MCP client (mis. ~/.cursor/mcp.json) — tempel token ke env.SILAK_EXTENSION_TOKEN. Pilih salah satu cara (butuh Node ≥ 20):
Cara 1 — npx (tanpa instal, auto-update) · direkomendasikan
{
"mcpServers": {
"silakagent": {
"command": "npx",
"args": ["-y", "@silakagent/mcp@latest"],
"env": { "SILAK_EXTENSION_TOKEN": "<token dari extension>" }
}
}
}Claude Code: claude mcp add silakagent --env SILAK_EXTENSION_TOKEN=<token> -- npx -y @silakagent/mcp@latest
Cara 2 — install global (start lebih cepat/offline)
npm i -g @silakagent/mcp@latest{
"mcpServers": {
"silakagent": {
"command": "silakagent-mcp",
"env": { "SILAK_EXTENSION_TOKEN": "<token dari extension>" }
}
}
}Claude Code: claude mcp add silakagent --env SILAK_EXTENSION_TOKEN=<token> -- silakagent-mcp
Lokal dari repo (tanpa install)
node packages/mcp/bin/silakagent-mcp.mjs
# stderr: [silakagent-mcp] Pairing token aktif. Tempel token ini di extension Silak ...
# stderr: [silakagent-mcp] MCP server ready on stdio.Pairing token (keamanan)
Bridge listen di 127.0.0.1:47812; karena halaman web mana pun bisa membuka WebSocket ke localhost, autentikasi wajib by default. Urutan sumber token: SILAK_EXTENSION_TOKEN (env) → file → auto-generate.
- Direkomendasikan — generate di extension: buka dashboard extension → Settings → MCP Bridge (
dashboard.html#/settings/mcp), klik Generate token, salin, lalu tempel keenv.SILAK_EXTENSION_TOKENdi config MCP client (lihat contoh di atas). Token dibuat & disimpan di browser, mengikat browser itu ke server lokalnya — tak perlu menyalin apa pun dari terminal. - Fallback — token file: bila
SILAK_EXTENSION_TOKENtidak diisi,silakagent-mcpmemakai~/.silakagent/mcp-token(dibuat otomatis sekali,0600) dan mencetaknya ke stderr; tempel token itu ke extension secara manual. --no-token: matikan autentikasi — hanya untuk pemakaian lokal tepercaya (kosongkan kolom token di extension).
Flag
--port <n>— port WS bridge (default47812).--no-token— jalankan tanpa verifikasi token (lihat di atas).
Publish ke npm
Package dipublish sebagai @silakagent/mcp di bawah npm org silakagent (org silak sudah diklaim pihak lain). Dari packages/mcp:
npm publish --access public # prepublishOnly otomatis build distIni murni distribusi — eksekusi tetap 100% lokal (tidak melanggar prinsip local-first, tanpa cloud/akun).
Tools
Roster lengkap (parity dengan panel extension), didefinisikan sebagai registry modular ber-zod:
tiap modul satu file di src/tools/modules/*, digabung jadi satu roster di src/tools/index.ts.
JSON Schema tiap tool digenerate dari schema zod-nya, dan argumen divalidasi di server MCP sebelum
direlay ke extension — argumen wajib yang hilang atau salah tipe langsung dibalas error yang menyebut
nama field-nya. Semua tool relay menerima argumen opsional browserId.
Dua model "otak" agent:
- Extension jadi otak (pakai endpoint AI user):
silak_run_task(jalankan tugas bebas satu-shot),silak_generate_*,silak_generate_and_execute,silak_rerun_tests,silak_run_shortcut,silak_test_connection,silak_list_models. Butuh endpoint AI diset. - MCP client jadi otak (primitif "mata + tangan", tanpa endpoint AI extension):
silak_get_page_state(baca elemen terindeks),silak_click_element,silak_input_text,silak_select_option,silak_scroll,silak_navigate,silak_screenshot. Cukup hubungkan MCP — extension jadi fungsional tanpa konfigurasi AI.
qa — pipeline QA (analisa → PRD → test plan → eksekusi): silak_bootstrap_test, silak_generate_page_summary, silak_generate_standardized_prd, silak_generate_test_plan, silak_generate_test_plan_from_document, silak_explore_features, silak_get_exploration, silak_generate_maestro_flow, silak_set_test_setup, silak_get_test_setup, silak_delete_test_setup, silak_generate_and_execute, silak_rerun_tests, silak_export_report, silak_open_test_result_dashboard (opsional section).
qa-data — data QA (CRUD): silak_list_suites, silak_get_suite, silak_rename_suite, silak_delete_suite, silak_list_test_cases, silak_get_test_case, silak_create_test_case, silak_update_test_case, silak_delete_test_case, silak_list_runs, silak_get_run, silak_delete_run, silak_list_page_summaries, silak_get_page_summary, silak_list_prds, silak_get_prd.
browser — primitif halaman: silak_get_page_state, silak_click_element, silak_input_text, silak_select_option, silak_click_by_selector, silak_input_by_selector, silak_select_by_selector (replay deterministik lewat xpath stabil — tanpa baca halaman, tanpa LLM), silak_scroll, silak_navigate, silak_screenshot.
android — kontrol device: silak_android_list_devices, silak_android_select_device, silak_android_set_engine, silak_android_screenshot, silak_android_ui_hierarchy, silak_android_tap, silak_android_input_text, silak_android_swipe, silak_android_press_key, silak_android_open_mirror.
agent — tugas bebas, Teach shortcut & recording: silak_run_task, silak_list_shortcuts, silak_run_shortcut, silak_create_shortcut, silak_update_shortcut, silak_delete_shortcut, silak_record_start/silak_record_stop (rekam interaksi manual jadi satu test case dengan bundle replay deterministik).
session — sesi chat & tab group: silak_create_session, silak_get_session, silak_list_sessions, silak_rename_session, silak_delete_session, silak_list_tab_groups, silak_current_group, silak_list_window_tabs.
editor — integrasi Editor (Silak Editor / VSCode): silak_resolve_element_source (elemen terindeks → { file, line?, column?, componentName? } via atribut data-silak-source), silak_flow_impact (path file → flow web yang menyentuhnya, untuk watch-mode), silak_list_page_errors (ring buffer error halaman saat errorForwarding ON). Field settings terkait: watchMode/devServerOrigin/errorForwarding di silak_get_settings/silak_set_settings. Catatan: tool silak_editor_* (baca/tulis file, terminal, git di VSCode) bukan bagian server ini — hidup di MCP repo Silak Editor terpisah (http://127.0.0.1:47820/mcp); daftarkan sebagai server MCP kedua bila perlu.
settings — setelan & endpoint AI: silak_get_settings (tanpa apiKey; termasuk watchMode/devServerOrigin/errorForwarding), silak_set_settings (apiKey write-only; termasuk contextWindow, temperature, dan verifyRetries — jatah verifikasi ulang sebelum agent boleh menyimpulkan gagal), silak_list_models, silak_test_connection, silak_open_settings (buka halaman settings dashboard: ai/mcp/editor/storage). silak_get_settings/silak_set_settings juga mencakup theme (light/dark/system) dan beroperasi pada provider default.
data — data lokal, backup & metrik: silak_storage_usage, silak_export_backup, silak_import_backup, silak_reset_data (destruktif, butuh confirm:true), silak_system_metrics.
bridge — routing multi-browser (dijawab server MCP sendiri, tidak direlay): silak_list_browsers (daftar browser tersambung: id/label/active), silak_use_browser (pilih target saat >1 browser). Satu browser = otomatis jadi target; >1 tanpa target terpilih = tool call error minta pilih dulu (aman dari salah target).
Destruktif:
silak_delete_*dansilak_reset_datamenghapus data lokal permanen. Rahasia (apiKey, token) tak pernah bisa dibaca via MCP.
