Membangun MCP Server Docmost dengan Rust:
Awal Mula
Biasanya ada satu proyek yang bikin kita mikir, "oh, gini ternyata rasanya kalau tool yang kita pakai dibangun sendiri." Buat saya, itu proyek ini.
Semua catatan saya — progres belajar, jadwal, tugas, ide — numpang di Docmost, wiki yang saya host sendiri. Masalahnya satu: AI saya gak bisa "baca" isi wiki itu. Setiap mau nanya sesuatu, saya harus buka halamannya, copy, paste ke chat, ulang terus. Capek.
Jadi saya putuskan bikin widiadocmost-mcp, sebuah MCP server dalam bahasa Rust yang menghubungkan Docmost dengan AI.
Kenapa Rust?
Sebenarnya simpel:
-
Aman — server ini megang kredensial dan data pribadi, jadi keamanan memori itu wajib
-
Cepat — ini server HTTP yang melayani banyak permintaan sekaligus
-
Compile-nya ketat — error kebanyakan ketangkap dari awal, gak nunggu jalan baru error
-
Ekosistem MCP-nya lagi naik —
rust-mcp-sdkmakin matang
Plus, jujur saja, saya memang lagi pengen paham Rust lebih dalam. Ini proyek yang pas buat belajar.
Gini Cara Kerjanya
+----------------+ MCP transport +-------------------+ REST API +----------------+
| AI Agent | <------------------------> | widiadocmost-mcp | <----------------> | Docmost |
| (opencode) | stdio / Streamable HTTP | (Rust) | JSON-RPC calls | Instance |
+----------------+ +-------------------+ +----------------+
Keputusan penting yang saya ambil
1. Dua mode jalan
-
stdio — buat dipakai lokal, kredensial dari environment variable
-
HTTP — Streamable HTTP di
/mcp, SSE di/sse, health check di/health, biar bisa diakses dari jauh
2. Gak nyimpen kredensial sama sekali
Server ini gak pernah nyimpen email atau password. Setiap request, klien kirim kredensial lewat header X-Docmost-Email dan X-Docmost-Password. JWT-nya di-cache per-email di lokal (permission 0600) dan otomatis di-refresh pas dapat 401.
3. Slug atau UUID, dua-duanya bisa
space_id nerima slug ATAU UUID — kalau pake slug, di-resolve otomatis jadi UUID. Kecil, tapi nyaman banget pas dipakai.
15 Tools yang Dibuka
REST API Docmost saya bungkus jadi 15 tools MCP:
-
Baca:
get_current_user,list_spaces,get_space,list_space_pages,get_page,search -
Tulis:
create_page,update_page,delete_page,move_page,duplicate_page,page_history -
Komentar:
list_comments,create_comment,update_comment
Yang paling saya suka: Markdown round-tripping. Halaman masuk dan keluar sebagai Markdown. Jadi tetap enak dibaca manusia, dan AI juga gampang ngolahnya.
Bug-bug yang Bikin Greget
Belajar dari pengalaman, bukan dari buku:
-
Jebakan cookie — Login Docmost itu JWT-nya dikasih lewat header
Set-Cookie: authToken=, bukan di body response. Ketemu ini butuh waktu, tapi setelah itu pola auth di mana-mana jadi lebih jelas. -
Masalah versi —
update_pagebuat ganti seluruh konten butuh Docmost v0.71+. Jadi kalau targetnya terus update, kompatibilitas itu wajib dicek. -
Keamanan pas naik ke HTTP — pas dari lokal (stdio) pindah ke server HTTP, alur kredensial harus saya rancang ulang: Bearer token (
MCP_TOKEN) + header per-request + cache JWT per-email.
Dampaknya ke Keseharian Saya
Proyek ini gak cuma soal ngoding. Ini soal alur kerja:
Buat belajar:
-
Tinggal nanya AI soal progres belajar, dia baca langsung dari wiki
-
Catatan setelah belajar langsung ke-rapiin otomatis
-
Jadwal dan catatan kuliah tetap satu sumber kebenaran
Buat kerja:
-
AI baca dokumentasi proyek tanpa saya copy-paste
-
Changelog dan keputusan ditulis langsung dari percakapan
-
Semua jalan di satu tempat, gak pindah-pindah aplikasi
Soal Etika
Membuka akses dokumen ke AI itu tanggung jawabnya nyata. Beberapa prinsip yang saya pegang:
Ngomongin Fitur AI Docmost
Jujur: Docmost itu sebenarnya udah punya fitur AI bawaan. Bagus, rapi, terintegrasi — pilihan terbaik kalau kamu serius pake Docmost buat tim atau produksi.
Tapi fitur itu berbayar. Karena kemampuan terbatas, saya coba bangun versi gratis-nya sendiri lewat MCP server ini. Tentu aja gak sebagus yang resmi:
-
Gak ada model AI tertanam, saya numpang ke klien AI eksternal (kayak opencode)
-
Gak ada tuning khusus buat konteks Docmost
-
Gak ada fitur premium
Saran saya: kalau mampu, beli aja. Mendukung Docmost itu bagus, dan fitur AI resminya jauh lebih matang. Proyek ini bukan pengganti, tapi hasil belajar — bukti bahwa pengetahuan bisa jadi solusi gratisan yang "cukup jalan."
Keamanan
-
Gak pernah nyimpen kredensial di server
-
DOCMOST_EMAIL/DOCMOST_PASSWORDjangan pernah di-set di server publik -
Cache JWT lokal cuma permission
0600
Privasi
-
Data tetap di instance Docmost milik sendiri
-
AI cuma akses yang saya izinkan
-
Saya tetap pemilik setiap byte-nya
Integritas
-
AI itu alat bantu, bukan pengganti proses belajar dan kerja
-
Semua hasil tetap saya cek sendiri
-
Transparan soal pemakaian AI
Yang Saya Dapat dari Proyek Ini
-
Bangun tool yang kamu sendiri butuhkan — software terbaik lahir dari masalah nyata
-
Rust itu butuh sabar, tapi hasilnya solid — compiler-nya galak, output-nya tangguh
-
Protokol itu menyeragamkan inovasi — MCP ke tool-AI, kayak REST ke API dulu
-
Keamanan itu keputusan desain — bukan tempelan di akhir
-
Pengetahuan itu modal paling gede — daripada beli, pakai yang udah dipelajari justru lebih berharga
Penutup
widiadocmost-mcp berawal dari masalah receh: pengen wiki bisa diajak ngobrol sama AI. Berakhir jadi perjalanan ngoding beneran — Rust, async, protokol MCP, sampai keamanan-by-design.
Sekarang wiki saya bukan arsip pasif lagi. Ini ruang kerja hidup tempat belajar, ngoding, dan nulis dokumentasi jalan bareng.