AI代理控制核心包

MCPCore是一个通用的Swift包,提供用于Model Context Protocol(MCP)服务器的核心类型,支持在macOS/iOS应用中嵌入以实现AI代理控制和开发测试。

  • by crunchybananas
  • C
  • 本地部署
  • 更新于
在 GitHub 查看 crunchybananas/MCPCore

使用说明

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有意实现无依赖性,以最大限度地提高可移植性。

许可证

麻省理工学院