MCP server for Rosentic — deterministic cross-branch conflict detection for AI coding agents
Project description
Rosentic MCP Server
CI checks each PR against main. It doesn't check open PRs against each other.
Rosentic does. Install one package. Your coding agent checks for cross-branch conflicts before you merge.
One agent changes a function signature. Another agent still calls the old version. Both pass CI. Git merges the text cleanly. Main breaks.
Rosentic compares every open PR against every other open PR. Deterministic static analysis. No LLM. 12 languages. Code never leaves your machine.
Install
pip install rosentic-mcp
Configure
Claude Code
Add to ~/.claude.json:
{
"mcpServers": {
"rosentic": {
"command": "rosentic-mcp"
}
}
}
Cursor / VS Code
Add to MCP settings:
{
"rosentic": {
"command": "rosentic-mcp"
}
}
Tools
check_conflicts
Scan a git repo for cross-branch conflicts affecting your current branch.
Parameters:
repo_path(required) — path to local git repositorybranch— branch to check (defaults to current branch)base— base branch to compare against (defaults tomain)format—"summary"(natural language) or"json"(structured findings)
Example response:
Rosentic found 4 unique conflict(s) for feature/auth-refactor: 2 UNSAFE, 2 WARNING. Layer breakdown: 3 L1 signature, 1 L2 route. Most critical: createUser() in src/auth/users.ts — changed from 2 to 3 required params. Recommendation: inspect the UNSAFE findings first and update the stale branch before merging.
explain_conflict
Get detailed explanation of a specific finding, including affected branches, consumer locations, and remediation steps.
Parameters:
repo_path(required) — path to local git repositoryfinding_id(required) — ID from a previouscheck_conflictsresult
list_branches
List local branches sorted by most recent commit date.
Parameters:
repo_path(required) — path to local git repository
What it detects
| Layer | What | Example |
|---|---|---|
| L1 | Function signature mismatches | Branch A adds required param, Branch B still calls with old arity |
| L2 | HTTP route contract breaks | Route path or method changes, consumers still call old endpoint |
| L3 | Schema incompatibilities | Proto field removed, GraphQL type changed, OpenAPI contract broken |
How it works
- Deterministic — no LLM in the scan path. Tree-sitter AST parsing + evidence-gated verdicts.
- Fast — scans 30 branches in under 30 seconds for most repos.
- Evidence-based — every finding includes proof: which symbol changed, where it's called, why it's linked.
Requirements
- Python 3.11+
- Git repository with branches to scan
- Works on macOS, Linux, Windows (WSL)
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rosentic_mcp-0.1.0.tar.gz.
File metadata
- Download URL: rosentic_mcp-0.1.0.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93ca6ecf55bce732679f7b0d0650db637edd8d87e51decd20b0f741dcf1150c5
|
|
| MD5 |
e87f3eda2dcb4cc0ebdfe3b79bf76820
|
|
| BLAKE2b-256 |
c65e654e7362a0c8c90bcd7d7c6f1a20b15543cd086e8a5d6fb2848ccf27eff3
|
File details
Details for the file rosentic_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: rosentic_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ea89831ef3e5023084db99215a908e4e664f7691ee0a4600dc811514ea40117
|
|
| MD5 |
2bbe20befed106102bfc5d315a28a8ba
|
|
| BLAKE2b-256 |
8ab5dc2a35bd7bd0844407d1aadfccde9078dfd25382f575c650a59bf10cefad
|