Skip to main content
Glama

show_build_set_proj

Extract build settings from Xcode project files using xcodebuild. Specify project path and scheme to retrieve configuration details.

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
NameRequiredDescriptionDefault
projectPathYesPath to the .xcodeproj file (Required)
schemeYesThe scheme to use (Required)

Implementation Reference

  • The primary handler logic that constructs and executes the 'xcodebuild -showBuildSettings' command based on provided projectPath or workspacePath and scheme, then returns formatted 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); } }
  • Registers the 'show_build_set_proj' tool with the MCP server, including name, description, schema, and handler that validates params and delegates to core logic.
    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); }, ); }
  • Central tool registry entry that conditionally registers the show_build_set_proj tool based on environment variable.
    { register: registerShowBuildSettingsProjectTool, groups: [ToolGroup.PROJECT_DISCOVERY], envVar: 'XCODEBUILDMCP_TOOL_SHOW_BUILD_SETTINGS_PROJECT', },
  • Zod schema definitions for the required projectPath and scheme input parameters used by the tool.
    export const projectPathSchema = z.string().describe('Path to the .xcodeproj file (Required)'); export const schemeSchema = z.string().describe('The scheme to use (Required)');
  • Utility function that wraps the tool handler and registers it on the MCP server using server.tool.
    export function registerTool<T extends object>( server: McpServer, name: string, description: string, schema: Record<string, z.ZodType>, handler: (params: T) => Promise<ToolResponse>, ): void { // Create a wrapper handler that matches the signature expected by server.tool const wrappedHandler = ( args: Record<string, unknown>, _extra: unknown, ): Promise<ToolResponse> => { // Assert the type *before* calling the original handler // This confines the type assertion to one place const typedParams = args as T; return handler(typedParams); }; server.tool(name, description, schema, wrappedHandler); }

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