split_openapi
Split large OpenAPI specifications into smaller, manageable files. Provide the input file path and output directory to organize and streamline API documentation.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| apiPath | Yes | Absolute path to the input OpenAPI definition file. | |
| outputDir | Yes | Absolute path to the directory for split output files. |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"apiPath": {
"description": "Absolute path to the input OpenAPI definition file.",
"type": "string"
},
"outputDir": {
"description": "Absolute path to the directory for split output files.",
"type": "string"
}
},
"required": [
"apiPath",
"outputDir"
],
"type": "object"
}
Implementation Reference
- src/index.ts:40-77 (handler)Handler function for 'split_openapi' tool that executes the Redocly CLI split command on the provided OpenAPI file path and outputs to the specified directory.async ({ apiPath, outputDir }, extra) => { // Arguments are the first parameter // Construct the command using npx to avoid global dependency issues // Quote paths to handle potential spaces const command = `npx @redocly/cli@latest split "${apiPath}" --outDir="${outputDir}"`; console.error(`Executing command: ${command}`); // Log the command being executed try { // Execute the command const { stdout, stderr } = await exec(command); // Log stdout/stderr for debugging if (stdout) { console.error("Command stdout:", stdout); } if (stderr) { console.error("Command stderr:", stderr); } // Redocly CLI often prints success messages to stdout // We'll return stdout as the primary result return { content: [{ type: "text", text: stdout || "Command executed successfully." }] }; } catch (error: any) { console.error("Command execution failed:", error); // If the command fails, return the error message (often in stderr) const errorMessage = error.stderr || error.stdout || error.message || "Unknown error occurred"; return { content: [{ type: "text", text: `Error: ${errorMessage}` }], isError: true }; } }
- src/index.ts:16-20 (schema)Zod schema defining input arguments for the split_openapi tool: apiPath and outputDir.const SplitOpenApiArgsSchema = z.object({ apiPath: z.string().describe("Absolute path to the input OpenAPI definition file."), // Changed description for consistency outputDir: z.string().describe("Absolute path to the directory for split output files.") // Changed description for consistency // Optional: Add other split options like 'separator' later if needed. });
- src/index.ts:36-78 (registration)Registration of the 'split_openapi' tool using server.tool() with name, schema, and handler function.// Register the 'split_openapi' tool server.tool( "split_openapi", // Renamed tool SplitOpenApiArgsSchema.shape, // Use renamed schema variable async ({ apiPath, outputDir }, extra) => { // Arguments are the first parameter // Construct the command using npx to avoid global dependency issues // Quote paths to handle potential spaces const command = `npx @redocly/cli@latest split "${apiPath}" --outDir="${outputDir}"`; console.error(`Executing command: ${command}`); // Log the command being executed try { // Execute the command const { stdout, stderr } = await exec(command); // Log stdout/stderr for debugging if (stdout) { console.error("Command stdout:", stdout); } if (stderr) { console.error("Command stderr:", stderr); } // Redocly CLI often prints success messages to stdout // We'll return stdout as the primary result return { content: [{ type: "text", text: stdout || "Command executed successfully." }] }; } catch (error: any) { console.error("Command execution failed:", error); // If the command fails, return the error message (often in stderr) const errorMessage = error.stderr || error.stdout || error.message || "Unknown error occurred"; return { content: [{ type: "text", text: `Error: ${errorMessage}` }], isError: true }; } } );