Skip to main content
Glama

system_launch_app

Launch macOS applications by name using AppleScript automation through the MCP server.

Instructions

[System control and information] Launch an application

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesApplication name

Implementation Reference

  • Handler implementation for the 'system_launch_app' tool. This defines the AppleScript template that launches or activates the specified application by name, handling errors.
    {
      name: "launch_app",
      description: "Launch an application",
      schema: {
        type: "object",
        properties: {
          name: {
            type: "string",
            description: "Application name",
          },
        },
        required: ["name"],
      },
      script: (args) => `
            try
              tell application "${args.name}"
                activate
              end tell
              return "Application ${args.name} launched successfully"
            on error errMsg
              return "Failed to launch application: " & errMsg
            end try
          `,
    },
  • Input schema for 'system_launch_app' tool, requiring the application 'name' as a string.
    schema: {
      type: "object",
      properties: {
        name: {
          type: "string",
          description: "Application name",
        },
      },
      required: ["name"],
    },
  • src/index.ts:25-25 (registration)
    Registration of the 'system' category, which includes the 'launch_app' script that becomes the 'system_launch_app' tool.
    server.addCategory(systemCategory);
  • Tool registration in listTools handler, constructing tool name as 'category_script' e.g. 'system_launch_app'.
    this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
      tools: this.categories.flatMap((category) =>
        category.scripts.map((script) => ({
          name: `${category.name}_${script.name}`, // Changed from dot to underscore
          description: `[${category.description}] ${script.description}`,
          inputSchema: script.schema || {
            type: "object",
            properties: {},
          },
        })),
      ),
    }));
  • Core execution handler for all tools including 'system_launch_app'. Parses tool name by splitting on '_', retrieves category/script, generates script content, and executes it via osascript.
    this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
      const toolName = request.params.name;
      this.log("info", "Tool execution requested", { 
        tool: toolName,
        hasArguments: !!request.params.arguments
      });
      
      try {
        // Split on underscore instead of dot
        const [categoryName, ...scriptNameParts] =
          toolName.split("_");
        const scriptName = scriptNameParts.join("_"); // Rejoin in case script name has underscores
    
        const category = this.categories.find((c) => c.name === categoryName);
        if (!category) {
          this.log("warning", "Category not found", { categoryName });
          throw new McpError(
            ErrorCode.MethodNotFound,
            `Category not found: ${categoryName}`,
          );
        }
    
        const script = category.scripts.find((s) => s.name === scriptName);
        if (!script) {
          this.log("warning", "Script not found", { 
            categoryName, 
            scriptName 
          });
          throw new McpError(
            ErrorCode.MethodNotFound,
            `Script not found: ${scriptName}`,
          );
        }
    
        this.log("debug", "Generating script content", { 
          categoryName, 
          scriptName,
          isFunction: typeof script.script === "function"
        });
        
        const scriptContent =
          typeof script.script === "function"
            ? script.script(request.params.arguments)
            : script.script;
    
        const result = await this.executeScript(scriptContent);

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/joshrutkowski/applescript-mcp'

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