Skip to main content
Glama
LaurenWeickert

Semesters MCP Server

README.md
# Semesters MCP Server

A specialized Model Context Protocol (MCP) server for building trauma-informed, dyslexia-friendly educational software. This server provides AI assistants with specialized tools for creating accessible learning applications that follow evidence-based educational methodologies.

## Features

- **Dyslexia-Friendly UI Generation**: Creates accessible components with OpenDyslexic fonts and high contrast
- **Trauma-Informed Content Review**: Validates content against trauma-informed principles
- **Orton-Gillingham Activity Validation**: Ensures activities follow OG methodology
- **Multisensory Phoneme Activities**: Generates activities using multiple learning modalities
- **Code Safety Review**: Reviews code for trauma-informed principles
- **Stress Detection Protocols**: Generates protocols for handling learner stress
- **Engagement Activities**: Creates intrinsically motivating learning experiences
- **Safety Validation**: Checks engagement mechanics for potential trauma triggers

## Installation

### Prerequisites
- Node.js 18+ 
- npm or yarn
- TypeScript 5.0+

### Setup
```bash
# Clone the repository
git clone <repository-url>
cd semesters-mcp-server

# Install dependencies
npm install

# Build the project
npm run build
```

### MCP Configuration

To use this server with an MCP client (like Claude Desktop), add the following to your MCP configuration file:

```json
{
  "mcpServers": {
    "semesters-dev": {
      "command": "node",
      "args": ["path/to/semesters-mcp-server/dist/index.js"],
      "env": {}
    }
  }
}
```

Replace `path/to/semesters-mcp-server` with the actual path to your installation.

## Usage

The server runs via stdio and provides 8 specialized tools for educational software development:

1. `generate_dyslexia_ui` - Generate accessible UI components
2. `review_trauma_content` - Review content for trauma-informed language
3. `validate_og_activity` - Validate against Orton-Gillingham principles
4. `generate_phoneme_activity` - Create multisensory phoneme practice
5. `review_code_safety` - Review code for trauma-informed principles
6. `generate_stress_protocol` - Create stress detection/response protocols
7. `generate_engagement_activity` - Create intrinsically motivating activities
8. `validate_engagement_safety` - Check engagement mechanics for safety

## Development

```bash
npm run dev    # Watch mode for development
npm run build  # Build TypeScript to JavaScript
npm start      # Run the built server
npm run clean  # Clean build directory
```

### Testing

The project includes a comprehensive test suite that exercises all available tools:

```bash
# Run the test suite
node test-tools.js
```

The test script will:
- List all available tools
- Test each tool with sample inputs
- Validate responses and error handling
- Provide detailed output for debugging

## API Reference

### Tool Parameters

#### `generate_dyslexia_ui`
- `componentType`: "button" | "text" | "input" | "card"
- `content`: String content for the component
- `intent`: "primary" | "secondary" | "comfort" | "celebration"

#### `review_trauma_content`
- `content`: Text content to review
- `context`: Optional context where content appears

#### `validate_og_activity`
- `activity`: Activity object to validate
- `targetLevel`: Target OG level (1-5)

#### `generate_phoneme_activity`
- `phoneme`: Target phoneme to practice
- `modalities`: Array of "visual" | "auditory" | "kinesthetic" | "tactile"

#### `review_code_safety`
- `code`: Code to review
- `language`: Programming language

#### `generate_stress_protocol`
- `triggerType`: "behavioral" | "physiological" | "performance"
- `severity`: "mild" | "moderate" | "high"

#### `generate_engagement_activity`
- `phoneme`: Target phoneme to practice
- `theme`: "dragons" | "space" | "magic" | "animals" | "adventure" | "mystery"
- `stressLevel`: "low" | "medium" | "high"
- `inputMethods`: Array of "touch" | "voice" | "camera" | "microphone" | "bluetooth"

#### `validate_engagement_safety`
- `mechanic`: Engagement mechanic to validate
- `context`: Context where mechanic would be used

## Educational Principles

- **Trauma-Informed**: No failure states, child agency, positive reinforcement
- **Dyslexia-Friendly**: OpenDyslexic fonts, high contrast, generous spacing
- **Orton-Gillingham**: Systematic, multisensory, sequential phonics instruction
- **Age-Appropriate**: Sophisticated contexts for foundational skills (12+ years)

## Technical Details

- **Runtime**: Node.js with ES modules
- **Language**: TypeScript 5.0+
- **Protocol**: Model Context Protocol (MCP) via stdio
- **Dependencies**: @modelcontextprotocol/sdk
- **Architecture**: Single-file server with modular tool handlers

## Contributing

When contributing to this project, please ensure:

1. All code follows trauma-informed principles
2. UI components are dyslexia-friendly
3. Educational content aligns with Orton-Gillingham methodology
4. Test coverage is maintained for new tools
5. Documentation is updated for API changes

## License

MIT License - see package.json for details

TDQS

B3.3/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have distinct targets (UI vs activity vs protocol), but review_trauma_content and validate_engagement_safety both address trauma-related concerns, which could cause some confusion. The descriptions likely clarify the difference, but the boundaries are slightly fuzzy.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (generate_*, validate_*, review_*). The actions are clear and predictable, making it easy to understand what each tool does.

Tool Count5/5

With 8 tools, the server is well-scoped for its apparent purpose of generating and validating dyslexia-friendly, trauma-informed educational content. Each tool addresses a specific aspect of the workflow, and none feels redundant or unnecessary.

Completeness4/5

The tool surface covers generation, validation, and review for the core domain, but lacks tools for updating or managing existing activities/content. However, for a generator-focused server, the missing pieces are minor and can be worked around externally.

Maintenance

ActivityInactive
ResponsivenessNo issues