get_project_invariantsLABSCO SUMMARY
It writes the rules down where the agent will read them.
The failure this targets is specific: an agent installs moment in a project that standardised on date-fns, or drops an Express server inside a Next.js app. Putting those decisions in a config file gives it something to check against instead of a habit to guess from. The decision ledger is the other half — structural choices land in DECISIONS.md with a timestamp, so next month's session can read what this month decided.
What it is
A Node MCP server that reads a tether.config.json in your repository and answers the agent's questions from it. npx tether-mcp init scans your project manifest, detects the framework and writes a first config with defaults that fit.
What you get
- Your tech stack, architecture rules and dependency policy handed to the agent before any structural work —
get_project_invariants - A package checked against your policy before installation, coming back as blocked, warned, allowed or needing review, with the alternatives you named —
verify_dependency_addition - A proposed file path validated against your conventions —
check_file_structure - A coding approach checked against approved patterns and invariants —
verify_code_pattern - A timestamped entry appended to
DECISIONS.mdwhen the agent creates a component or changes a data flow —log_architectural_decision - Server status, registered tools and session telemetry —
health_check - Three MCP resources a client can subscribe to:
tether://config,tether://architectureandtether://decisions
Requirements
Node 18 or newer. No account, no key, nothing leaves your machine. Run npx tether-mcp init in the project — it reads package.json, pubspec.yaml, .csproj, pyproject.toml, go.mod, Cargo.toml, build.gradle, pom.xml or Package.swift, auto-detects the framework across 8 ecosystems and 90 frameworks, and writes tether.config.json. Then wire the client to npx with -y and tether-mcp. The CLI also offers serve, status and validate.
Setup effort
One command — npx tether-mcp init
USE CASES
Stopping a dependency you already ruled out
Have the agent check the package against your policy first and get told the approved alternative instead.
Keeping the file layout consistent
Validate the proposed path before the file is created, so components and route handlers land where they belong.
Recording why something was built that way
Append the decision to the ledger at the moment it is made, rather than reconstructing it later.
Starting a session with context
Load the invariants and the stack at the top of the conversation instead of re-explaining them.
6 tools
Listed in project docs. Your client may show a different list.
verify_dependency_additionlog_architectural_decisioncheck_file_structureverify_code_patternhealth_checkBEFORE YOU INSTALL
What to know first
Tools you get
6 tools named in the project's documentation.
Requires
npx on PATH
Where it runs
All 4 documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
npx tether-mcp initMCP Clients
Claude Code, Claude Desktop, Cursor, Windsurf
{
"mcpServers": {
"tether": {
"command": "npx",
"args": [
"-y",
"tether-mcp"
]
}
}
}