Xcode项目文件操作服务

一个用于通过Swift编程方式操作Xcode项目文件(.xcodeproj)的Model Context Protocol (MCP)服务器,支持创建项目、管理目标和构建配置等功能。

作者 By giginet
本地部署 Xcode项目操作 开发自动化
GitHub

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许可证获得许可。