Turns brand voice guidelines into executable rules that AI models can validate against before generating text. Exposes tools for checking text compliance, rewriting copy to match your style, and fetching approved patterns and CTAs. Ships with pre-built packs for SaaS, ecommerce, healthcare, and finance that catch things like forbidden jargon, weak CTAs, and accessibility issues. You can also define custom packs using YAML files with vocabulary preferences, regex patterns to avoid, and tone attributes. Runs as an MCP server for Claude, a REST API for any app, a CLI for CI/CD pipelines, or a GitHub Action to block off-brand copy in pull requests. Useful when you need consistent voice across multiple AI agents or want to enforce brand rules programmatically instead of through style guides.
Executable brand rules for AI models and agents. Keep every AI-generated message on-brand.
StyleMCP validates and rewrites AI-generated text to match your brand voice. Use it as:
curl -X POST https://stylemcp.com/api/validate \
-H "Content-Type: application/json" \
-d '{"text": "Click here to learn more!"}'
Response:
{
"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"
}
]
}
# 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
Add to your claude_desktop_config.json:
{
"mcpServers": {
"stylemcp": {
"command": "npx",
"args": ["stylemcp"]
}
}
}
Now Claude can validate and rewrite text using your brand rules.
| 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 |
StyleMCP uses style packs - YAML files that define your brand rules.
| 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 |
saas Packpacks/
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)
# 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"}'
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
# 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
# Install dependencies
npm install
# Build
npm run build
# Start server
npm start
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
| Variable | Description | Default |
|---|---|---|
PORT | Server port | 3000 |
STYLEMCP_API_KEY | API key for authentication | (none) |
GITHUB_WEBHOOK_SECRET | GitHub webhook secret | (none) |
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 |
The saas pack checks for:
MIT