saglitzdesign-mcp 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +29 -0
- package/README.md +191 -0
- package/dist/examples.js +67 -0
- package/dist/index.js +374 -0
- package/dist/knowledge.js +123 -0
- package/knowledge/books/design-of-everyday-things.md +155 -0
- package/knowledge/books/dont-make-me-think.md +154 -0
- package/knowledge/books/grid-typography-classics.md +152 -0
- package/knowledge/books/hooked-retention.md +196 -0
- package/knowledge/books/influence-persuasion.md +232 -0
- package/knowledge/books/positioning-messaging.md +178 -0
- package/knowledge/books/psychology-of-design.md +152 -0
- package/knowledge/books/refactoring-ui.md +157 -0
- package/knowledge/books/storybrand-copywriting.md +194 -0
- package/knowledge/components/buttons.md +90 -0
- package/knowledge/components/cards-lists-modals.md +63 -0
- package/knowledge/components/forms-inputs.md +61 -0
- package/knowledge/components/navigation.md +54 -0
- package/knowledge/craft/design-critique-scoring.md +237 -0
- package/knowledge/craft/typography-craft.md +177 -0
- package/knowledge/craft/ux-writing.md +185 -0
- package/knowledge/craft/visual-craft-standards.md +161 -0
- package/knowledge/design-languages/android-app-design.md +197 -0
- package/knowledge/design-languages/apple-hig-liquid-glass.md +94 -0
- package/knowledge/design-languages/design-tokens-theming.md +108 -0
- package/knowledge/design-languages/fluent-2.md +82 -0
- package/knowledge/design-languages/ios-app-design.md +205 -0
- package/knowledge/design-languages/macos-app-design.md +202 -0
- package/knowledge/design-languages/material-3.md +113 -0
- package/knowledge/design-languages/web-trends-2026.md +87 -0
- package/knowledge/examples/ios.json +299 -0
- package/knowledge/examples/web.json +321 -0
- package/knowledge/geo/geo-fundamentals.md +120 -0
- package/knowledge/geo/geo-tactics-checklist.md +148 -0
- package/knowledge/marketing/ad-creative.md +155 -0
- package/knowledge/marketing/branding-identity.md +153 -0
- package/knowledge/marketing/email-marketing.md +155 -0
- package/knowledge/patterns/mobile/android-patterns.md +181 -0
- package/knowledge/patterns/mobile/auth-patterns.md +69 -0
- package/knowledge/patterns/mobile/checkout-payments.md +77 -0
- package/knowledge/patterns/mobile/empty-states-buttons.md +80 -0
- package/knowledge/patterns/mobile/navigation-home.md +78 -0
- package/knowledge/patterns/mobile/onboarding-paywall.md +85 -0
- package/knowledge/patterns/mobile/settings-lists.md +71 -0
- package/knowledge/patterns/web/dashboards.md +141 -0
- package/knowledge/patterns/web/feature-sections.md +122 -0
- package/knowledge/patterns/web/hero-sections.md +121 -0
- package/knowledge/patterns/web/landing-signup.md +168 -0
- package/knowledge/patterns/web/pricing-sections.md +122 -0
- package/knowledge/patterns/web/social-proof-footer.md +156 -0
- package/knowledge/process/marketing-website-roadmap.md +72 -0
- package/knowledge/process/product-design-roadmap.md +117 -0
- package/knowledge/seo/on-page-seo.md +124 -0
- package/knowledge/seo/seo-for-designers.md +159 -0
- package/knowledge/seo/technical-seo.md +194 -0
- package/knowledge/ux/accessibility.md +68 -0
- package/knowledge/ux/color-systems.md +58 -0
- package/knowledge/ux/conversion-ux.md +78 -0
- package/knowledge/ux/mobile-ux.md +69 -0
- package/knowledge/ux/motion-microinteractions.md +67 -0
- package/knowledge/ux/principles-heuristics.md +57 -0
- package/knowledge/ux/spacing-layout.md +68 -0
- package/knowledge/ux/typography.md +63 -0
- package/package.json +63 -0
- package/scripts/regenerate-examples.md +61 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Saglitz Design
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
Note on bundled research content: the files under knowledge/ are original
|
|
26
|
+
syntheses written for this project, with sources cited in each document's
|
|
27
|
+
frontmatter. Screenshot images referenced by knowledge/examples/*.json are a
|
|
28
|
+
local research asset, are NOT part of this repository or the published
|
|
29
|
+
package, and may not be redistributed.
|
package/README.md
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# SaglitzDesign MCP
|
|
4
|
+
|
|
5
|
+
**An expert design & marketing brain for your AI coding agent.**
|
|
6
|
+
|
|
7
|
+
A Model Context Protocol server that gives Claude, Cursor, and any MCP client
|
|
8
|
+
expert‑level guidance on **web, iOS, Android and macOS design** — plus the
|
|
9
|
+
**UX, copywriting, SEO, GEO and marketing** knowledge that makes a product
|
|
10
|
+
actually convert.
|
|
11
|
+
|
|
12
|
+
56 curated knowledge documents · 10 tools · phased roadmaps · real‑world visual examples
|
|
13
|
+
|
|
14
|
+
[Why](#why) · [What's inside](#whats-inside) · [Tools](#tools) · [Install](#install) · [Usage](#usage) · [Extending](#extending-the-knowledge-base) · [License](#license)
|
|
15
|
+
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Why
|
|
21
|
+
|
|
22
|
+
LLMs are confidently wrong about design. They reach for defaults, invent
|
|
23
|
+
outdated specs, and give generic "make it clean and modern" advice. SaglitzDesign
|
|
24
|
+
replaces that with a **curated, sourced, prescriptive knowledge base** your agent
|
|
25
|
+
can query on demand — the kind of guidance you'd get from a senior product
|
|
26
|
+
designer, a conversion copywriter, and a technical SEO all at once.
|
|
27
|
+
|
|
28
|
+
Ask your agent to design a paywall, audit a landing page, or plan an iOS app,
|
|
29
|
+
and it pulls concrete rules ("44pt minimum touch target", "one primary button
|
|
30
|
+
per screen", "LCP ≤ 2.5s"), real patterns from top apps, and a phased roadmap —
|
|
31
|
+
instead of guessing.
|
|
32
|
+
|
|
33
|
+
- **Runtime‑independent.** The server reads only local files. No external API,
|
|
34
|
+
no account, nothing to configure. It just works, offline.
|
|
35
|
+
- **Prescriptive, not vague.** Every doc is written as rules an agent applies
|
|
36
|
+
verbatim — numbers, thresholds, do/don't lists, anti‑patterns.
|
|
37
|
+
- **Grounded.** Design‑language specs from official sources; patterns studied
|
|
38
|
+
from real top apps and sites; classics distilled from the actual books.
|
|
39
|
+
|
|
40
|
+
## What's inside
|
|
41
|
+
|
|
42
|
+
**56 knowledge documents across 10 categories:**
|
|
43
|
+
|
|
44
|
+
| Category | Coverage |
|
|
45
|
+
|---|---|
|
|
46
|
+
| 🎨 **Design languages** | Material 3 & M3 Expressive · Apple HIG + Liquid Glass (iOS 26) · deep **iOS**, **Android** (Android 16 / M3 Expressive) and **macOS** app‑design guides · Fluent 2 · 2026 web trends · design tokens & theming (W3C DTCG) |
|
|
47
|
+
| 🧩 **Components** | Buttons (hierarchy, sizing, states, labels) · forms & inputs · navigation · cards / lists / modals / sheets / empty states |
|
|
48
|
+
| 🧠 **UX** | Nielsen heuristics & behavioral laws · accessibility (WCAG 2.2) · typography · color & dark mode · spacing & grids · motion · mobile UX · conversion / CRO |
|
|
49
|
+
| ✨ **Craft** | Expert polish standards: optical corrections, spacing discipline, typographic craft, UX writing & cognitive load, and a 0–40 critique scoring rubric |
|
|
50
|
+
| 📚 **Books** | Distilled classics — *design:* Norman, Krug, Refactoring UI, psychology of design, grid/typography · *marketing:* Cialdini, Positioning (Ries/Trout + Dunford), StoryBrand + Ogilvy, Hooked |
|
|
51
|
+
| 🗺️ **Process** | End‑to‑end roadmaps: product design (8 phases with exit criteria) and marketing website (positioning → CRO loop) |
|
|
52
|
+
| 🔎 **SEO** | Technical SEO (Core Web Vitals) · on‑page & E‑E‑A‑T · SEO for designers |
|
|
53
|
+
| 🤖 **GEO** | Generative Engine Optimization — visibility in ChatGPT / Perplexity / AI Overviews, llms.txt, citation tactics |
|
|
54
|
+
| 📣 **Marketing** | Branding & identity (strategy, logo systems, brand voice) · email marketing (design, lifecycle, deliverability) · ad creative (hooks, platform specs, testing) |
|
|
55
|
+
| 🖼️ **Patterns & examples** | Real‑world patterns studied from top apps & sites, plus a curated screenshot library served as images |
|
|
56
|
+
|
|
57
|
+
## Tools
|
|
58
|
+
|
|
59
|
+
| Tool | What it does |
|
|
60
|
+
|---|---|
|
|
61
|
+
| **`get_design_roadmap`** | **Start here.** A phased, expert process for a project type (website, landing page, iOS / Android / macOS app, SaaS web app) — each phase has a goal, exit criteria, and the exact docs to read. |
|
|
62
|
+
| **`search_design_knowledge`** | Natural‑language search across everything, returning the most relevant section of the best‑matching docs. |
|
|
63
|
+
| **`get_design_doc`** | Fetch any document in full by id. |
|
|
64
|
+
| **`get_component_guidance`** | Deep dive on a component or screen (button, form, paywall, hero, pricing…) — specs + real‑world patterns. |
|
|
65
|
+
| **`get_design_language`** | Full platform / design‑system references (Material 3, Liquid Glass, iOS/Android/macOS, Fluent 2, web trends, tokens). |
|
|
66
|
+
| **`get_design_examples`** | **Real screenshots** of a pattern from top apps/sites, returned as images with notes on what each does well. |
|
|
67
|
+
| **`design_review_checklist`** | An assembled audit checklist per project type and focus (UI, UX, accessibility, SEO, GEO, conversion, copywriting). |
|
|
68
|
+
| **`seo_geo_guide`** | SEO and GEO guides, optionally narrowed to a topic. |
|
|
69
|
+
| **`list_design_knowledge`** | Browse the full knowledge index by category / platform. |
|
|
70
|
+
| **`knowledge_freshness`** | Reports each doc's age vs a per‑category staleness threshold, so the base can be kept current. |
|
|
71
|
+
|
|
72
|
+
## Install
|
|
73
|
+
|
|
74
|
+
**Requirements:** Node.js 18+.
|
|
75
|
+
|
|
76
|
+
**From npm** (once published):
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npx saglitzdesign-mcp
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**From source:**
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
git clone https://github.com/HalidSaglam/saglitzdesign-mcp.git
|
|
86
|
+
cd saglitzdesign-mcp
|
|
87
|
+
npm install
|
|
88
|
+
npm run build
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Claude Code
|
|
92
|
+
|
|
93
|
+
Register it once, available in every project:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
claude mcp add --scope user saglitzdesign node /absolute/path/to/saglitzdesign-mcp/dist/index.js
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Or use the project‑scoped `.mcp.json` already in this repo (relative `dist/index.js`).
|
|
100
|
+
|
|
101
|
+
### Claude Desktop
|
|
102
|
+
|
|
103
|
+
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"mcpServers": {
|
|
108
|
+
"saglitzdesign": {
|
|
109
|
+
"command": "node",
|
|
110
|
+
"args": ["/absolute/path/to/saglitzdesign-mcp/dist/index.js"]
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Cursor / other MCP clients
|
|
117
|
+
|
|
118
|
+
Point the client at `node /absolute/path/to/saglitzdesign-mcp/dist/index.js` over stdio.
|
|
119
|
+
|
|
120
|
+
### Dev & debug
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
npm run dev # run from TypeScript via tsx
|
|
124
|
+
npm run inspect # open the MCP Inspector UI
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Usage
|
|
128
|
+
|
|
129
|
+
Once connected, just talk to your agent naturally — it decides when to call the tools:
|
|
130
|
+
|
|
131
|
+
> *"Using saglitzdesign, plan the design of an iOS fitness app."*
|
|
132
|
+
> → `get_design_roadmap` returns a 7‑phase plan with the docs to read at each step.
|
|
133
|
+
|
|
134
|
+
> *"Review my landing page for conversion with saglitzdesign."*
|
|
135
|
+
> → `design_review_checklist` (landing‑page / conversion) + `get_design_examples`.
|
|
136
|
+
|
|
137
|
+
> *"How should a primary button behave on mobile?"*
|
|
138
|
+
> → `get_component_guidance` returns specs, states, labels and anti‑patterns.
|
|
139
|
+
|
|
140
|
+
> *"Show me real paywall examples."*
|
|
141
|
+
> → `get_design_examples` returns annotated screenshots.
|
|
142
|
+
|
|
143
|
+
> *"What's llms.txt and how do I set it up?"*
|
|
144
|
+
> → `seo_geo_guide` (GEO) returns the tactic with a ready‑to‑use example.
|
|
145
|
+
|
|
146
|
+
## Extending the knowledge base
|
|
147
|
+
|
|
148
|
+
Drop a Markdown file anywhere under `knowledge/` with frontmatter:
|
|
149
|
+
|
|
150
|
+
```markdown
|
|
151
|
+
---
|
|
152
|
+
id: my-topic
|
|
153
|
+
title: "My Topic"
|
|
154
|
+
category: ux # design-language | component | ux | seo | geo | pattern | craft | book | process | marketing
|
|
155
|
+
platform: both # mobile | web | macos | both
|
|
156
|
+
tags: [tag1, tag2]
|
|
157
|
+
sources: ["https://…"]
|
|
158
|
+
updated: 2026-07-08
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
Content served verbatim to clients…
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
The server indexes every `.md` on startup — no rebuild needed for content
|
|
165
|
+
changes (just restart the server). A `/refresh-knowledge` command
|
|
166
|
+
(`.claude/commands/`) can re‑research stale docs with agents.
|
|
167
|
+
|
|
168
|
+
## How the knowledge was built
|
|
169
|
+
|
|
170
|
+
Design‑language and SEO/GEO docs were researched from official documentation
|
|
171
|
+
and current sources (cited in each file's `sources`). Real‑world UI patterns
|
|
172
|
+
were studied from top apps and websites; the visual example library was curated
|
|
173
|
+
the same way. Classic design and marketing books were distilled into original,
|
|
174
|
+
prescriptive syntheses — no source text is reproduced.
|
|
175
|
+
|
|
176
|
+
**On images:** screenshot files are a local research asset. They are **not**
|
|
177
|
+
included in this repository or any published package. Without them,
|
|
178
|
+
`get_design_examples` gracefully degrades to descriptions plus source links.
|
|
179
|
+
To rebuild the local image library (or add your own examples), see
|
|
180
|
+
[`scripts/regenerate-examples.md`](scripts/regenerate-examples.md).
|
|
181
|
+
|
|
182
|
+
## License
|
|
183
|
+
|
|
184
|
+
[MIT](LICENSE) © 2026 Saglitz Design.
|
|
185
|
+
|
|
186
|
+
The `knowledge/` documents are original syntheses with sources cited per file.
|
|
187
|
+
Referenced screenshots are not part of this repo and may not be redistributed.
|
|
188
|
+
|
|
189
|
+
<div align="center">
|
|
190
|
+
<sub>Built for the <a href="https://modelcontextprotocol.io">Model Context Protocol</a>.</sub>
|
|
191
|
+
</div>
|
package/dist/examples.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { readdirSync, readFileSync, existsSync } from "node:fs";
|
|
2
|
+
import { join, extname } from "node:path";
|
|
3
|
+
export function loadExamples(examplesDir) {
|
|
4
|
+
if (!existsSync(examplesDir))
|
|
5
|
+
return [];
|
|
6
|
+
const out = [];
|
|
7
|
+
for (const entry of readdirSync(examplesDir)) {
|
|
8
|
+
if (extname(entry) !== ".json")
|
|
9
|
+
continue;
|
|
10
|
+
try {
|
|
11
|
+
const arr = JSON.parse(readFileSync(join(examplesDir, entry), "utf8"));
|
|
12
|
+
if (!Array.isArray(arr))
|
|
13
|
+
continue;
|
|
14
|
+
for (const e of arr) {
|
|
15
|
+
if (!e?.id)
|
|
16
|
+
continue;
|
|
17
|
+
// entries are kept even without their image file — the tool then serves
|
|
18
|
+
// description + source link only (images are a local-only asset and are
|
|
19
|
+
// not redistributed in the published package)
|
|
20
|
+
out.push({
|
|
21
|
+
id: String(e.id),
|
|
22
|
+
title: String(e.title ?? e.id),
|
|
23
|
+
platform: String(e.platform ?? "both"),
|
|
24
|
+
app: String(e.app ?? ""),
|
|
25
|
+
pattern: String(e.pattern ?? ""),
|
|
26
|
+
description: String(e.description ?? ""),
|
|
27
|
+
tags: Array.isArray(e.tags) ? e.tags.map(String) : [],
|
|
28
|
+
mobbin_url: String(e.mobbin_url ?? ""),
|
|
29
|
+
image: String(e.image ?? ""),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// skip malformed files
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
39
|
+
export function searchExamples(examples, query, opts = {}) {
|
|
40
|
+
const terms = [...new Set(query.toLowerCase().split(/[^a-z0-9]+/).filter((t) => t.length > 1))];
|
|
41
|
+
const scored = [];
|
|
42
|
+
for (const e of examples) {
|
|
43
|
+
if (opts.platform && e.platform !== opts.platform)
|
|
44
|
+
continue;
|
|
45
|
+
const hay = {
|
|
46
|
+
strong: (e.pattern + " " + e.tags.join(" ")).toLowerCase(),
|
|
47
|
+
medium: (e.title + " " + e.app).toLowerCase(),
|
|
48
|
+
weak: e.description.toLowerCase(),
|
|
49
|
+
};
|
|
50
|
+
let score = 0;
|
|
51
|
+
for (const t of terms) {
|
|
52
|
+
if (hay.strong.includes(t))
|
|
53
|
+
score += 5;
|
|
54
|
+
if (hay.medium.includes(t))
|
|
55
|
+
score += 3;
|
|
56
|
+
if (hay.weak.includes(t))
|
|
57
|
+
score += 1;
|
|
58
|
+
}
|
|
59
|
+
if (score > 0)
|
|
60
|
+
scored.push({ e, score });
|
|
61
|
+
}
|
|
62
|
+
scored.sort((a, b) => b.score - a.score);
|
|
63
|
+
return scored.slice(0, opts.limit ?? 4).map((s) => s.e);
|
|
64
|
+
}
|
|
65
|
+
export function imageMime(path) {
|
|
66
|
+
return extname(path).toLowerCase() === ".webp" ? "image/webp" : "image/jpeg";
|
|
67
|
+
}
|