项目简介
AgentKit是一个Swift框架,旨在简化AI智能体的开发。它不仅允许智能体利用Amazon Bedrock模型进行对话、使用本地工具执行操作,还提供了强大的功能,可以将这些工具和自定义的Prompt模板打包,作为遵循Model Context Protocol (MCP) 的服务器对外提供服务。这意味着其他LLM客户端可以连接到由AgentKit创建的MCP服务器,远程调用其托管的工具和获取预定义的Prompt。
主要功能点
- MCP服务器创建: 能够将Swift中定义的工具和Prompt模板封装成一个完整的MCP服务器。
- 多种传输协议: 支持通过标准输入/输出(Stdio)或HTTP协议运行MCP服务器,方便不同的部署和集成场景。
- 工具托管: 允许开发者定义各种复杂的工具(例如天气查询、计算器、汇率转换),并在MCP服务器上注册,供外部LLM调用。
- Prompt模板管理: 支持定义和渲染自定义的Prompt模板,为LLM客户端提供可复用的交互模式。
安装步骤
AgentKit是一个Swift包,可以通过Swift Package Manager添加到您的Xcode项目或Swift命令行工具项目中。
- 打开您的 'Package.swift' 文件。
- 在 'dependencies' 部分添加 AgentKit 仓库:
dependencies: [ .package(url: "https://github.com/sebsto/AgentKit", from: "1.0.0") ] - 保存文件并让Xcode或Swift Package Manager解析依赖。
服务器配置
MCP客户端需要知道如何启动或连接到MCP服务器。以下是配置MCP客户端连接AgentKit MCP服务器的JSON示例及说明。请根据您的服务器实际部署方式进行调整。
{ "mcpServers": { "my-stdio-server": { "command": "./MyMCPServerExecutable", "args": [], "disabled": false, "timeout": 60000, "description": "通过Stdio协议与MCP客户端通信的本地工具服务器,假设MyMCPServerExecutable是您编译后的MCP服务器可执行文件。" }, "my-http-server": { "url": "http://127.0.0.1:8080/mcp", "disabled": false, "timeout": 60000, "description": "通过HTTP协议与MCP客户端通信的远程工具服务器,监听8080端口的/mcp路径。" } } }
参数说明:
- 'my-stdio-server' / 'my-http-server': 服务器的唯一名称。
- 'command': (仅适用于Stdio或本地进程服务器)服务器可执行文件的路径。
- 'args': (仅适用于Stdio或本地进程服务器)传递给服务器可执行文件的命令行参数数组。
- 'url': (仅适用于HTTP或其他网络协议服务器)服务器的完整URL地址。
- 'disabled': (可选) 是否禁用此服务器配置,'true' 为禁用。
- 'timeout': (可选) 客户端等待服务器响应的超时时间(毫秒)。
- 'description': 配置的简要说明。
基本使用方法
在您的Swift代码中,您可以创建并运行一个MCP服务器来暴露您的工具和Prompt。
1. 创建并运行一个Stdio MCP服务器(推荐用于本地集成或作为独立进程):
import AgentKit // 假设您已经定义了 WeatherTool 和 CalculatorTool // 例如: // @Tool(name: "weather", description: "Get weather for a city.") // struct WeatherTool { /* ... */ } // @Tool(name: "calculator", description: "Performs arithmetic operations") // struct CalculatorTool { /* ... */ } @main struct MyStdioMCPServerApp { static func main() async throws { // 创建一个MCP服务器,名称为"MyToolServer",版本"1.0.0" // 使用Stdio传输协议,并注册您定义的工具 try await MCPServer.withMCPServer( name: "MyToolServer", version: "1.0.0", transport: .stdio, tools: [ WeatherTool(), // 您的天气工具 CalculatorTool() // 您的计算器工具 ] ) { server in // 启动服务器,它将监听标准输入,并通过标准输出进行响应 try await server.run() } } }
要运行此服务器,您需要编译您的Swift项目,然后执行生成的可执行文件。例如,如果可执行文件名为 'MyStdioMCPServerApp',则在终端运行 './MyStdioMCPServerApp'。
2. 创建并运行一个HTTP MCP服务器(推荐用于网络服务):
import AgentKit // 假设您已经定义了 WeatherTool 和 FXRateTool @main struct MyHttpMCPServerApp { static func main() async throws { // 创建一个MCP服务器,使用HTTP传输协议,监听8080端口 try await MCPServer.withMCPServer( name: "MyToolServer", version: "1.0.0", transport: .http(port: 8080), tools: [ WeatherTool(), FXRateTool() // 您的汇率工具 ] ) { server in // 启动HTTP服务器 try await server.run() } } }
运行此服务器后,它将通过 'http://127.0.0.1:8080/mcp' 地址提供MCP服务。
3. 包含Prompt模板的服务器: 您也可以在服务器中定义并注册Prompt模板,供客户端请求。
import AgentKit let weatherPrompt = try! MCPPrompt.build { builder in builder.name = "current-weather" builder.description = "Get current weather for a city" builder.text("What is the weather today in {city}?") builder.parameter("city", description: "The name of the city") } @main struct MyServerWithPromptsApp { static func main() async throws { try await MCPServer.withMCPServer( name: "MyToolServer", version: "1.0.0", transport: .stdio, tools: [WeatherTool()], prompts: [weatherPrompt] // 注册Prompt模板 ) { server in try await server.run() } } }
信息
分类
AI与计算