Xcode MCP桥接工具

一个用于在macOS应用中集成Xcode MCP(模型上下文协议)桥接的Swift包,支持通过CLI与Xcode进行JSON-RPC通信。

  • by renderplace
  • Swift
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 renderplace/XcodeMCPBridge

使用说明

XcodeMCPBridge

一个Swift包,用于在macOS应用程序中与Xcode的MCP(模型上下文协议)桥集成。内置于 可组合架构(TCA).

建筑

┌──────────────┐  App Protocol  ┌──────────────┐  MCP JSON-RPC   ┌────────────┐  XPC   ┌───────┐
│   Your App   │ ◄────────────► │ mcpbridge-cli│ ◄─────────────► │ mcpbridge  │ ◄────► │ Xcode │
│  (SwiftUI)   │   stdin/stdout │ (MCP Client) │   stdin/stdout  │ (Apple)    │        │ (IDE) │
└──────────────┘                └──────────────┘                 └────────────┘        └───────┘

您的应用程序 --任何使用此软件包的macOS SwiftUI应用程序。通过以下方式与桥梁互动 MCPBridgeClient (TCA依赖性)或 MCPBridgeFeature (TCA减速器)。从不触碰 MCP协议细节直接。

mcpbridge cli --此软件包附带的配套CLI二进制文件。充当MCP客户端, 与苹果公司沟通 xcrun mcpbridge 通过stdio上的JSON-RPC 2.0。包裹 自动将其从应用程序捆绑包安装到系统路径。

麦克布里奇(苹果) --Xcode 26+附带了苹果的原生MCP服务器。桥梁MCP 通过XPC向正在运行的Xcode实例发出请求。

需求

  • macOS 26.2+
  • Swift 5.9+
  • Xcode 26.3+(含 xcrun mcpbridge 支持)

安装

Swift包管理器

添加到您的 Package.swift:

dependencies: [
    .package(url: "https://github.com/renderplace/XcodeMCPBridge.git", from: "1.0.0"),
]

或者在Xcode中: File → 添加包依赖关系 并输入存储库URL。

嵌入CLI二进制文件

该软件包包括一个配套的CLI可执行文件(mcpbridge-cli)将您的应用程序连接到 xcrun mcpbridge。您的应用程序必须构建和嵌入此二进制文件。

在Xcode项目/XcodeGen规范中:

  1. 添加 mcpbridge-cli 产品仅作为构建依赖(无链接,无嵌入):
# project.yml (XcodeGen)
packages:
  XcodeMCPBridge:
    url: https://github.com/renderplace/XcodeMCPBridge.git
    from: "1.0.0"

targets:
  MyApp:
    dependencies:
      - package: XcodeMCPBridge
        product: XcodeMCPBridge
      - package: XcodeMCPBridge
        product: mcpbridge-cli
        embed: false
        link: false
  1. 添加a 运行脚本 构建阶段,将CLI复制到您的应用程序包中:
mkdir -p "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/Resources"
cp "${BUILT_PRODUCTS_DIR}/mcpbridge-cli" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/Resources/mcpbridge-cli"
chmod 755 "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/Resources/mcpbridge-cli"

快速开始

import XcodeMCPBridge
import ComposableArchitecture

@Reducer
struct AppFeature {
    struct State {
        var bridge = MCPBridgeFeature.State()
    }

    enum Action {
        case bridge(MCPBridgeFeature.Action)
    }

    var body: some ReducerOf<Self> {
        Scope(state: \.bridge, action: \.bridge) {
            MCPBridgeFeature()
        }
    }
}

您认为:

// Connect button
Button("Connect to Xcode") {
    store.send(.bridge(.connectTapped))
}

// Status display
Text(store.bridge.statusText)

直接使用依赖关系

要获得更多控制,请使用 MCPBridgeClient 作为TCA依赖关系:

@Dependency(\.mcpBridgeClient) var mcpBridge

// Install CLI binary
try await mcpBridge.install()

// Connect to Xcode's MCP bridge
let serverInfo = try await mcpBridge.connect()

// List available tools
let tools = try await mcpBridge.listTools()

// Execute a tool
let result = try await mcpBridge.callTool("XcodeBuildProject", ["tabIdentifier": "windowtab1"])

// Check status
let status = mcpBridge.status() // .connected, .executing, etc.

// Disconnect
await mcpBridge.disconnect()

// Uninstall CLI
try await mcpBridge.uninstall()

配置

自定义CLI二进制名称和安装位置:

Store(initialState: AppFeature.State()) {
    AppFeature()
} withDependencies: {
    $0.mcpBridgeClient = .live(
        configuration: MCPBridgeConfiguration(
            cliBinaryName: "my-custom-mcp-cli",
            installDirectory: "/usr/local/bin"
        )
    )
}

注: 使用自定义二进制名称时,运行脚本构建阶段和捆绑的资源名称必须匹配。

API 参考

MCPBridgeClient

方法 说明
install() 将CLI二进制文件从应用程序捆绑包安装/更新到系统路径
uninstall() 删除已安装的CLI二进制文件
connect() 连接到Xcode的MCP桥,返回 BridgeServerInfo
disconnect() 与桥断开连接
listTools() 退货可用 [MCPTool] 来自Xcode
callTool(_:_:) 执行工具,返回 BridgeToolResult
status() 返回当前值 MCPBridgeStatus

MCP桥接状态

  • .notInstalled --未安装CLI二进制文件
  • .installing --安装正在进行中
  • .installed --已安装但未连接
  • .connecting --连接正在进行中
  • .connected --准备执行工具
  • .executing --工具调用正在进行中

MCPBridgeFeature(TCA减速器)

预构建的减速器可处理整个生命周期。行动:

  • .installTapped --仅安装CLI
  • .uninstallTapped --删除CLI
  • .connectTapped --自动安装+连接
  • .disconnectTapped --断开连接

州包括 status, serverInfo, error, isConnected,以及 statusText.

演示应用程序

使用此软件包构建的完全可用的示例应用程序可在以下网址获得:

Xcodemcpswiftapp --macOS SwiftUI应用程序,使用 XcodeMCPBridge 要连接到Xcode的MCP桥,请浏览所有可用工具,填写参数并执行它们。非常适合作为将此软件包集成到您自己的应用程序中的参考。


“由开发人员为开发人员构建,因为最好的工具是你自己想使用的工具。” ❤️

— 安东·格雷冈 · @渲染位置

许可证

MIT许可证

版权所有©2026 Anton Gregorn。保留所有权利。

特此免费向任何获得副本的人授予许可 本软件和相关文档文件(“软件”),以处理 在软件中不受限制,包括但不限于权利 使用、复制、修改、合并、发布、分发、再许可和/或销售 软件的副本,并允许软件的接收者 根据以下条件提供:

上述版权声明和本许可声明应包含在所有 软件的副本或实质性部分。

软件按“原样”提供,不提供任何形式的明示或明示担保 隐含的,包括但不限于适销性保证, 适用于特定目的且不造成伤害。在任何情况下 作者或版权持有人对任何索赔、损害赔偿或其他 因以下原因产生的责任,无论是在合同、侵权或其他诉讼中, 出于或与软件、使用或其他交易有关 软件。