
cocoanetics/swiftmcp
Developer toolsЭта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
cocoanetics/swiftmcp — это кандидат на сервер MCP, импортированный из https://github.com/cocoanetics/swiftmcp.
Обзор
cocoanetics/swiftmcp — это кандидат на сервер MCP, импортированный из https://github.com/cocoanetics/swiftmcp.
Обзор (машинный перевод)
Swift-реализация MCP (Model Context Protocol) для JSON-RPC на различных транспортах.
Особенности
- Множество вариантов транспортировки
- Стандартный ввод/вывод (stdio) для использования в командной строке
- HTTP+SSE (Server-Sent Events) для веб-приложений
- TCP+Bonjour для локального обнаружения по сырому TCP
- JSON-RPC 2.0, совместимый с генерацией OpenAPI.
- Встроенная авторизация и необязательная валидация OAuth
- Прозрачный OAuth прокси для MCP и OpenAPI
- Кроссплатформенная совместимость
Функции сервера
- Tools – экспонирование функций с
@MCPTool - Ресурсы – публикация данных с помощью
@MCPResource - Подсказки – подсказки для строительства с использованием
@MCPPrompt - Коммунальные услуги
- Уведомления о прогрессе через
RequestContext.current - Структурированное логирование через
Session.current - Предложения по завершению параметров (по умолчанию для
BoolиCaseIterable)
Клиентские функции
- Roots – динамические корни файловой системы, объявленные клиентом
- Сэмплинг – запрос небольших предпросмотров клиентских файлов
Установка
Добавьте SwiftMCP как зависимость в вашем Package.swift:
Черты упаковки
Эта страница переведена автоматически. Технические детали смотрите в оригинале.
README
Показан фрагмент оригинального README. Открыть оригинал.
SwiftMCP
A Swift implementation of the MCP (Model Context Protocol) for JSON-RPC over various transports.
Features
- Multiple transport options
- Standard I/O (stdio) for command-line usage
- HTTP+SSE (Server-Sent Events) for web applications
- TCP+Bonjour for local discovery over raw TCP
- JSON-RPC 2.0 compliant with OpenAPI generation
- Built-in authorization and optional OAuth validation
- Transparent OAuth proxy mode for MCP and OpenAPI
- Cross-platform compatibility
Server Features
- Tools – expose functions with
@MCPTool - Resources – publish data with
@MCPResource - Prompts – build prompts using
@MCPPrompt - Utilities
- Progress notifications via
RequestContext.current - Structured logging streamed through
Session.current - Completion suggestions for parameters (defaults for
BoolandCaseIterable)
- Progress notifications via
Client Features
- Roots – dynamic filesystem roots announced by the client
- Sampling – request small previews of client files
Installation
CI builds and tests with Swift 6.4 across macOS, iOS, Linux, Windows, and Android. Apple CI lanes use Xcode 27.1; Linux, Windows, and Android use Swift 6.4.2.
Add SwiftMCP as a dependency in your Package.swift:
dependencies: [
.package(url: "https://github.com/Cocoanetics/SwiftMCP.git", branch: "main")
]
Package traits
SwiftMCP exposes its optional feature areas as SwiftPM package traits, all enabled by default — existing consumers and a plain swift build are unaffected. The single import SwiftMCP module is unchanged.
| Trait | Enables | Extra dependencies |
|---|---|---|
Server |
HTTP/SSE + TCP server transports | swift-nio, swift-crypto, swift-certificates |
Client |
The MCP client (MCPServerProxy) |
— |
OpenAPI |
OpenAPI / AI-plugin manifest models and routes | — |
The tool/schema foundation — JSONValue, JSONSchema, MCPToolProviding, the @MCPTool / @MCPServer macros, errors — is always-on core and needs no trait.
Disabling Server drops swift-nio (and swift-crypto/swift-certificates) entirely, which makes the package build on Windows and gives client/tools-only consumers a lighter graph. A consumer that only talks to remote MCP servers selects just what it needs (your manifest must be swift-tools-version: 6.1 or newer to choose traits):
.package(
url: "https://github.com/Cocoanetics/SwiftMCP.git",
branch: "main",
traits: ["Client"] // tool/schema core + client, no swift-nio
)
AppIntents bridging (
@MCPAppIntentTool, AppShortcuts discovery) is not a trait: it is already gated by#if canImport(AppIntents), so it is automatically excluded on platforms without AppIntents (Linux, Windows, Android).
Usage
Command Line Demo
The included demo application shows how to use SwiftMCP with different transport options:
Установка
This server does not publish a one-line install command.
Open the repository installation guide Новичок в MCP? Начните с руководства на mcpskill.org →