Skip to main content
Glama

clean_ws

Cleans Xcode build products for a specific workspace using xcodebuild. Specify workspace path; scheme and configuration are optional.

Instructions

Cleans build products for a specific workspace using xcodebuild. IMPORTANT: Requires workspacePath. Scheme/Configuration are optional. Example: clean_ws({ workspacePath: '/path/to/MyProject.xcworkspace', scheme: 'MyScheme' })

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
workspacePathYesPath to the .xcworkspace file (Required)
schemeNoOptional: The scheme to clean
configurationNoOptional: Build configuration to clean (Debug, Release, etc.)
derivedDataPathNoOptional: Path where derived data might be located
extraArgsNoAdditional xcodebuild arguments

Implementation Reference

  • Core handler function that executes the xcodebuild clean command for workspaces or projects.
    async function _handleCleanLogic(params: {
      workspacePath?: string;
      projectPath?: string;
      scheme?: string;
      configuration?: string;
      derivedDataPath?: string;
      extraArgs?: string[];
    }): Promise<ToolResponse> {
      log('info', 'Starting xcodebuild clean request (internal)');
    
      // For clean operations, we need to provide a default platform and configuration
      return executeXcodeBuildCommand(
        {
          ...params,
          scheme: params.scheme || '', // Empty string if not provided
          configuration: params.configuration || 'Debug', // Default to Debug if not provided
        },
        {
          platform: XcodePlatform.macOS, // Default to macOS, but this doesn't matter much for clean
          logPrefix: 'Clean',
        },
        false,
        'clean', // Specify 'clean' as the build action
      );
    }
  • Zod input schema defining parameters for the clean_ws tool, including required workspacePath.
      workspacePath: z.string().describe('Path to the .xcworkspace file (Required)'),
      scheme: z.string().optional().describe('Optional: The scheme to clean'),
      configuration: z
        .string()
        .optional()
        .describe('Optional: Build configuration to clean (Debug, Release, etc.)'),
      derivedDataPath: z
        .string()
        .optional()
        .describe('Optional: Path where derived data might be located'),
      extraArgs: z.array(z.string()).optional().describe('Additional xcodebuild arguments'),
    },
  • Direct registration of the 'clean_ws' tool on the MCP server, specifying name, description, input schema, and handler function.
      'clean_ws',
      "Cleans build products for a specific workspace using xcodebuild. IMPORTANT: Requires workspacePath. Scheme/Configuration are optional. Example: clean_ws({ workspacePath: '/path/to/MyProject.xcworkspace', scheme: 'MyScheme' })",
      {
        workspacePath: z.string().describe('Path to the .xcworkspace file (Required)'),
        scheme: z.string().optional().describe('Optional: The scheme to clean'),
        configuration: z
          .string()
          .optional()
          .describe('Optional: Build configuration to clean (Debug, Release, etc.)'),
        derivedDataPath: z
          .string()
          .optional()
          .describe('Optional: Path where derived data might be located'),
        extraArgs: z.array(z.string()).optional().describe('Additional xcodebuild arguments'),
      },
      (params) => _handleCleanLogic(params),
    );
  • Configuration entry in toolRegistrations array that enables registration of the clean_ws tool via registerCleanWorkspaceTool when the corresponding environment variable is set.
    register: registerCleanWorkspaceTool,
    groups: [
      ToolGroup.MACOS_WORKFLOW,
      ToolGroup.IOS_SIMULATOR_WORKFLOW,
      ToolGroup.IOS_DEVICE_WORKFLOW,
    ],
    envVar: 'XCODEBUILDMCP_TOOL_CLEAN_WORKSPACE',

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SampsonKY/XcodeBuildMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server