{
  "markdown": "# Pasal.id — Indonesian Law MCP Server\n\n**The first open, AI-native Indonesian legal database.** Gives Claude and any MCP-compatible AI assistant grounded, citation-ready access to 100,000+ Indonesian regulations — UU, PP, Perpres, PERMEN, PERDA, and 20+ other regulation types — directly from authoritative sources (peraturan.go.id, BPK JDIH, JDIH MK, JDIHN).\n\n- **Live server:** `https://mcp.pasal.id/mcp`\n- **Transport:** Streamable HTTP\n- **Auth:** OAuth 2.0 — free account at [pasal.id](https://pasal.id)\n- **Setup in 30 seconds:** [pasal.id/hubungkan](https://pasal.id/hubungkan)\n- **License:** AGPL-3.0\n\n## Why this exists\n\nIndonesian law is scattered across dozens of government portals, each with its own PDF quirks and status ambiguities. Most LLM answers about Indonesian regulations are hallucinated — the training data is thin, and the live web isn't indexed for precise legal retrieval.\n\nPasal.id consolidates 100,000+ regulations into structured data (pasal-level granularity, whole-law hierarchy, preamble sections, amendment history, and legal-status provenance) and exposes it to AI assistants via MCP. Every answer an LLM gives using this server can be grounded in a specific article, regulation part, and authoritative source.\n\n## Connect\n\nPick your client. All use the same server URL: `https://mcp.pasal.id/mcp`.\n\n### Claude Code — one command\n\n```bash\nclaude mcp add --transport http pasal-id https://mcp.pasal.id/mcp\n```\n\nClaude Code will open a browser window for OAuth on first use. For CI/automation, use a personal access token from [pasal.id/akun](https://pasal.id/akun):\n\n```bash\nclaude mcp add --transport http pasal-id https://mcp.pasal.id/mcp \\\n  --header \"Authorization: Bearer ${PASAL_MCP_TOKEN}\"\n```\n\n### Claude Desktop / Cursor / Windsurf / VS Code\n\nAll consume the same JSON. Paste into the relevant config file:\n\n```json\n{\n  \"mcpServers\": {\n    \"pasal-id\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.pasal.id/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${PASAL_MCP_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\n| Client            | Config file                                                          |\n|-------------------|----------------------------------------------------------------------|\n| Claude Desktop    | `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) · `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows) |\n| Cursor            | `~/.cursor/mcp.json` or `.cursor/mcp.json` (workspace)               |\n| Windsurf          | `~/.codeium/windsurf/mcp_config.json`                                |\n| VS Code MCP       | `.vscode/mcp.json` (workspace)                                       |\n| Claude Code       | `.mcp.json` (project root)                                           |\n\nFull per-client walkthrough: [docs/clients.md](./docs/clients.md).\n\n### ChatGPT Desktop (April 2026+)\n\nSettings → Developer Tools → Add MCP Server → paste `https://mcp.pasal.id/mcp`.\n\n## Tools\n\nThe server exposes six task-oriented tools to AI assistants (v2.0.0 — the earlier\neleven-tool surface keeps working for existing integrations but is deprecated and\nscheduled for removal after August 2026):\n\n| Tool | Purpose |\n|---|---|\n| `search_legal` | Find regulations when you do not yet know which law applies — topics, keywords, or messy citations, with validated granular filters (multiple types, year, status, issuing body, region) and diagnostics that explain zero results. |\n| `resolve_law` | Turn any reference — \"KUHP\", \"UU 13/2003\", \"Pergub DKI 220 tahun 2010\", a pasted title — into a canonical `law_id`, or get disambiguation candidates instead of a guess. |\n| `get_law_context` | Compact orientation on one law: summary (status, structure counts, top-level outline), a pasal-range-compressed outline, or typed relationship groups (amendments, court reviews) — token-budgeted. |\n| `read_law` | Read text with forgiving selectors: `pasal 27`, `pasal 27-30`, `bab III`, `menimbang`, `penjelasan pasal 5`, `lampiran`, `all` — with cursors, char budgets, and explicit `missing` reporting. |\n| `search_court_decisions` | Search Constitutional Court (Mahkamah Konstitusi) decisions by reviewed law, lane (PUU/SKLN/PHPU/PHPKADA), ruling, year, dissent, or judge. |\n| `report_issue` | Report data problems; the `search_failure` type (\"I searched X and expected law Y\") feeds the search regression suite directly. |\n\nEvery v2 response carries a `request_id` and structured `diagnostics`; errors are\ntyped (`error_code` + `recovery` guidance + `valid_values`) so assistants can\nself-correct instead of retrying blindly. The canonical workflow: `resolve_law`\nwhen you know the law → `get_law_context` to orient → `read_law` for text;\n`search_legal` when you don't.\n\nSchemas + example calls: [docs/tools.md](./docs/tools.md).\n\n## Example prompts\n\nOnce connected, ask your AI assistant questions like:\n\n- \"Explain Pasal 81 of the UU Cipta Kerja on employment.\"\n- \"Is the 1974 Marriage Law still in force?\"\n- \"What are contract workers' rights under Indonesian law?\"\n- \"Compare worker rights before and after the Job Creation Law.\"\n- \"What is the minimum marriage age in Indonesia?\"\n- \"Tampilkan struktur UU ITE dan ambil bagian Menimbang serta Pasal 27.\"\n- \"Cari dalam UU PDP bagian tentang pengendali data, lalu cek status peraturannya.\"\n- \"Saya menemukan OCR yang salah di Pasal ini; laporkan koreksinya ke Pasal.id.\"\n\nThe assistant should search first, retrieve only the needed Pasal or regulation part, verify status/provenance when the answer depends on currency, and use `report_issue` when the parsed corpus has a real data problem.\n\n## About the data\n\n- **Primary source:** [peraturan.go.id](https://peraturan.go.id) (Ministry of State Secretariat).\n- **Secondary sources:** [BPK JDIH](https://peraturan.bpk.go.id) (69 regulation types), [JDIH MK](https://jdih.mkri.id) (Constitutional Court), [JDIHN](https://jdihn.go.id) (regional regulations).\n- **Verification:** Gemini 3 Flash cross-checks every parsed document against the source PDF. Unverified regulations are flagged.\n- **Updates:** New regulations ingested within 24–48 hours of publication.\n- **Gaps:** See [pasal.id/metodologi](https://pasal.id/metodologi) for known limitations.\n\n## Contributing\n\nPasal.id itself lives in a private repository — but this repo is public and we welcome:\n\n- **Corrections** to the public MCP surface (README, install snippets, docs).\n- **Bug reports** against the live server via [GitHub Issues](https://github.com/Aturio/pasal-id-mcp/issues) or [pasal.id/masukan](https://pasal.id/masukan).\n- **Feature requests** — especially new MCP tools or improvements to existing ones.\n\nPRs to the source regulations database happen through the crowd-correction workflow at [pasal.id](https://pasal.id): any user can highlight a passage and suggest a fix; our team reviews and merges within days.\n\n## Related projects\n\n- [pasal.id](https://pasal.id) — web reader with full search, law detail pages, and crowd corrections.\n- [pasal.id/api](https://pasal.id/api) — REST API (same data, same authentication, for non-MCP integrations).\n\n## License\n\nAGPL-3.0 — see [LICENSE](./LICENSE).\n\nThe MCP server code and the regulation data are both open. Attribution is appreciated; commercial derivatives must remain open-source under the same license.\n\n---\n\nBuilt by [Aturio](https://github.com/Aturio) · Maintained by [Ilham Firdausi Putra](https://github.com/ilhamfp).\n",
  "bytes": 7420,
  "sha": "f0b17a811354864dc9ae7823656cd0cb005845204af7bbc487e2cd0bc1cae9e6",
  "repo_slug": "aturio/pasal-id-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_aturio_pasal_id_mcp_1ffd5065/readme"
}