Skip to main content
Glama
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)