Skip to main content
Glama

swift_package_stop

Terminate a running Swift Package executable by specifying its process ID (PID) using this tool. Integrates with XcodeBuildMCP for efficient process management.

Instructions

Stops a running Swift Package executable started with swift_package_run

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pidYesProcess ID (PID) of the running executable

Implementation Reference

  • Defines the Zod schema for input parameters (pid) of the swift_package_stop tool.
    const swiftPackageStopSchema = z.object({
      pid: z.number().describe('Process ID (PID) of the running executable'),
    });
  • Core handler function that stops the Swift Package process by PID: retrieves process info, sends SIGTERM/SIGKILL, removes from active list, and returns response.
    export async function swift_package_stopLogic(
      params: SwiftPackageStopParams,
      processManager: ProcessManager = getDefaultProcessManager(),
      timeout: number = 5000,
    ): Promise<ToolResponse> {
      const processInfo = processManager.getProcess(params.pid);
      if (!processInfo) {
        return createTextResponse(
          `⚠️ No running process found with PID ${params.pid}. Use swift_package_run to check active processes.`,
          true,
        );
      }
    
      try {
        processInfo.process.kill('SIGTERM');
    
        // Give it time to terminate gracefully (configurable for testing)
        await new Promise((resolve) => {
          let terminated = false;
    
          processInfo.process.on('exit', () => {
            terminated = true;
            resolve(true);
          });
    
          setTimeout(() => {
            if (!terminated) {
              processInfo.process.kill('SIGKILL');
            }
            resolve(true);
          }, timeout);
        });
    
        processManager.removeProcess(params.pid);
    
        return {
          content: [
            {
              type: 'text',
              text: `✅ Stopped executable (was running since ${processInfo.startedAt.toISOString()})`,
            },
            {
              type: 'text',
              text: `💡 Process terminated. You can now run swift_package_run again if needed.`,
            },
          ],
        };
      } catch (error) {
        const message = error instanceof Error ? error.message : String(error);
        return createErrorResponse('Failed to stop process', message);
      }
    }
  • Default export registering the tool with name, description, schema, and a thin handler that validates inputs and delegates to the core logic.
    export default {
      name: 'swift_package_stop',
      description: 'Stops a running Swift Package executable started with swift_package_run',
      schema: swiftPackageStopSchema.shape, // MCP SDK compatibility
      async handler(args: Record<string, unknown>): Promise<ToolResponse> {
        // Validate parameters using Zod
        const parseResult = swiftPackageStopSchema.safeParse(args);
        if (!parseResult.success) {
          return createErrorResponse(
            'Parameter validation failed',
            parseResult.error.errors.map((e) => `${e.path.join('.')}: ${e.message}`).join(', '),
          );
        }
    
        return swift_package_stopLogic(parseResult.data);
      },
    };

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

Related Tools

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/getsentry/XcodeBuildMCP'

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