Delimit MCP Server
Unify Claude Code, Codex, Cursor, and Gemini CLI with persistent context, governance, and multi-model debate.
API governance, persistent ledger, multi-model deliberation, security audit, and test verification — all shared across AI coding assistants.
Quick Install (10 seconds)
- uses: delimit-ai/delimit-action@v0
What Delimit Catches
Breaking Change Detected in Pull Request
+-------------+----------------------------------------+-----------------+
| Severity | Change | Location |
+-------------+----------------------------------------+-----------------+
| HIGH | Field removed: email | User schema |
| HIGH | Type changed: age (integer -> string) | User.age |
| HIGH | Endpoint removed | GET /users/{id} |
+-------------+----------------------------------------+-----------------+
Why Delimit
APIs evolve, but your consumers depend on stability. One accidental breaking change can cascade into hours of debugging and frustrated users. Delimit catches these changes before they reach production.
Installation
GitHub Action (CI)
Add this workflow to .github/workflows/api-check.yml:
name: API Contract Check
on: pull_request
jobs:
delimit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: delimit-ai/delimit-action@v0
Zero configuration required. Delimit auto-detects your OpenAPI specs.
No broken builds on day one -- Delimit never fails on existing issues, only new violations in pull requests.
CLI
npm install -g delimit-cli
delimit lint openapi.yaml
MCP Server (for AI Assistants)
Install from PyPI:
pip install delimit-mcp
Claude Code / Claude Desktop
Add to your MCP config (.mcp.json or Claude Desktop settings):
{
"mcpServers": {
"delimit": {
"command": "delimit-mcp"
}
}
}
Cursor
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"delimit": {
"command": "delimit-mcp"
}
}
}
Codex CLI
Add to your MCP configuration:
{
"mcpServers": {
"delimit": {
"command": "delimit-mcp"
}
}
}
The server communicates over stdio. No API keys or external services required.
MCP Tools
| Tool | Description |
|---|---|
delimit_lint |
Diff + policy evaluation in one call. Returns pass/fail with violations. |
delimit_diff |
Structural diff between two OpenAPI specs. 23 change types detected. |
delimit_policy |
Evaluate changes against configurable rule sets. |
delimit_impact |
Business and technical impact assessment of detected changes. |
delimit_ledger |
Audit trail of governance decisions. |
Example agent usage:
> delimit_lint(old_spec="api/v1.yaml", new_spec="api/v2.yaml")
{
"passed": false,
"violations": [
{"type": "endpoint_removed", "severity": "error", "path": "GET /users/{id}"},
{"type": "field_removed", "severity": "error", "path": "User.email"}
],
"summary": "2 breaking changes detected"
}
Detected Breaking Changes
Delimit identifies 23 change types across these categories:
- Removed endpoints -- Endpoints that existed but are now gone
- Type changes -- Fields that changed type (string -> integer)
- Removed required fields -- Required response fields that were removed
- New required parameters -- Request parameters that became required
- Method removals -- HTTP methods removed from endpoints
- Schema changes -- Incompatible modifications to request/response schemas
The action automatically compares your PR API spec against the base branch.
What Happens on First Run
- Auto-detection (2 seconds): Scans for OpenAPI/Swagger files
- Baseline creation (3 seconds): Establishes current state without failing
- Analysis (5 seconds): Compares changes and evaluates policies
- Feedback: Posts clear, actionable comments on your PR
First run output:
Auto-detected: api/openapi.yaml
Baseline established
Running in advisory mode (non-blocking)
Supports
- OpenAPI 3.0, 3.1
- Swagger 2.0
- Multiple specs in monorepos
- JSON and YAML formats
Advanced Usage
Configure Detection
If auto-detection does not work for your setup:
- uses: delimit-ai/delimit-action@v1
with:
old_spec: api/v1/openapi.yaml
new_spec: api/v2/openapi.yaml
mode: enforce # Fail CI on breaking changes
Custom Policies
Create .delimit/policies.yml to define custom governance rules:
rules:
- id: no_endpoint_removal
change_types: [endpoint_removed]
severity: error
message: "Endpoints cannot be removed without deprecation"
Policy Presets
Three built-in presets:
| Preset | Behavior |
|---|---|
strict |
All detected changes are errors |
default |
Breaking changes are errors, others are warnings |
relaxed |
All changes are warnings only |
delimit lint --policy strict openapi.yaml
Examples
| Example | Description | Key Learning |
|---|---|---|
| breaking-change-demo | How Delimit catches breaking changes | Endpoint removal, field deletion |
| safe-change-demo | Backward-compatible changes | Adding fields, new endpoints |
| monorepo-demo | Multi-service API validation | Matrix builds, service isolation |
Support
License
MIT
Metadata
Release files for delimit-mcp 3.2.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 | |
|---|---|---|---|
| delimit_mcp-3.2.1.tar.gz | 334.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| delimit_mcp-3.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 573.4 kB
Release files / delimit_mcp-3.2.1.tar.gz
| Download URL | delimit_mcp-3.2.1.tar.gz |
|---|---|
| Size | 334.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
30a2870ca51da5bb98e2f6596443f7126a5dac76de9972db7e0d20597a798ec2
|
|
BLAKE2b-256 checksum How to use checksums |
4524d34d1694551098f5b58b3e54156b4fbe5351e4f88cac1ff2d1c3937c2c73
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Release files / delimit_mcp-3.2.1-py3-none-any.whl
| Download URL | delimit_mcp-3.2.1-py3-none-any.whl |
|---|---|
| Size | 238.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6f246d426f0acceb8e52e30372c8fb5c8c03b128b85606f91f77925328b61017
|
|
BLAKE2b-256 checksum How to use checksums |
8081bb2eb1b568c6b8bd265c80cee7e7cef20fd78fad2a4e5ccecbf2f69a2cd5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|