Token导航 LogoToken导航

MCP Server · 安全风控

Swift CLI MCP

一个轻量级的Swift库,用于构建基于stdio的Model Context Protocol (MCP)服务器,提供类型安全的工具、资源管理、提示模板和日志功能。

未说明官方级别未说明来源级核验工具 5
Swift资源管理安全

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
alexmx
提供方
alexmx

工具数量

5

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Swift CLI MCP 属于安全风控类 MCP Server,公开资料标注 5 个工具,通过传输方式未标注接入,客户端适配情况以官方文档为准,没有现成的安装命令;接入前要先准备 API Key。

分类

安全风控

传输方式

未说明

认证方式

API Key

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 5 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

公开资料仍需确认:安装命令

详细介绍

Swift CLI MCP

用于构建基于stdio的轻量级Swift库 模型上下文协议(MCP) 服务器。

特性

  • 类型安全工具 使用Codable参数验证、自动生成的模式,以及 @InputProperty 注释
  • 资源 用于公开文件和数据,支持URI模板
  • 提示 用于具有类型化参数的可重用提示模板
  • 日志记录 具有客户端控制的日志级别(logging/setLevel)
  • 并发请求处理 背压和请求取消
  • 平滑关闭 信号/信号情报
  • 完全符合JSON-RPC 2.0标准

安装

添加到您的 Package.swift:

dependencies: [
    .package(url: "https://github.com/alexmx/swift-cli-mcp.git", from: "1.0.0")
]

快速开始

import SwiftMCP

struct EchoArgs: MCPToolInput {
    @InputProperty("The message to echo")
    var message: String
}

let server = MCPServer(
    name: "my-tools",
    version: "1.0.0",
    tools: [
        .tool(name: "echo", description: "Echo a message") { (args: EchoArgs) in
            .text("Echo: \(args.message)")
        }
    ],
    resources: [
        .textResource(uri: "config://version", name: "Version", mimeType: "text/plain") { _ in
            "1.0.0"
        }
    ],
    prompts: [
        .prompt(name: "greet", description: "Generate a greeting", arguments: [
            .required(name: "name", description: "Name to greet")
        ]) { args in
            .userMessage("Say hello to \(args["name"]!)")
        }
    ]
)

await server.run()

架构是从自动生成的 EchoArgs --属性类型、必填字段和描述都是从结构定义中推断出来的。

工具

键入参数 @InputProperty

使用 @InputProperty 将描述与您的房产放在同一位置。模式是自动生成的——属性类型是推断出来的(String → "string", Int → "integer", Bool → "boolean", Double → "number")非可选属性标记为必填项:

struct ListFilesArgs: MCPToolInput {
    @InputProperty("Directory path")
    var path: String

    @InputProperty("Include subdirectories")
    var recursive: Bool?
}

.tool(name: "list_files", description: "List files in a directory") { (args: ListFilesArgs) in
    let files = try FileManager.default.contentsOfDirectory(atPath: args.path)
    return .text(files.joined(separator: "\n"))
}

简单工具

对于没有参数或只有一个字符串参数的工具:

// No arguments
.tool(name: "ping", description: "Check server status") {
    .text("pong")
}

// Single string argument
.tool(name: "echo", description: "Echo a message", argumentName: "message", argumentDescription: "The message to echo") { message in
    .text("Echo: \(message)")
}

手动模式

覆盖自动生成以实现完全控制:

.tool(
    name: "list_files",
    description: "List files in a directory",
    schema: MCPSchema(
        properties: [
            "path": .string("Directory path"),
            "recursive": .boolean("Include subdirectories")
        ],
        required: ["path"]
    )
) { (args: ListFilesArgs) in
    let files = try FileManager.default.contentsOfDirectory(atPath: args.path)
    return .text(files.joined(separator: "\n"))
}

多个内容块

在单个响应中返回多个内容项:

.tool(name: "report", description: "Generate report") { (args: ReportArgs) in
    .content([
        .text("# Report\n\nGenerated at \(Date())"),
        .text("Status: Complete"),
        .image(data: chartData, mimeType: "image/png")
    ])
}

错误处理

错误会被自动捕获并返回给客户端:

.tool(name: "divide", description: "Divide two numbers") { (args: DivideArgs) in
    guard args.b != 0 else {
        throw NSError(domain: "math", code: 1, userInfo: [NSLocalizedDescriptionKey: "Division by zero"])
    }
    return .text("Result: \(args.a / args.b)")
}

类型不匹配和缺少必填字段将自动验证。

资源

公开文件、日志或动态数据:

// Text resource — handler returns String, URI plumbed automatically
.textResource(uri: "file:///logs/app.log", name: "Application Log", mimeType: "text/plain") { _ in
    try String(contentsOfFile: "/var/log/app.log")
}

// Binary resource — handler returns Data, URI plumbed automatically
.blobResource(uri: "img://logo", name: "Logo", mimeType: "image/png") { _ in
    try Data(contentsOf: URL(fileURLWithPath: "/assets/logo.png"))
}

// Full handler when you need custom MCPResourceContents
.resource(uri: "system://stats", name: "System Stats", mimeType: "application/json") {
    let stats = """
    {"cpu": \(ProcessInfo.processInfo.processorCount)}
    """
    return .text(uri: "system://stats", stats, mimeType: "application/json")
}

资源模板

通告客户端可以填写的URI模式(RFC 6570):

resourceTemplates: [
    .template(uriTemplate: "file:///{path}", name: "Project Files", mimeType: "text/plain"),
    .template(uriTemplate: "db:///{table}/{id}", name: "Database Records")
]

提示

定义具有类型化参数的可重用提示模板:

.prompt(
    name: "code_review",
    description: "Review code for issues",
    arguments: [
        .required(name: "code", description: "The code to review"),
        .optional(name: "language", description: "Programming language")
    ]
) { args in
    let code = args["code"] ?? ""
    let lang = args["language"] ?? "unknown"
    return .userMessage(
        "Review this \(lang) code for bugs and improvements:\n\n```\(lang)\n\(code)\n```",
        description: "Code review prompt"
    )
}

多消息提示

.prompt(name: "interview", description: "Technical interview") { _ in
    .result(messages: [
        .user("Ask me a technical question about Swift concurrency."),
        .assistant("I'll ask you about structured concurrency and actors.")
    ])
}

日志记录

向客户端发送日志

await server.sendLog(level: .info, message: "Processing started")
await server.sendLog(level: .warning, message: "Resource usage high", logger: "monitor")

客户端可以通过以下方式控制最低日志级别 logging/setLevel。低于最低值的邮件将自动过滤。

可用级别(按严重程度): debug, info, notice, warning, error, critical, alert, emergency

自定义服务器日志记录

控制内部服务器日志的位置:

let server = MCPServer(
    name: "my-server",
    version: "1.0.0",
    tools: [...],
    logHandler: { message in
        print("[\(Date())] \(message)")
    }
)

并发

请求是并发分派的,因此缓慢的工具处理程序不会阻止其他请求。服务器应用具有最大并发限制(16)的背压,并支持通过以下方式取消请求 notifications/cancelled.

模式

使用类型化属性定义架构:

MCPSchema(
    properties: [
        "name": .string("User's name"),
        "age": .integer("User's age"),
        "active": .boolean("Account status"),
        "score": .number("Performance score")
    ],
    required: ["name"]
)

合并可重用属性的架构:

let base = MCPSchema(properties: ["apiKey": .string("API key")], required: ["apiKey"])
let extended = base.merging(MCPSchema(properties: ["timeout": .integer("Timeout")]))

支持的MCP方法

方法说明
initialize服务器信息和功能
ping健康检查
tools/list列出可用工具
tools/call执行工具
resources/list列出可用资源
resources/read阅读资源
resources/templates/list列出URI模板
prompts/list列出可用提示
prompts/get获取渲染提示
logging/setLevel设置最低日志级别
notifications/cancelled取消飞行中的请求

需求

  • Swift 6.0+
  • macOS 15.0+

资源

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

工具与能力

工具数量

5

资源数量

0

提示词数量

0

能力标签

Swift本地部署Swift库MCP服务器类型安全工具资源管理日志功能

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

资产与漏洞排查

批量查询资产和漏洞信息,输出待修清单。

日志审计

从日志里筛出异常访问和高风险操作。

合规检查

按规则核对配置项,记录不符合项。

选择建议

值得选的地方

  • 只提供 5 个工具,职责集中,接入后不容易误操作。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 需要自备API Key,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在安全风控场景里让模型直接调用外部能力的人。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 暂时拿不到API Key的人。
  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Swift CLI MCP

MCP World · 本页

5未说明未标注1 个2026-05-17
Modelcontextprotocol C22988b0

MCP World

0stdio有1 个2026-05-17
Hexstrike AI

MCP World

0stdio有1 个2026-05-17
Cyber Strike AI

MCP World

75未说明未标注1 个2026-05-17
MCP Scan

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Swift CLI MCP 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

Swift CLI MCP 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Swift CLI MCP 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Swift CLI MCP 需要 API Key 吗?

公开资料标注的认证方式是API Key,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Swift CLI MCP 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP