# indonesia-civic-stack

Provides 45 MCP tools to query Indonesian government portals. Useful for looking up company registries, drug records, halal certificates, and climate alerts in agent chats.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 12
- Author: suryast
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/suryast/indonesia-civic-stack
- Updated: 2026-10-12
- HTML: https://affpapa.org/en/nevibecode/mcp/indonesia-civic-stack

## What it does

The package bundles 14 data acquisition modules and 45 unified MCP tools behind a single interface. Agents can query company registrations in AHU, product statuses in BPOM, halal records in BPJPH, and official wealth reports from LHKPN. Scrapers combine direct HTTP requests, JSON parsing, and browser automation. Output records share a normalized schema with standard status values such as `ACTIVE` or `REVOKED`.

Several Indonesian government websites rely on client-side rendering and bot protection. Scrapers for AHU, OSS NIB, JDIH, and LHKPN execute browser sessions. Without installing Playwright with its Chromium binary, these lookups fail immediately. In addition, the BPS statistics module rejects requests when `BPS_API_KEY` is missing.

Network requests can route through `PROXY_URL` to handle regional access barriers. A local HTTP 200 health check does not ensure that the upstream government portal is currently reachable.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `PROXY_URL`, `BPS_API_KEY` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env PROXY_URL=<PROXY_URL> --env BPS_API_KEY=<BPS_API_KEY> --transport stdio indonesia-civic-stack -- uvx indonesia-civic-stack
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from indonesia-civic-stack <command>

### Codex

**Platform CLI**
```bash
codex mcp add indonesia-civic-stack --env PROXY_URL=<PROXY_URL> --env BPS_API_KEY=<BPS_API_KEY> -- uvx indonesia-civic-stack
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from indonesia-civic-stack <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "indonesia-civic-stack": {
            "command": "uvx",
            "args": [
                "indonesia-civic-stack"
            ],
            "env": {
                "PROXY_URL": "<PROXY_URL>",
                "BPS_API_KEY": "<BPS_API_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from indonesia-civic-stack <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "indonesia-civic-stack": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "indonesia-civic-stack"
            ],
            "env": {
                "PROXY_URL": "<PROXY_URL>",
                "BPS_API_KEY": "<BPS_API_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from indonesia-civic-stack <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e PROXY_URL=<PROXY_URL> -e BPS_API_KEY=<BPS_API_KEY> indonesia-civic-stack uvx indonesia-civic-stack
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from indonesia-civic-stack <command>

## When to use it
- Verify medication registration status in the BPOM database
- Retrieve halal certificate details from BPJPH
- Search business identity and company filings in the AHU registry
- Fetch recent earthquake and weather alerts from BMKG
- Pull official statistics using the BPS API

## Example prompts
- Check the registration status of paracetamol in the BPOM registry
- Get the latest earthquake reports from BMKG
- Search for company records in the AHU registry

## Similar
- [civic-skill](https://affpapa.org/en/nevibecode/skills/civic-skill.md) — skill · 13 installs
- [python-executor](https://affpapa.org/en/nevibecode/skills/python-executor.md) — skill · 109700 installs
- [twitterapi-io](https://affpapa.org/en/nevibecode/skills/twitterapi-io.md) — skill · 1100 installs
- [web-scraping](https://affpapa.org/en/nevibecode/skills/web-scraping.md) — skill · 6100 installs
- [extract](https://affpapa.org/en/nevibecode/skills/actionbook-extract.md) — skill · 2300 installs
- [api-testing](https://affpapa.org/en/nevibecode/skills/api-testing.md) — skill · 1300 installs

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
