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.
Files changed (65) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +191 -0
  3. package/dist/examples.js +67 -0
  4. package/dist/index.js +374 -0
  5. package/dist/knowledge.js +123 -0
  6. package/knowledge/books/design-of-everyday-things.md +155 -0
  7. package/knowledge/books/dont-make-me-think.md +154 -0
  8. package/knowledge/books/grid-typography-classics.md +152 -0
  9. package/knowledge/books/hooked-retention.md +196 -0
  10. package/knowledge/books/influence-persuasion.md +232 -0
  11. package/knowledge/books/positioning-messaging.md +178 -0
  12. package/knowledge/books/psychology-of-design.md +152 -0
  13. package/knowledge/books/refactoring-ui.md +157 -0
  14. package/knowledge/books/storybrand-copywriting.md +194 -0
  15. package/knowledge/components/buttons.md +90 -0
  16. package/knowledge/components/cards-lists-modals.md +63 -0
  17. package/knowledge/components/forms-inputs.md +61 -0
  18. package/knowledge/components/navigation.md +54 -0
  19. package/knowledge/craft/design-critique-scoring.md +237 -0
  20. package/knowledge/craft/typography-craft.md +177 -0
  21. package/knowledge/craft/ux-writing.md +185 -0
  22. package/knowledge/craft/visual-craft-standards.md +161 -0
  23. package/knowledge/design-languages/android-app-design.md +197 -0
  24. package/knowledge/design-languages/apple-hig-liquid-glass.md +94 -0
  25. package/knowledge/design-languages/design-tokens-theming.md +108 -0
  26. package/knowledge/design-languages/fluent-2.md +82 -0
  27. package/knowledge/design-languages/ios-app-design.md +205 -0
  28. package/knowledge/design-languages/macos-app-design.md +202 -0
  29. package/knowledge/design-languages/material-3.md +113 -0
  30. package/knowledge/design-languages/web-trends-2026.md +87 -0
  31. package/knowledge/examples/ios.json +299 -0
  32. package/knowledge/examples/web.json +321 -0
  33. package/knowledge/geo/geo-fundamentals.md +120 -0
  34. package/knowledge/geo/geo-tactics-checklist.md +148 -0
  35. package/knowledge/marketing/ad-creative.md +155 -0
  36. package/knowledge/marketing/branding-identity.md +153 -0
  37. package/knowledge/marketing/email-marketing.md +155 -0
  38. package/knowledge/patterns/mobile/android-patterns.md +181 -0
  39. package/knowledge/patterns/mobile/auth-patterns.md +69 -0
  40. package/knowledge/patterns/mobile/checkout-payments.md +77 -0
  41. package/knowledge/patterns/mobile/empty-states-buttons.md +80 -0
  42. package/knowledge/patterns/mobile/navigation-home.md +78 -0
  43. package/knowledge/patterns/mobile/onboarding-paywall.md +85 -0
  44. package/knowledge/patterns/mobile/settings-lists.md +71 -0
  45. package/knowledge/patterns/web/dashboards.md +141 -0
  46. package/knowledge/patterns/web/feature-sections.md +122 -0
  47. package/knowledge/patterns/web/hero-sections.md +121 -0
  48. package/knowledge/patterns/web/landing-signup.md +168 -0
  49. package/knowledge/patterns/web/pricing-sections.md +122 -0
  50. package/knowledge/patterns/web/social-proof-footer.md +156 -0
  51. package/knowledge/process/marketing-website-roadmap.md +72 -0
  52. package/knowledge/process/product-design-roadmap.md +117 -0
  53. package/knowledge/seo/on-page-seo.md +124 -0
  54. package/knowledge/seo/seo-for-designers.md +159 -0
  55. package/knowledge/seo/technical-seo.md +194 -0
  56. package/knowledge/ux/accessibility.md +68 -0
  57. package/knowledge/ux/color-systems.md +58 -0
  58. package/knowledge/ux/conversion-ux.md +78 -0
  59. package/knowledge/ux/mobile-ux.md +69 -0
  60. package/knowledge/ux/motion-microinteractions.md +67 -0
  61. package/knowledge/ux/principles-heuristics.md +57 -0
  62. package/knowledge/ux/spacing-layout.md +68 -0
  63. package/knowledge/ux/typography.md +63 -0
  64. package/package.json +63 -0
  65. 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>
@@ -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
+ }