ClauseKeeper Compliance Scanner

io.github.mitydaPublished by GitHub account mitydav0.1.1Updated Oct 24, 2026

Scan website legal docs for missing or stale compliance clauses. Rule-based, no LLM.

Overview

AI-generated overview

A local, rule-based scanner that lets an assistant check website legal or policy text for missing or stale compliance clauses.

What you can do
  • Scan pasted policy or legal text and get a score, grade, counts, categories and a missing/stale clause checklist
  • Fetch a URL, strip its HTML and scan the visible text the same way
  • List the built-in clause rules and their categories
When to use it
Useful when you want a quick, deterministic check of a privacy policy, terms page or similar legal document for missing or outdated clauses, either from pasted text or a live page URL, without relying on an LLM judgment.
Requirements
Runs as a local stdio process, installed from PyPI as clausekeeper-mcp and started with uvx or uv; the README's host configuration points at a local mcp directory with an absolute path. No API keys, accounts or environment variables are declared. Network access is needed only for the URL scanning tool.
Before you install
The URL tool fetches whatever address it is given, so page content is retrieved by the local process. Results come from a fixed rule library and are not legal advice; treat findings as a checklist, not a compliance determination. The README notes the bundled scanner is a vendored copy that must be kept in sync with the main project.

Installation

In SourceWeft

  1. Open ClauseKeeper Compliance Scanner in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

ClauseKeeper MCP Server

mcp-name: io.github.mityda/clausekeeper

clausekeeper-mcp exposes ClauseKeeper's deterministic compliance scanner as Model Context Protocol (MCP) tools for Claude Desktop, Cursor, and other MCP hosts.

It is a thin wrapper around a vendored copy of the real ClauseKeeper scanner in clausekeeper_core/scanner.py and rule library in clausekeeper_core/clause_rules.py:

  • no LLM calls
  • no API keys
  • no paid services
  • stdio transport via the official Python mcp SDK

Tools

  • scan_policy_text(text: str) — scans pasted policy/legal text with the vendored ClauseKeeper scanner and returns the score, grade, counts, categories, and missing/stale clause checklist.
  • scan_policy_url(url: str) — fetches a URL, strips HTML with ClauseKeeper's html_to_text, then scans the visible text.
  • list_clause_rules() — returns the vendored clause rules and categories.

Run locally

From the main ClauseKeeper repository:

bash
cd mcpuv run clausekeeper-mcp

uv run creates/uses the local project environment and installs the mcp SDK dependency automatically. Because this is a stdio MCP server, uv run clausekeeper-mcp waits for an MCP client on stdin/stdout.

You can also install it into an explicit virtual environment:

bash
cd mcpuv venvuv pip install --python .venv/bin/python -e ..venv/bin/clausekeeper-mcp

Or run it directly:

bash
cd /path/to/clausekeeper/mcpuv run python server.py

MCP host configuration

Use an absolute path to this mcp directory.

Claude Desktop

Add this to your Claude Desktop MCP configuration file:

json
{  "mcpServers": {    "clausekeeper": {      "command": "uv",      "args": [        "--directory",        "/absolute/path/to/clausekeeper/mcp",        "run",        "clausekeeper-mcp"      ]    }  }}

Cursor or other MCP hosts

Use the same server definition in your MCP settings:

json
{  "mcpServers": {    "clausekeeper": {      "command": "uv",      "args": [        "--directory",        "/absolute/path/to/clausekeeper/mcp",        "run",        "clausekeeper-mcp"      ]    }  }}

If your host does not support uv --directory, use the installed console script from a virtual environment instead:

json
{  "mcpServers": {    "clausekeeper": {      "command": "/absolute/path/to/clausekeeper/mcp/.venv/bin/clausekeeper-mcp",      "args": []    }  }}

Keeping the vendored scanner in sync

The clausekeeper_core/ package is vendored from the main app's app/scanner.py and app/clause_rules.py so the MCP package is self-contained for PyPI/registry installs. When the scanner or clause rules change in app/, update the matching vendored files here and re-run the MCP self-containment and parity checks.

Publishing metadata

No server.json is included here because the current OSS MCP Community Registry / GitHub MCP Registry metadata format should be confirmed against the registry documentation at publication time. When publishing, add the registry-required metadata file with the package name, description, license, repository URL, runtime command, and tool list.

Main project

See the main ClauseKeeper project at ../README.md.

Source: mcp/README.md at commit 7e78caa

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts