MCPServerKit 工具包
一个可重用的Swift包,用于在macOS/iOS应用程序中嵌入MCP(模型上下文协议)服务器。
特性
- JSON-RPC 2.0 HTTP服务器 连接管理
- 工具注册表 用于注册和分发工具定义
- 配置抽象 用于灵活的设置存储
- 工具处理程序协议 配备便利助手
- 局域网模式 支持网络访问控制
安装
将MCPServerKit添加为Swift包依赖项:
dependencies: [
.package(url: "https://github.com/crunchybananas/MCPServerKit.git", from: "1.0.0")
]然后添加 MCPServerKit 目标的依赖关系:
.target(name: "YourApp", dependencies: ["MCPServerKit"])MCPServerKit会自动引入MCPCore作为传递依赖。
快速开始
import MCPServerKit
// Create server with registry
let registry = MCPToolRegistry()
let server = MCPServer(port: 8765, registry: registry)
// Register tool definitions
registry.register(MCPToolDefinition(
name: "my.tool",
description: "Does something useful",
inputSchema: ["type": "object", "properties": [:]],
category: .state,
isMutating: false
))
// Register tool handler
registry.register(handler: MyToolHandler())
// Start server
server.start()建筑
MCP服务器
主服务器类处理:
- 可配置端口上的TCP侦听器
- HTTP请求解析
- JSON-RPC 2.0协议
- 连接生命周期
- 局域网模式实施
MCPToolRegistry
管理工具定义和处理程序:
- 注册/查找工具定义
- 注册工具处理程序
- 权限检查
- 工具/列表响应构建
MCP工具处理
实现工具处理程序的协议:
@MainActor
public protocol MCPToolHandling: AnyObject {
var supportedTools: Set { get }
func handle(name: String, id: Any?, arguments: [String: Any]) async -> (Int, Data)
}MCPServer配置提供
配置存储协议:
@MainActor
public protocol MCPServerConfigProviding {
func bool(forKey: String, default: Bool) -> Bool
func integer(forKey: String, default: Int) -> Int
func string(forKey: String, default: String) -> String
// ... setters
}默认实现 MCPUserDefaultsConfig 使用UserDefaults。
自定义请求处理
对于特定于应用程序的方法,请使用 onRequest 回拨:
server.onRequest = { method, id, params in
switch method {
case "myapp.customMethod":
return (200, JSONRPCResponseBuilder.makeResult(id: id, result: ["ok": true]))
default:
return nil // Fall through to built-in handling
}
}平台要求
- macOS 15.0+
- iOS 18.0+
- Swift 6.0+
依赖项
- MCPCore(类型和JSON-RPC实用程序)
