Skip to main content
Glama

JIRA MCP Server

get-assigned-issues.handler.ts3.31 kB
/** * Get Assigned Issues Handler * * MCP tool handler for retrieving issues assigned to the current user */ import { BaseToolHandler } from "@core/tools/tool-handler.class"; import { JiraApiError, JiraNotFoundError, JiraPermissionError, } from "@features/jira/client/errors"; import { IssuesListFormatter } from "@features/jira/issues/formatters/issues-list.formatter"; import type { GetAssignedIssuesUseCase } from "@features/jira/issues/use-cases"; import type { GetAssignedIssuesParams } from "@features/jira/issues/validators"; /** * Handler for retrieving and formatting issues assigned to the current user * Uses the new use case architecture with dependency injection */ export class GetAssignedIssuesHandler extends BaseToolHandler< GetAssignedIssuesParams, string > { private formatter: IssuesListFormatter; /** * Create a new GetAssignedIssuesHandler with use case * * @param getAssignedIssuesUseCase - Use case for retrieving assigned issues */ constructor( private readonly getAssignedIssuesUseCase: GetAssignedIssuesUseCase, ) { super("JIRA", "Get Assigned Issues"); this.formatter = new IssuesListFormatter(); } /** * Execute the handler logic * Retrieves issues assigned to the current user and formats them */ protected async execute(): Promise<string> { try { this.logger.info("Getting issues assigned to current user"); // Get assigned issues using use case const assignedIssues = await this.getAssignedIssuesUseCase.execute(); // Format the issues using the formatter return this.formatter.format(assignedIssues); } catch (error) { this.logger.error(`Failed to get assigned issues: ${error}`); throw this.enhanceError(error); } } /** * Enhance error messages for better user guidance */ private enhanceError(error: unknown): Error { if (error instanceof JiraNotFoundError) { return new Error( "❌ **No Assigned Issues Found**\n\nNo issues are currently assigned to you.\n\n**Solutions:**\n- Verify you have JIRA issues assigned to your account\n- Check your JIRA permissions\n\n**Example:** `jira_get_assigned_issues`", ); } if (error instanceof JiraPermissionError) { return new Error( `❌ **Permission Denied**\n\nYou don't have permission to search for issues.\n\n**Solutions:**\n- Check your JIRA permissions\n- Contact your JIRA administrator\n- Verify you have access to projects\n\n**Required Permissions:** Browse Projects`, ); } if (error instanceof JiraApiError) { return new Error( `❌ **JIRA API Error**\n\n${error.message}\n\n**Solutions:**\n- Check your JIRA connection\n- Verify your user account is valid\n- Try again in a few moments\n\n**Note:** This searches for issues assigned to your user account`, ); } if (error instanceof Error) { return new Error( `❌ **Search Failed**\n\n${error.message}\n\n**Solutions:**\n- Check your JIRA connection\n- Verify your permissions\n- Try again in a few moments\n\n**Note:** This searches for issues assigned to you`, ); } return new Error( "❌ **Unknown Error**\n\nAn unknown error occurred while searching for assigned issues.\n\nPlease try again.", ); } }

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/Dsazz/mcp-jira'

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