<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: elsahafy</title>
    <description>The latest articles on Forem by elsahafy (@elsahafy).</description>
    <link>https://forem.com/elsahafy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3730456%2Facbb17b3-0c0e-4abc-97ef-00af70e62bf9.png</url>
      <title>Forem: elsahafy</title>
      <link>https://forem.com/elsahafy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/elsahafy"/>
    <language>en</language>
    <item>
      <title>I Built an MCP Server with 28 UX Knowledge Bases and 23 Tools - Here's What I Learned</title>
      <dc:creator>elsahafy</dc:creator>
      <pubDate>Sat, 24 Jan 2026 16:38:36 +0000</pubDate>
      <link>https://forem.com/elsahafy/i-built-an-mcp-server-with-28-ux-knowledge-bases-and-23-tools-heres-what-i-learned-152a</link>
      <guid>https://forem.com/elsahafy/i-built-an-mcp-server-with-28-ux-knowledge-bases-and-23-tools-heres-what-i-learned-152a</guid>
      <description>&lt;p&gt;Ever wished your AI coding assistant knew about WCAG accessibility guidelines, Nielsen's usability heuristics, or the latest e-commerce UX patterns? I did too. So I built an MCP server to solve that problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;AI coding assistants are great at writing code, but they often lack specialized domain knowledge. When I asked for help with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Make this button accessible" → Generic advice, missing WCAG specifics&lt;/li&gt;
&lt;li&gt;"What UI pattern should I use for filtering?" → No awareness of established patterns&lt;/li&gt;
&lt;li&gt;"Check my color contrast" → Had to explain WCAG contrast ratios every time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I needed a way to give AI assistants deep UX expertise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter the Model Context Protocol (MCP)
&lt;/h2&gt;

&lt;p&gt;MCP is Anthropic's open protocol for connecting AI assistants to external data sources and tools. Think of it as giving your AI assistant access to specialized knowledge bases and capabilities.&lt;/p&gt;

&lt;p&gt;Instead of the AI relying only on its training data, MCP lets you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Provide real-time resources&lt;/strong&gt; (knowledge bases, documentation)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add custom tools&lt;/strong&gt; (analyzers, generators, validators)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create workflow prompts&lt;/strong&gt; (pre-configured review templates)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I Built: UX MCP Server
&lt;/h2&gt;

&lt;p&gt;After months of development, I created a comprehensive UX toolkit:&lt;/p&gt;

&lt;h3&gt;
  
  
  📚 28 Knowledge Resources
&lt;/h3&gt;

&lt;p&gt;Covering the complete UX ecosystem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Foundation &amp;amp; Core&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WCAG 2.1 AA accessibility guidelines&lt;/li&gt;
&lt;li&gt;Nielsen's 10 usability heuristics&lt;/li&gt;
&lt;li&gt;UI patterns library&lt;/li&gt;
&lt;li&gt;Design system tokens&lt;/li&gt;
&lt;li&gt;Responsive design principles&lt;/li&gt;
&lt;li&gt;Dark mode implementation&lt;/li&gt;
&lt;li&gt;Error message guidelines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Critical Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Form design patterns &amp;amp; validation&lt;/li&gt;
&lt;li&gt;UX writing &amp;amp; microcopy&lt;/li&gt;
&lt;li&gt;Typography systems&lt;/li&gt;
&lt;li&gt;Color theory &amp;amp; contrast&lt;/li&gt;
&lt;li&gt;Mobile patterns &amp;amp; touch targets&lt;/li&gt;
&lt;li&gt;Vue, Angular, React patterns&lt;/li&gt;
&lt;li&gt;Data visualization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advanced Topics&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;E-commerce UX (checkout, conversion)&lt;/li&gt;
&lt;li&gt;Information architecture&lt;/li&gt;
&lt;li&gt;Usability testing &amp;amp; A/B testing&lt;/li&gt;
&lt;li&gt;PWA patterns&lt;/li&gt;
&lt;li&gt;Ethical design &amp;amp; dark patterns&lt;/li&gt;
&lt;li&gt;SaaS onboarding &amp;amp; pricing&lt;/li&gt;
&lt;li&gt;Analytics &amp;amp; UX metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Emerging Technologies&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Voice UI design&lt;/li&gt;
&lt;li&gt;AR/VR interfaces&lt;/li&gt;
&lt;li&gt;AI/ML UX patterns&lt;/li&gt;
&lt;li&gt;Haptic feedback&lt;/li&gt;
&lt;li&gt;Healthcare UX (HIPAA)&lt;/li&gt;
&lt;li&gt;Finance UX (PCI-DSS)&lt;/li&gt;
&lt;li&gt;Neurodiversity-inclusive design&lt;/li&gt;
&lt;li&gt;Web Components&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🛠️ 23 Analysis Tools
&lt;/h3&gt;

&lt;p&gt;Real tools that do real work:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Check color contrast&lt;/span&gt;
&lt;span class="nf"&gt;check_contrast&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;foreground&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#333&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#fff&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="c1"&gt;// → Returns WCAG AA/AAA compliance status&lt;/span&gt;

&lt;span class="c1"&gt;// Generate accessible color palette&lt;/span&gt;
&lt;span class="nf"&gt;generate_color_palette&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;base_color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#3b82f6&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;harmony&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;triadic&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="c1"&gt;// → Returns complete palette with contrast ratios&lt;/span&gt;

&lt;span class="c1"&gt;// Analyze accessibility&lt;/span&gt;
&lt;span class="nf"&gt;analyze_accessibility&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;button&amp;gt;Click&amp;lt;/button&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="c1"&gt;// → Returns WCAG violations and fixes&lt;/span&gt;

&lt;span class="c1"&gt;// Detect dark patterns&lt;/span&gt;
&lt;span class="nf"&gt;detect_dark_patterns&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;page_description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;checkout with pre-checked insurance&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="c1"&gt;// → Identifies deceptive UI practices&lt;/span&gt;

&lt;span class="c1"&gt;// Calculate UX metrics&lt;/span&gt;
&lt;span class="nf"&gt;calculate_ux_metrics&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;metric_type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SUS&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;4,5,3,2,4,3,4,5,3,4&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="c1"&gt;// → Returns SUS score with interpretation&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  💬 4 Workflow Prompts
&lt;/h3&gt;

&lt;p&gt;Pre-configured review workflows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;accessibility_review&lt;/strong&gt; - Full WCAG audit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;usability_audit&lt;/strong&gt; - Nielsen heuristics evaluation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;design_system_setup&lt;/strong&gt; - Design system creation guide&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;complete_ux_audit&lt;/strong&gt; - Comprehensive multi-dimensional review&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @elsahafy/ux-mcp-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Configuration (Claude Desktop Example)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ux-best-practices"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ux-mcp-server"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;Once configured, you can ask your AI assistant:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Check if #3b82f6 on #ffffff meets WCAG AA"
→ Uses check_contrast tool

"What form pattern should I use for a multi-step checkout?"
→ Uses recommend_form_pattern tool + reads ux://ecommerce/patterns

"Generate an accessibility report for my login page"
→ Uses generate_accessibility_report tool

"How do I design for users with ADHD?"
→ Reads ux://neurodiversity/design resource
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Cross-Platform Compatibility
&lt;/h2&gt;

&lt;p&gt;The server works with any MCP-compatible client:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Client&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Desktop&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code (CLI)&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor IDE&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Continue.dev&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cline (VS Code)&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zed Editor&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Structure Knowledge for AI Consumption
&lt;/h3&gt;

&lt;p&gt;AI assistants work better with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hierarchical JSON over flat text&lt;/li&gt;
&lt;li&gt;Explicit best practices AND anti-patterns&lt;/li&gt;
&lt;li&gt;Code examples alongside explanations&lt;/li&gt;
&lt;li&gt;Cross-references between related topics&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Tools Should Be Focused
&lt;/h3&gt;

&lt;p&gt;Each tool does one thing well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;check_contrast&lt;/code&gt; - only checks contrast&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;generate_color_palette&lt;/code&gt; - only generates palettes&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;analyze_accessibility&lt;/code&gt; - only analyzes accessibility&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Make It Client-Agnostic
&lt;/h3&gt;

&lt;p&gt;MCP is a protocol, not a platform. Design for any client:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use stdio transport (universal)&lt;/li&gt;
&lt;li&gt;Return structured JSON (easy to parse)&lt;/li&gt;
&lt;li&gt;Document for multiple environments&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Comprehensive &amp;gt; Perfect
&lt;/h3&gt;

&lt;p&gt;I started with core accessibility, then expanded:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;v1.0: 7 resources, 8 tools&lt;/li&gt;
&lt;li&gt;v2.0: 12 resources, 11 tools&lt;/li&gt;
&lt;li&gt;v4.0: 28 resources, 23 tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ship early, iterate based on real usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;More specialized knowledge&lt;/strong&gt;: Automotive UX, Gaming UX, Accessibility testing frameworks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive tools&lt;/strong&gt;: Live accessibility scanners, real-time contrast checkers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration guides&lt;/strong&gt;: Framework-specific implementation examples&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @elsahafy/ux-mcp-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/elsahafy/ux-mcp-server" rel="noopener noreferrer"&gt;github.com/elsahafy/ux-mcp-server&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt;: &lt;a href="https://www.npmjs.com/package/@elsahafy/ux-mcp-server" rel="noopener noreferrer"&gt;@elsahafy/ux-mcp-server&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Registry&lt;/strong&gt;: &lt;a href="https://registry.modelcontextprotocol.io" rel="noopener noreferrer"&gt;io.github.elsahafy/ux-mcp-server&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Support
&lt;/h2&gt;

&lt;p&gt;If this helps you build better user experiences, consider supporting development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ko-fi.com/elsahafy" rel="noopener noreferrer"&gt;Ko-fi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;What UX knowledge would you like to see added? Let me know in the comments!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ux</category>
      <category>a11y</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
