Skip to main content
Glama
efremidze

swift-patterns-mcp

swift-patterns-mcp

MCP Badge

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:

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 Sources

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.

πŸ“‹ 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

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

npx -y swift-patterns-mcp@latest setup

If installed globally, you can also run:

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)

# 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:

{ "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:

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

Or 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.

Windsurf

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.

VS Code

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.

Test It Out

Try these queries:

"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:

{ "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:

{ "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:

{ "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.

Environment Variables (Optional)

Patreon

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" } } } }

πŸ’‘ Usage Examples

Basic Queries

"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

"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

"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:

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

# 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

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

node --version # Should be >= 18.0.0

Sources not returning results

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)

  • Core MCP server

  • Swift by Sundell RSS

  • Antoine van der Lee RSS

  • Nil Coalescing RSS

  • Patreon OAuth

  • 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

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/efremidze/swift-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server