xcodeproj mcp服务器
一个模型上下文协议(MCP)服务器,用于使用Swift操纵Xcode项目文件(.xcodeproj)。
概述
xcodeproj-mcp服务器是一个mcp服务器,它提供了以编程方式操纵Xcode项目文件的工具。它利用了 _显示提示 用于可靠项目文件操作的库,并使用 swift sdk.
此服务器使AI助手和其他MCP客户端能够:
- 创建新的Xcode项目
- 管理目标、文件和构建配置
- 检查项目结构,包括组和层次结构
- 修改构建设置
- 添加依赖关系和框架
- 自动化常见的Xcode项目任务
用例
项目创建和设置
- 从头开始创建项目:在不打开Xcode的情况下,使用自定义配置、捆绑标识符和组织设置生成新的Xcode项目
- 多目标工程脚手架:在单个自动化工作流中设置具有多个应用程序、框架、测试和扩展的复杂项目
开发工作流自动化
- 向目标添加新文件:创建新的Swift文件后,自动将其添加到相应目标的源文件中进行编译
- 添加文件夹引用:将外部资源文件夹或资产目录作为同步文件夹引用包含在项目中,自动反映任何文件系统更改
- 添加构建阶段:将代码格式化程序、linter或自定义构建脚本集成到您的目标中(例如,SwiftLint、SwiftFormat执行阶段)
- 创建框架和应用程序扩展:快速构建新的框架目标或应用程序扩展,以模块化您的代码库
- 添加小部件扩展:自动创建和嵌入具有适当配置的iOS主屏幕小部件的小部件扩展目标
项目配置管理
- 自动化Info.plist设置:以编程方式配置不同目标的Info.plist设置、权限和配置文件
- 构建配置管理:使用适当的编译器标志、捆绑标识符和部署目标设置不同的构建配置
- 依赖管理:添加系统框架、链接库和配置目标依赖项,无需手动Xcode导航
如何设置Claude Desktop和Claude Code
先决条件
- 码头工人
- macOS(用于运行Xcode项目)
使用Docker安装
从GitHub容器注册表中提取预构建的Docker镜像:
BASH``` 1docker pull ghcr.io/giginet/xcodeproj-mcp-server
### Claude代码的配置
BASH```
1claude mcp add xcodeproj -- docker run --pull=always --rm -i -v $PWD:/workspace ghcr.io/giginet/xcodeproj-mcp-server:latest /workspace
我们需要挂载当前的工作目录($PWD)to /workspace 在容器内。这允许服务器访问您的Xcode项目。
推荐设置
启用 ENABLE_TOOL_SEARCH 在 .claude/settings.json 激活动态MCP工具加载。这可以防止未使用的MCP工具消耗上下文。
JSON``` 1 2 3 4 5{ “env”: { “ENABLE_TOOL_SEARCH”: “1” } }
### Claude桌面配置
将以下内容添加到您的Claude Desktop配置文件中:
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
JSON```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16{
"mcpServers": {
"xcodeproj": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"${workspaceFolder}:/workspace",
"ghcr.io/giginet/xcodeproj-mcp-server",
"/workspace"
]
}
}
}
路径安全
MCP服务器现在支持将文件操作限制到特定的基目录。当您提供基路径作为命令行参数时:
- 全部
project_path文件路径参数将相对于此基本路径进行解析 - 绝对路径经过验证,以确保它们在基目录中
- 任何访问基目录外文件的尝试都会导致错误
这在Docker容器或其他沙盒环境中运行服务器时特别有用。
可用工具
项目管理
-
create_xcodeproj-创建一个新的Xcode项目 -
参数:
project_name,path,organization_name,bundle_identifier -
list_targets-列出项目中的所有目标 -
参数:
project_path -
list_build_configurations-列出所有构建配置 -
参数:
project_path -
list_files-列出特定目标中的所有文件 -
参数:
project_path,target_name -
list_groups-使用分层路径列出项目中的所有组,可选择按目标筛选 -
参数:
project_path,target_name(可选)
文件操作
-
add_file-将文件添加到项目中 -
参数:
project_path,file_path,target_name,group_path -
remove_file-从项目中删除文件 -
参数:
project_path,file_path -
move_file-在项目中移动或重命名文件 -
参数:
project_path,source_path,destination_path -
add_synchronized_folder-向项目添加同步文件夹引用 -
参数:
project_path,folder_path,group_name,target_name -
create_group-在项目导航器中创建新组 -
参数:
project_path,group_name,parent_group_path
目标管理
-
add_target-创建新目标 -
参数:
project_path,target_name,type,platform,bundle_identifier -
remove_target-删除现有目标 -
参数:
project_path,target_name -
duplicate_target-复制现有目标 -
参数:
project_path,source_target_name,new_target_name -
add_dependency-添加目标之间的依赖关系 -
参数:
project_path,target_name,dependency_name
应用扩展管理
-
add_app_extension-添加应用扩展目标并将其嵌入到宿主应用中 -
参数:
project_path,extension_name,extension_type,host_target_name,bundle_identifier,platform(可选),deployment_target(可选) -
支持的扩展类型:
widget,notification_service,notification_content,share,today,action,file_provider,intents,intents_ui,keyboard,photo_editing,document_provider,custom -
remove_app_extension-从宿主应用中删除应用扩展目标及其嵌入 -
参数:
project_path,extension_name
生成配置
-
get_build_settings-获取目标的构建设置 -
参数:
project_path,target_name,configuration_name -
set_build_setting-修改构建设置 -
参数:
project_path,target_name,setting_name,value,configuration_name -
add_framework-添加框架依赖项 -
参数:
project_path,target_name,framework_name,embed -
add_build_phase-添加自定义构建阶段 -
参数:
project_path,target_name,phase_type,name,script
Swift包管理
-
add_swift_package-将Swift包依赖项添加到项目中 -
参数:
project_path,package_url,requirement,target_name,product_name -
list_swift_packages-列出项目中的所有Swift包依赖项 -
参数:
project_path -
remove_swift_package-从项目中删除Swift包依赖项 -
参数:
project_path,package_url,remove_from_targets
许可证
该项目根据MIT许可证获得许可。