An MCP server providing curated Swift and SwiftUI best practices from leading iOS developers β with intelligent search, persistent memory, and optional premium integrations.
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.
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)
- 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
- π 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
These sources are publicly available but benefit from MCP's fetching, caching, and search capabilities:
| Source | Content Type | Updates |
|---|---|---|
| Swift by Sundell | Articles, patterns, best practices | Weekly |
| SwiftLee | Tutorials, tips, deep dives | Weekly |
| Nil Coalescing | SwiftUI patterns, Swift tips | Weekly |
| Point-Free | Open-source libraries, patterns | On release |
Premium content requires OAuth authentication and active subscriptions:
| Source | What You Get | Authentication |
|---|---|---|
| Patreon | Premium content from supported creators | OAuth 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.
- Node.js 18.0.0 or higher
- MCP-Compatible AI Assistant: Claude Desktop, Cursor, Windsurf, VS Code with Copilot, or Claude Code
npx -y swift-patterns-mcp@latestIn an interactive terminal, this opens the setup wizard.
When launched by an MCP client (non-interactive stdio), it runs as the MCP server automatically.
npx -y swift-patterns-mcp@latest setupIf installed globally, you can also run:
swift-patterns-mcp setupThe wizard helps you choose:
- Config scope (local project vs global)
- MCP client (Cursor, Claude Code, Windsurf, VS Code)
- Optional Patreon setup prompt
# 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 --globalUse --global (-g) or --local (-l) to skip the location prompt.
Use --cursor, --claude, --windsurf, --vscode, or --all to skip the client prompt.
Or manually add to Cursor Settings β Tools β MCP Servers:
.cursor/mcp.json:
{
"mcpServers": {
"swift-patterns": {
"command": "npx",
"args": ["-y", "swift-patterns-mcp@latest"]
}
}
}Alternatively, add to ~/.cursor/mcp.json. See Cursor documentation for details.
Run in your terminal:
claude mcp add swift-patterns -- npx -y swift-patterns-mcp@latestOr manually add to .mcp.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.
Add to .windsurf/mcp.json:
{
"mcpServers": {
"swift-patterns": {
"command": "npx",
"args": ["-y", "swift-patterns-mcp@latest"]
}
}
}Restart Windsurf to activate. See Windsurf MCP documentation for details.
Add to .vscode/mcp.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.
Try these queries:
"Show me SwiftUI animation patterns"
"What does Sundell say about testing?"
"Explain navigation patterns in SwiftUI"
Configuration is automatically created at ~/.swift-patterns-mcp/config.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.
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:
{
"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:
- MiniSearch: Fast lexical search within current session
- Semantic recall: Activates for poor lexical results (in-session)
- Memvid: Cross-session persistent memory and recall
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:
{
"semanticRecall": {
"enabled": false, // Enable semantic recall
"minLexicalScore": 0.35, // Activate when keyword search < 0.35
"minRelevanceScore": 70 // Only index patterns with score >= 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.
All three variables are required for Patreon content fetching:
| Variable | Description |
|---|---|
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:
{
"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"
}
}
}
}"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"
"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"
"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"
Access premium content from iOS creators you support:
swift-patterns-mcp patreon setupFollow the interactive wizard to:
- Verify environment variables are configured
- Complete OAuth authentication
- Fetch and verify content from your subscriptions
π Detailed Guide: Patreon Setup Documentation
- 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
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.
- β 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
# 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 datagraph 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]
- Query: Receives a query through the MCP protocol
- Processing: Searches enabled sources based on the query
- Content Retrieval: Fetches and parses content from RSS feeds, APIs, and cached data
- Quality Filtering: Applies configurable quality thresholds
- Response: Returns formatted, relevant patterns and examples
Node version incompatible
node --version # Should be >= 18.0.0Sources not returning results
swift-patterns-mcp sources
ls ~/.swift-patterns-mcp/config.jsonOAuth 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
- Core MCP server
- Swift by Sundell RSS
- Antoine van der Lee RSS
- Nil Coalescing RSS
- Patreon OAuth
- Point-Free GitHub
- Advanced filtering
- Additional premium sources
- More free sources
- Code validation
We welcome contributions! See our contributing guidelines.
MIT License - Copyright (c) 2026 Lasha Efremidze
Created by Lasha Efremidze
Content Sources
- John Sundell - Swift by Sundell
- Antoine van der Lee - SwiftLee
- Nil Coalescing - SwiftUI patterns and Swift tips
- Point-Free - Advanced Swift education
Built with Model Context Protocol
Made with β€οΈ for the Swift community
β Star this repo β’ π Report Bug β’ β¨ Request Feature