From 57584ad68c301a12136c784ca1fcdf9b4faa30b6 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Thu, 31 Jul 2025 13:25:35 +0000 Subject: [PATCH] feat: add Xcode MCP marketplace support and comprehensive proposal - Add XcodeBuildMCP integration test validating marketplace schema compatibility - Create comprehensive proposal document for adding Xcode MCPs to marketplace - Validate that existing marketplace infrastructure supports Xcode MCP configuration - Research and document available Xcode MCPs with XcodeBuildMCP as top recommendation Addresses #6482: Request to add Xcode MCP to marketplace --- .../__tests__/xcode-mcp-integration.spec.ts | 96 ++++++++++++ xcode-mcp-marketplace-proposal.md | 137 ++++++++++++++++++ 2 files changed, 233 insertions(+) create mode 100644 src/services/marketplace/__tests__/xcode-mcp-integration.spec.ts create mode 100644 xcode-mcp-marketplace-proposal.md diff --git a/src/services/marketplace/__tests__/xcode-mcp-integration.spec.ts b/src/services/marketplace/__tests__/xcode-mcp-integration.spec.ts new file mode 100644 index 0000000000..5455461c64 --- /dev/null +++ b/src/services/marketplace/__tests__/xcode-mcp-integration.spec.ts @@ -0,0 +1,96 @@ +// Test to validate XcodeBuildMCP marketplace integration +import { describe, it, expect } from "vitest" +import { mcpMarketplaceItemSchema, type McpMarketplaceItem } from "@roo-code/types" + +describe("XcodeBuildMCP Marketplace Integration", () => { + const xcodeBuildMcpConfig: McpMarketplaceItem = { + id: "xcodebuildmcp", + name: "XcodeBuildMCP", + description: + "A comprehensive Model Context Protocol server that provides Xcode-related tools for building, testing, and managing iOS/macOS projects, simulators, and devices.", + author: "Cameron Cooke", + authorUrl: "https://github.com/cameroncooke", + url: "https://github.com/cameroncooke/XcodeBuildMCP", + tags: ["xcode", "ios", "macos", "swift", "simulator", "device", "build", "test"], + prerequisites: ["Xcode 16.x or later", "Node.js 18.x or later", "macOS"], + content: JSON.stringify({ + command: "npx", + args: ["-y", "xcodebuildmcp@latest"], + }), + parameters: [ + { + name: "Enable Incremental Builds", + key: "INCREMENTAL_BUILDS_ENABLED", + placeholder: "true", + optional: true, + }, + { + name: "Disable Sentry Telemetry", + key: "SENTRY_DISABLED", + placeholder: "true", + optional: true, + }, + ], + } + + it("should validate XcodeBuildMCP configuration against marketplace schema", () => { + expect(() => mcpMarketplaceItemSchema.parse(xcodeBuildMcpConfig)).not.toThrow() + + const validated = mcpMarketplaceItemSchema.parse(xcodeBuildMcpConfig) + expect(validated.id).toBe("xcodebuildmcp") + expect(validated.name).toBe("XcodeBuildMCP") + expect(validated.url).toBe("https://github.com/cameroncooke/XcodeBuildMCP") + expect(validated.parameters).toHaveLength(2) + }) + + it("should have valid URL fields", () => { + const validated = mcpMarketplaceItemSchema.parse(xcodeBuildMcpConfig) + expect(validated.url).toMatch(/^https:\/\//) + expect(validated.authorUrl).toMatch(/^https:\/\//) + }) + + it("should have proper parameter configuration", () => { + const validated = mcpMarketplaceItemSchema.parse(xcodeBuildMcpConfig) + + // Check incremental builds parameter + const incrementalParam = validated.parameters?.find((p) => p.key === "INCREMENTAL_BUILDS_ENABLED") + expect(incrementalParam).toBeDefined() + expect(incrementalParam?.optional).toBe(true) + expect(incrementalParam?.name).toBe("Enable Incremental Builds") + + // Check sentry parameter + const sentryParam = validated.parameters?.find((p) => p.key === "SENTRY_DISABLED") + expect(sentryParam).toBeDefined() + expect(sentryParam?.optional).toBe(true) + expect(sentryParam?.name).toBe("Disable Sentry Telemetry") + }) + + it("should have valid content configuration", () => { + const validated = mcpMarketplaceItemSchema.parse(xcodeBuildMcpConfig) + const contentObj = JSON.parse(validated.content as string) + + expect(contentObj.command).toBe("npx") + expect(contentObj.args).toEqual(["-y", "xcodebuildmcp@latest"]) + }) + + it("should have appropriate tags for Xcode development", () => { + const validated = mcpMarketplaceItemSchema.parse(xcodeBuildMcpConfig) + + expect(validated.tags).toContain("xcode") + expect(validated.tags).toContain("ios") + expect(validated.tags).toContain("macos") + expect(validated.tags).toContain("swift") + expect(validated.tags).toContain("simulator") + expect(validated.tags).toContain("device") + expect(validated.tags).toContain("build") + expect(validated.tags).toContain("test") + }) + + it("should have proper prerequisites", () => { + const validated = mcpMarketplaceItemSchema.parse(xcodeBuildMcpConfig) + + expect(validated.prerequisites).toContain("Xcode 16.x or later") + expect(validated.prerequisites).toContain("Node.js 18.x or later") + expect(validated.prerequisites).toContain("macOS") + }) +}) diff --git a/xcode-mcp-marketplace-proposal.md b/xcode-mcp-marketplace-proposal.md new file mode 100644 index 0000000000..0e2a18ccdf --- /dev/null +++ b/xcode-mcp-marketplace-proposal.md @@ -0,0 +1,137 @@ +# Xcode MCP Marketplace Addition Proposal + +## Overview + +This document proposes adding XcodeBuildMCP to the Roo Code MCP Marketplace to address GitHub issue #6482. After researching available Xcode MCPs, XcodeBuildMCP emerges as the most comprehensive and popular option. + +## Research Findings + +### Available Xcode MCPs + +1. **XcodeBuildMCP** (⭐ 2,163 stars) - Most popular and comprehensive + + - Repository: https://github.com/cameroncooke/XcodeBuildMCP + - NPM Package: `xcodebuildmcp` + - Features: Complete Xcode project management, simulator control, device management, Swift Package Manager integration + +2. **xcodeproj-mcp-server** (⭐ 81 stars) + + - Repository: https://github.com/giginet/xcodeproj-mcp-server + - Features: Xcode project file manipulation + +3. **Claude-Project-Coordinator** (⭐ 38 stars) + + - Repository: https://github.com/M-Pineapple/Claude-Project-Coordinator + - Features: Multi-project Xcode development coordination + +4. **SwiftLens** (⭐ 30 stars) + + - Repository: https://github.com/swiftlens/swiftlens + - Features: Swift codebase semantic analysis + +5. **xctools-mcp-server** (⭐ 2 stars) + - Repository: https://github.com/nzrsky/xctools-mcp-server + - Features: Various Xcode tools + +## Recommended MCP: XcodeBuildMCP + +### Why XcodeBuildMCP? + +- **Most Popular**: 2,163 GitHub stars indicate strong community adoption +- **Comprehensive**: Covers all major Xcode development workflows +- **Well-Maintained**: Active development with CI/CD, CodeQL scanning +- **Professional Quality**: MIT licensed, verified on MseeP platform +- **Easy Installation**: Available via NPM with simple configuration + +### Features + +- **Xcode Project Management**: Build, clean, discover projects and workspaces +- **Simulator Management**: List, boot, install/launch apps, capture logs and screenshots +- **Device Management**: Physical device support with app deployment and testing +- **Swift Package Manager**: Build packages, run tests and executables +- **App Utilities**: Bundle ID extraction, app lifecycle management +- **MCP Resources**: Efficient URI-based data access for supported clients + +### Installation Configuration + +```json +{ + "mcpServers": { + "XcodeBuildMCP": { + "command": "npx", + "args": ["-y", "xcodebuildmcp@latest"] + } + } +} +``` + +### Optional Environment Variables + +- `INCREMENTAL_BUILDS_ENABLED`: Enable experimental incremental builds +- `SENTRY_DISABLED`: Disable telemetry reporting + +## Marketplace Configuration Proposal + +Based on the existing marketplace schema in `packages/types/src/marketplace.ts`, here's the proposed configuration: + +```yaml +items: + - id: "xcodebuildmcp" + name: "XcodeBuildMCP" + description: "A comprehensive Model Context Protocol server that provides Xcode-related tools for building, testing, and managing iOS/macOS projects, simulators, and devices." + author: "Cameron Cooke" + authorUrl: "https://github.com/cameroncooke" + url: "https://github.com/cameroncooke/XcodeBuildMCP" + tags: ["xcode", "ios", "macos", "swift", "simulator", "device", "build", "test"] + prerequisites: ["Xcode 16.x or later", "Node.js 18.x or later", "macOS"] + content: | + { + "command": "npx", + "args": ["-y", "xcodebuildmcp@latest"] + } + parameters: + - name: "Enable Incremental Builds" + key: "INCREMENTAL_BUILDS_ENABLED" + placeholder: "true" + optional: true + - name: "Disable Sentry Telemetry" + key: "SENTRY_DISABLED" + placeholder: "true" + optional: true +``` + +## Implementation Steps + +1. **Add to Marketplace API**: The configuration above should be added to the marketplace API endpoint (`/api/marketplace/mcps`) + +2. **Verify Schema Compatibility**: The existing marketplace infrastructure already supports: + + - ✅ Basic MCP configuration with `command` and `args` + - ✅ Optional parameters with environment variables + - ✅ Prerequisites listing + - ✅ Author information and URLs + - ✅ Tags for categorization + +3. **Test Installation**: Verify that the marketplace can properly install and configure XcodeBuildMCP + +## Additional Recommendations + +### Consider Adding Multiple Xcode MCPs + +While XcodeBuildMCP is the most comprehensive, different MCPs serve different use cases: + +1. **XcodeBuildMCP**: Complete Xcode development workflow +2. **xcodeproj-mcp-server**: Specialized for project file manipulation +3. **SwiftLens**: Focused on code analysis and understanding + +### Future Enhancements + +- Add MCP compatibility matrix showing which features work with which editors +- Include demo videos or screenshots in marketplace listings +- Add community ratings and reviews for MCPs + +## Conclusion + +Adding XcodeBuildMCP to the marketplace would significantly enhance Roo Code's iOS/macOS development capabilities. The MCP is mature, well-maintained, and provides comprehensive Xcode integration that would benefit many users working on Apple platform development. + +The existing marketplace infrastructure is fully capable of supporting this addition without any code changes to the Roo Code repository.