Skip to main content
Glama

BPS MCP Server

CI License: MIT Node.js

MCP (Model Context Protocol) server untuk data statistik BPS (Badan Pusat Statistik) Indonesia. Memungkinkan AI clients seperti Claude Desktop, Claude Code, Cursor, dan lainnya untuk mengakses data statistik resmi Indonesia melalui natural language.

Fitur

  • 34 tools mencakup seluruh endpoint BPS WebAPI v1 + AllStats Search

  • Integrasi AllStats Search — pencarian unified + full-text PDF search (tanpa API key)

  • Smart fallback — WebAPI search otomatis fallback ke AllStats jika tidak ada hasil

  • 3 MCP Resources — domain list, kabupaten per provinsi, subjek per domain

  • 5 MCP Prompts — template analisis data siap pakai

  • Domain resolver dengan fuzzy matching (ketik "Jatim" → Jawa Timur)

  • Data formatter yang mengubah raw BPS data menjadi format mudah dibaca

  • In-memory cache dengan TTL per tipe data

  • Bilingual — mendukung bahasa Indonesia dan Inggris

  • Atribusi BPS otomatis di setiap response (sesuai ToU)

  • BYOK (Bring Your Own Key) — setiap user menggunakan API key BPS sendiri

Prasyarat

Instalasi & Penggunaan

BPS_API_KEY=your_key npx bps-mcp-server

Clone & Run

git clone https://github.com/murphi/bps-mcp-server
cd bps-mcp-server
npm install
npm run build
BPS_API_KEY=your_key npm start

Akses Remote via Cloudflare Workers

Server ini tersedia secara publik di:

https://bps-mcp-server.murphi.my.id/mcp

Tambahkan ke MCP client manapun (Claude Desktop, Cursor, dll.) via remote transport:

{
  "mcpServers": {
    "bps-statistics": {
      "type": "http",
      "url": "https://bps-mcp-server.murphi.my.id/mcp",
      "headers": {
        "X-BPS-API-Key": "your_api_key_here"
      }
    }
  }
}

Self-hosted

Ingin deploy sendiri? Deploy sebagai serverless worker di akun Cloudflare kamu:

Deploy to Cloudflare Workers

Lihat panduan lengkap di docs/DEPLOY-WORKERS.md.

Konfigurasi MCP Client

Claude Desktop

File: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

{
  "mcpServers": {
    "bps-statistics": {
      "command": "npx",
      "args": ["-y", "bps-mcp-server"],
      "env": {
        "BPS_API_KEY": "your_api_key_here"
      }
    }
  }
}

Claude Code

claude mcp add bps -- npx -y bps-mcp-server

Atau file .mcp.json di project root:

{
  "mcpServers": {
    "bps": {
      "command": "npx",
      "args": ["-y", "bps-mcp-server"],
      "env": {
        "BPS_API_KEY": "${BPS_API_KEY}"
      }
    }
  }
}

Cursor / VS Code

File ~/.cursor/mcp.json atau .vscode/mcp.json:

{
  "mcpServers": {
    "bps-statistics": {
      "command": "npx",
      "args": ["-y", "bps-mcp-server"],
      "env": {
        "BPS_API_KEY": "your_api_key_here"
      }
    }
  }
}

Tools (34)

WebAPI Tools (32)

Tool

Deskripsi

list_domains

Daftar wilayah (provinsi, kab/kota)

resolve_domain

Konversi nama wilayah → kode domain (fuzzy matching)

list_subjects

Daftar subjek data statistik

list_subject_categories

Kategori subjek

list_variables

Daftar variabel tabel dinamis

list_vertical_variables

Variabel vertikal (disagregasi)

list_derived_variables

Turunan variabel

list_periods

Periode data tersedia

list_derived_periods

Turunan periode

list_units

Satuan data

get_dynamic_data

Core — Ambil data tabel dinamis

list_static_tables

Daftar tabel statis

get_static_table

Detail tabel statis (HTML)

list_press_releases

Daftar Berita Resmi Statistik (BRS)

get_press_release

Detail BRS

list_publications

Daftar publikasi

get_publication

Detail publikasi

list_strategic_indicators

Indikator strategis

get_trade_data

Data ekspor/impor berdasarkan kode HS

list_infographics

Daftar infografis BPS

get_infographic

Detail infografis

list_news

Daftar berita BPS

get_news

Detail berita

list_census_events

Daftar kegiatan sensus

list_census_topics

Topik data per kegiatan sensus

list_csa_categories

Kategori CSA

list_csa_subjects

Subjek CSA per domain

list_csa_tables

Tabel CSA per subjek

get_csa_table

Detail tabel CSA (HTML)

list_glossary

Glosarium istilah statistik

search

Pencarian lintas tipe (WebAPI + AllStats fallback)

cache_clear

Bersihkan cache

AllStats Search Tools (2)

Tool

Deskripsi

allstats_search

Pencarian unified semua konten BPS (publikasi, tabel, BRS, infografis, data mikro, glosarium, klasifikasi)

allstats_deep_search

Full-text search di dalam isi PDF publikasi BPS — fitur unik, tidak tersedia di WebAPI

Server ini mengintegrasikan dua sumber data yang saling melengkapi:

┌─────────────────────────────────────────────────────────┐
│                    BPS MCP Server                        │
│                                                         │
│  ┌──────────────────┐    ┌────────────────────────┐     │
│  │   WebAPI BPS      │    │  AllStats Search        │     │
│  │   (Primary)       │    │  (Supplementary)        │     │
│  │                   │    │                          │     │
│  │  + Structured     │    │  + Full-text PDF search  │     │
│  │    data (JSON)    │    │  + Unified search        │     │
│  │  + Dynamic tables │    │    semua tipe konten     │     │
│  │  + Ekspor/Impor   │    │  + Tanpa API key         │     │
│  │  + Sensus data    │    │  + Filter wilayah 550+   │     │
│  │  - No PDF search  │    │  - HTML scraping         │     │
│  └──────────────────┘    └────────────────────────┘     │
│                                                         │
│  Strategi interaksi:                                    │
│  1. search → WebAPI dulu, fallback AllStats jika kosong │
│  2. allstats_search → langsung ke AllStats Search       │
│  3. allstats_deep_search → cari teks di dalam PDF       │
└─────────────────────────────────────────────────────────┘

Cara Kerja

search (smart fallback)

  • Prioritas: WebAPI BPS (structured JSON)

  • Jika WebAPI mengembalikan hasil kosong atau error, otomatis fallback ke AllStats Search

  • User mendapat notifikasi sumber data yang digunakan

allstats_search (unified discovery)

  • Langsung query ke searchengine.web.bps.go.id

  • Mendukung filter: tipe konten, wilayah, rentang tahun, urutan

  • Tidak memerlukan API key BPS

  • Cocok untuk discovery atau pencarian broad

allstats_deep_search (PDF full-text)

  • Cari teks di dalam isi PDF publikasi BPS

  • Memerlukan publication_id (24 karakter hex) dari hasil allstats_search

  • Mengembalikan halaman PDF yang cocok beserta cuplikan teks

  • Fitur unik yang tidak tersedia di WebAPI

Workflow Contoh

1. Discovery → Deep Search:
   allstats_search("akses internet", content="publication")
   → dapat publication_id
   → allstats_deep_search("akses internet", publication_id="131385d0253c6aae7c7a59fa")
   → halaman PDF yang membahas "akses internet"

2. Smart fallback:
   search(keyword="kemiskinan Papua")
   → WebAPI kosong → otomatis cari via AllStats
   → hasil dari AllStats ditampilkan dengan catatan fallback

3. Parallel enrichment (oleh AI):
   - get_dynamic_data → data angka terstruktur
   - allstats_search("inflasi", content="pressrelease") → BRS terbaru
   → AI menggabungkan data angka + konteks dari BRS

Resources (3)

URI

Deskripsi

bps://domains/provinces

Daftar seluruh provinsi Indonesia (cached)

bps://domains/regencies/{prov_id}

Kabupaten/kota per provinsi

bps://subjects/{domain}

Subjek statistik per domain

Prompts (5)

Prompt

Deskripsi

compare_regions

Bandingkan data antara dua wilayah

trend_analysis

Analisis tren data multi-tahun

poverty_profile

Profil kemiskinan suatu wilayah

economic_overview

Ringkasan ekonomi wilayah

population_stats

Statistik kependudukan

Contoh Query

"Berapa jumlah penduduk Indonesia tahun 2023?"
"Bandingkan angka kemiskinan Jawa Timur vs Jawa Barat 2020-2023"
"Cari BRS terbaru tentang inflasi"
"Data ekspor kopi Indonesia tahun 2024"
"Cari publikasi tentang statistik telekomunikasi"
"Cari teks tentang akses internet di dalam publikasi BPS"

Environment Variables

Variable

Default

Deskripsi

BPS_API_KEY

(required)

API key dari webapi.bps.go.id

BPS_API_BASE_URL

https://webapi.bps.go.id/v1

Base URL API

BPS_DEFAULT_LANG

ind

Bahasa default: ind / eng

BPS_DEFAULT_DOMAIN

0000

Domain default (0000 = Nasional)

BPS_CACHE_ENABLED

true

Aktifkan cache

BPS_CACHE_MAX_ENTRIES

500

Maks entri cache

BPS_LOG_LEVEL

info

Level log: debug/info/warn/error

Development

git clone https://github.com/murphi/bps-mcp-server
cd bps-mcp-server
npm install
npm run build
npm run test:unit

Atribusi

Sumber: Badan Pusat Statistik (BPS) — https://www.bps.go.id Layanan ini menggunakan API Badan Pusat Statistik (BPS).

Lisensi

MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/setiapam/bps-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server