create_folder
Create a new folder in a Jira project for organizing test cases, plans, or cycles within Zephyr Scale Cloud.
Instructions
Create a new folder in a project
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the folder to create | |
| projectKey | Yes | Jira project key where the folder will be created | |
| parentFolderId | No | Optional parent folder ID to create a subfolder | |
| folderType | No | Folder type (default: TEST_CASE) | TEST_CASE |
Implementation Reference
- src/tools/folder-tools.js:91-152 (handler)Main handler function for the 'create_folder' MCP tool. Validates inputs, calls ZephyrClient.createFolder, and returns formatted response.async function createFolder(args) { try { const { name, projectKey, parentFolderId, folderType } = args; if (!name) { throw new Error('folder name is required'); } if (!projectKey) { throw new Error('projectKey is required'); } if (!config.projectKeyPattern.test(projectKey)) { throw new Error('Invalid projectKey format. Must match pattern: [A-Z][A-Z_0-9]+'); } // Validate folderType against allowed enum values const validFolderTypes = ['TEST_CASE', 'TEST_PLAN', 'TEST_CYCLE']; const selectedFolderType = folderType || 'TEST_CASE'; if (!validFolderTypes.includes(selectedFolderType)) { throw new Error(`folderType must be one of: ${validFolderTypes.join(', ')}`); } const folderData = { name, projectKey, folderType: selectedFolderType }; if (parentFolderId) { if (!config.folderIdPattern.test(parentFolderId)) { throw new Error('Invalid parentFolderId format. Must be a numeric ID.'); } folderData.parentId = parseInt(parentFolderId); } const result = await client.createFolder(folderData); return { content: [ { type: 'text', text: JSON.stringify({ message: 'Folder created successfully', folder: result }, null, 2) } ] }; } catch (error) { return { content: [ { type: 'text', text: formatError(error, 'creating folder') } ], isError: true }; } }
- src/tools/folder-tools.js:204-236 (registration)Registration object for 'create_folder' tool in folderTools array, including name, description, inputSchema, and handler reference. This array is spread into allTools in index.js for MCP server.{ name: 'create_folder', description: 'Create a new folder in a project', inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Name of the folder to create', minLength: 1, maxLength: 255 }, projectKey: { type: 'string', description: 'Jira project key where the folder will be created', pattern: config.projectKeyPattern.source }, parentFolderId: { type: 'string', description: 'Optional parent folder ID to create a subfolder', pattern: config.folderIdPattern.source }, folderType: { type: 'string', description: 'Folder type (default: TEST_CASE)', enum: ['TEST_CASE', 'TEST_PLAN', 'TEST_CYCLE'], default: 'TEST_CASE' } }, required: ['name', 'projectKey'] }, handler: createFolder }
- src/tools/folder-tools.js:207-234 (schema)Input schema for 'create_folder' tool defining parameters with types, descriptions, constraints (patterns, enums, required).inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Name of the folder to create', minLength: 1, maxLength: 255 }, projectKey: { type: 'string', description: 'Jira project key where the folder will be created', pattern: config.projectKeyPattern.source }, parentFolderId: { type: 'string', description: 'Optional parent folder ID to create a subfolder', pattern: config.folderIdPattern.source }, folderType: { type: 'string', description: 'Folder type (default: TEST_CASE)', enum: ['TEST_CASE', 'TEST_PLAN', 'TEST_CYCLE'], default: 'TEST_CASE' } }, required: ['name', 'projectKey'] },
- src/zephyr-client.js:119-121 (helper)ZephyrClient helper method implementing the API call to create a folder via POST /folders.async createFolder(folderData) { return this.request('POST', '/folders', folderData); }