!!! 此项目正在积极开发中,可能会出现意外问题
MCPXcode 是一个开源实现,用于在 Xcode 中集成 模型上下文协议 (MCP)。它通过提供一种结构化的协议来实现在 Xcode 环境中的上下文交换和工具执行,从而实现 Xcode 和 AI 助手之间的无缝集成。
根据 MCP 规范,该项目创建了一个桥梁,连接 Xcode 的开发环境与 AI 工具,通过上下文理解和可编程交互增强开发者的工作流程。它封装了常见的命令行工具(如 xcrun 和 xctrace),并利用 macOS 辅助功能来实现 Xcode 操作的 AI 辅助自动化。
# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 克隆仓库
git clone https://github.com/everettjf/MCPXcode.git
cd MCPXcode
source .venv/bin/activate
uv add "mcp[cli]"
{
"mcpServers": {
"MCPXcode": {
"command": "uv", # 可以使用完整路径
"args": [
"--directory",
"<Path>/MCPXcode", # 更改为您的完整路径
"run",
"main.py"
]
}
}
}
xcrun 工具扩展
xctrace 工具扩展
辅助功能工具扩展
MCP HTTP 服务器
MCP 客户端库
| 工具 | 描述 | 示例提示 |
|---|---|---|
list_devices | 列出所有可用的模拟器设备及其详细信息 | "显示所有可用的 iOS 模拟器设备及其状态。" |
boot_device | 启动由其 UDID 标识的特定模拟器设备 | "启动具有 UDID A1B2C3D4-E5F6-7890-1234-567890ABCDEF 的 iPhone 14 Pro 模拟器。" |
shutdown_device | 关闭正在运行的模拟器设备 | "关闭具有 UDID A1B2C3D4-E5F6-7890-1234-567890ABCDEF 的当前运行的 iPhone 模拟器。" |
install_app | 在模拟器设备上安装应用程序 | "在 iPhone 14 模拟器上安装位于路径 /Users/username/MyApp.app 的应用。" |
launch_app | 在模拟器设备上启动已安装的应用程序 | "在 iPhone 14 模拟器上启动具有捆绑 ID com.example.myapp 的应用。" |
| 工具 | 描述 | 示例提示 |
|---|---|---|
get_sdk_path | 获取当前 SDK 的路径 | "当前 iOS SDK 的路径是什么?" |
get_sdk_version | 获取当前 SDK 的版本 | "我正在使用的 iOS SDK 版本是多少?" |
get_sdk_platform_path | 获取当前 SDK 的平台路径 | "iOS 平台文件位于何处?" |
find_developer_tool | 查找特定开发工具的路径 | "Xcode 工具链中的 'lldb' 二进制文件位于何处?" |
run_tool_with_sdk | 使用特定 SDK 运行开发工具 | "使用 iOS SDK 运行 'clang' 工具编译我的源文件。" |
| 工具 | 描述 | 示例提示 |
|---|---|---|
xcrun_list_sdks | 列出所有可用的 SDK 及其详细信息 | "展示我可以构建的所有可用 SDK。" |
xcrun_list_schemes | 列出指定 Xcode 项目的所有方案 | "我的 MyApp.xcodeproj 项目中有哪些构建方案?" |
xcrun_build | 使用指定方案和配置构建 Xcode 项目 | "使用 Debug 配置为 iPhone 模拟器构建我的 MyApp.xcodeproj 项目。" |
xcrun_validate_app | 在提交到 App Store 之前验证应用 | "在我将 MyApp.ipa 文件提交到 App Store 之前验证它。" |
xcrun_upload_app | 将应用上传到 App Store Connect | "将我已验证的 MyApp.ipa 文件上传到 App Store Connect 进行审核。" |
xcrun_swift_symbols | 从二进制文件中提取 Swift 符号 | "从我的应用的二进制文件中提取并显示所有 Swift 符号。" |
xcrun_otool_headers | 显示二进制文件的 Mach-O 头 | "显示我应用的二进制文件的 Mach-O 头。" |
xcrun_otool_libraries | 显示二进制文件链接的库 | "我的应用的二进制文件链接了哪些库?" |
xcrun_nm_symbols | 显示二进制文件中的符号 | "显示我应用的二进制文件中的所有符号。" |
| 工具 | 描述 | 示例提示 |
|---|---|---|
xctrace_devices | 列出可用于跟踪的设备 | "显示我可以运行性能跟踪的所有设备。" |
xctrace_templates | 列出可用于跟踪的模板 | "有哪些性能剖析模板可用?" |
xctrace_record | 使用指定模板记录应用性能 | "使用 Time Profiler 模板记录我应用的性能跟踪。" |
xctrace_record_advanced | 使用高级选项记录应用性能 | "使用自定义模板选项记录性能跟踪,并设置环境变量 DEBUG=1。" |
xctrace_attach_process | 附加到正在运行的过程进行跟踪 | "将性能追踪器附加到具有进程 ID 12345 的正在运行的应用。" |
xctrace_export | 将跟踪数据导出为指定格式 | "将我的 trace.trace 文件导出为 JSON 格式进行分析。" |
xctrace_diagnose | 诊断跟踪存档的问题 | "分析我的跟踪文件是否存在任何性能问题或问题。" |
xctrace_document | 为模板生成文档 | "为 Allocations 模板生成文档,以便我能理解其指标。" |
xctrace_analyze | 分析跟踪文件并生成性能报告 | "从我的时间剖析器跟踪文件生成性能报告。" |
xctrace_compare | 比较两个跟踪文件并生成比较报告 | "比较来自我应用 1.0 版和 2.0 版的跟踪文件之间的性能。" |
此项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
欢迎贡献!请随时提交 Pull Request。