# ποΈ NTV Scaffolding MCP Server - Architecture
## System Overview
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AI CLIENTS / CONSUMERS β
βββββββββββ¬βββββββββββββββ¬βββββββββββββββ¬βββββββββββββββ¬βββββββββββββββββββ€
β Cursor β VS Code β Cody β Claude API β Command Line β
β Editor β + MCP Ext β (Sourcegraph)β β β
ββββββββββ¬ββββββββ¬ββββββββββββββ¬βββββββββββββββ¬βββββββββββββββββ¬ββββββββββ
β β β β β
β βββββββββββββββΌββββββββββββββββΌβββββββββββββββββ€
β βΌ β β
β ββββββββββββββββββββββββ΄βββββββββββββββββ
β β
β βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MCP Server (NTV Scaffolding MCP) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β main: src/index.ts β β
β β - MCP Protocol Handler β β
β β - Tool Registry β β
β β - Error Handling β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β TOOLS LAYER β β
β β ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ β β
β β β list_ntv_ β β get_ntv_ β β get_ntv_ β β β
β β β components β β component_doc β β component_ β β β
β β ββββββββββββββββββ ββββββββββββββββββ β props β β β
β β ββββββββββββββββββ β β
β β ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ β β
β β β generate_ntv_ β β generate_ntv_ β β generate_ntv_ β β β
β β β template_code β β component_ β β component_ β β β
β β β β β usage β β file β β β
β β ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ β β
β β β β
β β ββββββββββββββββββ β β
β β β get_ntv_ β β β
β β β component_ β β β
β β β examples β β β
β β ββββββββββββββββββ β β
β β β β
β β src/tools/ β β
β β βββ index.ts (Tool Registry) β β
β β βββ listComponents.ts β β
β β βββ getComponentDoc.ts β β
β β βββ getComponentProps.ts β β
β β βββ generateTemplateCode.ts β β
β β βββ generateComponentUsage.ts β β
β β βββ generateComponent.ts β β
β β βββ getComponentExamples.ts β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β DATA LAYER β β
β β β β
β β src/data/components.ts β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β COMPONENTS_DB: Component[] β β β
β β β β β β
β β β βββ Button βββ Input βββ Card β β β
β β β βββ Autocomplete βββ Accordion βββ Stepper β β β
β β β βββ Popover βββ ThumbnailGal βββ Modal β β β
β β β βββ Template β β β
β β β β β β
β β β Each component contains: β β β
β β β β’ Metadata (name, selector, category) β β β
β β β β’ Properties with types & defaults β β β
β β β β’ Events & Slots β β β
β β β β’ Usage Examples β β β
β β β β’ Best Practices β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββ
β Generated Output: β
β β’ Component Docs β
β β’ Code Templates β
β β’ Usage Examples β
β β’ Component Files β
βββββββββββββββββββββββββββββ
```
## Component Architecture
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Component Interface (from DB) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β interface Component { β
β name: string; β β
β selector: string; β β
β category: ComponentCategory; ββ Metadata β
β description: string; β β
β β β
β props: ComponentProp[]; β β
β events: ComponentEvent[]; ββ API β
β slots: ComponentSlot[]; β β
β configInterface?: string; β β
β β β
β examples: ComponentExample[]; ββ Documentation β
β bestPractices: string[]; β β
β } β β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
## Tool Execution Flow
```
ββββββββββββββββββββ
β AI Client β
β (e.g., Cursor) β
ββββββββββ¬ββββββββββ
β
β "Generate a primary Button"
β
βΌ
ββββββββββββββββββββββββββββββββββββ
β MCP Server β
β - Receives tool call β
β - Validates parameters β
β - Routes to appropriate tool β
ββββββββββ¬ββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββ
β Tool: generate_ntv_template_code β
β Input: { β
β component: "Button", β
β variant: "primary", β
β size: "lg" β
β } β
ββββββββββ¬ββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββ
β Lookup Component in Database β
β Find: COMPONENTS_DB.find(c => c.name β
β === "Button") β
ββββββββββ¬ββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββ
β Generate Template Code β
β - Build prop strings β
β - Generate imports β
β - Format template β
ββββββββββ¬ββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββ
β Return Result to AI Client β
β { β
β template: "<ntv-button [config]='...'>", β
β imports: "import { Button } from...", β
β componentDecorator: {...} β
β } β
ββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββ
β AI Client β
β Uses result β
ββββββββββββββββββββ
```
## Data Flow Architecture
```
ββ listComponents
β
ββ getComponentDoc ββββ
AI Client βββββ β β
(various) ββ getComponentProps βββ Components DB ββ Response
β β
ββ generateTemplateCode
β
ββ generateComponentUsage
β
ββ generateComponent
β
ββ getComponentExamples
```
## Folder Structure & Responsibilities
```
component-mcp/
β
βββ src/
β βββ index.ts
β β ββ Purpose: MCP Server initialization & protocol handling
β β
β βββ tools/
β β βββ index.ts
β β β ββ Registry: Exports all tools
β β β
β β βββ listComponents.ts
β β β ββ Lists available components with filtering
β β β
β β βββ getComponentDoc.ts
β β β ββ Full documentation for a component
β β β
β β βββ getComponentProps.ts
β β β ββ Property details and types
β β β
β β βββ generateTemplateCode.ts
β β β ββ HTML template generation
β β β
β β βββ generateComponentUsage.ts
β β β ββ Full component usage examples
β β β
β β βββ generateComponent.ts
β β β ββ Complete component file generation
β β β
β β βββ getComponentExamples.ts
β β ββ Predefined usage snippets
β β
β βββ data/
β β βββ components.ts
β β ββ Component database (all metadata)
β β
β βββ resources/
β βββ index.ts
β ββ Resource handlers (extensible)
β
βββ dist/
β ββ Compiled JavaScript output
β
βββ Configuration Files
β βββ package.json (Dependencies & scripts)
β βββ tsconfig.json (TypeScript config)
β βββ .gitignore (Git configuration)
β
βββ Documentation
βββ README.md (Full documentation)
βββ QUICK_START.md (3-minute setup)
βββ INTEGRATION.md (AI client setup)
βββ PROJECT_SUMMARY.md (Overview)
βββ ARCHITECTURE.md (This file)
```
## Tool Interaction Patterns
### Pattern 1: Simple Lookup
```
get_ntv_component_doc(component: "Button")
βββ Search COMPONENTS_DB
βββ Return found component metadata
```
### Pattern 2: Template Generation
```
generate_ntv_template_code(component, variant, size, ...)
βββ Find component in DB
βββ Build config object
βββ Generate HTML template
βββ Include import statement
```
### Pattern 3: Code Generation
```
generate_ntv_component_file(component, filename, selector, ...)
βββ Find component
βββ Generate TypeScript file
βββ Generate HTML template
βββ Generate CSS file
βββ Generate test file
```
## Extensibility Points
```
ββββββββββββββββββββββββββββββββββββββββββββββββ
β Add New Tool β
β 1. Create src/tools/myTool.ts β
β 2. Implement MCPTool interface β
β 3. Export from src/tools/index.ts β
β 4. Automatically registered β
ββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββ
β Add New Component β
β 1. Edit src/data/components.ts β
β 2. Add to COMPONENTS_DB array β
β 3. Rebuild: npm run build β
β 4. Restart server: npm start β
ββββββββββββββββββββββββββββββββββββββββββββββββ
```
## Deployment Architecture
```
Development:
βββββββββββββββββββ
β source code β
β (TypeScript) β
ββββββββββ¬βββββββββ
β npm run build
βΌ
βββββββββββββββββββ
β dist/ β
β (JavaScript) β
ββββββββββ¬βββββββββ
β npm run dev (ts-node)
βΌ
βββββββββββββββββββ
β MCP Server β
β (localhost) β
βββββββββββββββββββ
Production:
βββββββββββββββββββ
β source code β
ββββββββββ¬βββββββββ
β npm run build
βΌ
βββββββββββββββββββ
β dist/ β
ββββββββββ¬βββββββββ
β npm start (node dist/index.js)
βΌ
βββββββββββββββββββ
β MCP Server β
β (production) β
βββββββββββββββββββ
Docker:
βββββββββββββββββββ
β Dockerfile β
ββββββββββ¬βββββββββ
β docker build
βΌ
βββββββββββββββββββ
β Docker Image β
ββββββββββ¬βββββββββ
β docker run
βΌ
βββββββββββββββββββ
β Container β
β MCP Server β
βββββββββββββββββββ
```
## Performance Characteristics
```
Operation Time Space
ββββββββββββββββββββββββββββββββββββββββ
List Components O(n) O(n)
Get Component Doc O(log n) O(1)
Generate Template O(1) O(n)
Generate Component O(1) O(n)
Get Examples O(1) O(m)
Legend:
n = number of components (currently 10)
m = number of examples per component
```
## Security Model
```
Input β Validation β Safe Execution β Output
ββ Type checking
ββ Range validation
ββ Pattern matching
ββ Sanitization
```
---
**Architecture Version**: 1.0
**Last Updated**: October 2025
**Status**: Production Ready β