Skip to main content
Glama
wkoutre

Linear MCP Server

by wkoutre

linear_getIssues

Retrieve recent issues from Linear's project management system to track tasks and monitor progress. Specify a limit to control the number of issues returned.

Instructions

Get a list of recent issues from Linear

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of issues to return (default: 10)

Implementation Reference

  • The main handler function for the 'linear_getIssues' tool. It validates the input arguments using the type guard and delegates to LinearService.getIssues(limit).
    export function handleGetIssues(linearService: LinearService) {
      return async (args: unknown) => {
        try {
          if (!isGetIssuesArgs(args)) {
            throw new Error("Invalid arguments for getIssues");
          }
          
          return await linearService.getIssues(args.limit);
        } catch (error) {
          logError("Error getting issues", error);
          throw error;
        }
      };
    }
  • The MCPToolDefinition for 'linear_getIssues', including input and output schemas.
    export const getIssuesToolDefinition: MCPToolDefinition = {
      name: "linear_getIssues",
      description: "Get a list of recent issues from Linear",
      input_schema: {
        type: "object",
        properties: {
          limit: {
            type: "number",
            description: "Maximum number of issues to return (default: 10)",
          },
        }
      },
      output_schema: {
        type: "array",
        items: {
          type: "object",
          properties: {
            id: { type: "string" },
            identifier: { type: "string" },
            title: { type: "string" },
            description: { type: "string" },
            state: { type: "string" },
            priority: { type: "number" },
            estimate: { type: "number" },
            dueDate: { type: "string" },
            team: { type: "object" },
            assignee: { type: "object" },
            project: { type: "object" },
            cycle: { type: "object" },
            parent: { type: "object" },
            labels: { 
              type: "array",
              items: {
                type: "object",
                properties: {
                  id: { type: "string" },
                  name: { type: "string" },
                  color: { type: "string" }
                }
              }
            },
            sortOrder: { type: "number" },
            createdAt: { type: "string" },
            updatedAt: { type: "string" },
            url: { type: "string" }
          }
        }
      }
    };
  • The registration of the 'linear_getIssues' handler within the registerToolHandlers function, which maps tool names to their handler functions.
    export function registerToolHandlers(linearService: LinearService) {
      return {
        // User tools
        linear_getViewer: handleGetViewer(linearService),
        linear_getOrganization: handleGetOrganization(linearService),
        linear_getUsers: handleGetUsers(linearService),
        linear_getLabels: handleGetLabels(linearService),
    
        // Team tools
        linear_getTeams: handleGetTeams(linearService),
        linear_getWorkflowStates: handleGetWorkflowStates(linearService),
    
        // Project tools
        linear_getProjects: handleGetProjects(linearService),
        linear_createProject: handleCreateProject(linearService),
        
        // Project Management tools
        linear_updateProject: handleUpdateProject(linearService),
        linear_addIssueToProject: handleAddIssueToProject(linearService),
        linear_getProjectIssues: handleGetProjectIssues(linearService),
        
        // Cycle Management tools
        linear_getCycles: handleGetCycles(linearService),
        linear_getActiveCycle: handleGetActiveCycle(linearService),
        linear_addIssueToCycle: handleAddIssueToCycle(linearService),
    
        // Issue tools
        linear_getIssues: handleGetIssues(linearService),
        linear_getIssueById: handleGetIssueById(linearService),
        linear_searchIssues: handleSearchIssues(linearService),
        linear_createIssue: handleCreateIssue(linearService),
        linear_updateIssue: handleUpdateIssue(linearService),
        linear_createComment: handleCreateComment(linearService),
        linear_addIssueLabel: handleAddIssueLabel(linearService),
        linear_removeIssueLabel: handleRemoveIssueLabel(linearService),
        
        // New Issue Management tools
        linear_assignIssue: handleAssignIssue(linearService),
        linear_subscribeToIssue: handleSubscribeToIssue(linearService),
        linear_convertIssueToSubtask: handleConvertIssueToSubtask(linearService),
        linear_createIssueRelation: handleCreateIssueRelation(linearService),
        linear_archiveIssue: handleArchiveIssue(linearService),
        linear_setIssuePriority: handleSetIssuePriority(linearService),
        linear_transferIssue: handleTransferIssue(linearService),
        linear_duplicateIssue: handleDuplicateIssue(linearService),
        linear_getIssueHistory: handleGetIssueHistory(linearService),
        
        // Comment Management tools
        linear_getComments: handleGetComments(linearService)
      };
  • Type guard function used in the handler to validate input arguments for 'linear_getIssues'.
    export function isGetIssuesArgs(args: unknown): args is { limit?: number } {
      return (
        typeof args === "object" &&
        args !== null &&
        (!("limit" in args) || typeof (args as { limit: number }).limit === "number")
      );
    }

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

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