
swift-sdk
The official Swift SDK for Model Context Protocol servers and clients. Maintained in collaboration with@loopwork-ai.
3 years
Works with Finder
10
Github Watches
28
Github Forks
348
Github Stars
MCP Swift SDK
Swift implementation of the Model Context Protocol (MCP).
Requirements
- Swift 6.0+ (Xcode 16+)
Platform Support
Platform | Minimum Version |
---|---|
macOS | 13.0+ |
iOS / Mac Catalyst | 16.0+ |
watchOS | 9.0+ |
tvOS | 16.0+ |
visionOS | 1.0+ |
Linux | ✓ |
Windows | ✓ |
[!IMPORTANT]
MCP's transport layer handles communication between clients and servers. The Swift SDK supports multiple transport mechanisms, with different platform availability:
StdioTransport
is available on Apple platforms and Linux distributions with glibc, such as Ubuntu, Debian, Fedora, CentOS, or RHEL.
NetworkTransport
is available only on Apple platforms.
Installation
Swift Package Manager
Add the following to your Package.swift
file:
dependencies: [
.package(url: "https://github.com/modelcontextprotocol/swift-sdk.git", from: "0.7.1")
]
Usage
Basic Client Setup
import MCP
// Initialize the client
let client = Client(name: "MyApp", version: "1.0.0")
// Create a transport and connect
let transport = StdioTransport()
try await client.connect(transport: transport)
// Initialize the connection
let result = try await client.initialize()
Basic Server Setup
import MCP
// Initialize the server with capabilities
let server = Server(
name: "MyServer",
version: "1.0.0",
capabilities: .init(
prompts: .init(),
resources: .init(
subscribe: true
),
tools: .init()
)
)
// Create transport and start server
let transport = StdioTransport()
try await server.start(transport: transport)
// Register method handlers
server.withMethodHandler(ReadResource.self) { params in
// Handle resource read request
let uri = params.uri
let content = [Resource.Content.text("Example content")]
return .init(contents: content)
}
// Register notification handlers
server.onNotification(ResourceUpdatedNotification.self) { message in
// Handle resource update notification
}
// Stop the server when done
await server.stop()
Working with Tools
// List available tools
let tools = try await client.listTools()
// Call a tool
let (content, isError) = try await client.callTool(
name: "example-tool",
arguments: ["key": "value"]
)
// Handle tool content
for item in content {
switch item {
case .text(let text):
print(text)
case .image(let data, let mimeType, let metadata):
// Handle image data
}
}
Working with Resources
// List available resources
let (resources, nextCursor) = try await client.listResources()
// Read a resource
let contents = try await client.readResource(uri: "resource://example")
// Subscribe to resource updates
try await client.subscribeToResource(uri: "resource://example")
// Handle resource updates
await client.onNotification(ResourceUpdatedNotification.self) { message in
let uri = message.params.uri
let content = message.params.content
// Handle the update
}
Working with Prompts
// List available prompts
let (prompts, nextCursor) = try await client.listPrompts()
// Get a prompt with arguments
let (description, messages) = try await client.getPrompt(
name: "example-prompt",
arguments: ["key": "value"]
)
Changelog
This project follows Semantic Versioning. For pre-1.0 releases, minor version increments (0.X.0) may contain breaking changes.
For details about changes in each release, see the GitHub Releases page.
License
This project is licensed under the MIT License.
相关推荐
Confidential guide on numerology and astrology, based of GG33 Public information
Embark on a thrilling diplomatic quest across a galaxy on the brink of war. Navigate complex politics and alien cultures to forge peace and avert catastrophe in this immersive interstellar adventure.
Converts Figma frames into front-end code for various mobile frameworks.
Advanced software engineer GPT that excels through nailing the basics.
Delivers concise Python code and interprets non-English comments
💬 MaxKB is a ready-to-use AI chatbot that integrates Retrieval-Augmented Generation (RAG) pipelines, supports robust workflows, and provides advanced MCP tool-use capabilities.
MCP server to provide Figma layout information to AI coding agents like Cursor
Python code to use the MCP3008 analog to digital converter with a Raspberry Pi or BeagleBone black.
Put an end to hallucinations! GitMCP is a free, open-source, remote MCP server for any GitHub project
The all-in-one Desktop & Docker AI application with built-in RAG, AI agents, No-code agent builder, MCP compatibility, and more.
Reviews

user_93NPwRkt
I've been using the Swift-SDK by ModelContextProtocol and I'm thoroughly impressed. The integration process was seamless, and the SDK provides robust features for swift application development. The documentation on their GitHub page is superb, making implementation straightforward even for new users. Highly recommend checking it out for any Swift projects!