返回市场
苹果基础MCP工具

苹果基础MCP工具

作者:airy109 星标更新:2025-09-16

项目介绍

AppleFoundationMCPTool

一个Swift包,作为Apple的FoundationModels框架与实现模型上下文协议(MCP)的任何服务器之间的动态桥梁。

关于此项目的说明

该项目主要由AI代理开发,旨在展示如何将Apple的FoundationModels框架与模型上下文协议(MCP)集成。

尽管功能正常,但应将其视为概念验证而非生产就绪解决方案。实际效用目前受到FoundationModels框架中可用模型上下文大小的限制,这使得模型难以有效地使用具有复杂输入模式或长描述的工具。

概述

随着macOS 26.0引入新的设备上AI能力,Apple的FoundationModels框架提供了一种强大的方式来与大型语言模型进行交互。通过利用开放标准的模型上下文协议,本项目使该新框架能够与更广泛的工具和服务器生态系统进行通信。

AppleFoundationMCPTool在运行时发现MCP服务器上的可用工具,并动态创建相应的FoundationModels.Tool对象。这允许FoundationModels会话中的LLM看到并执行外部工具,而无需在编译时了解其具体细节。

功能

  • 动态工具桥接:自动发现并封装MCP工具以供FoundationModels使用。
  • 灵活连接:支持通过两种方法连接到MCP服务器:
    • HTTP/SSE:连接到给定URL的远程MCP服务器。
    • Stdio:启动本地MCP服务器可执行文件并通过标准输入输出与其通信。
  • 进程管理:当使用stdio连接时,自动管理服务器进程的生命周期。
  • 现代且类型安全:使用现代Swift并发(async/await)构建,并利用最新的FoundationModelsAPI。

要求

  • macOS 26.0+
  • Swift 6.0+
  • 符合MCP规范的服务器或服务器可执行文件。

使用

此库的主要入口点是MCPToolBridge类。

1. 添加包依赖

在您的Package.swift文件中添加以下内容:

dependencies: [
    .package(url: "https://github.com/your-username/AppleFoundationMCPTool.git", from: "1.0.0")
]

然后将依赖项添加到您的目标中:

.target(
    name: "YourTarget",
    dependencies: [
        "AppleFoundationMCPTool"
    ]
)

2. 初始化桥梁

您可以根据服务器设置以两种方式之一初始化MCPToolBridge

选项A:连接到HTTP服务器

如果您有一个正在监听特定URL的MCP服务器,请使用此方法。

import AppleFoundationMCPTool
import Foundation

let serverURL = URL(string: "http://127.0.0.1:8000/mcp")!
let bridge = MCPToolBridge(serverURL: serverURL)

选项B:启动本地可执行文件(Stdio)

使用此方法可以让桥梁启动并管理本地MCP服务器可执行文件,并通过stdin/stdout与其通信。

import AppleFoundationMCPTool

let serverPath = "/path/to/your/mcp_server_executable"
let bridge = MCPToolBridge(executablePath: serverPath)

3. 连接并使用工具

一旦桥梁被初始化,您就可以连接到服务器,发现其工具并在FoundationModels会话中使用它们。

import FoundationModels

// 假设您有一个SessionManager或其他类似的类来管理LLM会话
let session = Session() // 您的FoundationModels会话对象

do {
    // 连接到服务器并获取动态创建的Apple Foundation工具
    let appleTools = try await bridge.connectAndDiscoverTools()
    print("成功发现\(appleTools.count)个工具。")

    // 注册发现的工具到您的会话
    for tool in appleTools {
        session.addTool(tool)
    }

    // 您现在可以使用会话,LLM将能够看到并调用这些工具。
    let response = try await session.prompt("使用'add'工具计算5 + 7。")
    print(response)

} catch {
    print("发生错误:\(error.localizedDescription)")
}

// 完成后别忘了断开连接。
// 如果桥梁启动了服务器进程,这也将终止该进程。
await bridge.disconnect()

示例目标

此项目包括两个可执行目标以演示其功能。

AppleFoundationMCPToolChat(推荐示例)

这是一个完全交互式的命令行聊天应用程序,展示了桥梁的端到端功能。它连接到MCP服务器,注册发现的工具,并允许您与能够使用这些工具的LLM进行聊天。

如何运行

  1. 修改main.swift:打开Sources/AppleFoundationMCPToolChat/main.swift并配置MCPToolBridge初始化以指向您的MCP服务器(通过URL或可执行文件路径)。
  2. 从命令行运行
    swift run AppleFoundationMCPToolChat
    

AppleFoundationMCPToolExample

此目标包含各种概念性代码片段。它不是一个完整的示例,更像是一个草稿,展示了库组件的不同使用方式。对于实用的工作演示,请参考AppleFoundationMCPToolChat示例。