BMKG MCP Server
An unofficial MCP server that provides access to Indonesia's BMKG data, including real-time earthquake reports, village-level weather forecasts, and extreme weather alerts. It enables users to search for location codes and retrieve detailed meteorological and geophysical information through natural language.
README
BMKG MCP Server (Unofficial)
Server MCP (Model Context Protocol) untuk mengakses data dari BMKG (Badan Meteorologi, Klimatologi, dan Geofisika Indonesia). Server ini menyediakan akses mudah ke data gempa bumi, prakiraan cuaca, dan peringatan dini cuaca untuk seluruh wilayah Indonesia.
✨ Fitur
🌍 Data Gempa Bumi
- Gempa Terkini: Info gempa bumi terbaru dengan shakemap
- 15 Gempa M 5.0+: Daftar gempa berkekuatan 5.0 atau lebih
- 15 Gempa Dirasakan: Daftar gempa yang dirasakan masyarakat
☁️ Prakiraan Cuaca
- Prakiraan 3 Hari: Data lengkap hingga level kelurahan/desa
- Update Per 3 Jam: 8 forecast per hari (total ±24 forecast)
- Data Lengkap: Suhu, kelembaban, angin, tutupan awan, jarak pandang
⚠️ Peringatan Dini Cuaca
- Nowcast: Peringatan cuaca ekstrem aktif di seluruh Indonesia
- Berbasis CAP: Mengikuti standar Common Alerting Protocol
- Level Kecamatan: Detail wilayah terdampak hingga kecamatan
- Bilingual: Tersedia dalam Bahasa Indonesia dan English
🗺️ Pencarian Kode Wilayah
- Database Lokal: 91,220+ wilayah dari provinsi hingga desa
- Pencarian Fleksibel: Cari berdasarkan nama di semua level
- Hierarki Lengkap: Tampilan struktur provinsi > kabupaten > kecamatan > desa
📦 Instalasi
Prasyarat
- Python 3.8 atau lebih baru
- uv (package manager) atau pip
Langkah Instalasi
- Clone repository
git clone https://github.com/revomkg/bmkg-mcp.git
cd bmkg-mcp
- Install dependencies
Menggunakan uv (disarankan):
uv sync
Atau menggunakan pip:
pip install httpx xmltodict mcp
- Pastikan file base.csv ada
File base.csv berisi database kode wilayah Indonesia. Pastikan file ini ada di direktori yang sama dengan bmkg-server.py.
🚀 Penggunaan
Konfigurasi di Claude Desktop
Tambahkan konfigurasi berikut ke file claude_desktop_config.json:
Lokasi file konfigurasi:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Isi konfigurasi:
{
"mcpServers": {
"bmkg": {
"command": "python",
"args": ["/path/to/bmkg-mcp/bmkg-server.py"]
}
}
}
Atau dengan uv:
{
"mcpServers": {
"bmkg": {
"command": "uv",
"args": ["run", "/path/to/bmkg-mcp/bmkg-server.py"]
}
}
}
🔧 Tools yang Tersedia
1. get_latest_earthquake()
Mendapatkan informasi gempa bumi terkini dengan shakemap.
Return:
- Waktu kejadian
- Magnitudo
- Kedalaman
- Lokasi
- Potensi tsunami
- URL shakemap
2. get_significant_earthquakes()
Daftar 15 gempa bumi terkini dengan magnitudo 5.0+.
Return:
- Array of earthquakes dengan detail lengkap
- Potensi tsunami untuk setiap gempa
3. get_felt_earthquakes()
Daftar 15 gempa bumi yang dirasakan masyarakat.
Return:
- Array of earthquakes
- Info daerah yang merasakan
4. search_location_code(location_name, admin_level)
Mencari kode wilayah berdasarkan nama lokasi.
Parameters:
location_name(string): Nama lokasi yang dicariadmin_level(string, optional): Filter level administratif"all"- Semua level (default)"province"/"provinsi"- Provinsi"regency"/"kabkota"- Kabupaten/Kota"district"/"kecamatan"- Kecamatan"village"/"desa"- Kelurahan/Desa
Contoh:
search_location_code("Pandak", "village")
# Returns: 33.02.07.2005 - Pandak di Jawa Tengah > Banyumas > Sumpiuh
5. get_villages_in_district(district_code)
Mendapatkan semua kelurahan/desa dalam kecamatan tertentu.
Parameters:
district_code(string): Kode kecamatan (contoh: "33.02.07")
Return:
- Daftar lengkap kelurahan/desa dengan kode siap pakai
6. get_weather_forecast(kode_wilayah)
Prakiraan cuaca 3 hari untuk wilayah tertentu.
Parameters:
kode_wilayah(string): Kode wilayah level desa (4 segmen)
Return:
- Prakiraan 3 hari dengan 8 forecast per hari
- Suhu, kelembaban, cuaca, angin, tutupan awan, jarak pandang
- Total ±24 forecast points
Contoh:
get_weather_forecast("33.02.07.2005") # Pandak, Sumpiuh, Banyumas
7. get_weather_alerts(language)
Daftar peringatan dini cuaca aktif di Indonesia.
Parameters:
language(string, optional): "id" atau "en" (default: "id")
Return:
- RSS feed peringatan cuaca aktif
- Link ke detail CAP tiap provinsi
8. get_weather_alert_detail(cap_code, language)
Detail peringatan dini cuaca untuk provinsi tertentu.
Parameters:
cap_code(string): Kode CAP dari link di weather alertslanguage(string, optional): "id" atau "en" (default: "id")
Return:
- Detail lengkap CAP
- Wilayah kecamatan terdampak
- Waktu berlaku dan berakhir
- Tingkat bahaya (severity, urgency, certainty)
9. search_weather_alerts_by_kecamatan(kecamatan, language)
Mencari peringatan dini untuk kecamatan tertentu.
Parameters:
kecamatan(string): Nama kecamatanlanguage(string, optional): "id" atau "en" (default: "id")
Return:
- Peringatan yang mempengaruhi kecamatan tersebut
- Detail wilayah terdampak
💡 Contoh Penggunaan
Mencari Cuaca untuk Lokasi Tertentu
User: "Bagaimana cuaca di Pandak, Sumpiuh?"
Claude akan:
- Memanggil
search_location_code("Pandak", "village") - Menemukan kode:
33.02.07.2005 - Memanggil
get_weather_forecast("33.02.07.2005") - Menampilkan prakiraan 3 hari lengkap
Cek Gempa Terkini
User: "Ada gempa apa hari ini?"
Claude akan:
- Memanggil
get_latest_earthquake() - Menampilkan info gempa terkini + shakemap
- Bisa memanggil
get_significant_earthquakes()untuk daftar lengkap
Cek Peringatan Cuaca di Daerah Saya
User: "Ada peringatan cuaca untuk Jagakarsa?"
Claude akan:
- Memanggil
search_weather_alerts_by_kecamatan("Jagakarsa") - Menampilkan peringatan aktif (jika ada)
- Detail tingkat bahaya dan waktu berlaku
📊 Sumber Data
Data yang digunakan server ini berasal dari:
- BMKG (data.bmkg.go.id): Data gempa bumi dan cuaca resmi
- BMKG API (api.bmkg.go.id): API prakiraan cuaca dan peringatan dini
- Kode Wilayah: Database lokal berdasarkan Keputusan Mendagri No. 100.1.1-6117 Tahun 2022
🔒 Batasan Akses
Sesuai dokumentasi BMKG:
- Prakiraan Cuaca: 60 permintaan per menit per IP
- Peringatan Dini: 60 permintaan per menit per IP
Gunakan dengan bijak untuk menghindari rate limiting.
🤝 Kontribusi
Kontribusi selalu diterima! Silakan:
- Fork repository ini
- Buat branch baru (
git checkout -b feature/fitur-baru) - Commit perubahan (
git commit -am 'Tambah fitur baru') - Push ke branch (
git push origin feature/fitur-baru) - Buat Pull Request
📝 Lisensi
Proyek ini dilisensikan di bawah MIT License.
Proyek ini adalah unofficial dan tidak berafiliasi dengan BMKG. Data yang digunakan berasal dari sumber publik BMKG.
⚠️ Disclaimer
Server ini dibuat untuk memudahkan akses data BMKG melalui Model Context Protocol. Pengguna bertanggung jawab untuk mematuhi syarat dan ketentuan penggunaan data dari BMKG.
🙏 Credits
- Data gempa dan cuaca dari BMKG
- Database kode wilayah berdasarkan Keputusan Mendagri
- Menggunakan FastMCP untuk MCP server
📧 Kontak
Untuk pertanyaan, saran, atau laporan bug, silakan buat issue di repository ini.
⭐ Jika proyek ini bermanfaat, berikan bintang di GitHub!
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。