linear_createProject
Create and manage new projects in Linear, including setting names, descriptions, content, team associations, and initial states. Simplifies project setup for efficient task organization and collaboration.
Instructions
Create a new project in Linear
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | Content of the project (Markdown supported) | |
| description | No | Short summary of the project | |
| name | Yes | Name of the project | |
| state | No | Initial state of the project (e.g., 'planned', 'started', 'paused', 'completed', 'canceled') | |
| teamIds | Yes | IDs of the teams this project belongs to |
Implementation Reference
- The main handler function for the 'linear_createProject' tool. It validates the input arguments using the isCreateProjectArgs type guard and calls the LinearService.createProject method to perform the actual creation.export function handleCreateProject(linearService: LinearService) { return async (args: unknown) => { try { if (!isCreateProjectArgs(args)) { throw new Error('Invalid arguments for createProject'); } return await linearService.createProject(args); } catch (error) { logError('Error creating project', error); throw error; } }; }
- The schema definition for the 'linear_createProject' tool, specifying input parameters (name, description, content, teamIds, state) and output format (id, name, url).export const createProjectToolDefinition: MCPToolDefinition = { name: 'linear_createProject', description: 'Create a new project in Linear', input_schema: { type: 'object', properties: { name: { type: 'string', description: 'Name of the project', }, description: { type: 'string', description: 'Short summary of the project', }, content: { type: 'string', description: 'Content of the project (Markdown supported)', }, teamIds: { type: 'array', items: { type: 'string' }, description: 'IDs of the teams this project belongs to', }, state: { type: 'string', description: "Initial state of the project (e.g., 'planned', 'started', 'paused', 'completed', 'canceled')", }, }, required: ['name', 'teamIds'], }, output_schema: { type: 'object', properties: { id: { type: 'string' }, name: { type: 'string' }, url: { type: 'string' }, }, }, };
- src/tools/handlers/index.ts:78-78 (registration)Registration of the 'linear_createProject' tool in the handlers registry, mapping it to the handleCreateProject function.linear_createProject: handleCreateProject(linearService),
- src/tools/type-guards.ts:206-221 (helper)Type guard function used to validate input arguments for the 'linear_createProject' tool, ensuring required fields like name and teamIds are present and correctly typed.export function isCreateProjectArgs(args: unknown): args is { name: string; description?: string; content?: string; teamIds: string[]; state?: string; } { return ( typeof args === 'object' && args !== null && 'name' in args && typeof (args as { name: string }).name === 'string' && 'teamIds' in args && Array.isArray((args as { teamIds: string[] }).teamIds) ); }