
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
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.
Installation
In SourceWeft
- Open ClauseKeeper Compliance Scanner in the dashboard and add it to a workspace.
- 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
mcpSDK
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'shtml_to_text, then scans the visible text.list_clause_rules()— returns the vendored clause rules and categories.
Run locally
From the main ClauseKeeper repository:
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:
Or run it directly:
MCP host configuration
Use an absolute path to this mcp directory.
Claude Desktop
Add this to your Claude Desktop MCP configuration file:
Cursor or other MCP hosts
Use the same server definition in your MCP settings:
If your host does not support uv --directory, use the installed console script from a virtual environment instead:
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
0Version history
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