MCPCore
一个通用的Swift包,为模型上下文协议(MCP)服务器提供核心类型。设计用于嵌入任何macOS/iOS应用程序,以在开发过程中实现AI代理控制和测试。
目的
MCPCore为构建基于MCP的自动化提供了基础类型:
- JSON-RPC 2.0协议类型 用于通信
- 代理编排类型 (角色、模型、状态)
- 链模板 用于多代理工作流
- 数据传输对象 用于持久性抽象
安装
将MCPCore添加为Swift包依赖项:
dependencies: [
.package(url: "https://github.com/crunchybananas/MCPCore.git", from: "1.0.0")
]然后添加 MCPCore 目标的依赖关系:
.target(name: "YourApp", dependencies: ["MCPCore"])建筑边界
MCPCore中有什么(通用)
| 模块 | 类型 | 目的 |
|---|---|---|
| JSONRPC | JSONRPCRequest, JSONRPCResponse, JSONRPCError, JSONRPCId, JSONRPCParams, AnyCodable | 协议通信 |
| 工具定义 | MCPToolCategory, MCPToolGroup, MCPToolDefinition, MCPToolPermission | 工具元数据 |
| 代理类型 | MCPAgentRole, MCPAgentType, MCPAgentState, MCPFrameworkHint | 代理配置 |
| 副模型 | MCPCopilotModel, MCPModelFamily | AI模型选择 |
| 链模板 | MCPChainTemplate, MCPAgentStepTemplate | 工作流定义 |
| MCP数据类型 | MCPRunRecordDTO, MCPRunResultDTO, MCPChainRunStatus, MCPServerStatus | 数据传输 |
| MCP数据存在 | MCPDataPersisting 协议, MCPNullDataStore | 持久性抽象 |
主机应用程序中有什么(特定于应用程序)
| 组成部分 | 责任 |
|---|---|
| MCP服务器 | HTTP服务器、请求路由、工具调度 |
| 工具实现 | 实际工具逻辑(文件操作、git等) |
| 代理执行 | CLI调用、进程管理 |
| 验证配置 | 特定于应用程序的验证规则 |
| SwiftData模型 | 持久存储实施 |
| UI | 视图、导航、用户交互 |
公共API
代理角色
public enum MCPAgentRole: String, Codable {
case planner // Read-only: analyze, plan
case implementer // Full access: edit files, run commands
case reviewer // Read-only: review changes
var systemPrompt: String // Role-specific instructions
var canWrite: Bool // Permission check
var deniedTools: [String] // Tools to block
}AI模型
public enum MCPCopilotModel: String, Codable, CaseIterable {
case claudeSonnet45, claudeHaiku45, claudeOpus45, claudeSonnet4
case gpt51CodexMax, gpt51Codex, gpt52, gpt51, gpt5, gpt51CodexMini, gpt5Mini, gpt41
case gemini3Pro
var displayName: String
var premiumCost: Double // 0 = free tier
var isFree: Bool
var family: MCPModelFamily
}链模板
public struct MCPChainTemplate: Identifiable, Codable {
let id: UUID
var name: String
var description: String
var steps: [MCPAgentStepTemplate]
var isBuiltIn: Bool
static var builtInTemplates: [MCPChainTemplate] // 7 generic templates
}数据持久化
public protocol MCPDataPersisting: Sendable {
func saveRunRecord(_ record: MCPRunRecordDTO) async throws
func loadRunRecords(limit: Int) async throws -> [MCPRunRecordDTO]
func saveRunResult(_ result: MCPRunResultDTO) async throws
func loadRunResults(forChainId: UUID) async throws -> [MCPRunResultDTO]
}内置模板
| 模板 | 步骤 | 成本 |
|---|---|---|
| 代码审查 | 计划器→ 执行者→ 审阅者 | ~2倍溢价 |
| 快速修复 | 计划器→ 实施者 | ~2倍溢价 |
| 免费评论 | 规划师→ 执行者→ 审稿人(全部免费) | 免费 |
| 深度分析 | 规划师(Opus) | 3倍溢价 |
| 多实施者 | 计划者→ 2 实施者 | ~2倍溢价 |
| 并行验证 | 计划器→ 2 实施者→ 审阅者 | ~2倍溢价 |
| 并行验证(免费) | 与免费模型相同 | 免费 |
用法示例
import MCPCore
// Use type aliases for cleaner code
typealias AgentRole = MCPAgentRole
typealias CopilotModel = MCPCopilotModel
// Create a custom template
let template = MCPChainTemplate(
name: "Custom Workflow",
description: "My app's workflow",
steps: [
MCPAgentStepTemplate(role: .planner, model: .claudeSonnet45, name: "Analyzer"),
MCPAgentStepTemplate(role: .implementer, model: .gpt41, name: "Worker")
]
)
// Implement persistence for your app
final class MyDataStore: MCPDataPersisting {
func saveRunRecord(_ record: MCPRunRecordDTO) async throws {
// Save to your database
}
// ... other methods
}平台要求
- macOS 26.0+
- iOS 26.0+
- Swift 5.9+
依赖项
没有。MCPCore有意实现无依赖性,以最大限度地提高可移植性。
许可证
麻省理工学院
