bps-webapi-mcp
by Rasyidarfan
README.md
# BPS WebAPI MCP Server 🇮🇩
<a href="https://webapi.bps.go.id/developer/"><img src="https://webapi.bps.go.id/developer/assets/img/pst-ads.svg" width="400" style="border-radius:8px" /></a>
Menghubungkan **Claude** langsung ke **data statistik resmi BPS Indonesia** via [Model Context Protocol (MCP)](https://modelcontextprotocol.io).
Dengan server ini, Claude bisa menjawab pertanyaan seperti:
- *"Berapa nilai ekspor kopi Indonesia ke Amerika Serikat pada Agustus 2025?"*
- *"Tunjukkan data inflasi Indonesia tahun 2024 per bulan"*
- *"Apa indikator kemiskinan terbaru nasional?"*
- *"Cari publikasi BPS tentang ketenagakerjaan 2024"*
...semua langsung dari sumber resmi, tanpa halusinasi!
---
## Prasyarat
- **Node.js** ≥ 18
- **Token API BPS** — daftar di [webapi.bps.go.id](https://webapi.bps.go.id/developer/register)
- **Claude Desktop** (untuk integrasi langsung)
---
## Instalasi
```bash
# Clone / copy folder ini
cd bps-webapi-mcp
# Install dependencies
npm install
```
---
## Konfigurasi Claude Desktop
Tambahkan ke file konfigurasi Claude Desktop:
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"bps-webapi": {
"command": "node",
"args": ["/GANTI/DENGAN/PATH/ABSOLUT/bps-mcp/index.js"],
"env": {
"BPS_API_KEY": "TOKEN_API_BPS_ANDA_DISINI"
}
}
}
}
```
> ⚠️ Ganti path dan token sesuai kondisi lokal. Restart Claude Desktop setelah edit.
---
## Tools yang Tersedia (14 tools)
### 🔢 Data Statistik Utama
| Tool | Deskripsi |
|------|-----------|
| `bps_get_dynamic_data` | **Utama** — ambil angka statistik dari tabel dinamis (PDB, inflasi, kemiskinan, dll) |
| `bps_foreign_trade` | **Utama** — data ekspor/impor berdasarkan kode HS, negara, periode |
| `bps_strategic_indicators` | Indikator strategis nasional/provinsi (IPM, Gini, dll) |
| `bps_list_variable` | Cari var_id dataset dengan kata kunci |
| `bps_list_period` | Daftar ID tahun/periode yang valid |
| `bps_list_vertical_var` | Dimensi baris (wilayah, kategori, dll) |
### 📄 Dokumen & Publikasi
| Tool | Deskripsi |
|------|-----------|
| `bps_list_press_release` | Daftar Berita Resmi Statistik (BRS) terbaru |
| `bps_get_press_release` | Detail + abstrak satu BRS |
| `bps_list_publication` | Daftar buku/publikasi statistik |
| `bps_list_infographic` | Daftar infografis statistik |
| `bps_list_news` | Berita dari website BPS |
### 🗂️ Referensi
| Tool | Deskripsi |
|------|-----------|
| `bps_domain_list` | Kode domain semua wilayah BPS |
| `bps_list_subjects` | Kelompok topik statistik |
| `bps_glosarium` | Definisi resmi istilah statistik |
### 📚 SIMDASI (Statistik Dalam Angka)
| Tool | Deskripsi |
|------|-----------|
| `bps_simdasi_regions` | Kode wilayah 7 digit MFD |
| `bps_simdasi_subjects` | Daftar bab/subjek publikasi |
| `bps_simdasi_tables` | Daftar tabel dan tahun tersedia |
| `bps_simdasi_get_table` | Isi tabel berdasarkan wilayah + tahun |
---
## Alur Kerja Contoh
### Mendapatkan Data Dinamis
```
1. bps_list_variable(keyword="kemiskinan") → temukan var_id
2. bps_list_period(var=104) → temukan th_id tahun yang tersedia
3. bps_get_dynamic_data(var=104, th="125") → data aktual!
```
### Mendapatkan Data Ekspor/Impor
```
bps_foreign_trade(
sumber = "1", // Ekspor
periode = "1", // Bulanan
kodehs = "09", // HS 09 = Kopi, teh, rempah
jenishs = "1",
tahun = 2025,
bulan = 8,
ctry = "US" // ke Amerika Serikat
)
```
---
## Kode HS Umum untuk ekspor/impor
| Kode | Komoditas |
|------|-----------|
| `09` | Kopi, teh, rempah-rempah |
| `10` | Serealia (gandum, beras, jagung) |
| `15` | Lemak & minyak nabati/hewani (CPO) |
| `26` | Bijih logam, terak |
| `27` | Bahan bakar mineral (batu bara, minyak) |
| `40` | Karet |
| `44` | Kayu & produk kayu |
| `47` | Pulp kayu |
| `61` | Pakaian jadi rajut |
| `85` | Mesin & peralatan listrik |
---
## Troubleshooting
**"BPS_API_KEY belum di-set"** → Pastikan env var sudah diset di konfigurasi
**HTTP 401** → Token tidak valid, cek di [profil webapi.bps.go.id](https://webapi.bps.go.id/developer/user/profile)
**Data kosong** → Coba kurangi filter, atau cek var_id dengan `bps_list_variable`
---
## Referensi
- [Dokumentasi WebAPI BPS](https://webapi.bps.go.id/documentation/)
- [Daftar domain BPS](https://webapi.bps.go.id/v1/api/domain?type=all&key=TOKEN)
- [Model Context Protocol](https://modelcontextprotocol.io)
- [Materi "Unlocking BPS Data"](https://lms.bps.go.id/course/view.php?id=4444)
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues