一个全面的模型上下文协议(MCP)服务器,提供适用于 macOS 和 Linux 环境的 Swift 开发工具、调试功能以及项目管理特性。此服务器使AI助手能够与Swift项目、构建系统及开发工具进行交互。
swift_build - 使用配置选项构建Swift项目(调试/发布模式、特定目标、详细输出)swift_test - 运行Swift测试,支持过滤、并行执行控制及详细输出run_target - 执行特定的Swift目标,并可自定义参数debug_start - 启动Swift目标的调试会话debug_set_breakpoint - 设置断点,可选条件debug_step - 单步执行代码(跳过、进入、跳出)debug_continue - 继续执行直到下一个断点debug_inspect_variable - 检查变量并评估表达式get_package_info - 获取完整的Swift包信息及其依赖项print_dependency_public_api - 提取并显示任何依赖项的公共APIswiftly_install - 从不同渠道安装Swift工具链swiftly_list - 列出已安装的Swift工具链swiftly_list_available - 列出可安装的Swift版本swiftly_use - 在全局或项目级别之间切换Swift版本swiftly_run - 使用特定的Swift版本运行命令swiftly_uninstall - 移除Swift工具链swift://project/info - 当前项目的结构和信息swift://build/status - 构建状态和历史记录swift://debug/sessions - 活动的调试会话和断点swift_debug_session - 带有目标特定建议的引导式调试会话设置swift_build_analysis - 智能构建错误分析及解决方案建议克隆仓库:
git clone https://github.com/edgeengineer/swift-developer-mcp-server.git
cd swift-developer-mcp-server
构建并获取路径(自动复制到剪贴板):
make path
这将:
make build # 以发布模式构建服务器
make clean # 清理构建产物
make install # 安装到 /usr/local/bin
make help # 显示所有可用的目标
添加到你的Cursor设置(.cursor-settings/settings.json):
{
"mcp": {
"servers": {
"swift-developer": {
"command": "PASTE_PATH_FROM_CLIPBOARD_HERE",
"args": [],
"env": {}
}
}
}
}
添加到你的Windsurf配置(.windsurf/mcp_servers.json):
{
"servers": {
"swift-developer": {
"command": "PASTE_PATH_FROM_CLIPBOARD_HERE",
"args": [],
"env": {}
}
}
}
添加到你的Claude Desktop配置:
~/Library/Application Support/Claude/claude_desktop_config.json~/.config/claude/claude_desktop_config.json{
"mcpServers": {
"swift-developer": {
"command": "PASTE_PATH_FROM_CLIPBOARD_HERE",
"args": [],
"env": {}
}
}
}
添加到你的Claude Code配置(在终端应用中):
claude mcp add swift-developer PASTE_PATH_FROM_CLIPBOARD_HERE
添加到你的VS Code设置(.vscode/settings.json):
{
"claude-dev.mcpServers": {
"swift-developer": {
"command": "PASTE_PATH_FROM_CLIPBOARD_HERE",
"args": [],
"env": {}
}
}
}
💡 小贴士:运行
make path可获得每个客户端的预设配置示例!
使用swift_build工具以发布模式并带有详细输出构建当前项目。
使用swift_test工具并带有详细输出并行运行所有测试。
使用swift_debug_session提示为"MyApp"目标设置调试,重点关注"ViewController.swift"文件。
使用swiftly_list查看已安装的Swift版本,然后使用swiftly_use切换到Swift 5.9。
使用print_dependency_public_api并指定依赖项名称"Alamofire"来查看Alamofire依赖项的公共API。
访问swift://project/info资源以查看当前项目的结构和Package.swift内容。
swift-developer-mcp-server/
├── Package.swift # Swift包管理器配置
├── Makefile # 构建自动化和便利目标
├── Sources/
│ ├── main.swift # 服务器入口点和MCP处理器设置
│ ├── Utilities.swift # 常用类型和辅助函数
│ ├── BuildTestTools.swift # Swift构建和测试工具
│ ├── DebugTools.swift # 调试会话管理和工具
│ ├── PackageInfoTools.swift # Swift包信息工具
│ ├── SwiftlyTools.swift # Swiftly工具链管理
│ ├── Resources.swift # MCP资源(项目信息、构建状态等)
│ └── Prompts.swift # MCP提示(调试会话、构建分析)
└── README.md # 本文件
BuildTestTools.swift 用于构建和测试功能DebugTools.swift 用于调试功能PackageInfoTools.swift 用于包管理SwiftlyTools.swift 用于工具链管理main.swift 中的 ListTools 处理程序CallTool 的switch语句中你可以通过手动运行服务器并发送JSON-RPC消息来测试服务器:
swift run SwiftDeveloperMCPServer
然后通过标准输入发送初始化和工具调用消息。
该项目根据Apache 2.0许可证授权。详情见LICENSE文件。
“命令未找到”:
make path 以重建并获取正确的路径“权限被拒绝”:确保可执行文件具有适当的权限:
chmod +x .build/release/SwiftDeveloperMCPServer
# 或简单地运行 'make path',这会自动处理
Swift版本冲突:如果有多个安装,使用 swiftly 来管理Swift版本。
构建失败:
xcode-select --install
make path 命令将显示详细的构建错误信息配置问题:make path 命令提供了所有支持的AI客户端的预设配置示例。
要调试服务器本身,可以在 main.swift 文件中添加日志,或者使用详细输出运行它:
swift run -v SwiftDeveloperMCPServer
该仓库包括 ExampleLib/,这是一个带有异步斐波那契计算的完整Swift包,非常适合测试MCP服务器的调试能力。
导航到ExampleLib目录并使用标准Swift命令:
cd ExampleLib
# 构建库和可执行文件
swift build
# 运行演示应用程序
swift run ExampleApp
# 运行测试
swift test
ExampleLib项目提供了测试MCP服务器调试功能的绝佳场所。以下是测试完整调试工作流程的方法:
使用MCP服务器工具进行构建和测试:
使用swift_build工具:
- 目标: "ExampleApp"
- 项目路径: "/path/to/swift-developer-mcp-server/ExampleLib"
- 配置: "debug"
- 详细输出: true
使用swift_test工具:
- 项目路径: "/path/to/swift-developer-mcp-server/ExampleLib"
- 详细输出: true
启动ExampleApp的调试会话:
使用debug_start工具:
- 目标: "ExampleApp"
- 项目路径: "/path/to/swift-developer-mcp-server/ExampleLib"
- 参数: [] (可选)
这将:
在斐波那契计算的关键位置设置断点:
使用debug_set_breakpoint工具:
- 文件路径: "/path/to/ExampleLib/Sources/ExampleApp/main.swift"
- 行号: 89 (在performanceTest函数内)
- 会话ID: "your_session_id"
使用debug_set_breakpoint工具:
- 文件路径: "/path/to/ExampleLib/Sources/ExampleLib/FibonacciCalculator.swift"
- 行号: 37 (在calculate方法内)
- 会话ID: "your_session_id"
# 开始执行
使用debug_continue工具:
- 会话ID: "your_session_id"
# 当断点触发时单步执行代码
使用debug_step工具:
- 会话ID: "your_session_id"
- 单步类型: "over" (或 "into", "out")
FibonacciCalculator是一个actor,非常适合测试异步调试:
# 检查计算器actor
使用debug_inspect_variable工具:
- 会话ID: "your_session_id"
- 变量名: "calculator"
# 检查特定值
使用debug_inspect_variable工具:
- 会话ID: "your_session_id"
- 变量名: "result"
# 评估表达式
使用debug_inspect_variable工具:
- 会话ID: "your_session_id"
- 表达式: "await calculator.getCalculationCount()"
ExampleLib包含并发斐波那契计算,非常适合测试异步操作的调试:
# 在并发计算方法中设置断点
使用debug_set_breakpoint工具:
- 文件路径: "/path/to/ExampleLib/Sources/ExampleLib/FibonacciCalculator.swift"
- 行号: 57 (在calculateMultiple方法内)
- 会话ID: "your_session_id"
# 检查并发任务状态
使用debug_inspect_variable工具:
- 会话ID: "your_session_id"
- 变量名: "tasks"
测试异步actor中的缓存行为:
# 为缓存命中设置条件断点
使用debug_set_breakpoint工具:
- 文件路径: "/path/to/ExampleLib/Sources/ExampleLib/FibonacciCalculator.swift"
- 行号: 19 (缓存命中检查)
- 条件: "cached != nil"
- 会话ID: "your_session_id"
# 检查缓存状态
使用debug_inspect_variable工具:
- 会话ID: "your_session_id"
- 表达式: "await calculator.getCacheState()"
ExampleLib使用Swift测试框架。测试调试测试执行:
# 构建并运行测试,带调试
使用debug_start工具:
- 目标: "ExampleLibTests"
- 项目路径: "/path/to/ExampleLib"
# 在测试方法中设置断点
使用debug_set_breakpoint工具:
- 文件路径: "/path/to/ExampleLib/Tests/ExampleLibTests/FibonacciCalculatorTests.swift"
- 行号: 15 (在testBasicCalculations内)
- 会话ID: "your_session_id"
测试性能测试函数的调试:
# 在性能测试中设置断点
使用debug_set_breakpoint工具:
- 文件路径: "/path/to/ExampleLib/Sources/ExampleApp/main.swift"
- 行号: 95 (在performanceTest内)
- 会话ID: "your_session_id"
# 检查计时变量
使用debug_inspect_variable工具:
- 会话ID: "your_session_id"
- 变量名: "totalTime"
完成调试后始终清理调试会话:
使用debug_terminate工具:
- 会话ID: "your_session_id"
ExampleLib提供了这些调试场景:
当调试ExampleLib时,你应该看到:
调试会话成功启动。
会话ID: debug_12345678-1234-1234-1234-123456789abc
目标: ExampleApp
可执行文件: /path/to/ExampleLib/.build/debug/ExampleApp
断点成功设置。
文件: /path/to/ExampleLib/Sources/ExampleApp/main.swift
行号: 89
调试执行继续。
会话: debug_12345678-1234-1234-1234-123456789abc
命令: process launch
正在运行: true
变量检查结果。
会话: debug_12345678-1234-1234-1234-123456789abc
目标: calculator
这种综合测试方法验证了:
对于问题和功能请求,请在GitHub仓库上打开一个issue。