Skip to main content

Bitbucket Cloud MCP Server

PyPI version Python License: MIT Tests

A production-ready Model Context Protocol (MCP) server for seamless integration with the Bitbucket Cloud API. Built with enterprise-grade quality standards, this server provides comprehensive access to Bitbucket Cloud's functionalities through a standardized MCP interface.

๐ŸŒŸ Highlights

  • โœ… Complete Bitbucket Cloud API Coverage - All essential features implemented
  • โœ… Production Ready - Comprehensive error handling, logging, and type safety
  • โœ… Multiple Installation Methods - PyPI, direct execution, or development mode
  • โœ… Claude Desktop Integration - Ready for AI assistant workflows
  • โœ… Fully Tested - Comprehensive test suite with automated CI/CD
  • โœ… Clean Architecture - Modular design following SOLID principles

๐Ÿ› ๏ธ Features (15 Tools)

๐ŸŽฏ Project & Repository Management

  • list_projects - List all accessible projects in workspace
  • list_repositories - List repositories by workspace or project
  • list_commits - Browse commit history with filtering options

๐Ÿ”„ Pull Request Lifecycle

  • list_pull_requests - List PRs with state filtering (OPEN, MERGED, DECLINED)
  • get_pull_request - Get detailed PR information
  • create_pull_request - Create new pull requests with reviewers
  • update_pull_request - Update pull request title and/or description
  • approve_pull_request - Approve pull requests
  • decline_pull_request - Decline pull requests
  • merge_pull_request - Merge approved PRs with strategy selection

๐Ÿ’ฌ Comment System

  • list_pull_request_comments - List all PR comments
  • create_pull_request_comment - Add general comments
  • create_pull_request_inline_comment - Add line-specific code comments

๐Ÿ“Š Code Analysis

  • get_pull_request_diff - Get full diff for code review
  • get_pull_request_diffstat - Get summary of changes (files, lines added/removed)

๐Ÿš€ Installation & Usage

Method 1: Direct Execution via uvx (Recommended)

# No installation needed - run directly from PyPI
uvx bitbucket-mcp-cloud

# For MCP tools that support it
mcp run bitbucket-mcp-cloud

Method 2: Global Installation

# Install globally
pip install bitbucket-mcp-cloud

# Run the server
bitbucket-mcp-cloud

Method 3: Development Mode

# Clone and setup for development
git clone https://github.com/jhonymiler/Bitbucket-MCP-Cloud.git
cd Bitbucket-MCP-Cloud

# Using uv (recommended)
uv sync
uv run server.py

# Or using pip
pip install -e .
python server.py

Method 4: MCP Tools Integration

# Using the MCP CLI
mcp run server.py

# For development and testing
uv run mcp dev server.py

๐Ÿ“‹ Prerequisites

  • Python 3.10+
  • A Bitbucket Cloud account
  • Configured Bitbucket App Password

โš™๏ธ Setup

1. Create Bitbucket App Password

  1. Go to: Account Settings > App Passwords
  2. Click "Create app password"
  3. Select the required permissions:
    • Repositories: Read, Write
    • Pull requests: Read, Write
    • Projects: Read

2. Configure Environment Variables

# Option 1: Using .env file (for development)
cp .env.example .env
# Edit .env with your credentials

# Option 2: Export environment variables
export BITBUCKET_USERNAME=your_username
export BITBUCKET_TOKEN=your_app_password
export BITBUCKET_DEFAULT_WORKSPACE=your_workspace

3. Claude Desktop Integration

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "bitbucket": {
      "command": "uvx",
      "args": ["bitbucket-mcp-cloud"],
      "env": {
        "BITBUCKET_USERNAME": "your_username",
        "BITBUCKET_TOKEN": "your_app_password",
        "BITBUCKET_DEFAULT_WORKSPACE": "your_workspace"
      }
    }
  }
}

๐Ÿ”ง Tool Usage Examples

Projects and Repositories

# List projects
await list_projects(workspace="my-workspace", limit=25)

# List all repositories
await list_repositories(workspace="my-workspace")

# List repositories for a specific project
await list_repositories(workspace="my-workspace", project="PROJ")

Pull Requests

# List open PRs
await list_pull_requests(repository="my-repo", state="OPEN")

# Get PR details
await get_pull_request(repository="my-repo", pr_id=123)

# Create new PR
await create_pull_request(
    repository="my-repo",
    title="New feature",
    source_branch="feature/new-feature",
    target_branch="main",
    description="Implements new feature X"
)

# Update PR description
await update_pull_request(
    repository="my-repo",
    pr_id=123,
    description="Updated description with more details"
)

# Approve and merge PR
await approve_pull_request(repository="my-repo", pr_id=123)
await merge_pull_request(repository="my-repo", pr_id=123, merge_strategy="squash")

Comments and Code Review

# Create inline comment on specific line
await create_pull_request_inline_comment(
    repository="my-repo",
    pr_id=123,
    content="This function could be optimized",
    filename="src/main.py",
    line_number=42
)

# Get diff for analysis
diff_text = await get_pull_request_diff(repository="my-repo", pr_id=123)

# Get summary of changes
diffstat = await get_pull_request_diffstat(repository="my-repo", pr_id=123)

๐Ÿ—๏ธ Architecture

bitbucket-mcp-cloud/
โ”œโ”€โ”€ server.py              # Main MCP server (entry point)
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ models.py          # Pydantic models for type safety
โ”‚   โ”œโ”€โ”€ utils.py           # Utility functions and logging
โ”‚   โ””โ”€โ”€ __init__.py
โ”œโ”€โ”€ tests/                 # Comprehensive test suite
โ”‚   โ””โ”€โ”€ test_bitbucket_mcp.py
โ”œโ”€โ”€ pyproject.toml         # Project configuration
โ”œโ”€โ”€ .env.example          # Configuration template
โ”œโ”€โ”€ .github/
โ”‚   โ””โ”€โ”€ workflows/
โ”‚       โ””โ”€โ”€ publish.yml   # CI/CD pipeline
โ””โ”€โ”€ README.md             # This documentation

Key Components

  • BitbucketCloudClient: Async HTTP client with comprehensive API coverage
  • FastMCP: MCP server with auto-generated tool definitions
  • Pydantic Models: Type-safe data structures for all API responses
  • Comprehensive Logging: Detailed operation tracking and debugging
  • Error Handling: Robust error handling with proper HTTP status codes

๐Ÿงช Testing

# Run all tests
uv run pytest

# Run with coverage report
uv run pytest --cov=src --cov-report=html

# Run specific test categories
uv run pytest tests/test_bitbucket_mcp.py::TestMCPTools -v

# Type checking
uv run mypy server.py src/

# Code formatting
uv run black server.py src/ tests/

๐Ÿ”’ Security Features

  • Secure Authentication: Uses Bitbucket App Passwords (no OAuth complexity)
  • Input Validation: Comprehensive validation using Pydantic models
  • Error Handling: Sanitized error messages (no credential leakage)
  • Rate Limiting Awareness: Respects Bitbucket API rate limits
  • HTTPS Only: All communications encrypted

๐Ÿ“Š Quality Assurance

  • Type Safety: Full type annotations with mypy validation
  • Code Quality: Black formatting and comprehensive linting
  • Testing: 17 test cases covering all major functionality
  • CI/CD: Automated testing and PyPI publishing
  • Documentation: Comprehensive docstrings and examples

๐Ÿ”— API Reference

This MCP server implements the complete Bitbucket Cloud REST API v2.0. Key API endpoints covered:

  • /workspaces/{workspace}/projects - Project management
  • /repositories/{workspace} - Repository operations
  • /repositories/{workspace}/{repo}/pullrequests - PR lifecycle
  • /repositories/{workspace}/{repo}/commits - Commit history
  • /pullrequests/{pr_id}/comments - Comment system
  • /pullrequests/{pr_id}/diff - Code analysis

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Run tests (uv run pytest)
  4. Commit changes (git commit -m 'Add amazing feature')
  5. Push to branch (git push origin feature/amazing-feature)
  6. Open a Pull Request

Development Setup

# Clone and setup
git clone https://github.com/jhonymiler/Bitbucket-MCP-Cloud.git
cd Bitbucket-MCP-Cloud
uv sync --extra dev

# Run quality checks
uv run pytest
uv run mypy server.py src/
uv run black --check server.py src/ tests/

๐Ÿ“ Changelog

v1.3.5 (Latest)

  • โœ… Package restructured for optimal PyPI distribution
  • โœ… Server.py in root with conditional imports
  • โœ… All execution methods tested and working
  • โœ… Enhanced build system and CI/CD
  • โœ… Production-ready package structure

v1.3.4

  • โœ… Server correctly included in PyPI wheel
  • โœ… All execution methods working (uvx, pip, development)
  • โœ… Complete test coverage
  • โœ… Claude Desktop integration ready

v1.3.x Series

  • โœ… Complete Bitbucket Cloud API implementation
  • โœ… Comprehensive error handling and logging
  • โœ… Type safety with mypy validation
  • โœ… Production-ready architecture

๐Ÿ“„ License

MIT License - see the LICENSE file for details.

๐Ÿ†˜ Support

๐Ÿ”— Related Links


Made with โค๏ธ for the MCP community

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bitbucket_mcp_cloud-1.3.7.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bitbucket_mcp_cloud-1.3.7-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file bitbucket_mcp_cloud-1.3.7.tar.gz.

File metadata

  • Download URL: bitbucket_mcp_cloud-1.3.7.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for bitbucket_mcp_cloud-1.3.7.tar.gz
Algorithm Hash digest
SHA256 92cf75825d32f7095a270aba93e5a76408427d2c23226480c9754c0279b487f1
MD5 041f8cb9ec2f0cee9cbdf1c3ef7a887a
BLAKE2b-256 612264fc6e0a2bf4b9eba7a702a141c804782f5f8fc33684d4caed5f9edcc03b

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbucket_mcp_cloud-1.3.7.tar.gz:

Publisher: publish.yml on jhonymiler/Bitbucket-MCP-Cloud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bitbucket_mcp_cloud-1.3.7-py3-none-any.whl.

File metadata

File hashes

Hashes for bitbucket_mcp_cloud-1.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 098ea54a058bacdadc921f9f3c83dca40a5e841bf8c5a6b33e5d00267c2d6e7f
MD5 4a0bb47c3cffa9de5c50c6259d4e6d21
BLAKE2b-256 4d3940e73a5ed68cf3a47c7ba46369d7745b5cc0488fea322ac6b8a559dc4dcb

See more details on using hashes here.

Provenance

The following attestation bundles were made for bitbucket_mcp_cloud-1.3.7-py3-none-any.whl:

Publisher: publish.yml on jhonymiler/Bitbucket-MCP-Cloud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.3.7 This release

2 files

1.3.5

2 files

1.3.4

2 files

1.3.3

2 files

1.3.1

2 files

1.2.0

2 files

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page