sys-url-list
Retrieve all Magento 2 store URLs in table, JSON, or CSV format. Filter URLs by store ID to manage and access website links for development and testing workflows.
Instructions
Get all Magento 2 URLs
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format | table |
| storeId | No | Store ID to filter URLs |
Implementation Reference
- src/index.ts:1348-1376 (handler)The handler function for the 'sys-url-list' tool. It constructs a magerun2 sys:url:list command with optional format (table/json/csv) and storeId filter, executes it using the shared executeMagerun2Command helper, handles errors, and returns formatted text content with the list of URLs.let command = `magerun2 sys:url:list --format=${format}`; if (storeId) { command += ` --store-id=${storeId}`; } const result = await executeMagerun2Command(command, format === "json"); if (!result.success) { return { content: [{ type: "text", text: result.error }], isError: true }; } const responseText = format === "json" ? `URL list (${format} format):\n\n${JSON.stringify(result.data, null, 2)}` : `URL list (${format} format):\n\n${result.data}`; return { content: [{ type: "text", text: responseText }] }; }
- src/index.ts:1336-1347 (schema)The schema definition for the 'sys-url-list' tool, including title, description, and input schema with format parameter (enum: table/json/csv, default 'table') and optional storeId string.title: "URL List", description: "Get all Magento 2 URLs", inputSchema: { format: z.enum(["table", "json", "csv"]) .default("table") .describe("Output format"), storeId: z.string() .optional() .describe("Store ID to filter URLs") } }, async ({ format = "table", storeId }) => {
- src/index.ts:1334-1378 (registration)The registration of the 'sys-url-list' tool on the MCP server using server.registerTool, specifying the tool name, schema, and handler function."sys-url-list", { title: "URL List", description: "Get all Magento 2 URLs", inputSchema: { format: z.enum(["table", "json", "csv"]) .default("table") .describe("Output format"), storeId: z.string() .optional() .describe("Store ID to filter URLs") } }, async ({ format = "table", storeId }) => { let command = `magerun2 sys:url:list --format=${format}`; if (storeId) { command += ` --store-id=${storeId}`; } const result = await executeMagerun2Command(command, format === "json"); if (!result.success) { return { content: [{ type: "text", text: result.error }], isError: true }; } const responseText = format === "json" ? `URL list (${format} format):\n\n${JSON.stringify(result.data, null, 2)}` : `URL list (${format} format):\n\n${result.data}`; return { content: [{ type: "text", text: responseText }] }; } );
- src/index.ts:28-88 (helper)Shared helper function used by 'sys-url-list' (and other tools) to execute magerun2 commands safely with timeout, stderr logging, JSON parsing option, and custom error messages for common issues like missing magerun2 or non-Magento directory.async function executeMagerun2Command(command: string, parseJson: boolean = false): Promise<{ success: true; data: any; rawOutput: string; } | { success: false; error: string; isError: true; }> { try { const { stdout, stderr } = await execAsync(command, { cwd: process.cwd(), timeout: 30000 // 30 second timeout }); if (stderr && stderr.trim()) { console.error("magerun2 stderr:", stderr); } if (parseJson) { try { return { success: true, data: JSON.parse(stdout), rawOutput: stdout }; } catch (parseError) { return { success: false, error: `Error parsing magerun2 JSON output: ${parseError}\n\nRaw output:\n${stdout}`, isError: true }; } } return { success: true, data: stdout.trim(), rawOutput: stdout }; } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); // Check if magerun2 is not found if (errorMessage.includes("command not found") || errorMessage.includes("not recognized")) { return { success: false, error: "Error: magerun2 command not found. Please ensure n98-magerun2 is installed and available in your PATH.\n\nInstallation instructions: https://github.com/netz98/n98-magerun2", isError: true }; } // Check if not in Magento directory if (errorMessage.includes("not a Magento installation") || errorMessage.includes("app/etc/env.php")) { return { success: false, error: "Error: Current directory does not appear to be a Magento 2 installation. Please run this command from your Magento 2 root directory.", isError: true }; } return { success: false, error: `Error executing magerun2 command: ${errorMessage}`, isError: true }; } }