Checks .NET solutions against a fluent C# architecture spec and explains the rules to agents.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
One-click editor setup isn’t available for this listing yet — we don’t have a confirmed install command, and we’d rather show nothing than point your editor at the wrong package or host. Follow the project’s own setup instructions, linked above.
LoadBearing is a .NET architecture checker that enforces one C# spec and renders the same rules for coding agents.
A long-lived codebase has layers, boundaries and rules. They live in a few heads, no build step checks them, and the diagrams drift. Nothing fails when a change crosses a boundary. A coding agent makes that change quickly and plausibly, and it cannot see which walls are load-bearing. LoadBearing's answer is architecture-as-code. The rules become one C# spec, and the spec produces every surface this page names.
AGENTS.md block, per-directory rule cards and MCP query tools for coding agents.Write your architecture once. Use it everywhere.
LoadBearing is pre-alpha. Minor versions can still change the spec API before 1.0. Status holds the current inventory.
Install the tool, build your solution, and check it:
A rule is one statement:
That is the whole rule. It has an ID, a posture, a constraint, a reason and a fix. Here the posture is Enforce. The rule is committed in the clean-architecture example, and CI holds check green against the codebase it governs.
Rules like the one above govern this repository too. One of them keeps the CLI off stdout, because the MCP server speaks JSON-RPC over that channel. Suppose an agent adds a progress printer to the CLI and reaches for Console.WriteLine. When it tries to hand the work back, the Stop hook in hooks/ runs check over the working tree, the rule goes red, and the hook refuses the stop with this report on the agent's stderr:
Every line of that report is something the agent can act on without asking a human. The agent routes the output through the command's console instead, and the next stop is clean.
LoadBearing on itself shows this repository's own spec on the other surfaces too, from the committed rule and the prose it renders to the xUnit run, code scanning and the graph. It also says how every excerpt on both pages is held to its source.
Every rule carries one of the first two, and every scope one of the last two.
| Posture | What it is | What fails |
|---|---|---|
Enforce | the law | every violation, even ones predating the rule |
Migrate | a ratchet over a counted baseline | new violations; baselined sites stay quiet |
Quarantine | containment for a scope | a new reference into the scope |
Caution | dragons for code new callers are welcome to | nothing; a change set touching it draws a warning |
Enforce failing violations that predate it is what Migrate exists for: loadbearing baseline records a rule's current violations, new ones fail from the next commit, and the baseline only shrinks. At zero, the tool suggests promoting the rule to Enforce. Every scope carries a diff-aware tripwire: with check --diff-base <ref>, a change set that touches the scope draws a warning. For a Caution scope that tripwire is the whole posture: the dragons prose lands on the scope's directory as a card, explain and arch_context serve it, and no reference into the scope is ever a violation.
The three postures after Enforce each answer a way a coding agent goes wrong on an established codebase. Enforce is the law the code already keeps, and a change that crosses it fails wherever the check runs. The Meridian example walks three of those ways on real output.
SqlConnection, so inline SQL reads as house style and an agent writes its next controller the same way. Migrate answers it: the rendered context calls that pattern debt rather than style, in words the agent reads before it writes.Quarantine scope makes the gateway the only sanctioned way in.Quarantine or Caution scope answers it. The card on that scope's directory says what the code does, which part is load-bearing, and how to call in.Each target below consumes the same reified model, and every violation report carries the rule ID, the generated rule sentence, the reason, the fix, and the exact file:line.
| Target | What it is |
|---|---|
loadbearing check | one pass-or-fail verdict for the command line and CI |
check --sarif | that verdict as SARIF 2.1.0, for code scanning |
| xUnit adapter | every rule an individually named test |
| build analyzer | a broken rule as a squiggle in the editor and a compiler warning in the build |
loadbearing render | the managed AGENTS.md block, per-directory rule cards, and the model as a JSON file |
loadbearing mcp | arch_check, arch_status, arch_explain, arch_context, and arch_graph, plus a derive_spec prompt |
| agent hook | check when a turn ends; a red rule refuses the stop, report on stderr |
The adapter's failure text is byte-identical to the CLI's: the two share one renderer, and a product test pins them equal. The managed block plus loadbearing explain are also the generated architecture documentation, written for agents first and readable by people; LoadBearing on itself shows the gate that keeps it current.
Claude Code reads AGENTS.md on its own from version 2.1.277, including each per-directory card once it opens a file in that directory. It does so only where no CLAUDE.md, .claude/CLAUDE.md or CLAUDE.local.md sits in the directory it was started in or any directory above it. Your own ~/.claude/CLAUDE.md does not count. A repository that already has a CLAUDE.md brings the managed block in with one line in that file, @AGENTS.md, and render warns when it finds such a file without the import. The import covers the root file only. The cards load beside a CLAUDE.md for each developer who sets Claude Code's Project instructions option to claude-md-and-agents-md in /config. That option is a personal setting, and a repository cannot commit it.
The compiler is the source of truth for your code. LoadBearing is the source of truth for your architecture.
NetArchTest and ArchUnitNET run architecture rules inside your unit tests, and they are good at it. LoadBearing moves the rules out of test code into one spec (architecture-as-code rather than architecture tests) and renders every surface above from it.
| Tool | What you write | Where it runs |
|---|---|---|
| NetArchTest | fluent assertions in test methods | your test runner |
| ArchUnitNET | ArchUnit-style rules in test classes | your test runner |
| LoadBearing | one spec in its own project | every target above |
Factual signals from GitHub, npm, and our automated checks — not a rating.
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/loadbearing)<a href="https://allmcps.com/mcp/loadbearing"><img src="https://allmcps.com/api/badge/loadbearing?style=directory" alt="Loadbearing on AllMCPs" /></a>