Skip to main content
Glama
build_ios_device.ts4.05 kB
/** * iOS Device Build Tools - Tools for building iOS applications for physical devices * * This module provides specialized tools for building iOS applications targeting physical * devices using xcodebuild. It supports both workspace and project-based builds. * * Responsibilities: * - Building iOS applications for physical devices from project files * - Building iOS applications for physical devices from workspaces * - Handling build configuration and derived data paths * - Providing platform-specific destination parameters */ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { XcodePlatform } from '../utils/xcode.js'; import { validateRequiredParam } from '../utils/validation.js'; import { executeXcodeBuildCommand } from '../utils/build-utils.js'; import { registerTool, workspacePathSchema, projectPathSchema, schemeSchema, configurationSchema, derivedDataPathSchema, extraArgsSchema, BaseWorkspaceParams, BaseProjectParams, preferXcodebuildSchema, } from './common.js'; // --- Tool Registration Functions --- /** * Registers the build_ios_dev_ws tool. */ export function registerIOSDeviceBuildWorkspaceTool(server: McpServer): void { type Params = BaseWorkspaceParams; registerTool<Params>( server, 'build_ios_dev_ws', "Builds an iOS app from a workspace for a physical device. IMPORTANT: Requires workspacePath and scheme. Example: build_ios_dev_ws({ workspacePath: '/path/to/MyProject.xcworkspace', scheme: 'MyScheme' })", { workspacePath: workspacePathSchema, scheme: schemeSchema, configuration: configurationSchema, derivedDataPath: derivedDataPathSchema, extraArgs: extraArgsSchema, preferXcodebuild: preferXcodebuildSchema, }, async (params: Params) => { const workspaceValidation = validateRequiredParam('workspacePath', params.workspacePath); if (!workspaceValidation.isValid) return workspaceValidation.errorResponse!; const schemeValidation = validateRequiredParam('scheme', params.scheme); if (!schemeValidation.isValid) return schemeValidation.errorResponse!; return executeXcodeBuildCommand( { ...params, configuration: params.configuration ?? 'Debug', // Default config }, { platform: XcodePlatform.iOS, logPrefix: 'iOS Device Build', }, params.preferXcodebuild, 'build', ); }, ); } /** * Registers the build_ios_dev_proj tool. */ export function registerIOSDeviceBuildProjectTool(server: McpServer): void { type Params = BaseProjectParams; registerTool<Params>( server, 'build_ios_dev_proj', "Builds an iOS app from a project file for a physical device. IMPORTANT: Requires projectPath and scheme. Example: build_ios_dev_proj({ projectPath: '/path/to/MyProject.xcodeproj', scheme: 'MyScheme' })", { projectPath: projectPathSchema, scheme: schemeSchema, configuration: configurationSchema, derivedDataPath: derivedDataPathSchema, extraArgs: extraArgsSchema, preferXcodebuild: preferXcodebuildSchema, }, async (params: Params) => { 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 executeXcodeBuildCommand( { ...params, configuration: params.configuration ?? 'Debug', // Default config }, { platform: XcodePlatform.iOS, logPrefix: 'iOS Device Build', }, params.preferXcodebuild, 'build', ); }, ); } // Register both iOS device build tools export function registerIOSDeviceBuildTools(server: McpServer): void { registerIOSDeviceBuildWorkspaceTool(server); registerIOSDeviceBuildProjectTool(server); }

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