show_build_set_proj
Retrieve build settings from an Xcode project file. Specify the projectPath and scheme to generate detailed configuration insights using xcodebuild.
Instructions
Shows build settings from a project file using xcodebuild. IMPORTANT: Requires projectPath and scheme. Example: show_build_set_proj({ projectPath: '/path/to/MyProject.xcodeproj', scheme: 'MyScheme' })
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | Yes | The scheme to use (Required) |
Implementation Reference
- src/tools/build_settings.ts:34-79 (handler)Core handler function that executes the tool logic: runs xcodebuild -showBuildSettings for the provided project path and scheme, formats the output.async function _handleShowBuildSettingsLogic(params: { workspacePath?: string; projectPath?: string; scheme: string; }): Promise<ToolResponse> { log('info', `Showing build settings for scheme ${params.scheme}`); try { // Create the command array for xcodebuild const command = ['xcodebuild', '-showBuildSettings']; // -showBuildSettings as an option, not an action // Add the workspace or project if (params.workspacePath) { command.push('-workspace', params.workspacePath); } else if (params.projectPath) { command.push('-project', params.projectPath); } // Add the scheme command.push('-scheme', params.scheme); // Execute the command directly const result = await executeCommand(command, 'Show Build Settings'); if (!result.success) { return createTextResponse(`Failed to show build settings: ${result.error}`, true); } return { content: [ { type: 'text', text: `✅ Build settings for scheme ${params.scheme}:`, }, { type: 'text', text: result.output || 'Build settings retrieved successfully.', }, ], }; } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); log('error', `Error showing build settings: ${errorMessage}`); return createTextResponse(`Error showing build settings: ${errorMessage}`, true); } }
- src/tools/build_settings.ts:183-203 (registration)Registers the 'show_build_set_proj' tool on the MCP server, defining its name, description, input schema, and handler (with validation wrapper).export function registerShowBuildSettingsProjectTool(server: McpServer): void { registerTool<BaseProjectParams>( server, 'show_build_set_proj', "Shows build settings from a project file using xcodebuild. IMPORTANT: Requires projectPath and scheme. Example: show_build_set_proj({ projectPath: '/path/to/MyProject.xcodeproj', scheme: 'MyScheme' })", { projectPath: projectPathSchema, scheme: schemeSchema, }, async (params: BaseProjectParams) => { // Validate required parameters const projectValidation = validateRequiredParam('projectPath', params.projectPath); if (!projectValidation.isValid) return projectValidation.errorResponse!; const schemeValidation = validateRequiredParam('scheme', params.scheme); if (!schemeValidation.isValid) return schemeValidation.errorResponse!; return _handleShowBuildSettingsLogic(params); }, ); }
- src/tools/common.ts:22-24 (schema)Zod schema definitions for the input parameters projectPath and scheme used by the tool.export const workspacePathSchema = z.string().describe('Path to the .xcworkspace file (Required)'); export const projectPathSchema = z.string().describe('Path to the .xcodeproj file (Required)'); export const schemeSchema = z.string().describe('The scheme to use (Required)');
- src/utils/register-tools.ts:133-137 (registration)Top-level registration entry that conditionally enables and calls registerShowBuildSettingsProjectTool based on environment variable.{ register: registerShowBuildSettingsProjectTool, groups: [ToolGroup.PROJECT_DISCOVERY], envVar: 'XCODEBUILDMCP_TOOL_SHOW_BUILD_SETTINGS_PROJECT', },
- src/tools/build_settings.ts:127-127 (helper)String reference to the tool name in the output of the list schemes tool, suggesting it as a next step.2. Show build settings: ${projectOrWorkspace === 'workspace' ? 'show_build_set_ws' : 'show_build_set_proj'}({ ${projectOrWorkspace}Path: "${path}", scheme: "${firstScheme}" })`;