Korean Law MCP
Korean law: statutes, precedents, ordinances, treaties and citation verification (법제처 API).
Description from the maker (original English)
MCP compliance proxy between agent and tools: deterministic governance, fail-closed, audit trail.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"kcp-harness": {
"command": "npx",
"args": [
"-y",
"kcp-harness",
"serve"
]
}
}
}Run this in your terminal
claude mcp add kcp-harness -- npx -y kcp-harness servePaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"kcp-harness": {
"command": "npx",
"args": [
"-y",
"kcp-harness",
"serve"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"kcp-harness": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"kcp-harness",
"serve"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Run on your computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 11, 2026
The registry name was verified against the domain cantara.no (the registry checks domain ownership)
Code last changed 34 days ago
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 2 of 2 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed 34 days ago, and the latest version (0.4.1) reached the registry 4 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Korean Law MCP, Tw Legal Rag, Parse-DMARC MCP Server
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Korean law: statutes, precedents, ordinances, treaties and citation verification (법제처 API).
Taiwan law MCP server: 22M court judgments, statutes, agency rulings, with citation checks
Lightweight DMARC parser: auto-fetch email reports, visualize compliance in a single all-in-one app
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Deterministic knowledge governance for any AI agent.
*Your agent can read every file in your project. Can it prove why it read what it read?*
KCP Harness is an MCP compliance proxy that sits between an AI coding agent and its tools. It intercepts knowledge-related calls, routes them through the kcp-agent deterministic planner (14-gate cascade, no LLM), and produces compliance artifacts — decision traces, audit logs, budget ledgers — as a side effect of normal agent operation.
The agent can't bypass governance because it only talks to the proxy's MCP interface. The proxy decides what knowledge is accessible, tracks spend, and logs every decision. Fail-closed: if the harness can't verify a request, the agent gets nothing.
Agent (Claude Code / Cursor / Copilot / Windsurf / Cline / Crush / OpenClaw / ...)
│ │ MCP tool call v ┌─────────────────────────────────────────────────────────┐ │ kcp-harness │ │ │ │ classify → govern (14 gates) → execute → audit │ │ │ │ Side outputs: │ │ · Decision traces (per-request, deterministic) │ │ · Audit log (append-only JSONL) │ │ · Budget ledger (itemized, ceiling-enforced) │ │ · Temporal drift (plan validity over time) │ │ · Approval tickets (named-human sign-off, durable) │ │ · Confidence verdicts (post-synthesis gate) │ └─────────────────────────────────────────────────────────┘ │ v Knowledge manifests (knowledge.yaml)
[Documentation →](https://cantara.github.io/kcp-harness/)
Enterprises need agents that are *defensible* — auditable, reproducible, budget-controlled, temporally pinned. Today's agents can't prove why they read what they read. The harness adds a compliance layer without replacing the agent.
| What you keep | What the harness adds |
|---|---|
| Your agent (Claude Code, Cursor, Copilot, ...) | Deterministic knowledge selection |
| Your workflow (coding, reviewing, shipping) | Decision traces (14 gates per unit) |
| Your tools (MCP servers, shell, browser) | Budget enforcement (ceiling, per-currency) |
| Temporal governance (drift detection) | |
| Append-only audit log | |
| Replay / cross-examination | |
| Human-approval gates (named reviewer + policy citation) | |
| Confidence gating (post-synthesis, route-to-human) |
You sell the compliance layer. The agents are pluggable.
npm install -g kcp-harness
Or use without installing:
npx kcp-harness --help
Pre-built binaries (no Node/Deno required) for Linux x64/arm64, macOS x64/arm64, and Windows x64 — grab them from a release. To build one yourself:
npm ci && npm run build
deno compile --allow-read --allow-env --allow-net --allow-run \ --node-modules-dir=auto --output kcp-harness dist/cli.js
kcp-harness init # creates harness.yaml
kcp-harness integrate claude-code # or: pi, cursor, copilot, windsurf, cline, continue, crush, openclaw
Your agent now routes knowledge access through the harness. Every decision is logged.
| Agent | Config | Integration |
|---|---|---|
| Claude Code | .mcp.json + PreToolUse hooks | kcp-harness integrate claude-code |
| Cursor | .cursor/mcp.json + .mdc rules | kcp-harness integrate cursor |
| GitHub Copilot | .vscode/mcp.json (uses "servers" key) | kcp-harness integrate copilot |
| Windsurf | global config + .windsurfrules | kcp-harness integrate windsurf |
| Cline | MCP settings + .clinerules | kcp-harness integrate cline |
| Continue | .continue/mcpServers/*.yaml | kcp-harness integrate continue |
| Crush | crush.json + PrepareStep | kcp-harness integrate crush |
| OpenClaw | openclaw.json + plugin hooks | kcp-harness integrate openclaw |
| Pi | .pi/mcp.json + project skills | kcp-harness integrate pi |
Each agent has its own MCP config format, rules file, and quirks. The integrate command handles them all — one governance layer, any agent.
Every tool call flows through a five-stage pipeline:
1. RECEIVE MCP JSON-RPC request from agent
The classifier examines each tool call and determines whether it targets governed knowledge. Read("docs/api.md") where docs/ is governed? Route through the planner. Read("package.json") where package.json isn't governed? Pass through. KCP tools (kcp_plan, kcp_load) are always governed.
Two automated modes, plus a human gate that outranks both:
kcp_plan first. The harness caches the approved plan. Subsequent reads are checked against the cached plan — no re-planning.kcp_plan.governance.approvals rule are held for a named reviewer (pending), no matter what the automated paths would decide. Tickets survive restarts and resolve via the kcp-harness approvals CLI (or any custom ApprovalProvider channel). Resolutions require a named reviewer *and* a policy citation.Every knowledge unit is evaluated through 14 deterministic gates, in order:
audience → not_for → temporal → deprecated → supersession → relevance →
skill_eligibility → attestation → payment → access → strict → max_units → money_budget → context_budget
A unit must pass all gates. The gate that blocks it is recorded in the decision trace. Same inputs → same plan. No model involved.
For the skill_eligibility gate's subject matter — governed kind: skill units — the authoring conventions, linter, and conformance vectors live in Cantara/kcp-skill.
Once connected, agents can use these governance tools:
| Tool | Description |
|---|---|
kcp_plan | Deterministic load plan — which units, in what order, which skipped and why |
kcp_load | Plan + load eligible unit content |
kcp_trace | Full 14-gate decision trace |
kcp_validate | Lint a knowledge.yaml |
harness_status | Current governance state |
harness_session | Approved plans + known units for this session |
harness_budget | Itemized spend tracking |
harness_temporal_check | Plan drift detection |
harness_approvals | Human-approval tickets (pending / approved / dismissed / expired) |
harness_assess | Confidence-gate a synthesized answer before acting on it |
Append-only JSONL. Every decision — governed or pass-through — is logged with sequence number, timestamp, tool, targets, and governance decision:
cat .kcp-harness/audit.jsonl | jq 'select(.governed == true)'
Append-only itemized spend tracking. Per-currency running totals. Ceiling enforcement — a load that would exceed the budget is rejected atomically (no partial loads).
Plans are registered with a temporal watcher. On subsequent calls, the watcher re-evaluates against the current time. If units have drifted (expired, newly valid), the harness emits a drift event. Long-running sessions stay honest.
Calls matching an approval rule open a durable ticket (pending_review → approved | dismissed | expired, plus used for a consumed one-shot grant). The ticket store survives restarts — sessions are ephemeral, human review is not. Every resolution records *who* approved, *when*, and *which policy* it satisfies — evidence generated at approval time, never reconstructed from logs.
An approval is a bounded grant, never a standing permission. It covers the session that opened the ticket, the exact tool and target, and the call's arguments digest — and it lapses. Each rule sets grant: once | session | (default session), always capped by governance.approvals.grant_max (default 24h). A call outside a valid grant is denied, audited as grant_denied (expired, wrong_session, used, ...) and opens a *new* ticket. A standing permission is a policy rule, not a click. A grant's window is measured from the store's own clock, not the reviewer-supplied reviewedAt; the first valid resolution of a ticket wins (a dismissed ticket cannot be re-approved by an appended line); with approvals.require_signed_resolutions signatures are verified on every read, not only in resolve(); and approvals.require_args_binding refuses grants from tickets not bound to the call's arguments. What the ticket store does *not* protect — write access to its directory — is stated in the Ticket store trust model. See Governance Model.
harness_assess runs kcp-agent's post-synthesis assess() over a synthesized answer before it may be acted on. The planner gates *loading*, grounding gates *asserting*, this gates *acting*. Below-threshold verdicts on routed configs open an approval ticket with the full verdict embedded as evidence.
# harness.yaml
version: "1.0"
governance: domains:
policy: fail_closed: true audit_all: true max_units: 5 budget: amount: 1.00 currency: USDC
confidence: # optional post-synthesis gate (harness_assess) threshold: 0.7 severity: critical route_to_role: account-owner
approvals: # optional human-approval gates provider: file rules:
require_args_binding: true # refuse grants not bound to the call's arguments (recommended)
audit: path: ".kcp-harness/audit.jsonl"
kcp-harness serve [--config harness.yaml] Start the MCP proxy
kcp-harness init Create a harness.yaml template kcp-harness check [--config harness.yaml] Validate configuration kcp-harness integrate [options] Generate agent integration files kcp-harness integrate --list List supported agents kcp-harness export [options] Export compliance evidence (SOC 2 / ISO 27001) kcp-harness dashboard [options] Launch the live compliance dashboard kcp-harness approvals list [--state s] List human-approval tickets kcp-harness approvals approve --reviewer --policy-ref kcp-harness approvals dismiss --reviewer -