Skip to main content
Glama
hackdonalds

JIRA MCP Server

by hackdonalds

jira_search

Search JIRA issues using JQL queries to find specific tickets, track progress, and manage project workflows efficiently.

Instructions

Search issues using JQL (JIRA Query Language)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
jqlYesJQL query string
startAtNoStarting index for pagination (default: 0)
maxResultsNoMaximum number of results (default: 50)

Implementation Reference

  • Handler function for jira_search tool that invokes JiraClient.searchIssues and formats the response as text content.
    async ({ jql, startAt = 0, maxResults = 50 }) => { logger.info('Searching JIRA issues', { jql, startAt, maxResults }); try { const searchResults = await jiraClient.searchIssues(jql, startAt, maxResults); logger.info('Successfully searched issues', { jql, resultCount: searchResults.issues?.length || 0 }); return { content: [{ type: 'text', text: JSON.stringify(searchResults, null, 2) }] }; } catch (error) { logger.error('Failed to search issues', { jql, error: error.message }); throw error; } }
  • Input schema for jira_search tool defining parameters jql, startAt, and maxResults using Zod.
    { title: 'Search JIRA Issues', description: 'Search issues using JQL (JIRA Query Language)', inputSchema: { jql: z.string().describe('JQL query string'), startAt: z.number().optional().describe('Starting index for pagination (default: 0)'), maxResults: z.number().optional().describe('Maximum number of results (default: 50)') }
  • server.js:218-249 (registration)
    Registration of the jira_search tool with McpServer using registerTool method.
    // Register jira_search tool server.registerTool( 'jira_search', { title: 'Search JIRA Issues', description: 'Search issues using JQL (JIRA Query Language)', inputSchema: { jql: z.string().describe('JQL query string'), startAt: z.number().optional().describe('Starting index for pagination (default: 0)'), maxResults: z.number().optional().describe('Maximum number of results (default: 50)') } }, async ({ jql, startAt = 0, maxResults = 50 }) => { logger.info('Searching JIRA issues', { jql, startAt, maxResults }); try { const searchResults = await jiraClient.searchIssues(jql, startAt, maxResults); logger.info('Successfully searched issues', { jql, resultCount: searchResults.issues?.length || 0 }); return { content: [{ type: 'text', text: JSON.stringify(searchResults, null, 2) }] }; } catch (error) { logger.error('Failed to search issues', { jql, error: error.message }); throw error; } } );
  • JiraClient.searchIssues method that performs the actual JIRA API search request.
    async searchIssues(jql, startAt = 0, maxResults = 50) { logger.info('Searching JIRA issues', { jql, startAt, maxResults }); return await this.makeRequest('search', { method: 'POST', body: JSON.stringify({ jql, startAt, maxResults }) }); }

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

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