mcpField
X
xcodeproj-mcp-server

xcodeproj-mcp-server

本地服务
github.com/giginet开发工具1336 周前更新

关于 xcodeproj-mcp-server

xcodeproj-mcp-server 是一个 MCP 服务,用 Swift 读写 Xcode 项目文件(.xcodeproj)。它面向 AI 助手和其他 MCP 客户端,可在不打开 Xcode 的情况下完成项目的创建与修改。底层基于 tuist/xcodeproj 库处理项目文件。

主要功能

  1. 01创建新的 Xcode 项目
  2. 02管理 target、文件与构建配置
  3. 03查看项目结构与 group 层级
  4. 04修改构建设置并添加依赖与框架
  5. 05添加 App Extension 并嵌入宿主应用

适用场景

  1. 01脚本化生成包含多个 target 的项目骨架
  2. 02将新建的 Swift 文件加入指定 target 的编译源
  3. 03为 target 添加 SwiftLint 等构建阶段

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露一组用于操作 .xcodeproj 的工具,如 create_xcodeproj、add_file 和 add_target。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"xcodeproj": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/giginet/xcodeproj-mcp-server"
]
}
}
}
启动命令docker run -i --rm ghcr.io/giginet/xcodeproj-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/giginet/xcodeproj-mcp-server

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

xcodeproj-mcp-server

GitHub Workflow Status (with event) Swift 6.1 Xcode 16.4 SwiftPM Platforms License

一个使用 Swift 操作 Xcode 项目文件(.xcodeproj)的 Model Context Protocol(MCP)服务。

为所有目标添加构建后阶段

概述

xcodeproj-mcp-server 是一个 MCP 服务,提供以编程方式操作 Xcode 项目文件的工具。它利用 tuist/xcodeproj 库可靠地操作项目文件,并使用 swift-sdk 实现 Model Context Protocol。

此服务使 AI 助手和其他 MCP 客户端能够:

  • 创建新的 Xcode 项目
  • 管理目标、文件和构建配置
  • 检查项目结构,包括组和层级
  • 修改构建设置
  • 添加依赖项和框架
  • 自动执行常见的 Xcode 项目任务

使用场景

项目创建和设置
  • 从头创建项目:生成具有自定义配置、捆绑包标识符和组织设置的新 Xcode 项目,无需打开 Xcode
  • 多目标项目脚手架:通过单个自动化工作流,设置包含多个应用、框架、测试和扩展的复杂项目
开发工作流自动化
  • 向目标添加新文件:创建新的 Swift 文件后,自动将其添加到相应目标的源文件中以供编译
  • 添加文件夹引用:将外部资源文件夹或资源目录作为同步文件夹引用添加到项目中,自动反映文件系统中的任何更改
  • 添加构建阶段:将代码格式化工具、代码检查工具或自定义构建脚本集成到目标中(例如,执行 SwiftLint、SwiftFormat 的阶段)
  • 创建框架和应用扩展:快速搭建新的框架目标或应用扩展,以实现代码库模块化
  • 添加 Widget 扩展:自动创建并嵌入 Widget Extension 目标,并进行适当配置,以支持 iOS 主屏幕小组件
项目配置管理
  • 自动配置 Info.plist:以编程方式为不同目标配置 Info.plist 设置、权利和配置描述文件
  • 构建配置管理:设置不同的构建配置,并配置适当的编译器标志、捆绑包标识符和部署目标
  • 依赖项管理:添加系统框架、链接库并配置目标依赖项,无需手动在 Xcode 中导航

如何为 Claude Desktop 和 Claude Code 进行设置

前提条件

此服务以 linux/arm64 容器镜像的形式分发,可在任一运行时中运行。

使用 Apple 的 container 进行设置(推荐)

container 是 Apple 自家的工具,可在 macOS 上以轻量级虚拟机的形式运行 Linux 容器。它是此服务推荐使用的运行时:由 Apple 提供,无需第三方桌面应用,并可在 Apple 芯片上原生运行已发布的 linux/arm64 镜像。

要求
  • 配备 Apple silicon 的 Mac
  • macOS 26 或更高版本(container 不支持更早的版本)
安装

从官方发布页面安装 container CLI。

container 需要后台服务处于运行状态。安装后启动一次,每次重启后也要再次启动:

container system start

然后从 GitHub Container Registry 拉取预构建镜像:

container image pull ghcr.io/giginet/xcodeproj-mcp-server:latest

container run 没有 --pull 选项,因此每次想更新到最新镜像时,都要再次运行 container image pull。

Claude Code 配置
claude mcp add xcodeproj -- container run --rm -i -v '${CLAUDE_PROJECT_DIR:-.}:/workspace' ghcr.io/giginet/xcodeproj-mcp-server:latest /workspace

这会将项目目录挂载到容器内的 /workspace,让服务能够访问你的 Xcode 项目。请保留单引号:这样可以避免 shell 在注册时展开挂载路径,让 Claude Code 每次启动服务时再解析该路径,而不是固定到你运行 claude mcp add 时所在的目录。若无法解析,它会回退到 .,即 Claude Code 启动服务时所在的工作目录,也就是项目根目录。

Claude Desktop 配置

将以下内容添加到 Claude Desktop 配置文件:

macOS:~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "xcodeproj": {
      "command": "/usr/local/bin/container",
      "args": [
        "run",
        "--rm",
        "-i",
        "-v",
        "${workspaceFolder}:/workspace",
        "ghcr.io/giginet/xcodeproj-mcp-server",
        "/workspace"
      ]
    }
  }
}

安装程序会将二进制文件放在 /usr/local/bin/container。此处使用绝对路径,因为 GUI 应用的 PATH 不一定包含该目录。

在本地构建镜像

container build 会读取同一个 Dockerfile:

container build -t xcodeproj-mcp-server:local .

构建器容器默认使用 2 个 CPU 和 2 GB 内存。为其分配更多资源可以加快发布构建:

container build -c 8 -m 8g -t xcodeproj-mcp-server:local .
使用 Docker 进行设置

如果你使用的是 macOS 15 或更早版本,或者 Docker 已经是你工作流的一部分,请使用 Docker。

从 GitHub Container Registry 拉取预构建的 Docker 镜像:

docker pull ghcr.io/giginet/xcodeproj-mcp-server
Claude Code 配置
claude mcp add xcodeproj -- docker run --pull=always --rm -i -v '${CLAUDE_PROJECT_DIR:-.}:/workspace' ghcr.io/giginet/xcodeproj-mcp-server:latest /workspace

与 container 一样,项目目录会挂载到容器内的 /workspace,以便服务访问你的 Xcode 项目;单引号则可确保挂载路径在 Claude Code 启动服务前不会展开。

Claude Desktop 配置

将以下内容添加到 Claude Desktop 配置文件:

macOS:~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "xcodeproj": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-v",
        "${workspaceFolder}:/workspace",
        "ghcr.io/giginet/xcodeproj-mcp-server",
        "/workspace"
      ]
    }
  }
}
在 Xcode 中通过 Claude Code 或 Codex 使用该服务

Xcode 可以将 Claude Code 和 Codex 作为编码 Agent 运行,并从 ~/Library/Developer/Xcode/CodingAssistant 下按 Agent 区分的子文件夹读取它们的配置。Xcode 专门使用此文件夹。放在这里的配置仅在你通过 Xcode 启动 Agent 时生效,因此不会影响常规的 ~/.claude 或 ~/.codex 设置。详情请参阅 Apple 的扩展和自定义 Agent。

与命令行设置相比,有两点不同:

  • Xcode 会以项目目录作为工作目录启动 MCP 服务,因此直接挂载 .。Codex 没有与 Claude Code 的 ${CLAUDE_PROJECT_DIR:-.} 等效的展开方式,因此这样可以让两个 Agent 使用相同的挂载路径。
  • command 需要使用绝对路径,因为 Agent 的环境不一定会将 /usr/local/bin 包含在 PATH 中。
在 Xcode 中使用 Claude Code

~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig 充当 Claude Code 的配置目录。将 CLAUDE_CONFIG_DIR 指向该目录,然后使用 claude mcp add:

CLAUDE_CONFIG_DIR=~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig \
  claude mcp add xcodeproj -s user -- \
  /usr/local/bin/container run --rm -i -v .:/workspace ghcr.io/giginet/xcodeproj-mcp-server:latest /workspace

这会将服务写入 ClaudeAgentConfig/.claude.json。如果要手动添加,请在 mcpServers 下添加一项:

{
  "mcpServers": {
    "xcodeproj": {
      "type": "stdio",
      "command": "/usr/local/bin/container",
      "args": [
        "run",
        "--rm",
        "-i",
        "-v",
        ".:/workspace",
        "ghcr.io/giginet/xcodeproj-mcp-server:latest",
        "/workspace"
      ]
    }
  }
}
Xcode 中的 Codex

~/Library/Developer/Xcode/CodingAssistant/codex 充当 Codex 的 CODEX_HOME:

CODEX_HOME=~/Library/Developer/Xcode/CodingAssistant/codex \
  codex mcp add xcodeproj -- \
  /usr/local/bin/container run --rm -i -v .:/workspace ghcr.io/giginet/xcodeproj-mcp-server:latest /workspace

这会将服务写入 codex/config.toml。若要手动添加:

[mcp_servers.xcodeproj]
command = "/usr/local/bin/container"
args = ["run", "--rm", "-i", "-v", ".:/workspace", "ghcr.io/giginet/xcodeproj-mcp-server:latest", "/workspace"]

如果使用 Docker 进行设置,请使用 docker 二进制文件的绝对路径替代 /usr/local/bin/container。更改配置后,请在 Xcode 中重启 Agent。

Claude Code 推荐设置

在 .claude/settings.json 中启用 ENABLE_TOOL_SEARCH 可激活动态 MCP 工具加载。这样可以避免未使用的 MCP 工具占用上下文。

{
  "env": {
    "ENABLE_TOOL_SEARCH": "1"
  }
}
路径安全

MCP 服务现在支持将文件操作限制在特定的基础目录中。提供基础路径作为命令行参数时:

  • 所有 project_path 和文件路径参数都会相对于此基础路径解析
  • 系统会验证绝对路径,确保其位于基础目录内
  • 任何访问基础目录之外文件的尝试都会报错

这在容器或其他沙箱环境中运行服务时尤其有用。

可用工具

项目管理
  • 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
App Extension 管理
  • add_app_extension - 添加 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 - 移除 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 Package 依赖项

    • 参数:project_path、package_url、requirement、target_name、product_name
  • list_swift_packages - 列出项目中的所有 Swift Package 依赖项

    • 参数:project_path
  • remove_swift_package - 从项目中移除 Swift Package 依赖项

    • 参数:project_path、package_url、remove_from_targets

许可证

本项目采用 MIT 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。