@aashari/mcp-server-atlassian-jira
Version:
Node.js/TypeScript MCP server for Atlassian Jira. Equips AI systems (LLMs) with tools to list/get projects, search/get issues (using JQL/ID), and view dev info (commits, PRs). Connects AI capabilities directly into Jira project management and issue tracki
53 lines (52 loc) • 2.16 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const logger_util_js_1 = require("../utils/logger.util.js");
const error_handler_util_js_1 = require("../utils/error-handler.util.js");
const defaults_util_js_1 = require("../utils/defaults.util.js");
const atlassian_issues_controller_js_1 = __importDefault(require("./atlassian.issues.controller.js"));
/**
* Search for Jira issues using JQL
*
* @param {SearchOptions} options - Options for the search
* @returns {Promise<ControllerResponse>} Formatted search results in Markdown
*/
async function search(options = {}) {
const controllerLogger = logger_util_js_1.Logger.forContext('controllers/atlassian.search.controller.ts', 'search');
controllerLogger.debug('Searching Jira content with options:', options);
try {
// Apply defaults to options
const mergedOptions = (0, defaults_util_js_1.applyDefaults)(options, {
limit: defaults_util_js_1.DEFAULT_PAGE_SIZE,
jql: '',
});
// Search issues using the issues controller
const result = await atlassian_issues_controller_js_1.default.list({
jql: mergedOptions.jql,
limit: mergedOptions.limit,
cursor: mergedOptions.cursor,
});
// Format the search results
const formattedContent = `# Jira Search Results\n\n${mergedOptions.jql ? `**JQL Query:** \`${mergedOptions.jql}\`\n\n` : ''}${result.content}`;
controllerLogger.debug('Successfully retrieved and formatted search results', {
count: result.pagination?.count,
hasMore: result.pagination?.hasMore,
});
return {
content: formattedContent,
pagination: result.pagination,
};
}
catch (error) {
return (0, error_handler_util_js_1.handleControllerError)(error, {
source: 'Jira',
operation: 'search',
entityType: 'issues',
});
}
}
exports.default = {
search,
};