UNPKG

@aashari/mcp-server-atlassian-bitbucket

Version:

Node.js/TypeScript MCP server for Atlassian Bitbucket. Enables AI systems (LLMs) to interact with workspaces, repositories, and pull requests via tools (list, get, comment, search). Connects AI directly to version control workflows through the standard MC

61 lines (60 loc) 3.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const atlassian_pullrequests_base_controller_js_1 = require("./atlassian.pullrequests.base.controller.js"); /** * Get detailed information about a specific Bitbucket pull request * @param options - Options including workspace slug, repo slug, and pull request ID * @returns Promise with formatted pull request details as Markdown content */ async function get(options) { const methodLogger = atlassian_pullrequests_base_controller_js_1.Logger.forContext('controllers/atlassian.pullrequests.get.controller.ts', 'get'); try { // Apply default values if needed const mergedOptions = (0, atlassian_pullrequests_base_controller_js_1.applyDefaults)(options, {}); // Handle optional workspaceSlug - get default if not provided if (!mergedOptions.workspaceSlug) { methodLogger.debug('No workspace provided, fetching default workspace'); const defaultWorkspace = await (0, atlassian_pullrequests_base_controller_js_1.getDefaultWorkspace)(); if (!defaultWorkspace) { throw new Error('Could not determine a default workspace. Please provide a workspaceSlug.'); } mergedOptions.workspaceSlug = defaultWorkspace; methodLogger.debug(`Using default workspace: ${mergedOptions.workspaceSlug}`); } const { workspaceSlug, repoSlug, prId } = mergedOptions; // Validate required parameters if (!workspaceSlug || !repoSlug || !prId) { throw new Error('Workspace slug, repository slug, and pull request ID are required'); } methodLogger.debug(`Getting pull request details for ${workspaceSlug}/${repoSlug}/${prId}`); // Map controller options to service parameters const serviceParams = { workspace: workspaceSlug, repo_slug: repoSlug, pull_request_id: parseInt(prId, 10), }; // Get PR details from the service const pullRequestData = await atlassian_pullrequests_base_controller_js_1.atlassianPullRequestsService.get(serviceParams); methodLogger.debug('Retrieved pull request details', { id: pullRequestData.id, title: pullRequestData.title, state: pullRequestData.state, }); // Format the pull request details using the formatter const formattedContent = (0, atlassian_pullrequests_base_controller_js_1.formatPullRequestDetails)(pullRequestData); return { content: formattedContent, }; } catch (error) { // Use the standardized error handler throw (0, atlassian_pullrequests_base_controller_js_1.handleControllerError)(error, { entityType: 'Pull Request', operation: 'retrieving details', source: 'controllers/atlassian.pullrequests.get.controller.ts@get', additionalInfo: { options }, }); } } // Export the controller functions exports.default = { get };