trackmcp
Back to directory
efremidze

swift-patterns-mcp

View on GitHub

An MCP server providing curated Swift and SwiftUI best practices from leading iOS sources.

12 stars TypeScriptOthers Updated Aug 4, 2026
iosmcpmodel-context-protocolswiftswiftuipatreonclaude-codemcp-server

Documentation

swift-patterns-mcp

MCP Badge
Release

An MCP server providing curated Swift and SwiftUI best practices from leading iOS developers β€” with intelligent search, persistent memory, and optional premium integrations.

Want an Agent Skill?

If you want a lightweight, portable Swift/SwiftUI best-practices package without runtime tooling, check out:

**swift-patterns-skill**: Designed as a portable Agent Skill focused on Swift/SwiftUI patterns, architecture guidance, and decision-making frameworks.

Key difference:

  • swift-patterns-skill = Static guidance (portable, no runtime)
  • swift-patterns-mcp = Dynamic tooling (search, retrieval, premium features)

Note: This repo is an MCP server only. It does not ship an Agent Skill (`SKILL.md`) or skill references.

What does this MCP provide?

swift-patterns-mcp delivers runtime tools for accessing Swift/SwiftUI best practices:

  • πŸ”Ž Search & retrieval across curated sources
  • 🧠 Persistent memory with cross-session recall
  • πŸ”„ Auto-refreshing content from RSS feeds and GitHub
  • 🎯 Intelligent filtering by quality and relevance
  • πŸ” Premium integrations (optional Patreon support)

Ideal for:

  • Active Development: "How do I implement pull-to-refresh in SwiftUI?" answered instantly without leaving your IDE
  • Architecture Decisions: Compare MVVM vs. TCA patterns with concrete examples from trusted sources
  • Staying Current: Access the latest patterns and best practices as they're published by leading iOS developers
  • Team Standards: Build a searchable reference of approved patterns for your organization
  • AI-Powered Workflows: Enable agents to query "Show me Sundell's approach to dependency injection" with consistent, quality responses

🌟 Features

  • πŸŽ“ Expert Knowledge Base: Patterns from Swift by Sundell, Antoine van der Lee, Nil Coalescing, and more
  • πŸ” Intelligent Search: Query by topic, pattern, or specific iOS concept
  • πŸ’Ύ Persistent Memory: Cross-session recall with Memvid storage
  • 🧠 Semantic Search: Optional AI-powered fallback for better conceptual matches
  • πŸ“š Multiple Sources: Aggregates knowledge from trusted educators
  • πŸ”„ Auto-Updates: Content refreshes automatically from RSS feeds
  • ⚑ Fast Performance: Efficient caching and indexed search

Content Sources

Free Sources

These sources are publicly available but benefit from MCP's fetching, caching, and search capabilities:

SourceContent TypeUpdates
Swift by SundellArticles, patterns, best practicesWeekly
SwiftLeeTutorials, tips, deep divesWeekly
Nil CoalescingSwiftUI patterns, Swift tipsWeekly
Point-FreeOpen-source libraries, patternsOn release

Premium Sources

Premium content requires OAuth authentication and active subscriptions:

SourceWhat You GetAuthentication
PatreonPremium content from supported creatorsOAuth 2.0

Access exclusive content from top iOS educators: Kavsoft, SwiftUI Codes, sucodee and many more. Get tutorials, code samples, and expert guidance directly from creators you support.

πŸ“‹ Prerequisites

  • Node.js 18.0.0 or higher
  • MCP-Compatible AI Assistant: Claude Desktop, Cursor, Windsurf, VS Code with Copilot, or Claude Code

πŸš€ Quick Start

Run Setup

bash
npx -y swift-patterns-mcp@latest

In an interactive terminal, this opens the setup wizard.

When launched by an MCP client (non-interactive stdio), it runs as the MCP server automatically.

Interactive Setup Wizard

bash
npx -y swift-patterns-mcp@latest setup

If installed globally, you can also run:

bash
swift-patterns-mcp setup

The wizard helps you choose:

  • Config scope (local project vs global)
  • MCP client (Cursor, Claude Code, Windsurf, VS Code)
  • Optional Patreon setup prompt

Non-interactive Setup (CI/Scripts)

bash
# Cursor
npx -y swift-patterns-mcp@latest setup --cursor --global
npx -y swift-patterns-mcp@latest setup --cursor --local

# Claude Code
npx -y swift-patterns-mcp@latest setup --claude --global

# Windsurf
npx -y swift-patterns-mcp@latest setup --windsurf --global

# VS Code
npx -y swift-patterns-mcp@latest setup --vscode --local

# All clients
npx -y swift-patterns-mcp@latest setup --all --global

Use `--global` (`-g`) or `--local` (`-l`) to skip the location prompt.

Use `--cursor`, `--claude`, `--windsurf`, `--vscode`, or `--all` to skip the client prompt.

Configure Your AI Assistant

Cursor

Install MCP Server

Or manually add to Cursor Settings β†’ Tools β†’ MCP Servers:

`.cursor/mcp.json`:

json
{
  "mcpServers": {
    "swift-patterns": {
      "command": "npx",
      "args": ["-y", "swift-patterns-mcp@latest"]
    }
  }
}

Alternatively, add to `~/.cursor/mcp.json`. See Cursor documentation for details.

Claude Code

Run in your terminal:

bash
claude mcp add swift-patterns -- npx -y swift-patterns-mcp@latest

Or manually add to `.mcp.json`:

json
{
  "mcpServers": {
    "swift-patterns": {
      "command": "npx",
      "args": ["-y", "swift-patterns-mcp@latest"]
    }
  }
}

Restart Claude Code and run `/mcp` to verify. See Claude Code MCP documentation for details.

Windsurf

Add to `.windsurf/mcp.json`:

json
{
  "mcpServers": {
    "swift-patterns": {
      "command": "npx",
      "args": ["-y", "swift-patterns-mcp@latest"]
    }
  }
}

Restart Windsurf to activate. See Windsurf MCP documentation for details.

VS Code

Add to `.vscode/mcp.json`:

json
{
  "mcp": {
    "servers": {
      "swift-patterns": {
        "command": "npx",
        "args": ["-y", "swift-patterns-mcp@latest"]
      }
    }
  }
}

Open `.vscode/mcp.json` and click Start next to the swift-patterns server. See VS Code MCP documentation for details.

Test It Out

Try these queries:

code
"Show me SwiftUI animation patterns"
"What does Sundell say about testing?"
"Explain navigation patterns in SwiftUI"

πŸ”§ Configuration

Configuration is automatically created at `~/.swift-patterns-mcp/config.json`:

json
{
  "sources": {
    "sundell": { "enabled": true },
    "vanderlee": { "enabled": true },
    "nilcoalescing": { "enabled": true },
    "pointfree": { "enabled": true },
    "patreon": { "enabled": false, "configured": false }
  },
  "prefetchSources": true,
  "semanticRecall": {
    "enabled": false,
    "minLexicalScore": 0.35,
    "minRelevanceScore": 70
  },
  "memvid": {
    "enabled": true,
    "autoStore": true,
    "useEmbeddings": false,
    "embeddingModel": "bge-small"
  }
}

Note: `configured` only applies to premium sources. Free sources are treated as configured by default.

Persistent Memory with Memvid

Memvid provides persistent semantic memory that improves recall across sessions. Unlike in-memory caching, Memvid stores patterns in a single-file database that persists between server restarts.

Features:

  • πŸ’Ύ Persistent Storage: Patterns stored in `~/.swift-patterns-mcp/swift-patterns-memory.mv2`
  • πŸ” Cross-Session Recall: Find patterns from previous searches after server restart
  • 🧠 Semantic Search: Optional embedding-based similarity search
  • πŸš€ Automatic Storage: Patterns stored during searches
  • ⚑ Fast Retrieval: Built-in BM25 + optional vector search

Configuration:

json
{
  "memvid": {
    "enabled": true,              // Enable Memvid persistent memory
    "autoStore": true,            // Automatically store patterns during searches
    "useEmbeddings": false,       // Use semantic embeddings (requires model download)
    "embeddingModel": "bge-small" // Options: "bge-small", "openai-small"
  }
}

When to enable:

  • You want patterns to persist across server restarts
  • You frequently search for similar topics
  • You need cross-session semantic memory

Note: Memvid complements MiniSearch (fast in-session search) and semantic recall (in-session fallback). All three work together:

1. MiniSearch: Fast lexical search within current session

2. Semantic recall: Activates for poor lexical results (in-session)

3. Memvid: Cross-session persistent memory and recall

Semantic Recall (Optional AI Enhancement)

Semantic recall provides AI-powered semantic search as a fallback when keyword search returns poor results. It uses transformer embeddings to understand query intent and find conceptually similar patterns.

Features:

  • 🧠 Automatically activates when keyword search scores are low
  • 🎯 Uses sentence transformers to understand meaning beyond keywords
  • πŸ“Š Quality filtering to index only high-relevance patterns
  • ⚑ Efficient embedding caching

Configuration:

json
{
  "semanticRecall": {
    "enabled": false,              // Enable semantic recall
    "minLexicalScore": 0.35,       // Activate when keyword search = 70
  }
}

When to enable:

  • Your queries use conceptual terms that don't match exact keywords
  • You want more intelligent, context-aware search results
  • You're okay with slightly slower first-time searches (embeddings need to compute)

Note: Requires downloading a ~50MB transformer model on first use. Embeddings are cached for performance.

Environment Variables (Optional)

Patreon

All three variables are required for Patreon content fetching:

VariableDescription
`PATREON_CLIENT_ID`OAuth client ID from your Patreon app
`PATREON_CLIENT_SECRET`OAuth client secret from your Patreon app
`YOUTUBE_API_KEY`Enables searching YouTube videos from Patreon creators. Get API key

Add to your MCP client config:

json
{
  "mcpServers": {
    "swift-patterns": {
      "command": "npx",
      "args": ["-y", "swift-patterns-mcp@latest"],
      "env": {
        "PATREON_CLIENT_ID": "your_client_id",
        "PATREON_CLIENT_SECRET": "your_client_secret",
        "YOUTUBE_API_KEY": "your_youtube_api_key"
      }
    }
  }
}

πŸ’‘ Usage Examples

Basic Queries

code
"How can I use lazy var in @Observable classes?"
"Show me modern SwiftUI animation best practices using symbolEffect (with button + state examples)"
"Explain common SwiftUI navigation patterns (NavigationStack, NavigationPath, enum routing) and when to use each"

Advanced Queries

code
"Build a coordinator-style architecture for SwiftUI: MVVM + dependency injection + type-safe routing"
"Give me a clean infinite scrolling implementation: pagination, dedupe, cancellation, and loading states"
"Explain how @Observable improves SwiftUI performance vs ObservableObject, then refactor my view model to @Observable"

With Patreon Integration

code
"Build a SwiftUI parallax + sticky header screen like a profile page (include reusable component version)"
"Show me how to build a photo editor flow: PhotosPicker -> crop -> filters -> export/share"
"Give me 5 advanced SwiftUI micro-interactions (toasts, sheets, draggable cards, haptics) with production-ready code"

πŸ” Premium Integration (Optional)

Patreon Setup

Access premium content from iOS creators you support:

bash
swift-patterns-mcp patreon setup

Follow the interactive wizard to:

1. Verify environment variables are configured

2. Complete OAuth authentication

3. Fetch and verify content from your subscriptions

πŸ“– Detailed Guide: Patreon Setup Documentation

Requirements

  • Active Patreon account with at least one iOS creator subscription
  • Patreon Creator account (free - no need to launch a creator page)
  • 10 minutes for one-time OAuth setup

Why Creator Account?

Patreon requires OAuth apps to be registered by creators. You don't need to launch a creator page or become an active creator - just register as one to create an OAuth app for personal use.

What You Get

  • βœ… Access to premium tutorials and patterns from creators you support
  • βœ… Automatic extraction of code from downloadable content
  • βœ… Quality filtering and advanced search
  • βœ… Multi-creator support
  • βœ… Private, secure authentication

βš™οΈ Commands

bash
# List all content sources and status
swift-patterns-mcp sources

# Interactive onboarding/configuration wizard
swift-patterns-mcp setup

# Patreon integration
swift-patterns-mcp patreon setup     # Connect your Patreon account
swift-patterns-mcp patreon status    # Check connection status
swift-patterns-mcp patreon reset     # Clear authentication data

πŸ—ƒοΈ How It Works

mermaid
graph LR
    A[AI Assistant] --> B[swift-patterns-mcp Server]
    B --> C[Free Sources]
    B --> D[Premium Sources]
    C --> E[Swift by Sundell RSS]
    C --> F[Antoine van der Lee RSS]
    C --> G[Nil Coalescing RSS]
    C --> H[Point-Free GitHub]
    D --> I[Patreon API]

1. Query: Receives a query through the MCP protocol

2. Processing: Searches enabled sources based on the query

3. Content Retrieval: Fetches and parses content from RSS feeds, APIs, and cached data

4. Quality Filtering: Applies configurable quality thresholds

5. Response: Returns formatted, relevant patterns and examples

πŸ”§ Troubleshooting

Common Issues

Node version incompatible

bash
node --version  # Should be >= 18.0.0

Sources not returning results

bash
swift-patterns-mcp sources
ls ~/.swift-patterns-mcp/config.json

Patreon Integration Issues

OAuth redirect not working

  • Ensure redirect URI is exactly: `http://localhost:3000/patreon/callback`
  • Check no other process is using port 3000
  • Verify OAuth credentials are correctly set

No premium content showing

  • Confirm you have active Patreon subscriptions to iOS creators
  • Check status: `swift-patterns-mcp patreon status`
  • Re-authenticate: `swift-patterns-mcp patreon setup`

πŸ—ΊοΈ Roadmap

Current (v1.x)

  • [x] Core MCP server
  • [x] Swift by Sundell RSS
  • [x] Antoine van der Lee RSS
  • [x] Nil Coalescing RSS
  • [x] Patreon OAuth
  • [x] Point-Free GitHub
  • [ ] Advanced filtering

Future (v2.x)

  • [ ] Additional premium sources
  • [ ] More free sources
  • [ ] Code validation

🀝 Contributing

We welcome contributions! See our contributing guidelines.

πŸ“„ License

MIT License - Copyright (c) 2026 Lasha Efremidze

πŸ™ Credits

Created by Lasha Efremidze

Content Sources

Built with Model Context Protocol

Made with ❀️ for the Swift community

⭐ Star this repo β€’ πŸ› Report Bug β€’ ✨ Request Feature

Frequently asked questions

What is swift-patterns-mcp?

swift-patterns-mcp is An MCP server providing curated Swift and SwiftUI best practices from leading iOS sources.

How do I install swift-patterns-mcp?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is swift-patterns-mcp open source?

Yes β€” it is hosted on GitHub at https://github.com/efremidze/swift-patterns-mcp and has 12 stars.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP