Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

Indonesia Civic Stack

de suryastversión 0.1.1i★ –iSe ejecuta en tu computadora
Nombre en el registroio.github.suryast/indonesia-civic-stack

Instalar

Resumen

Descripción del creador (original en inglés)

40 MCP tools for 11 Indonesian government portals — BPOM, BPJPH, AHU, OJK, BMKG+

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

  • Conexión: Se ejecuta en tu computadora
  • Transporte: stdio
  • Categoría: Otros
  • Debes completar: BPS_API_KEY

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

Los valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.

Necesitas

  • PyPIuv de Python instalado (para el comando uvx)

¿Qué app usas?

Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.

Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json

{
  "mcpServers": {
    "indonesia-civic-stack": {
      "command": "uvx",
      "args": [
        "indonesia-civic-stack"
      ],
      "env": {
        "PROXY_URL": "your-value",
        "BPS_API_KEY": "your-value"
      }
    }
  }
}

Ejecuta esto en tu terminal

claude mcp add indonesia-civic-stack --env PROXY_URL=your-value --env BPS_API_KEY=your-value -- uvx indonesia-civic-stack

Completa los valores vacíos antes de ejecutarlo.

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "indonesia-civic-stack": {
      "command": "uvx",
      "args": [
        "indonesia-civic-stack"
      ],
      "env": {
        "PROXY_URL": "your-value",
        "BPS_API_KEY": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "indonesia-civic-stack": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "indonesia-civic-stack"
      ],
      "env": {
        "PROXY_URL": "your-value",
        "BPS_API_KEY": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.

Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.

Valores que debes completar

  • PROXY_URL env
    Proxy URL for accessing Indonesian government portals from outside Indonesia (e.g. Cloudflare Worker URL)
  • BPS_API_KEY secreto env
    BPS Statistics API key (free registration at webapi.bps.go.id)

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué puede hacer

Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub suryast, dueña del repo

  • … Aún sin revisar

    Sigue en mantenimiento

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • – No aplica

    El endpoint responde

    Este se ejecuta en tu computadora; no hay endpoint en internet

  • – No aplica

    Inicio de sesión con OAuth

    Se ejecuta en tu computadora y usa ajustes locales en su lugar

  • … Aún sin revisar

    Sin instrucciones ocultas en las descripciones de herramientas

    Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet

Comparado con otros en Otrosi

  • Más estrellas que el 0% de los otros 32696 servidores de esta categoría
  • Publicado en el registro más recientemente que el 4% de los otros 32696 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 32696 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro Indonesia Civic Stack?

Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

Debes completar: BPS_API_KEY

¿Se ejecuta en mi computadora o en la nube?

Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez –, y la última versión (0.1.1) llegó al registro hace 8 meses.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.

¿Qué puedo usar en su lugar?

En la misma categoría: Spec Driven Development, Remote Desktop Commander, LexPact UK Contracts

Alternativas

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

Spec Driven Development

de formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Se ejecuta en tu computadora★ 440MITActualizado hace 14 meses
Instalar

Remote Desktop Commander

de desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Se ejecuta en la nube★ 211Actualizado anteayer
Instalar

Generate UK-law contracts: NDA, service, freelance, recruiter terms of business, IR35.

Se ejecuta en tu computadoraActualizado hoy
Instalar

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

🇮🇩 indonesia-civic-stack

Python SDK, MCP tools, and REST wrappers for Indonesian public-sector data. Release 1.2.1 includes 14 scraper modules, 45 unified MCP tools, and 11 REST module routers. These counts describe code, not live availability.

Indonesian public-data portals expose different APIs, HTML structures, browser requirements, and access restrictions. This project provides a shared response schema and reusable clients rather than requiring every civic-tech app to build its own integration. Portal changes can still break individual operations; verify the response and its provenance before drawing conclusions.

Module inventory and maturity

Each row has a scraper, normalizer, and module test file. “Tests present” means mocked/replayed tests exist, not that they establish current portal liveness. The MCP column counts decorators in the unified civic_stack/server.py.

ModuleSource configured in codeData / methodMCP toolsRESTTests present
bpomcekbpom.pom.go.idProduct registration; HTTP HTML3YesYes
bpjphcmsbl.halal.go.idHalal certificates; HTTP REST4YesYes
ahuahu.go.idCompany registry; browser helper4YesYes
ojkwww.ojk.go.id / sikapiuangmu.ojk.go.idInstitutions and alerts; HTTP + optional browser list4YesYes
oss_niboss.go.idNIB identity; Playwright3YesYes
lpsespse.inaproc.id and configured portalsVendors/tenders; multi-portal HTTP4YesYes
kpuinfopemilu.kpu.go.id / sirekap-obj-data.kpu.go.idCandidates and 2024 elections; HTTP JSON4YesYes
lhkpnelhkpn.kpk.go.idWealth declarations; Playwright search, HTTP PDFs3YesYes
bpswebapi.bps.go.idStatistics; HTTP API, requires BPS_API_KEY3YesYes
bmkgdata.bmkg.go.idEarthquakes/weather; HTTP JSON/XML4YesYes
simbgsimbg.pu.go.id and pilot portalsPermits; multi-portal HTTP3YesYes
jdihperaturan.go.idRegulations; Playwright recent-list filtering2NoYes
kseiweb.ksei.co.idSecurities and statistics links; HTTP HTML2NoYes
djpbdata-apbn.kemenkeu.go.idBudget themes; HTTP JSON2NoYes

JDIH, KSEI, and DJPB are available through the SDK and unified MCP server, but have no individual MCP server or REST router. JDIH search checks up to 50 recent listing links; KSEI securities fetch/search only inspect page 1. Neither is a complete registry search. LHKPN's browser search implementation does not prove that reCAPTCHA or the upstream portal works in your deployment.

Current portal liveness is unverified here. Historical March/April 2026 observations in endpoint status and geo-restrictions are troubleshooting context, not present-day health evidence. An HTTP 200 homepage, local /health, or passing mock/VCR test is not a successful live registry lookup.

Install

pip install indonesia-civic-stack             # Core HTTP SDK

pip install "indonesia-civic-stack[mcp]" # + unified MCP server pip install "indonesia-civic-stack[api]" # + FastAPI and uvicorn pip install "indonesia-civic-stack[browser]" # + Playwright and Camoufox pip install "indonesia-civic-stack[all]" # mcp + api + browser

Browser-backed operations also need binaries:

playwright install chromium

python -m camoufox fetch # AHU Camoufox path

AHU, OSS NIB, JDIH, LHKPN search, and OJK's full-list helper use browser paths. BPJPH's current scraper uses HTTP REST. all does not download browser binaries or include LHKPN's optional PDF packages. Install pdfplumber directly for PDF text extraction; the optional scanned-document fallback needs anthropic and ANTHROPIC_API_KEY, sends the document to an external API, and may incur cost. There are no pdf or playwright extras. SOCKS HTTP transport additionally requires pip install "httpx[socks]".

Python SDK

import asyncio

from civic_stack.bpom.scraper import search

async def main(): try: async with asyncio.timeout(120): records = await search("paracetamol") except Exception as exc: print("Could not verify:", type(exc).name) return if not records: print("No records returned; acquisition may be unverified") for record in records: print(record.status, record.found, record.source_url, record.fetched_at) if record.status == "ERROR": print("Could not verify:", record.result) elif record.found: print(record.result) # Check identity, period, and domain-specific status else: print("No match reported within the query scope; not proof of absence")

asyncio.run(main())

Every scraper has fetch() and search(), with module-specific signatures. Specialized helpers include BMKG's get_latest_earthquake, KPU's get_election_results, OJK's check_waspada, KSEI's get_statistics_links, and DJPB's get_budget_summary. See usage and limitations for actual return shapes, scope limits, and unified-tool wrapper caveats.

Response interpretation

Core lookups return CivicStackResponse or lists of envelopes:

{

"result": {"product_name": "Example", "registration_status": "ACTIVE"}, "found": true, "status": "ACTIVE", "confidence": 1.0, "source_url": "https://cekbpom.pom.go.id/example", "fetched_at": "2026-03-14T06:30:00Z", "last_updated": null, "module": "bpom", "raw": null }

This is illustrative, not a live response. Status values are ACTIVE, EXPIRED, SUSPENDED, REVOKED, NOT_FOUND, and ERROR. Error details are under result.detail, not a top-level detail. Some helpers return raw lists/dicts, PDF extraction data, or URLs instead of envelopes; status shortcut MCP tools omit source and timestamp. Do not assume every tool has the full schema.

Check status, found, source_url, and fetched_at before reading result. Retrieval time is not publication time; verify the source's reporting period. `ERROR` is not `NOT_FOUND`. Current paths in several modules also collapse network/browser failures into NOT_FOUND or []. Consequently, an empty or not-found result alone cannot prove acquisition succeeded or that the record does not exist. BPS fetch() can raise for a missing key; other callers can also encounter unexpected exceptions. Catch exceptions at the caller boundary.

A found registration is not a general safety/legal guarantee. An alert-list match is a warning, not an endorsement. Partial multi-portal results and scraper confidence values must not be presented as exhaustive or authoritative checks.

Unified MCP server

civic-stack-mcp                   # stdio, 45 tools

python -m civic_stack.server # packaged equivalent civic-stack mcp # CLI stdio entry point python -m civic_stack.server --transport http --host 127.0.0.1 --port 8000

Individual module server (where present):

python -m civic_stack.bpom.server

For local clients, configure civic-stack-mcp as the command. The repository's .mcp.json uses .venv/bin/python -m civic_stack.server; create that virtual environment and install [mcp] before discovery. Discovery does not install dependencies or ensure portals respond. There is no shared hosted server.

Unified MCP tool inventory
ModuleRegistered tool names
bpomcheck_bpom, search_bpom, get_bpom_status
bpjphcheck_halal_cert, lookup_halal_by_product, get_halal_status, cross_reference_halal_bpom
ahulookup_company_ahu, get_company_directors, verify_company_status, search_companies_ahu
ojkcheck_ojk_license, search_ojk_institutions, get_ojk_status, check_ojk_waspada
oss_niblookup_nib, verify_nib, search_oss_businesses
lpselookup_vendor_lpse, search_lpse_vendors, search_lpse_tenders, get_lpse_portals
kpuget_candidate, search_kpu_candidates, get_election_results_kpu, get_campaign_finance_kpu
lhkpnget_lhkpn, search_lhkpn, get_lhkpn_pdf
bpssearch_bps_datasets, get_bps_indicator, list_bps_regions
bmkgget_bmkg_alerts, get_weather_forecast, get_earthquake_history, get_latest_earthquake
simbglookup_building_permit, search_permits_by_area, list_simbg_portals
jdihsearch_jdih, get_jdih
kseisearch_ksei, get_ksei
djpbsearch_djpb, get_djpb

These are 45 registered names, not 45 independently validated operations. Some wrappers call generic scraper functions rather than the specialized helper suggested by the tool name; read wrapper caveats before using election-results, campaign-finance, tender, alert-list, or portal-list tools.

Verify registration offline, without calling tools:

python -c 'import asyncio; from civic_stack.server import mcp; print(len(asyncio.run(mcp.list_tools())))'

REST API

civic-stack api --host 127.0.0.1 --port 8000

uvicorn civic_stack.app:app --host 127.0.0.1 --port 8000 uvicorn civic_stack.bpom.app:app --host 127.0.0.1 --port 8001

The unified app mounts 11 routers. JDIH, KSEI, and DJPB have no REST routes. Open /docs or /openapi.json for the actual route signatures. Examples:

GET /bpom/search?q=paracetamol

GET /bpjph/search?q=kopi GET /ahu/search?q=Contoh GET /ojk/check/Bank%20BCA GET /kpu/search?q=Contoh GET /lhkpn/search?q=Contoh GET /bps/search?q=inflasi GET /bmkg/forecast/Jakarta GET /bmkg/earthquake/latest GET /simbg/search?q=Jakarta

/health only describes the local app; it does not probe upstream portals.

Deployment and security

civic_client() reads PROXY_URL, with environment-based PROXY_MODE=connect or rewrite selection. A *.workers.dev URL auto-selects rewriting. Browser proxy handling is separate: a Worker rewrite URL is not a standard Chromium proxy, AHU and OSS-NIB fall back to PROXY_URL only in CONNECT mode, JDIH uses its explicit proxy argument, and LHKPN search does not forward its proxy_url argument to its browser. Do not assume setting an environment variable proxies every operation. See usage.

Whoever runs a proxy controls the portal responses the server receives. The REST routers and the standalone AHU/OSS-NIB MCP servers therefore accept a caller-supplied proxy_url only when it exactly matches PROXY_URL or an entry in CIVIC_ALLOWED_PROXIES (comma-separated full proxy URLs); anything else is rejected (HTTP 400 or an ERROR envelope). Configure proxies server-side.

Access can vary by deployment, endpoint, and time. Historical regional tests do not est

Solo se muestra el principio; lee el resto en el repo

Pregunta a PopNx