项目简介

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命令行工具项目中。

  1. 打开您的 'Package.swift' 文件。
  2. 在 'dependencies' 部分添加 AgentKit 仓库:
    dependencies: [
        .package(url: "https://github.com/sebsto/AgentKit", from: "1.0.0")
    ]
  3. 保存文件并让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与计算