Merovingian
Cross-repository dependency intelligence for AI agents via MCP.
Merovingian maps cross-repo dependencies — API contracts, shared schemas, consumer relationships — and detects breaking changes before they propagate. It answers: "What else will break if I change this?"
Part of the EvoIntel MCP Suite (Sentinel, Niobe, Merovingian, Seraph, Anno).
Features
- OpenAPI spec parsing — detects endpoints, request/response schemas,
$refresolution (recursive, with cycle detection),allOf/anyOf/oneOfsupport - Pydantic model extraction — AST-parses Python files for BaseModel subclasses, no runtime imports needed
- Direction-aware breaking change detection — request vs response changes have opposite breaking semantics
- Consumer registry — track which services consume which endpoints
- Dependency graph — visualize producer/consumer relationships across repos
- Contract versioning — deterministic SHA256 spec hashing, version history with diff tracking
- MCP interface — 8 tools for AI agent consumption
- CLI — 12 commands via Typer with Rich output
Installation
pip install merovingian
Quick Start
# Register repositories
merovingian register user-service /path/to/user-service --type openapi
merovingian register billing-service /path/to/billing-service
# Scan for contracts
merovingian scan user-service
# Register consumer relationships
merovingian add-consumer billing-service user-service GET /users/{id}
# Check for breaking changes
merovingian breaking user-service
# Full impact assessment with consumer mapping
merovingian impact user-service
# View dependency graph
merovingian graph
# Contract version history
merovingian contracts user-service
CLI Commands
| Command | Description |
|---|---|
register <name> <path> |
Register a repository for scanning |
unregister <name> |
Remove a registered repository |
repos |
List all registered repositories |
scan <repo> |
Scan and update endpoints |
consumers |
List consumer relationships |
add-consumer <consumer> <producer> <method> <path> |
Register a consumer |
breaking <repo> |
Check for breaking changes |
impact <repo> |
Full impact assessment with consumer mapping |
contracts <repo> |
View contract version history |
graph |
View dependency graph |
feedback <target_id> <outcome> |
Submit feedback |
audit |
View audit log |
MCP Server
Add to your Claude Code configuration (~/.claude.json):
{
"mcpServers": {
"merovingian": {
"command": "merovingian-mcp",
"args": []
}
}
}
MCP Tools
| Tool | Description |
|---|---|
merovingian_register |
Register a repository for contract scanning |
merovingian_consumers |
List consumers of endpoints |
merovingian_breaking |
Check for breaking changes |
merovingian_impact |
Full impact assessment with consumer mapping |
merovingian_contracts |
List contract versions |
merovingian_graph |
Query the dependency graph |
merovingian_feedback |
Submit feedback on assessments |
merovingian_audit |
Query the audit log |
Breaking Change Detection
Merovingian classifies changes with direction-aware logic:
Breaking (blocks consumers):
- Endpoint removed
- Required field added to request body
- Response field removed
- Field type changed (non-widening)
- Optional field made required in request
Warning:
- Type widened (e.g.,
integer→number) - Required field made optional in response
Info (non-breaking):
- Endpoint added
- Optional field added to request
- Response field added
- Summary/description changed
Configuration
Merovingian uses layered configuration: TOML file → environment variables → defaults.
Create .merovingian/config.toml in your project root:
[store]
db_name = "merovingian.db"
[scanner]
openapi_patterns = ["openapi.yaml", "openapi.json", "swagger.yaml", "swagger.json"]
pydantic_scan_dirs = ["src", "app", "lib"]
[mcp]
default_query_limit = 50
Part of the EvoIntel MCP Suite
Merovingian solves AI Blindness #3: Cross-Service Dependencies — API contracts, consumer relationships, and breaking changes that span repository boundaries.
Part of the EvoIntel MCP Suite by Evolving Intelligence AI: five tools for five blindnesses no model improvement will ever fix.
| Tool | Blindness | Install |
|---|---|---|
| Sentinel | Project History | pip install git-sentinel |
| Niobe | Runtime Behavior | pip install niobe |
| Merovingian | Cross-Service Dependencies | pip install merovingian |
| Seraph | Code Quality | pip install seraph-ai |
| Anno | Web Content | npm install -g @evointel/anno |
License
MIT
Metadata
Release files for merovingian 0.1.4
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 | |
|---|---|---|---|---|
| merovingian-0.1.4.tar.gz | 33.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| merovingian-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 61.4 kB
Release files / merovingian-0.1.4.tar.gz
| Download URL | merovingian-0.1.4.tar.gz |
|---|---|
| Size | 33.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
593ca01a683cbe5bea5de4eb1c22e6eb772428c05f64e0182c4630dafe277a10
|
|
BLAKE2b-256 checksum How to use checksums |
138a79c7f3b50cd47ca0dd5c08d332833551444b404056410d665f6820d736bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / merovingian-0.1.4-py3-none-any.whl
| Download URL | merovingian-0.1.4-py3-none-any.whl |
|---|---|
| Size | 28.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4cf77eb1ef6b11361aa073e9c9f76cc4a5910382b1188962c816a850577df0c5
|
|
BLAKE2b-256 checksum How to use checksums |
c4335ec0877746238357b26c14599d58509302cad03f3d0c08be93271b25e3c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Security for merovingian 0.1.4
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.