@happyvertical/smrt-dev-mcp
Tier 2 development MCP server for the SMRT framework — code generation and project introspection, read-only by design.
Overview
@happyvertical/smrt-dev-mcp is the Tier 2 (Development) MCP
server for the SMRT framework. It provides code generation, project introspection,
deterministic ecosystem knowledge, and portable review / architecture prompt bundles for use
from Claude Desktop, Claude Code, Codex, or any MCP-aware client during day-to-day
development. The two most commonly used tools are generate-smrt-class and introspect-project (documented below); see All Tools for
the full set. The server is read-only: it never writes files, never executes
generated code, and never hits a database — review and architecture tools return deterministic
findings plus a model-ready prompt bundle rather than calling a model directly.
Installation
pnpm install @happyvertical/smrt-dev-mcpSetup
Add to your .mcp.json or Claude Desktop config:
{
"mcpServers": {
"smrt-dev-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@happyvertical/smrt-dev-mcp"]
}
}
}Set DEBUG=true in the environment to enable diagnostic logging.
Available Tools
generate-smrt-class
Generate a complete SMRT class with @smrt() decorator, fields, and imports.
| Parameter | Type | Required | Description |
|---|---|---|---|
className | string | Yes | Class name (PascalCase) |
properties | array | Yes | Property definitions (name, type, required?, nullable?, description?, defaultValue?) |
baseClass | string | No | 'SmrtObject' (default) or 'SmrtCollection' |
template | string | No | basic (default), global-catalog, optional-catalog, tenant-project-object, tenant-event-log-object, or cross-package-reference |
tableName | string | No | Explicit @smrt({ tableName }) value |
conflictColumns | array | No | Explicit upsert natural-key columns |
tenantScoped | boolean | object | No | Add @TenantScoped(...); object form supports mode, field, and bypass/filter options |
includeTenantIdField | boolean | No | Emit a matching @tenantId() field |
relationships | array | No | Relationship defs for foreignKey, crossPackageRef, oneToMany, or manyToMany |
includeCompanionSnippets | boolean | No | Append package wiring notes (default: false) |
includeApiConfig | boolean | No | Include REST API config (default: true) |
includeMcpConfig | boolean | No | Include MCP config (default: true) |
includeCliConfig | boolean | No | Include CLI config (default: true) |
Supported property types: text, integer, decimal, boolean, datetime, json.
introspect-project
Scan a project directory for SMRT objects and return a class/field/relationship report.
| Parameter | Type | Required | Description |
|---|---|---|---|
directory | string | No | Project directory (default: cwd) |
manifestPath | string | No | Explicit manifest artifact path (defaults to .smrt/manifest.json, then dist/manifest.json, then source scanning) |
includeFields | boolean | No | Include field details |
includeRelationships | boolean | No | Analyze relationships |
includeMethods | boolean | No | Include public method details |
All Tools
Beyond generate-smrt-class and introspect-project, the server also
exposes deterministic ecosystem-knowledge and review/architecture tools. These return findings
and reusable prompt bundles (they do not call a model directly):
review-smrt-project— advisory downstream ecosystem alignment reviewreflect-knowledge/reflect-domain-knowledge— package, SDK, and relationship coverage from the deterministic knowledge indexcheck-knowledge-freshness/check-domain-knowledge— the same freshness checks aspnpm knowledge:checkbuild-review-context/build-domain-review-context/smrt-review— model-ready review prompt bundles for changed filesbuild-architecture-context/build-domain-architecture-context/smrt-architecture— model-ready architecture prompt bundleslist-agent-skills/get-agent-skill— fetch the harness-agnostic SMRT agent skills shipped underagent-skills/
Important Notes
- This is a Tier 2 dev tool -- it does NOT provide runtime data operations
- For runtime MCP (live CRUD on your objects), use Tier 1 auto-generated MCP from
@smrt({ mcp: true }) - Read-only: never writes files or executes generated code
- Field type mapping supports:
text,integer,decimal,boolean,datetime,json