Skip to main content
Glama

Jira MCP Server

by pdogra1299
search-handlers.ts•1.84 kB
import { JiraApiClient } from '../utils/api-client.js'; import { JiraFormatters } from '../utils/formatters.js'; export class SearchHandlers { constructor(private apiClient: JiraApiClient) {} async handleSearchIssues(args: any) { try { const { jql, maxResults = 50 } = args; if (!jql) { throw new Error('jql query is required'); } // Use POST with fields parameter to get key and summary const requestBody = { jql, maxResults, fields: ['summary'], // Only get summary, key is always included }; const result = await this.apiClient.post('/search/jql', requestBody); // Format response with key and title let response = `# Search Results\n\n**JQL**: ${jql}\n\n`; response += `Found ${result.issues.length} issue(s)${result.isLast ? '' : ' (more available)'}\n\n`; if (result.issues && result.issues.length > 0) { result.issues.forEach((issue: any) => { const key = issue.key; const summary = issue.fields?.summary || 'No summary'; response += `- **${key}**: ${summary}\n`; }); response += `\nšŸ’” Use \`get_issue\` with issue key to get full details.`; // Add pagination info if (!result.isLast && result.nextPageToken) { response += `\n\n**More results available** - ${result.issues.length} shown.`; } } else { response += `No issues found matching the query.`; } return { content: [ { type: 'text', text: response, }, ], }; } catch (error: any) { return { content: [ { type: 'text', text: JiraFormatters.formatError(error), }, ], isError: true, }; } } }

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

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