Xcode MCP 服务器提供全面的 Xcode 集成,适用于 AI 助手。此服务器使 AI 代理能够与 Xcode 项目进行交互,管理 iOS 模拟器,并执行各种与 Xcode 相关的任务,具有增强的错误处理功能以及对多种项目类型的兼容性支持。
使用包含的设置脚本,该脚本会自动完成安装和配置过程:
# 将脚本设为可执行
chmod +x setup.sh
# 运行设置脚本
./setup.sh
设置脚本做了什么:
环境验证:
依赖项安装:
npm install 安装所有必需的 Node.js 包npm run build 编译 TypeScript 代码配置设置:
.env 文件Claude Desktop 集成(可选):
何时使用设置脚本:
脚本将引导您完成配置过程,提供清晰的提示和有用的反馈。
何时使用手动设置:
按照以下步骤进行手动安装:
克隆仓库:
git clone https://github.com/r-huijts/xcode-mcp-server.git
cd xcode-mcp-server
验证先决条件(这些必须已安装):
安装依赖项:
npm install
构建项目:
npm run build
创建配置文件:
# 选项 A:从示例配置开始
cp .env.example .env
# 选项 B:创建最小配置
echo "PROJECTS_BASE_DIR=/path/to/your/projects" > .env
echo "DEBUG=false" >> .env
编辑 .env 文件以设置您的首选配置。
对于 Claude Desktop 集成(可选):
~/Library/Application Support/Claude/claude_desktop_config.json{
"mcpServers": {
"xcode": {
"command": "node",
"args": ["/path/to/xcode-mcp-server/dist/index.js"]
}
}
}
常见设置问题:
构建错误:
node_modules 并重新运行 npm installnpx tsc --noEmit 检查 TypeScript 错误缺少依赖项:
npm installxcode-select --install权限问题:
sudo gem install cocoapods配置问题:
.env 文件格式正确且路径有效PROJECTS_BASE_DIR 指向一个存在的目录Claude Desktop 集成:
index.js 的正确位置npm start
对于开发模式,带有自动重启:
npm run dev
您可以使用两种方式配置服务器:
.env 文件中的环境变量:
PROJECTS_BASE_DIR=/path/to/your/projects
DEBUG=true
ALLOWED_PATHS=/path/to/additional/allowed/directory
PORT=8080
命令行参数:
npm start -- --projects-dir=/path/to/your/projects --port=8080
PROJECTS_BASE_DIR / --projects-dir:项目的基目录(必需)ALLOWED_PATHS / --allowed-paths:允许访问的附加目录(逗号分隔)PORT / --port:服务器运行的端口(默认:3000)DEBUG / --debug:启用调试日志记录(默认:false)LOG_LEVEL / --log-level:设置日志级别(默认:info)服务器实现了模型上下文协议(MCP),使其与支持此协议的各种 AI 助手兼容。要连接:
http://localhost:3000)要了解所有可用工具及其用法的综合概述,请参阅 工具概述。
要详细了解使用示例和最佳实践,请参阅 用户指南。
// 创建一个新的 iOS 应用项目
await tools.create_xcode_project({
name: "MyAwesomeApp",
template: "ios-app",
outputDirectory: "~/Projects",
organizationName: "My Organization",
organizationIdentifier: "com.myorganization",
language: "swift",
includeTests: true,
setAsActive: true
});
// 添加一个 Swift 包依赖项
await tools.add_swift_package({
url: "https://github.com/Alamofire/Alamofire.git",
version: "from: 5.0.0"
});
// 以特定编码读取文件
const fileContent = await tools.read_file({
filePath: "MyAwesomeApp/AppDelegate.swift",
encoding: "utf-8"
});
// 写入文件
await tools.write_file({
path: "MyAwesomeApp/NewFile.swift",
content: "import Foundation\n\nclass NewClass {}\n",
createIfMissing: true
});
// 在文件中搜索文本
const searchResults = await tools.search_in_files({
directory: "MyAwesomeApp",
pattern: "*.swift",
searchText: "class",
isRegex: false
});
// 构建项目
await tools.build_project({
scheme: "MyAwesomeApp",
configuration: "Debug"
});
// 运行测试
await tools.test_project({
scheme: "MyAwesomeApp",
testPlan: "MyAwesomeAppTests"
});
xcode-mcp-server/
├── src/
│ ├── index.ts # 入口点
│ ├── server.ts # MCP 服务器实现
│ ├── types/ # 类型定义
│ │ └── index.ts # 核心类型定义
│ ├── utils/ # 工具函数
│ │ ├── errors.js # 错误处理类
│ │ ├── pathManager.ts # 路径验证和管理
│ │ ├── project.js # 项目实用工具
│ │ └── simulator.js # 模拟器实用工具
│ └── tools/ # 工具实现
│ ├── project/ # 项目管理工具
│ │ └── index.ts # 项目创建、检测、文件添加
│ ├── file/ # 文件操作工具
│ │ └── index.ts # 文件读取、写入、搜索
│ ├── build/ # 构建和测试工具
│ │ └── index.ts # 构建、测试、分析
│ ├── cocoapods/ # CocoaPods 集成
│ │ └── index.ts # Pod 安装和管理
│ ├── spm/ # Swift 包管理器工具
│ │ └── index.ts # 包管理和文档生成
│ ├── simulator/ # iOS 模拟器工具
│ │ └── index.ts # 模拟器控制和交互
│ └── xcode/ # Xcode 实用工具
│ └── index.ts # Xcode 版本管理、资产工具
├── docs/ # 文档
│ ├── tools-overview.md # 综合工具文档
│ └── user-guide.md # 使用示例和最佳实践
├── tests/ # 测试
└── dist/ # 编译代码(生成)
Xcode MCP 服务器使用模型上下文协议提供标准化接口,使 AI 模型能够与 Xcode 项目进行交互。服务器架构设计了几个关键组件:
服务器实现:主要的 MCP 服务器,负责工具注册和请求处理。
路径管理:通过验证所有路径来确保安全的文件访问。
项目管理:检测、加载和管理不同类型的 Xcode 项目:
目录状态:维护活动目录上下文以解析相对路径。
工具注册表:将工具组织成逻辑类别,用于不同的 Xcode 操作。
AI 助手向 MCP 服务器发送工具执行请求。
服务器验证请求参数和权限。
调用适当的工具处理器,并传递验证过的参数。
工具执行请求的操作,通常使用原生 Xcode 命令。
结果被格式化并返回给 AI 助手。
综合错误处理提供了有意义的反馈以帮助故障排除。
服务器智能地处理不同类型的项目:
这种架构允许 AI 助手无缝地与任何类型的 Xcode 项目进行交互,同时保持安全性并提供详细的反馈。
欢迎贡献!请随意提交拉取请求。
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)要向服务器添加新工具:
src/tools/ 目录中确定适当类别index.ts 文件中注册工具npm start -- --debug本项目采用 MIT 许可证 - 请参阅 LICENSE 文件以获取详细信息。