Labsco
garc33 logo

Bitbucket Server MCP

β˜… 65

from garc33

Manage pull requests on Bitbucket Server.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedAccount requiredNeeds API keys

Bitbucket Server MCP

MCP (Model Context Protocol) server for Bitbucket Server Pull Request management. This server provides tools and resources to interact with the Bitbucket Server API through the MCP protocol.

✨ New Features

  • πŸ”§ Custom HTTP Headers: Add custom headers to all requests via BITBUCKET_CUSTOM_HEADERS environment variable (useful for Zero Trust tokens or proxies)

  • πŸ“‹ PR Discovery: List and filter pull requests by state, author, or direction using list_pull_requests (fixes #14)

  • 🌿 Branch Management: List branches with default branch detection using list_branches, delete merged branches with delete_branch

  • πŸ“ Commit History: Browse commit history with branch and author filtering using list_commits

  • βœ… PR Approval: Approve and unapprove pull requests with approve_pull_request and unapprove_pull_request

  • πŸ” Advanced Search: Search code and files across repositories with project/repository filtering using the search tool

  • πŸ“„ File Operations: Read file contents and browse repository directories with get_file_content and browse_repository

  • πŸ’¬ Comment Management: Extract and filter PR comments with get_comments tool

  • πŸ” Project Discovery: List all accessible Bitbucket projects with list_projects

  • πŸ“ Repository Browsing: Explore repositories across projects with list_repositories

  • πŸ”§ Flexible Project Support: Make the default project optional - specify per command or use BITBUCKET_DEFAULT_PROJECT

  • πŸ“– Enhanced Documentation: Improved README with usage examples and better configuration guidance

Build

Copy & paste β€” that's it
npm run build

Features

The server provides the following tools for comprehensive Bitbucket Server integration:

list_projects

Discover and explore Bitbucket projects: Lists all accessible projects with their details. Essential for project discovery and finding the correct project keys to use in other operations.

Use cases:

  • Find available projects when you don't know the exact project key

  • Explore project structure and permissions

  • Discover new projects you have access to

Parameters:

  • limit: Number of projects to return (default: 25, max: 1000)

  • start: Start index for pagination (default: 0)

list_repositories

Browse and discover repositories: Explore repositories within specific projects or across all accessible projects. Returns comprehensive repository information including clone URLs and metadata.

Use cases:

  • Find repository slugs for other operations

  • Explore codebase structure across projects

  • Discover repositories you have access to

  • Browse a specific project's repositories

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • limit: Number of repositories to return (default: 25, max: 1000)

  • start: Start index for pagination (default: 0)

create_pull_request

Propose code changes for review: Creates a new pull request to submit code changes, request reviews, or merge feature branches. Automatically handles branch references and reviewer assignments.

Use cases:

  • Submit feature development for review

  • Propose bug fixes

  • Request code integration from feature branches

  • Collaborate on code changes

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • title (required): Clear, descriptive PR title

  • description: Detailed description with context (supports Markdown)

  • sourceBranch (required): Source branch containing changes

  • targetBranch (required): Target branch for merging

  • reviewers: Array of reviewer usernames

  • sourceProject: Project key of the source repository (for cross-repo PRs from forks)

  • sourceRepository: Slug of the source repository (for cross-repo PRs from forks)

  • includeDefaultReviewers: Automatically fetch and include default reviewers configured for the target branch (default: true)

update_pull_request

Safely update a pull request: Modify the title, description, or reviewers of an existing pull request without losing any metadata. Uses a read-modify-write pattern to preserve all fields not explicitly changed.

Use cases:

  • Fix PR title or description after creation

  • Add or replace reviewers without losing existing ones

  • Update PR metadata without affecting approval status

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID to update

  • title: New title (if omitted, current title is preserved)

  • description: New description (if omitted, current description is preserved)

  • reviewers: New reviewer list as array of usernames (if omitted, current reviewers are preserved)

get_pull_request

Comprehensive PR information: Retrieves detailed pull request information including status, reviewers, commits, and all metadata. Essential for understanding PR state before taking actions.

Use cases:

  • Check PR approval status

  • Review PR details and progress

  • Understand changes before merging

  • Monitor PR status

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID

merge_pull_request

Integrate approved changes: Merges an approved pull request into the target branch. Supports different merge strategies based on your workflow preferences.

Use cases:

  • Complete the code review process

  • Integrate approved features

  • Apply bug fixes to main branches

  • Release code changes

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID

  • message: Custom merge commit message

  • strategy: Merge strategy:

  • merge-commit (default): Creates merge commit preserving history

  • squash: Combines all commits into one

  • fast-forward: Moves branch pointer without merge commit

decline_pull_request

Reject unsuitable changes: Declines a pull request that should not be merged, providing feedback to the author.

Use cases:

  • Reject changes that don't meet standards

  • Close PRs that conflict with project direction

  • Request significant rework

  • Prevent unwanted code integration

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID

  • message: Reason for declining (helpful for author feedback)

add_comment

Participate in code review: Adds comments to pull requests for review feedback, discussions, and collaboration. Supports threaded conversations.

Use cases:

  • Provide code review feedback

  • Ask questions about specific changes

  • Suggest improvements

  • Participate in technical discussions

  • Document review decisions

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID

  • text (required): Comment content (supports Markdown)

  • parentId: Parent comment ID for threaded replies

  • state: Comment state: OPEN (default, published immediately) or PENDING (draft, visible only to you until review is published)

get_diff

Analyze code changes: Retrieves the code differences showing exactly what was added, removed, or modified in the pull request. Supports per-file truncation to manage large diffs effectively.

Use cases:

  • Review specific code changes

  • Understand scope of modifications

  • Analyze impact before merging

  • Inspect implementation details

  • Code quality assessment

  • Handle large files without overwhelming output

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID

  • contextLines: Context lines around changes (default: 10)

  • maxLinesPerFile: Maximum lines to show per file (optional, uses BITBUCKET_DIFF_MAX_LINES_PER_FILE env var if not specified, set to 0 for no limit)

Large File Handling: When a file exceeds the maxLinesPerFile limit, it shows:

  • File headers and metadata (always preserved)

  • First 60% of allowed lines from the beginning

  • Truncation message with file statistics

  • Last 40% of allowed lines from the end

  • Clear indication of how to see the complete diff

get_reviews

Track review progress: Fetches review history, approval status, and reviewer feedback to understand the review state.

Use cases:

  • Check if PR is ready for merging

  • See who has reviewed the changes

  • Understand review feedback

  • Monitor approval requirements

  • Track review progress

get_activities

Retrieve pull request activities: Gets the complete activity timeline for a pull request including comments, reviews, commits, and other events.

Use cases:

  • Read comment discussions and feedback

  • Review the complete PR timeline

  • Track commits added/removed from PR

  • See approval and review history

  • Understand the full PR lifecycle

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID

get_comments

Extract PR comments only: Filters pull request activities to return only the comments, making it easier to focus on discussion content without reviews or other activities.

Use cases:

  • Read PR discussion threads

  • Extract feedback and questions

  • Focus on comment content without noise

  • Analyze conversation flow

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID

search

Advanced code and file search: Search across repositories using the Bitbucket search API with support for project/repository filtering and query optimization. Searches both file contents and filenames. Note: Search only works on the default branch of repositories.

Use cases:

  • Find specific code patterns across projects

  • Locate files by name or content

  • Search within specific projects or repositories

  • Filter by file extensions

Parameters:

  • query (required): Search query string

  • project: Bitbucket project key to limit search scope

  • repository: Repository slug for repository-specific search

  • type: Query optimization - "file" (wraps query in quotes for exact filename matching) or "code" (default search behavior)

  • limit: Number of results to return (default: 25, max: 100)

  • start: Start index for pagination (default: 0)

Query syntax examples:

  • "README.md" - Find exact filename

  • config ext:yml - Find config in YAML files

  • function project:MYPROJECT - Search for "function" in specific project

  • bug fix repo:PROJ/my-repo - Search in specific repository

get_file_content

Read file contents with pagination: Retrieve the content of specific files from repositories with support for large files through pagination.

Use cases:

  • Read source code files

  • View configuration files

  • Extract documentation content

  • Inspect specific file versions

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • filePath (required): Path to the file in the repository

  • branch: Branch or commit hash (optional, defaults to main/master)

  • limit: Maximum lines per request (default: 100, max: 1000)

  • start: Starting line number for pagination (default: 0)

browse_repository

Explore repository structure: Browse files and directories in repositories to understand project organization and locate specific files.

Use cases:

  • Explore repository structure

  • Navigate directory trees

  • Find files and folders

  • Understand project organization

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • path: Directory path to browse (optional, defaults to root)

  • branch: Branch or commit hash (optional, defaults to main/master)

  • limit: Maximum items to return (default: 50)

list_pull_requests

Discover and filter pull requests: List pull requests in a repository with filtering by state, author, and direction. Returns PR metadata including title, author, branches, reviewers, and status.

Use cases:

  • Find open PRs in a repository

  • List your own pull requests

  • See PRs awaiting review

  • Get an overview of merged or declined PRs

  • Monitor PR activity in a project

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • state: Filter by PR state β€” OPEN (default), MERGED, DECLINED, or ALL

  • author: Filter by author username (exact match)

  • direction: INCOMING (PRs targeting this repo, default) or OUTGOING (PRs from this repo)

  • limit: Number of PRs to return (default: 25, max: 1000)

  • start: Start index for pagination (default: 0)

list_branches

Explore repository branches: List branches in a repository with optional filtering. Identifies the default branch and shows latest commit information for each branch.

Use cases:

  • Find branch names for PR creation or checkout

  • Verify branch existence before operations

  • Identify the default branch

  • Search for branches by name

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • filterText: Filter branches by name (case-insensitive partial match)

  • limit: Number of branches to return (default: 25, max: 1000)

  • start: Start index for pagination (default: 0)

list_commits

Browse commit history: List commits in a repository with optional branch and author filtering. Use this to review changes, track contributions, or understand the evolution of a branch.

Use cases:

  • Review recent changes on a branch

  • Find commits by a specific author

  • Track commit history before merging

  • Understand branch evolution

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • branch: Branch name to list commits from (defaults to the repository's default branch)

  • author: Filter by author name or email (case-insensitive partial match, applied client-side)

  • limit: Number of commits to return (default: 25, max: 1000)

  • start: Start index for pagination (default: 0)

delete_branch

Clean up merged branches: Delete a branch from a repository. Includes a safety check to prevent deletion of the default branch.

Use cases:

  • Clean up feature branches after PR merge

  • Remove stale or abandoned branches

  • Repository maintenance and hygiene

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • branch (required): Branch name to delete

approve_pull_request

Approve code changes: Approve a pull request as the current authenticated user. Records your approval on the PR, signaling that changes are ready to merge.

Use cases:

  • Approve reviewed pull requests

  • Signal readiness for merge

  • Complete code review workflow

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID to approve

unapprove_pull_request

Retract approval: Remove your approval from a pull request. Use this when you need to retract a previous approval after discovering issues or when the PR has changed.

Use cases:

  • Retract approval after discovering issues

  • Remove approval when PR scope changes

  • Correct accidental approvals

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID to remove approval from

edit_comment

Edit an existing comment: Modify the text of a comment on a pull request. Works with both published and pending (draft) comments. Requires the comment version for optimistic locking.

Use cases:

  • Fix typos or formatting in review comments

  • Update information in an existing comment

  • Reformat comments (e.g., to Conventional Comments style)

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID the comment belongs to

  • commentId (required): ID of the comment to edit

  • text (required): New text content (supports Markdown)

  • version (required): Current version of the comment for optimistic locking (from get_comments or add_comment response)

delete_comment

Delete a comment: Remove a comment from a pull request. Requires the comment version for optimistic locking.

Use cases:

  • Remove incorrectly posted comments

  • Clean up draft comments that are no longer needed

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID the comment belongs to

  • commentId (required): ID of the comment to delete

  • version (required): Current version of the comment for optimistic locking

publish_review

Publish a batch review: Publish all pending (draft) comments at once, optionally setting your review status and adding an overview comment. This is the equivalent of clicking "Finish review" in the Bitbucket UI.

Use cases:

  • Publish all draft review comments in a single action

  • Approve a PR along with review comments

  • Request changes with a "needs work" status and feedback

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID

  • commentText: Optional overview comment for the review

  • participantStatus: Optional review status: APPROVED (ready to merge) or NEEDS_WORK (changes required). Omit for general feedback.

get_code_insights

Retrieve CI/CD analysis results: Fetch Code Insights reports (SonarQube, security scans, etc.) and their annotations for a pull request.

Use cases:

  • Check SonarQube quality gate status

  • Review security scan findings

  • Inspect code coverage metrics

  • See CI/CD analysis annotations per file

Parameters:

  • project: Bitbucket project key (optional, uses BITBUCKET_DEFAULT_PROJECT if not provided)

  • repository (required): Repository slug

  • prId (required): Pull request ID

get_dashboard_pull_requests

Cross-repository PR dashboard: List pull requests across all repositories for the authenticated user. Use this to see PRs you need to review, PRs you authored, or PRs you are participating in, without needing to specify each project and repository.

Use cases:

  • See all PRs awaiting your review

  • List your own open PRs across all projects

  • Find recently merged PRs you participated in

  • Get an overview of your PR workload

Parameters:

  • state: Filter by PR state: OPEN (default), MERGED, DECLINED, or ALL

  • role: Filter by your role: AUTHOR, REVIEWER, or PARTICIPANT

  • participantStatus: Filter by your review status: APPROVED, UNAPPROVED, or NEEDS_WORK

  • order: Sort order: OLDEST or NEWEST (default)

  • closedSince: Only include closed PRs updated after this timestamp (epoch ms)

  • limit: Number of PRs to return (default: 25)

  • start: Start index for pagination (default: 0)

Dependencies

  • @modelcontextprotocol/sdk - SDK for MCP protocol implementation

  • axios - HTTP client for API requests

  • winston - Logging framework

Logging

The server logs all operations using Winston for debugging and monitoring purposes.

Log file location (in order of priority):

  • BITBUCKET_LOG_PATH environment variable β€” custom path

  • ~/.bitbucket-server-mcp/bitbucket.log β€” default location

The log directory is created automatically if it doesn't exist.

Example: Set a custom log path in your MCP configuration:

Copy & paste β€” that's it
{
 "env": {
 "BITBUCKET_LOG_PATH": "/var/log/bitbucket-mcp/server.log"
 }
}

Custom HTTP Headers

You can add custom HTTP headers to all API requests using the BITBUCKET_CUSTOM_HEADERS environment variable. This is useful for Zero Trust security tokens, proxy headers, or any other headers required by your infrastructure.

Format: Comma-separated key-value pairs where values can contain equals signs:

Copy & paste β€” that's it
Header-Name=value,Another-Header=value2

Single header example:

Copy & paste β€” that's it
{
 "env": {
 "BITBUCKET_CUSTOM_HEADERS": "X-Zero-Trust-Token=your-token-here"
 }
}

Multiple headers example:

Copy & paste β€” that's it
{
 "env": {
 "BITBUCKET_CUSTOM_HEADERS": "X-Custom-Header=value1,X-Proxy-Auth=token123"
 }
}