Skip to main content
Glama

Atlassian Bitbucket MCP Server

by aashari
atlassian.repositories.commit.controller.ts3.51 kB
import atlassianRepositoriesService from '../services/vendor.atlassian.repositories.service.js'; import { Logger } from '../utils/logger.util.js'; import { handleControllerError } from '../utils/error-handler.util.js'; import { DEFAULT_PAGE_SIZE, applyDefaults } from '../utils/defaults.util.js'; import { extractPaginationInfo, PaginationType, } from '../utils/pagination.util.js'; import { formatPagination } from '../utils/formatter.util.js'; import { ControllerResponse } from '../types/common.types.js'; import { GetCommitHistoryToolArgsType } from '../tools/atlassian.repositories.types.js'; import { formatCommitHistory } from './atlassian.repositories.formatter.js'; import { ListCommitsParams } from '../services/vendor.atlassian.repositories.types.js'; import { getDefaultWorkspace } from '../utils/workspace.util.js'; // Logger instance for this module const logger = Logger.forContext( 'controllers/atlassian.repositories.commit.controller.ts', ); /** * Get commit history for a repository * * @param options - Options containing repository identifiers and filters * @returns Promise with formatted commit history content and pagination info */ export async function handleCommitHistory( options: GetCommitHistoryToolArgsType, ): Promise<ControllerResponse> { const methodLogger = logger.forMethod('handleCommitHistory'); try { methodLogger.debug('Getting commit history', options); // Apply defaults const defaults = { limit: DEFAULT_PAGE_SIZE, }; const params = applyDefaults( options, defaults, ) as GetCommitHistoryToolArgsType & { limit: number; }; // Handle optional workspaceSlug if (!params.workspaceSlug) { methodLogger.debug( 'No workspace provided, fetching default workspace', ); const defaultWorkspace = await getDefaultWorkspace(); if (!defaultWorkspace) { throw new Error( 'No default workspace found. Please provide a workspace slug.', ); } params.workspaceSlug = defaultWorkspace; methodLogger.debug(`Using default workspace: ${defaultWorkspace}`); } const serviceParams: ListCommitsParams = { workspace: params.workspaceSlug, repo_slug: params.repoSlug, include: params.revision, path: params.path, pagelen: params.limit, page: params.cursor ? parseInt(params.cursor, 10) : undefined, }; methodLogger.debug('Fetching commits with params:', serviceParams); const commitsData = await atlassianRepositoriesService.listCommits(serviceParams); methodLogger.debug( `Retrieved ${commitsData.values?.length || 0} commits`, ); // Extract pagination info before formatting const pagination = extractPaginationInfo( commitsData, PaginationType.PAGE, ); const formattedHistory = formatCommitHistory(commitsData, { revision: params.revision, path: params.path, }); // Create the final content by combining the formatted commit history with pagination information let finalContent = formattedHistory; // Add pagination information if available if ( pagination && (pagination.hasMore || pagination.count !== undefined) ) { const paginationString = formatPagination(pagination); finalContent += '\n\n' + paginationString; } return { content: finalContent, }; } catch (error) { throw handleControllerError(error, { entityType: 'Commit History', operation: 'retrieving', source: 'controllers/atlassian.repositories.commit.controller.ts@handleCommitHistory', additionalInfo: { options }, }); } }

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/aashari/mcp-server-atlassian-bitbucket'

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