Xcode项目管理工具

用于Xcode项目操作的MCP服务器,允许AI助手或CLI工具添加、删除和列出.xcodeproj项目中的文件,无需手动编辑.pbxproj文件。

  • by yonilevy
  • Swift
  • 本地部署
  • 更新于
在 GitHub 查看 yonilevy/xcpmcp

使用说明

xcpmcp

用于Xcode项目操作的MCP服务器。允许AI助手(Claude Code等)在中添加、删除和列出文件 .xcodeproj 无需手动编辑的项目 .pbxproj 文件夹。

也可以作为独立的CLI使用。

工具

工具 说明
list_targets 列出具有产品类型的本地目标
list_files 列出项目中的文件,可选择按目标筛选
list_groups 显示组/文件夹层次结构
add_file 将文件添加到目标(源代码或资源构建阶段)
remove_file 从项目中删除文件引用
move_file 将文件移动到其他组(仅限项目导航器,不在磁盘上)
remove_group 删除一个组(空的,或带有所有子组的递归)
rename_group 在项目导航器中重命名组
move_group 将组移动到其他父组下
sort_group 按字母顺序对组的子组进行排序(组在文件之前)
add_swift_package 添加本地或远程Swift包并将其产品链接到目标
list_swift_packages 列出已声明的Swift包和每个目标链接的产品
remove_swift_package 删除Swift包(或将其产品与目标解除链接)

安装

git clone https://github.com/yonilevy/xcpmcp.git
cd xcpmcp
make install

这将构建一个发布二进制文件,并将其复制到 ~/.local/bin/xcpmcp,并可选地将其注册为Claude Code中的MCP服务器。

要安装到其他位置:

make install PREFIX=/opt/bin

要卸载,请执行以下操作:

make uninstall

CLI使用情况

当使用参数运行时,xcpmcp作为常规命令行工具工作:

# List targets
xcpmcp list-targets MyApp.xcodeproj

# List all files
xcpmcp list-files MyApp.xcodeproj

# List files in a specific target
xcpmcp list-files MyApp.xcodeproj --target MyApp

# Show group hierarchy
xcpmcp list-groups MyApp.xcodeproj

# Add a source file to a target
xcpmcp add-file MyApp.xcodeproj Sources/NewFile.swift --target MyApp

# Add a resource file
xcpmcp add-file MyApp.xcodeproj Assets/image.png --target MyApp --type resource

# Add to a specific group
xcpmcp add-file MyApp.xcodeproj Sources/Models/User.swift --target MyApp --group Sources/Models

# Remove a file from a specific target
xcpmcp remove-file MyApp.xcodeproj Sources/OldFile.swift --target MyApp

# Remove a file from all targets
xcpmcp remove-file MyApp.xcodeproj Sources/OldFile.swift

# Move a file to a different group
xcpmcp move-file MyApp.xcodeproj Sources/Models/User.swift --to-group Sources/NewModels

# Remove an empty group
xcpmcp remove-group MyApp.xcodeproj Sources/OldFolder

# Remove a group and all its children
xcpmcp remove-group MyApp.xcodeproj Sources/OldFolder --recursive

# Rename a group
xcpmcp rename-group MyApp.xcodeproj Sources/OldName --new-name NewName

# Move a group under a different parent
xcpmcp move-group MyApp.xcodeproj Sources/Models --to-group Sources/Core

# Sort a group's children alphabetically
xcpmcp sort-group MyApp.xcodeproj Sources/Models

# Add a local Swift Package and link a product into a target
xcpmcp add-swift-package MyApp.xcodeproj --target MyApp --products MyLib --local-path ../mylib

# Add a local package as a folder reference (PBXFileReference wrapper) instead of the
# modern XCLocalSwiftPackageReference, optionally placed in a specific group
xcpmcp add-swift-package MyApp.xcodeproj --target MyApp --products MyLib --local-path ../mylib \
  --local-style folderReference --group Packages

# Add a remote Swift Package (version requirement variants)
xcpmcp add-swift-package MyApp.xcodeproj --target MyApp --products Alamofire \
  --url https://github.com/Alamofire/Alamofire --up-to-next-major 5.0.0
#   other requirements: --up-to-next-minor <v> | --exact <v> | --from <v> --to <v>
#                       | --branch <name> | --revision <sha>

# Link multiple products in one call
xcpmcp add-swift-package MyApp.xcodeproj --target MyApp --products "Logging,Metrics" \
  --url https://github.com/apple/swift-log --up-to-next-major 1.0.0

# List declared packages and per-target linked products
xcpmcp list-swift-packages MyApp.xcodeproj

# Unlink a package's products from one target
xcpmcp remove-swift-package MyApp.xcodeproj --url https://github.com/Alamofire/Alamofire --target MyApp

# Remove a package entirely (unlink from all targets + drop the package reference)
xcpmcp remove-swift-package MyApp.xcodeproj --local-path ../mylib

包操作仅编辑 .pbxproj.之后运行构建(或在Xcode中打开)以获取/解析包。 add_swift_package 是幂等的——重新链接一个已经链接的产品是不允许的。

当不带参数运行时,它将通过stdin/stdout作为MCP服务器启动。

需求

  • Swift 6.0+(Xcode 16+)
  • macOS 13+