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:
cd mcp
uv 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:
cd mcp
uv venv
uv pip install --python .venv/bin/python -e .
.venv/bin/clausekeeper-mcp
Or run it directly:
cd /path/to/clausekeeper/mcp
uv 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:
{
"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:
{
"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:
{
"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.
Metadata
Release files for clausekeeper-mcp 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| clausekeeper_mcp-0.1.1.tar.gz | 8.3 kB | Without provenance | Details for clausekeeper_mcp-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| clausekeeper_mcp-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for clausekeeper_mcp-0.1.1-py3-none-any.whl |
Total release size: 17.9 kB
Release files / clausekeeper_mcp-0.1.1.tar.gz
| Download URL | clausekeeper_mcp-0.1.1.tar.gz |
|---|---|
| Size | 8.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1411288611e6293f12fe74630de69126c668858dd525956b3b152b3a5c9ce829
|
|
BLAKE2b-256 checksum How to use checksums |
1ac660f5e20f4e94297b28db38dd6f2031727058d11898cb45547402b732baeb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / clausekeeper_mcp-0.1.1-py3-none-any.whl
| Download URL | clausekeeper_mcp-0.1.1-py3-none-any.whl |
|---|---|
| Size | 9.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c99f07263c7ac354b72c5e60d747053493da17f022df429b194309de1e7dbd1d
|
|
BLAKE2b-256 checksum How to use checksums |
7023d99912efefa509c574d8a9fec5ae853ba80270b9bdc3fd4624d2a44be510
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for clausekeeper-mcp 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.