Skip to main content
Glama

linear_removeIssueLabel

Remove a label from an issue in Linear to maintain accurate issue categorization and organization within your project management workflow.

Instructions

Remove a label from an issue in Linear

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
issueIdYesID or identifier of the issue to remove the label from (e.g., ABC-123)
labelIdYesID of the label to remove from the issue

Implementation Reference

  • The main handler function that executes the tool logic: validates input arguments using type guard and calls the LinearService to remove the label from the issue.
    export function handleRemoveIssueLabel(linearService: LinearService) {
      return async (args: unknown) => {
        try {
          if (!isRemoveIssueLabelArgs(args)) {
            throw new Error('Invalid arguments for removeIssueLabel');
          }
    
          return await linearService.removeIssueLabel(args.issueId, args.labelId);
        } catch (error) {
          logError('Error removing label from issue', error);
          throw error;
        }
      };
    }
  • The MCP tool definition including name, description, input schema (issueId and labelId required), and output schema.
    export const removeIssueLabelToolDefinition: MCPToolDefinition = {
      name: 'linear_removeIssueLabel',
      description: 'Remove a label from an issue in Linear',
      input_schema: {
        type: 'object',
        properties: {
          issueId: {
            type: 'string',
            description: 'ID or identifier of the issue to remove the label from (e.g., ABC-123)',
          },
          labelId: {
            type: 'string',
            description: 'ID of the label to remove from the issue',
          },
        },
        required: ['issueId', 'labelId'],
      },
      output_schema: {
        type: 'object',
        properties: {
          success: { type: 'boolean' },
          issueId: { type: 'string' },
          labelId: { type: 'string' },
        },
      },
    };
  • Registration of the tool handler in the registerToolHandlers function, mapping 'linear_removeIssueLabel' to handleRemoveIssueLabel.
    linear_addIssueLabel: handleAddIssueLabel(linearService),
    linear_removeIssueLabel: handleRemoveIssueLabel(linearService),
  • Type guard function to validate the input arguments for the tool (issueId and labelId as strings).
    export function isRemoveIssueLabelArgs(args: unknown): args is {
      issueId: string;
      labelId: string;
    } {
      return (
        typeof args === 'object' &&
        args !== null &&
        'issueId' in args &&
        typeof (args as { issueId: string }).issueId === 'string' &&
        'labelId' in args &&
        typeof (args as { labelId: string }).labelId === 'string'
      );
    }
  • Core service method implementing the label removal: fetches the issue and current labels, filters out the target label, and updates the issue using Linear SDK.
    async removeIssueLabel(issueId: string, labelId: string) {
      // Get the issue
      const issue = await this.client.issue(issueId);
    
      if (!issue) {
        throw new Error(`Issue not found: ${issueId}`);
      }
    
      // Get the current labels
      const currentLabels = await issue.labels();
      const currentLabelIds = currentLabels.nodes.map((label) => label.id);
    
      // Filter out the label ID to remove
      const updatedLabelIds = currentLabelIds.filter((id) => id !== labelId);
    
      // Only update if the label was actually present
      if (currentLabelIds.length !== updatedLabelIds.length) {
        await issue.update({
          labelIds: updatedLabelIds,
        });
      }
    
      return {
        success: true,
        issueId: issue.id,
        labelId,
      };
    }

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/tacticlaunch/mcp-linear'

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