SIAKAD MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SIAKAD MCPUnduh BAP dan daftar hadir semua kelas saya semester ini untuk bukti BKD."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SIAKAD MCP
Aplikasi untuk menarik data pengajaran dari SIAKAD Pradita (https://siakad.pradita.ac.id): daftar kelas yang diampu, jadwal mengajar, pertemuan beserta pesertanya, berita acara perkuliahan, dan daftar kehadiran mahasiswa — lengkap dengan tanda tangan, siap dilampirkan sebagai bukti BKD. Satu operasi tulis juga tersedia: mengisi Topik dan Deskripsi Pembahasan (BAP).
Tiga menu SIAKAD yang dibaca:
Menu SIAKAD | Kelas Python | Isinya |
|
| topik pertemuan, rekap kehadiran, PDF bukti |
|
| hari, jam, ruang, SKS |
|
| pertemuan per tanggal, peserta kuliah |
Pasangannya adalah sister-mcp yang mengisi data ke SISTER. Keduanya berdiri sendiri: kode, dokumentasi, contoh, dan pengujiannya terpisah.
Tersedia dalam tiga bentuk, semuanya dari paket yang sama:
Mode | Untuk siapa | Referensi |
MCP | asisten AI (Claude Code, dsb.) | |
REST API | aplikasi apa pun lewat HTTP | |
Pustaka | program Python Anda sendiri |
Ada juga CLI (siakad-bap) untuk pemakaian langsung dari terminal —
lihat docs/CLI.md.
Prasyarat
Python 3.10 atau lebih baru
Chrome/Chromium terpasang di sistem — dipakai mencetak PDF (
google-chrome,chromium, atauchromium-browser)Akun SIAKAD yang aktif
Related MCP server: TechMCP - PSG College of Technology MCP Server
Pasang
Ada dua cara, pilih salah satu.
A. Berdiri sendiri — klona lalu jalankan; cocok kalau Anda hanya mau memakai aplikasinya:
git clone https://github.com/alfa-yohannis/siakad-mcp.git
cd siakad-mcp
./siakad uji # jalankan pertama menyiapkan .venv + dependensi sendiriB. Sebagai paket — kalau aplikasi Anda sendiri yang akan memakainya:
pip install "siakad-mcp[api,mcp]" # extras: pasang hanya yang dipakai
pip install siakad-mcp # pustaka saja, tanpa FastAPI dan mcpKredensial
Salin contohnya lalu isi:
cp .env.contoh .env # SIAKAD_USERNAME, SIAKAD_PASSWORD.env tidak ikut ter-commit. REST API dan MCP juga menerima kredensial per
permintaan, dan program Python bisa memberikannya lewat atur_setelan() —
jadi .env tidak wajib.
Perguruan tinggi selain Pradita menyalin siakad.yaml.contoh menjadi
siakad.yaml lalu mengubah alamat instance, kota penanda tangan, dan ukuran
kertasnya — tanpa menyentuh kode. Daftarnya di docs/SETELAN.md.
Menjalankan
1. MCP
claude mcp add siakad-mcp -- siakad-mcp # setelah `pip install`
claude mcp add siakad-mcp -- /path/ke/siakad-mcp/siakad mcp # dari klonaUntuk klien MCP lain, isi mcpServers dengan "command": "siakad-mcp".
Cek servernya hidup tanpa mendaftarkannya dulu:
./siakad mcp # bicara JSON-RPC lewat stdio; Ctrl-C untuk berhentiLalu minta asisten Anda, misalnya: "Kelas apa saja yang saya ampu pada semester
ganjil 2026/2027 menurut SIAKAD?" Sepuluh tool tersedia — delapan membaca, dua
(buka_kelas, simpan_pembahasan) menulis. Daftar lengkapnya dan contoh prompt
lain di docs/MCP.md.
2. REST API
./siakad api # http://localhost:8000
PORT=9001 ./siakad api # ganti portTerpasang sebagai paket, jalankan lewat uvicorn:
uvicorn siakad_mcp.api:app --port 8000Dokumentasi interaktif ada di /docs, skema mesin di /openapi.json. Coba:
curl -X POST localhost:8000/kelas -H 'Content-Type: application/json' \
-d '{"username":"...","password":"...","tahun_ajaran":"2025","tipe_semester":"2"}'Untuk menempelkannya ke aplikasi FastAPI Anda sendiri:
from siakad_mcp.api import router
app.include_router(router, prefix="/siakad")Endpoint selengkapnya di docs/API.md.
3. Pustaka
from siakad_mcp import KlienSiakad, BeritaAcaraKuliah
klien = KlienSiakad("dosen@kampus.ac.id", "sandi").login()
laporan = BeritaAcaraKuliah(klien)
for kelas in laporan.daftar_kelas("2025", "2"):
print(kelas.label)
laporan.unduh_bukti(kelas, "bap", "bukti/pengajaran")Setelan boleh diberikan dari kode, tanpa berkas apa pun:
from siakad_mcp import atur_setelan
atur_setelan(base_url="https://siakad.kampuslain.ac.id", kota="Bandung")Selengkapnya di docs/PUSTAKA.md.
CLI
./siakad jadwal --tahun 2026 --semester 1 # jadwal + ruang + SKS
./siakad hadir --tahun 2026 --semester 1 --tanggal 2026-09-01 # pertemuan satu hari
./siakad mahasiswa --tahun 2026 --semester 1 --kode IF31613 \
--excel peserta.xlsx # peserta kuliah
./siakad pembahasan --tahun 2026 --semester 1 --kode IF31613 \
--dari bap.json --uji-coba # isi BAP (menulis)
./siakad bap --tahun 2026 --semester 1 --hanya-daftar # lihat kelasnya dulu
./siakad bap --tahun 2026 --semester 1 --tujuan bukti/pengajaranTerpasang sebagai paket, perintahnya siakad-bap, siakad-jadwal,
siakad-hadir, siakad-mahasiswa, dan siakad-pembahasan dengan argumen yang
sama. ./siakad bap menghasilkan dua PDF per kelas:
IF30812 - Pemrograman Berorientasi Objek - Kelas B - BAP.pdf
IF30812 - Pemrograman Berorientasi Objek - Kelas B - Kehadiran.pdfBerkas yang sudah ada dilewati, jadi perintahnya aman diulang. Argumen selengkapnya di docs/CLI.md.
Akar proyek
Menentukan letak .env, siakad.yaml, digital_signs/, dan data/, serta titik
hitung path relatif:
dijalankan dari klona repositori ini → direktori repositori itu sendiri
dipasang sebagai paket → direktori kerja proyek pemakai
Direktori di atasnya tidak pernah ikut ditelusuri, jadi hasilnya tidak berubah
hanya karena aplikasi dipindah. Untuk menentukan sendiri, setel
SIAKAD_AKAR_PROYEK atau panggil atur_akar_proyek().
Tanda tangan
Berkas tanda tangan bernama <nama>.png, mis. kong.png dan spider.png.
Foldernya ditentukan pemanggil:
Mode | Cara |
MCP | parameter |
REST API | field |
Pustaka |
|
CLI |
|
Kalau tidak diberikan: BKD_TANDA_TANGAN, lalu digital_signs/ di akar proyek.
Path relatif dihitung dari akar proyek, sama seperti --tujuan. Folder
digital_signs/ masuk .gitignore karena isinya data pribadi.
Pada halaman BAP:
kolom Paraf diisi tanda tangan dosen pengampu untuk setiap pertemuan
blok kanan bawah diisi tanda tangan pejabat penanda tangan, di atas namanya
Pemilihannya otomatis: nama pejabat dibaca dari halaman itu sendiri, lalu dicari berkas yang nama filenya muncul pada nama tersebut. Jadi kalau Kaprodi berganti, cukup tambahkan berkas PNG baru — tidak ada kode yang perlu diubah. Prodi yang belum punya berkas tanda tangan tetap dicetak, hanya blok tanda tangannya kosong.
Gambar dipangkas otomatis dari bidang kosong di sekelilingnya, dan hanya tingginya yang diatur agar rasio aslinya terjaga.
Rancangan
pyproject.toml metadata paket, dependensi, dan perintah terpasang
siakad launcher untuk pemakaian berdiri sendiri
siakad_mcp/__init__.py API publik paket ini
siakad_mcp/siakad_client.py KlienSiakad: login, ambil halaman, baca/kirim form
siakad_mcp/menu.py MenuSiakad: token, kirim, telusuri halaman hasil
siakad_mcp/berita_acara.py BeritaAcaraKuliah + Kelas: daftar kelas, detail, unduh bukti
siakad_mcp/jadwal.py JadwalMengajar + SlotJadwal: hari, jam, ruang, SKS
siakad_mcp/daftar_hadir.py DaftarHadir + Pertemuan + Mahasiswa: peserta & isi BAP
siakad_mcp/tanda_tangan.py pembubuhan paraf & tanda tangan ke halaman cetak
siakad_mcp/cetak_pdf.py halaman cetak -> PDF lewat Chrome headless
siakad_mcp/ekspor.py tulis tabel ke .xlsx (extra `excel`)
siakad_mcp/konfigurasi.py akar proyek, setelan, kredensial
siakad_mcp/cli.py CLI (siakad-bap, -jadwal, -hadir, -mahasiswa, -pembahasan)
siakad_mcp/api.py REST API: router yang bisa ditempel + app siap pakai
siakad_mcp/mcp_server.py MCP server (perintah siakad-mcp)
siakad_mcp/petakan_form.py alat bantu memetakan halaman saat menambah kemampuanCatatan perilaku SIAKAD
Login satu langkah.
GET /loginuntuk mengambil_token, laluPOST /login_process. Jauh lebih sederhana dari SSO SISTER.Isi tabel datang lewat AJAX. Halaman laporan dikirim kosong; datanya dari
POST <path menu>/search. Ketiga menu berperilaku sama, jadi bagiannya ditulis sekali dimenu.py.Daftar Hadir menuntut
tahun_akademikberupa JSON. Nilainya{"tahun_ajaran":"2026","tipe_semester":"1"}; dikosongkan, balasannya HTTP 500 — padahaltahun_ajaran/tipe_semesterdi permintaan yang sama justru boleh kosong.Nama field berbeda antar-endpoint.
detailmemakai huruf besar (KD_MATA_KULIAH),save_pembahasanmemakai huruf kecil (kd_mata_kuliah).sort_searchdanorder_searchharus tidak dikirim. Kalau ikut terkirim dalam keadaan kosong, server membalas HTTP 500 tanpa penjelasan. Di browser keduanya bernilaiundefinedsehingga jQuery memang tidak mengirimkannya.Ekspor PDF sebenarnya HTML.
export_pdf_topik_pembahasandanexport_pdf_absensi_mahasiswamengembalikan halaman siap cetak, bukan PDF — di browser pemakai menekan Ctrl+P. Chrome headless yang menggantikan langkah itu.Ukuran kertas tidak ditentukan halamannya. Hanya margin yang diatur, jadi ukurannya disisipkan sendiri: A3 untuk BAP, A4 untuk daftar kehadiran.
Penanda tangan berbeda per prodi. Informatika ditandatangani Kaprodi Informatika, Teknologi Informasi oleh Kaprodi TI — halaman cetaknya sendiri yang menentukan.
Menambah kemampuan baru
./siakad petakan /dosen/kepanitiaan --semua-opsiPerintah itu mencetak seluruh form, field, dan endpoint AJAX sebuah halaman ke
data/form_<path>.json — pijakan sebelum menulis modul baru.
Pengujian
./siakad uji35 unit test, semuanya berjalan tanpa jaringan dan tanpa kredensial. Nama tokoh dan nomor induk pada berkas uji dan dokumentasi seluruhnya dikarang.
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect your Moodle to AI assistants: courses, content, grading and reports from the chat.
Connect your AI assistant to governed tender and RFP dossiers: sources, versions, decisions.
- RevensiOAuthcom.revensi
Connect your AI assistant to Revensi OS agents, workflows, and business data.
- mcpOAuthcom.formester
Give AI agents access to form submissions — read, search, update, and process file attachments.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with D2L Brightspace LMS, providing access to assignments, grades, course content, calendar events, and announcements through automated SSO authentication.127 npm12MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access PSG College of Technology e-campus portal data including CA marks, attendance records, timetable schedules, and course information through natural language queries.4MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access Canvas LMS course content, including assignments, modules, announcements, and files, to help students manage their coursework.7 npmISC
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search and retrieve data from Indonesia's higher education database (PDDIKTI), including universities, lecturers, study programs, and students.MIT