engineering-standards
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@engineering-standardsShow me the git conventions standard"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
███████╗███╗ ██╗ ██████╗ ███████╗████████╗██████╗ ███████╗
██╔════╝████╗ ██║██╔════╝ ██╔════╝╚══██╔══╝██╔══██╗██╔════╝
█████╗ ██╔██╗ ██║██║ ███╗ ███████╗ ██║ ██║ ██║███████╗
██╔══╝ ██║╚██╗██║██║ ██║ ╚════██║ ██║ ██║ ██║╚════██║
███████╗██║ ╚████║╚██████╔╝██╗███████║ ██║ ██████╔╝███████║
╚══════╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝╚══════╝ ╚═╝ ╚═════╝ ╚══════╝
⚡ Engineering Standards MCP Server ⚡
Your engineering brain, exported as a protocol.Good engineering habits shouldn't live in your head — they should be encoded, shareable, and enforceable.
┌──────────────┐ ┌──────────────────┐ ┌──────────────┐
│ │ query │ │ read │ ◆ git │
│ Claude Code ├─────────►│ MCP Server ├─────────►│ ◆ reviews │
│ / Desktop │ │ (this thing) │ │ ◆ PRs │
│ │◄─────────┤ │◄─────────┤ ◆ testing │
│ │ response │ │ standard │ ◆ rails │
│ │ │ │ │ ◆ frontend │
│ │ │ │ │ ◆ deploy │
│ │ │ │ │ ◆ incidents │
│ │ │ │ │ ◆ observe │
│ │ │ │ │ ◆ api │
│ │ │ │ │ ◆ database │
│ │ │ │ │ ◆ ADRs │
│ │ │ │ │ ◆ debt │
│ │ │ │ │ ◆ staff │
└──────────────┘ └──────────────────┘ └──────────────┘
YOU + AI Protocol Layer Standards DB🛠️ Tools
Tool | Description |
| Retrieve a specific engineering standard (14 available — see Standards Included below) |
| Check if a branch name follows conventions |
| Check if a commit message follows conventions |
| Get the staff engineer thinking checklist for a given phase of work |
Related MCP server: corbat
📚 Standards Included
General
Standard | Key | Covers |
Git Conventions |
| Branch naming, commits, rebase workflow, commit hygiene |
Code Review |
| Tone, structure, what to look for, giving and receiving feedback |
PR Standards |
| Size, description, pre-merge checklist, hotfix protocol |
Staff Engineer Checklist |
| Thinking prompts for each phase of work |
Rails
Standard | Key | Covers |
Rails Standards |
| Architecture, security, performance, migrations, Hotwire, deployment |
Testing Philosophy |
| Rails/RSpec strategy, FactoryBot, system specs, N+1 detection, CI integration |
Frontend
Standard | Key | Covers |
Frontend Standards |
| TypeScript, components, accessibility, state management, performance, testing, security |
Operations
Standard | Key | Covers |
Deployment Standards |
| Three-phase migration strategy, strong_migrations, zero-downtime deploys, rollback strategy |
Incident Response |
| Severity levels, incident commander, postmortems, on-call, game days |
Observability |
| Structured logging, metrics (RED/USE), alerting, SLIs/SLOs, dashboards, tracing |
Architecture
Standard | Key | Covers |
API Design |
| REST conventions, versioning, error format, pagination, idempotency |
Database Design |
| PostgreSQL/Rails, indexing, constraints, partitioning, connection management |
Architecture Decision Records |
| ADR template, when to write them, lifecycle, ADR vs RFC |
Technical Debt |
| Classification, severity, when to pay it down, prevention, metrics |
🤖 Companion Agents
The MCP provides the what (your team's standards). These agents provide the how (code generation and implementation).
From awesome-claude-code-subagents:
Agent | Role |
Rails 7.x/8.x implementation, version-aware patterns, Hotwire, deployment | |
React, Vue, Angular — TypeScript, accessibility, component architecture |
When the MCP returns a standard, it includes a reference to the relevant agent. Claude Code can then delegate implementation to that agent automatically.
⚙️ Setup
1. Install
git clone https://github.com/rajgurung/claude-engineering-standards.git
cd claude-engineering-standards
npm install
npm run build2. Register
Add to your MCP settings file:
Client | Config file |
Claude Code |
|
Claude Desktop |
|
{
"mcpServers": {
"engineering-standards": {
"command": "node",
"args": ["/absolute/path/to/engineering-standards-mcp/build/index.js"]
}
}
}📋 Wiring It Into Your Projects
Once the MCP is registered, add a CLAUDE.md to your project root so Claude Code knows to consult it:
## Engineering Standards
This project follows team engineering standards via the engineering-standards MCP server.
### Before writing code
- Call `get_standard("rails")` for architecture and conventions
- Call `get_standard("testing")` for test strategy
- Call `get_standard("api_design")` before building or modifying API endpoints
- Call `get_standard("database_design")` before schema changes
- Call `get_standard("deployment")` before any migration or deploy work
### Before committing
- Call `review_branch_name` to validate your branch name
- Call `review_commit_message` to validate your commit message
### Before opening a PR
- Call `staff_engineer_review` with phase `before_pr`
- Call `get_standard("code_review")` for review expectations
### During incidents
- Call `get_standard("incident_response")` for severity levels and response protocol
- Call `get_standard("observability")` for debugging and monitoring guidance
### Implementation
- Use the rails-expert agent for Rails code generation
- Use the frontend-developer agent for frontend workAdapt this to your stack — remove what doesn't apply, add project-specific rules. The
CLAUDE.mdstays small because the standards live in the MCP, not in every repo.
🎨 Customising
The standards are plain markdown files in src/standards/. Edit them to match your team's conventions, then rebuild:
src/standards/
├── git-conventions.md ← branch naming, commits
├── code-review.md ← review tone & structure
├── pr-standards.md ← PR size, checklists
├── staff-engineer-checklist.md ← thinking prompts
├── testing-philosophy.md ← test strategy (Rails/RSpec)
├── rails-standards.md ← Rails conventions + rails-expert agent
├── frontend-standards.md ← Frontend conventions + frontend-developer agent
├── deployment-standards.md ← Safe deploys, migrations, rollback strategy
├── incident-response.md ← Severity levels, postmortems, on-call
├── observability.md ← Logging, metrics, alerting, SLIs/SLOs
├── api-design.md ← REST conventions, versioning, error format
├── database-design.md ← PostgreSQL/Rails, indexing, partitioning
├── architecture-decisions.md ← ADR template and lifecycle
└── technical-debt.md ← Classification, prioritisation, preventionnpm run build🧑💻 Development
npm run dev # Watch mode — recompiles on change
npm run build # One-off build
npm start # Run the server📄 License
MIT
Available Tools
4 toolsget_standardGet Engineering StandardA
Retrieve a specific engineering standard. Available standards: git, code_review, pr, staff_engineer, testing, rails, frontend, deployment, incident_response, observability, api_design, database_design, architecture_decisions, technical_debt, standup
| Name | Required | Description | Default |
|---|---|---|---|
| standard | Yes | The standard to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description must carry the full burden of behavioral disclosure. The verb 'Retrieve' implies a read-only operation and the list of standards sets expectations for what can be fetched, but the description does not disclose the return format, error behavior, or whether the full standard text is returned, leaving some ambiguity for a tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence followed by a necessary list of allowed values. It is front-loaded with the action and resource, and every word earns its place despite the unavoidable length of the standard list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter get tool, the description adequately conveys what it does and enumerates all possible inputs. The only gap is the lack of detail about return content or output format, but that is minor for a retrieval tool and no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the schema already defines the 'standard' parameter with a full enum and a description. The description repeats the same list of standards in prose, which adds readability but no new semantic meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Retrieve') and resource ('a specific engineering standard'), and enumerates all 15 available standards. This clearly distinguishes it from the sibling review tools, which focus on branch names, commit messages, and staff engineer review rather than standard retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage by listing the valid standards, so an agent can tell it is for retrieving one of those named standards. However, it provides no explicit guidance on when to prefer this tool over the sibling review tools, nor does it state any exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_branch_nameReview Branch NameA
Check if a git branch name follows conventions (issue ID prefix, kebab-case)
| Name | Required | Description | Default |
|---|---|---|---|
| branch_name | Yes | The branch name to review |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the burden. The verb 'Check' implies a non-mutating validation, and the specific conventions are stated. However, it does not disclose return format, whether it produces a report/boolean, or how failures are surfaced. This is a gap for a tool with no annotations and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that states the action and the two key convention aspects. There is no redundant wording, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no nested objects, no output schema). The description covers the purpose and conventions, but the absence of an output schema and any mention of return behavior leaves an agent uncertain about the result format. Given the low complexity, this is a minor but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, so the schema already documents branch_name. The description adds no additional parameter semantics beyond reinforcing that it's a branch name, but baseline 3 applies because the schema is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and resource ('git branch name'), and explicitly names the conventions checked (issue ID prefix, kebab-case). This clearly differentiates it from sibling tools like review_commit_message, which likely reviews commit messages, and get_standard, which may retrieve standards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for validating branch names but does not explicitly state when to use it over alternatives, nor does it mention the sibling tools. The context (simple single-purpose tool) makes the usage clear, but there is no explicit exclusion or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_commit_messageReview Commit MessageA
Check if a commit message follows conventions (imperative mood, subject length, structure)
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The commit message to review |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It states what is checked and implies a read-only validation operation, but it does not disclose what the tool returns—whether it is a boolean, a list of violations, or a score—or how failures are reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, tightly written sentence that front-loads the action and includes the most important details (the conventions being checked). No wasted words or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter validation tool, the description covers the essential check dimensions and is reasonably complete. However, the absence of an output schema and annotations means return behavior and usage context remain underspecified, leaving an agent to guess how to interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and the schema already describes it as 'The commit message to review' with 100% coverage. The description adds no meaningful semantic detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Check if') and resource ('a commit message'), and enumerates the specific conventions checked: imperative mood, subject length, and structure. It distinguishes itself from review_branch_name by targeting commit messages, though it doesn't explicitly contrast with staff_engineer_review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when validating a commit message against conventions. However, it provides no explicit when-to-use or when-not-to-use guidance, and does not mention alternatives such as review_branch_name or staff_engineer_review.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
staff_engineer_reviewStaff Engineer ReviewB
Run through the staff engineer thinking checklist for a given context (pre-code, pre-pr, post-merge, incident)
| Name | Required | Description | Default |
|---|---|---|---|
| phase | Yes | The phase of work to get the checklist for | |
| context | No | Brief description of what you're working on |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It only says 'run through the checklist' and does not state whether the tool returns a checklist, evaluates the provided context, or has any side effects; output expectations are undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no filler, and the main verb and resource are front-loaded. However, the phase list repeats schema information with less precision, so the space is not used as effectively as it could be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is too thin to fully prepare an agent. It does not explain what the checklist output looks like, how the optional context parameter affects the result, or why one enum value is absent from the listed phases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents phase and context. The description adds only an approximate phase list that does not exactly match the enum and omits 'during_implementation', providing minimal additional meaning and some potential confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it runs the staff engineer thinking checklist, and the phase list conveys the resource and intended scope. It is distinguishable from the sibling review tools, though 'given context' is vague and the phase labels are paraphrased rather than exact enum values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical phase list gives some sense of when to use it: pre-code, pre-pr, post-merge, incident. However, it does not explicitly say when not to use it or contrast it with alternatives like review_branch_name or review_commit_message.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
get_standard - First observed
review_branch_name - First observed
review_commit_message - First observed
staff_engineer_review
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: get_standard retrieves documentation, review_branch_name and review_commit_message validate specific artifacts, and staff_engineer_review runs a workflow checklist. No two tools overlap or could cause misselection.
Three tools follow a verb_noun pattern (get_standard, review_branch_name, review_commit_message), but staff_engineer_review breaks the pattern by leading with a noun and using 'review' as a noun rather than a verb. This is a minor inconsistency in an otherwise predictable convention.
Four tools is well within the ideal 3-15 range and appropriately scoped for a standards server. Each tool earns its place for retrieval, validation, and checklist support without redundancy.
The server covers the core needs of retrieving standards and validating branch names and commit messages, plus a staff engineer review checklist. Minor gaps exist like PR title validation or code style checks, but agents can retrieve standards and apply them manually, so no severe dead ends.
Maintenance
Related MCP Connectors
Your team's shipping standards, org map and delivery metrics, inside your coding agent.
Packmind captures, scales, and enforces your organization's technical decisions.
Lints + auto-fixes how AI coding agents discover any new product. 24 rules, 6 tools, score 0-100.
Read-only AI coding tools for change verification, release readiness, capacity, and guidance.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnforces team knowledge and workflow policies for AI coding agents by providing context, decisions, and gates before code changes are made.2152Apache 2.0

corbatofficial
AlicenseAqualityBmaintenancePolicy and quality engine for AI coding agents that enforces team coding standards and provides validation gates for agent-assisted software delivery.719 npm4MIT- AlicenseNot gradedqualityBmaintenanceProvides a quality framework and enforceable conventions for AI coding assistants, ensuring code quality, environment hygiene, and project standards across multiple AI tools.60 npm3-
- AlicenseCqualityBmaintenanceEnforces design systems and vocabulary via ontology checks, candidate scanning, linting, and structural search across repositories.739Apache 2.0