XcodeBuildMCP是一个模型上下文协议(MCP)服务器,它提供与Xcode相关的工具,可集成AI助手和其他MCP客户端,助力开发者更高效地进行Xcode项目开发。
本项目实现了一个MCP服务器,将Xcode操作作为工具暴露出来,AI代理可通过MCP协议调用这些工具。它通过标准化接口实现与Xcode项目的编程式交互,为代理驱动的开发工作流程进行了优化。
XcodeBuild MCP工具的主要目的是简化和标准化AI代理与Xcode项目之间的交互。通过为常见的Xcode操作提供专用工具,它消除了对手动或可能错误的命令行调用的依赖。
这确保了可靠且高效的开发过程,使代理能够无缝利用Xcode的功能,同时降低配置错误的风险。
至关重要的是,这个MCP使AI代理能够通过构建项目、检查错误并自主迭代来独立验证代码更改。与Sweetpad等用户驱动的工具不同,XcodeBuild MCP使代理能够有效地自动化这些工作流程。
若要使用UI自动化功能(点击、滑动、输入等),你需要安装AXe:
brew tap cameroncooke/axe
brew install axe
有关AXe和其他安装方法的更多信息,请参阅 AXe仓库。
你可以使用以下链接进行快速安装:
通过修改客户端应用程序的MCP配置,将你的MCP客户端(Windsurf、Cursor、Claude Desktop、Claude Code等)配置为使用XcodeBuildMCP服务器。
{
"mcpServers": {
"XcodeBuildMCP": {
"command": "npx",
"args": [
"-y",
"xcodebuildmcp@latest"
]
}
}
}
你也可以使用mise来安装XcodeBuildMCP,而无需单独安装Node.js:
# macOS (Homebrew)
brew install mise
# 其他安装方法
# 请参阅 https://mise.jdx.dev/getting-started.html
然后将你的MCP客户端配置为使用mise安装XcodeBuildMCP:
{
"mcpServers": {
"XcodeBuildMCP": {
"command": "mise",
"args": [
"x",
"npm:xcodebuildmcp@1.7.0",
"--",
"xcodebuildmcp"
]
}
}
}
⚠️ 重要提示 使用mise时,避免使用
@latest标签,因为mise会缓存软件包,可能不会自动更新到最新版本,建议使用明确的版本号。
⚠️ 重要提示 请注意,XcodeBuildMCP会请求xcodebuild跳过宏验证,这是为了避免在构建使用Swift宏的项目时出错。
XcodeBuildMCP包含对增量构建的实验性支持。此功能默认禁用,可通过将INCREMENTAL_BUILDS_ENABLED环境变量设置为true来启用:
启用增量构建的示例MCP客户端配置:
{
"mcpServers": {
"XcodeBuildMCP": {
"command": "npx",
"args": [
"-y",
"xcodebuildmcp@latest"
],
"env": {
"INCREMENTAL_BUILDS_ENABLED": "true"
}
}
}
}
⚠️ 重要提示 请注意,增量构建支持目前处于高度实验阶段,实际效果可能会有所不同。如果你遇到任何问题,请向 问题跟踪器 报告。
诊断工具是一个独立的实用程序,用于检查你的系统配置并报告XcodeBuildMCP所需的所有依赖项的状态。在报告问题时,它特别有用。
# 使用npx运行诊断工具
npx xcodebuildmcp@1.7.0 xcodebuildmcp-diagnostic
# 使用mise运行诊断工具
mise x npm:xcodebuildmcp@1.7.0 -- xcodebuildmcp-diagnostic
诊断工具将输出以下方面的全面信息:
在GitHub上报告问题时,请包含诊断工具的完整输出,以帮助进行故障排除。
访问MCP服务器的日志消息有助于识别问题。日志由客户端应用程序捕获,例如在Cursor中:
find ~/Library/Application\ Support/Cursor/logs -name "Cursor MCP.log" -exec zip -r matching_logs.zip {} +
如果你的MCP客户端没有日志文件,你可以使用MCP检查器工具直接运行服务器,有关如何操作的更多信息,请参阅 调试。运行MCP工具后,所有日志消息将打印到其错误面板,这有助于诊断问题。
本项目使用 Sentry 进行错误监控和诊断。Sentry帮助我们跟踪问题、崩溃和意外错误,以提高XcodeBuildMCP的可靠性和稳定性。
如果你不想将错误日志发送到Sentry,可以通过将环境变量SENTRY_DISABLED=true来退出。
退出Sentry的示例MCP客户端配置:
{
"mcpServers": {
"XcodeBuildMCP": {
"command": "npx",
"args": [
"-y",
"xcodebuildmcp@latest"
],
"env": {
"SENTRY_DISABLED": "true"
}
}
}
}
默认情况下,所有工具均已启用,但对于某些客户端,仅启用特定工具以减少发送到客户端的上下文量可能会更有用。你可以通过在客户端的MCP配置中设置特定的环境变量来实现这一点。
启用一个或多个工具或工具组后,所有其他工具将被禁用。例如,若要仅启用与模拟器相关的工具,可以将环境变量设置为XCODEBUILDMCP_GROUP_IOS_SIMULATOR_WORKFLOW=true,这样将仅暴露用于在模拟器上构建、运行和调试的工具。
{
"mcpServers": {
"XcodeBuildMCP": {
"command": "npx",
"args": [
"-y",
"xcodebuildmcp@latest"
],
"env": {
"XCODEBUILDMCP_GROUP_IOS_SIMULATOR_WORKFLOW": "true"
}
}
}
}
你可以在 TOOL_OPTIONS.md 文件中找到可用工具的列表以及如何启用它们的详细说明。
https://github.com/user-attachments/assets/e3c08d75-8be6-4857-b4d0-9350b26ef086
欢迎贡献代码!以下是你可以帮助改进XcodeBuildMCP的方法。 有关如何配置本地环境并为项目做出贡献的更多信息,请参阅我们的 CONTRIBUTING 文档。
本项目采用MIT许可证,详情请参阅 LICENSE 文件。