CS

cocoanetics/swiftmcp

Developer tools

Эта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал

165 stars 19 forks Качество 68 Тренд 37BSD-2-Clause

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 Bool and CaseIterable)

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:

Открыть полный README на GitHub

Установка

This server does not publish a one-line install command.

Open the repository installation guide Новичок в MCP? Начните с руководства на mcpskill.org →