Back to the catalog

io.github.3DUNLMTD/stylemcp

Brand rules for AI outputs. Validate and rewrite text to match your brand voice.

Open source Open in the app JSON README (API)

About

Brand rules for AI outputs. Validate and rewrite text to match your brand voice.

Details

Kind
MCP servers
Topic
No topic detected
Publisher
3dunlmtd
Origin
official
Category
ferramentas
Transport
local
Version
0.1.4
Last push
2026-03-04T05:05:48Z
Repository state
ativo
Language
HTML
Added
2026-08-29 03:01:38
Updated
2026-08-29 03:01:38
Origin id
io.github.3DUNLMTD/stylemcp

README

# StyleMCP

Executable brand rules for AI models and agents. Keep every AI-generated message on-brand.

## What is StyleMCP?

StyleMCP validates and rewrites AI-generated text to match your brand voice. Use it as:

- **REST API** - Validate text from any application
- **MCP Server** - Direct integration with Claude and other AI agents
- **CLI** - Check copy in your terminal or CI/CD
- **GitHub Action** - Catch off-brand copy in pull requests

## Quick Start

### API

```bash
curl -X POST https://stylemcp.com/api/validate \
  -H "Content-Type: application/json" \
  -d '{"text": "Click here to learn more!"}'
```

Response:

```json
{
  "valid": false,
  "score": 65,
  "violations": [
    {
      "rule": "no-click-here",
      "severity": "error",
      "message": "Avoid 'click here' - describe the destination instead",
      "suggestion": "Learn more about our features"
    }
  ]
}
```

### CLI

```bash
# Install
npm install -g stylemcp

# Validate text
stylemcp validate "Click here to learn more"

# Validate file
stylemcp validate src/copy/homepage.json --pack saas

# Rewrite text
stylemcp rewrite "Please utilize our product" --mode aggressive
```

### MCP (Claude Desktop)

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "stylemcp": {
      "command": "npx",
      "args": ["stylemcp"]
    }
  }
}
```

Now Claude can validate and rewrite text using your brand rules.

## API Endpoints

| Method | Endpoint | Description |
|--------|----------|-------------|
| POST | `/api/validate` | Validate text against brand rules |
| POST | `/api/rewrite` | Rewrite text to match brand voice |
| POST | `/api/validate/batch` | Validate multiple texts |
| GET | `/api/packs` | List available style packs |
| GET | `/api/packs/{pack}/voice` | Get voice guidelines |
| GET | `/api/packs/{pack}/ctas` | Get CTA rules |
| GET | `/api/mcp/sse` | MCP SSE endpoint |
| POST | `/api/mcp/call` | MCP tool calls |

## Style Packs

StyleMCP uses **style packs** - YAML files that define your brand rules.

### Available Packs

| Pack | Best For | Key Features |
|------|----------|--------------|
| `saas` | B2B SaaS products | Professional, clear, helpful tone |
| `ecommerce` | DTC & retail brands | Friendly, conversion-focused, no pushy CTAs |
| `healthcare` | Medical & wellness | Compliant language, no cure claims, person-first |
| `finance` | Fintech & banking | Precise, risk-aware, no guaranteed returns |

### Example: `saas` Pack

- **Vocabulary**: Prefer "use" over "utilize", "help" over "assist"
- **Forbidden words**: "synergy", "leverage", "cutting-edge", "game-changing"
- **Patterns to avoid**: "click here", "we're sorry for any inconvenience"
- **CTA rules**: Avoid "Submit", "Click here", "OK" - prefer "Save", "Create", "Sign up"

### Pack Structure

```
packs/
  my-brand/
    manifest.yaml      # Pack metadata
    voice.yaml         # Tone, vocabulary, forbidden words
    copy_patterns.yaml # Reusable copy templates
    cta_rules.yaml     # Button/CTA guidelines
    tokens.json        # Design tokens (optional)
```

### Create Your Own Pack

```bash
# Copy the default pack
cp -r packs/saas packs/my-brand

# Edit the rules
nano packs/my-brand/voice.yaml

# Use your pack
curl -X POST https://stylemcp.com/api/validate \
  -d '{"text": "Your text", "pack": "my-brand"}'
```

### voice.yaml Example

```yaml
tone:
  summary: "Friendly, clear, and helpful"
  attributes:
    - name: friendly
      weight: 0.8
    - name: professional
      weight: 0.7

vocabulary:
  rules:
    - preferred: "use"
      avoid: ["utilize", "leverage"]
    - preferred: "help"
      avoid: ["assist", "facilitate"]

  forbidden:
    - "synergy"
    - "paradigm shift"
    - "game-changing"

doNot:
  - pattern: "click here"
    reason: "Poor accessibility"
    suggestion: "Describe the destination"
    severity: error

  - pattern: "\\b(obviously|simply|just)\\b"
    isRegex: true
    reason: "Can make users feel stupid"
    severity: warning
```

## Self-Hosting

### Docker

```bash
# Clone the repo
git clone https://github.com/3DUNLMTD/stylemcp.git
cd stylemcp

# Set up environment
echo "STYLEMCP_API_KEY=$(openssl rand -hex 32)" > .env

# Run with Docker
docker compose up -d

# Check health
curl http://localhost:3000/health
```

### Manual

```bash
# Install dependencies
npm install

# Build
npm run build

# Start server
npm start
```

## GitHub Actions

```yaml
name: Brand Check
on: [pull_request]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Validate copy
        run: |
          npx stylemcp validate src/copy/*.json \
            --min-score 80 \
            --format github
```

## Environment Variables

| Variable | Description | Default |
|----------|-------------|---------|
| `PORT` | Server port | 3000 |
| `STYLEMCP_API_KEY` | API key for authentication | (none) |
| `GITHUB_WEBHOOK_SECRET` | GitHub webhook secret | (none) |

## MCP Tools

When used as an MCP server, StyleMCP provides these tools:

| Tool | Description |
|------|-------------|
| `validate_text` | Validate text against brand rules |
| `rewrite_to_style` | Rewrite text to match brand voice |
| `get_voice_rules` | Get voice and tone guidelines |
| `get_copy_patterns` | Get approved copy patterns |
| `get_cta_rules` | Get CTA guidelines |
| `get_tokens` | Get design tokens |
| `list_packs` | List available style packs |

## What Gets Validated?

The `saas` pack checks for:

### Vocabulary
- Use simple words: "use" not "utilize", "help" not "assist"
- Avoid jargon: "synergy", "leverage", "paradigm shift"
- Avoid weak intensifiers: "very", "really", "extremely"

### Patterns
- No "click here" (accessibility issue)
- No "we're sorry for any inconvenience" (corporate non-apology)
- No double "please" (sounds desperate)
- No starting with "Sorry" (lead with solutions)

### CTAs
- Avoid generic: "Submit", "OK", "Yes/No", "Click here"
- Use specific actions: "Save", "Create", "Sign up", "Export"
- Max 4 words

### Constraints
- Max 25 words per sentence
- No exclamation marks (in most contexts)
- First-person plural ("we", "our")
- Oxford comma

## License

MIT

More