MCP Server Bitbucket

Communauté Outils de développement

Bitbucket repository management: PRs, pipelines, branches, commits, deployments, webhooks, tags, branch restrictions and source browsing.

Que pouvez-vous faire avec MCP Server Bitbucket ?

  • Repositories: get, create, delete, list, update (move to project, rename)
  • Pull Requests: create, get, list, merge, approve, decline, request changes, comments, diff
  • Pipelines: trigger, get status, list, view logs, stop
  • Branches: list, get
  • Projects: list, get
  • Commits: list, get details, compare/diff between branches
  • Commit Statuses: get build statuses, create status (CI/CD integration)
  • Deployments: list environments, get environment details, deployment history

Installation

Les étapes d'installation sont dans la documentation ci-dessous. Documentation

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. Bitbucket MCP Server
  2. Language Versions
  3. Features
  4. Quick Start
  5. Configuration
  6. Available Tools (58 total)
  7. MCP Prompts
  8. MCP Resources
  9. Development
  10. Creating a Bitbucket API Token
  11. Using this at work
  12. Author
  13. License

Bitbucket MCP Server

MCP server for Bitbucket API operations. Works with Claude Code, Claude Desktop, Cursor, and any MCP-compatible client.

Language Versions

This repository contains both TypeScript and Python implementations:

VersionDirectoryStatusInstallation
TypeScript/typescript✅ Recommended (Smithery)npm install -g mcp-server-bitbucket
Python/python✅ Stablepipx install mcp-server-bitbucket

Note: The TypeScript version is used for Smithery deployments. Both versions provide identical functionality.

Use patched Node.js 22.23.4 or 24.22.1 for TypeScript, or Python 3.11+ for Python. See the security update for HTTP request bounds and reproducible image builds.

Features

  • Repositories: get, create, delete, list, update (move to project, rename)
  • Pull Requests: create, get, list, merge, approve, decline, request changes, comments, diff
  • Pipelines: trigger, get status, list, view logs, stop
  • Branches: list, get
  • Projects: list, get
  • Commits: list, get details, compare/diff between branches
  • Commit Statuses: get build statuses, create status (CI/CD integration)
  • Deployments: list environments, get environment details, deployment history
  • Webhooks: list, create, get, delete
  • Tags: list, create, delete
  • Branch Restrictions: list, create, delete branch protection rules
  • Source Browsing: read files, list directories without cloning
  • Repository Permissions: manage user and group permissions
  • Pipeline Variables: manage CI/CD environment variables
  • MCP Prompts: reusable workflow templates (code review, release notes, etc.)
  • MCP Resources: browsable workspace data

Quick Start

# Install globally
npm install -g mcp-server-bitbucket

# Or run directly with npx
npx mcp-server-bitbucket
Python
# Install with pipx
pipx install mcp-server-bitbucket

# Configure Claude Code
claude mcp add bitbucket -s user \
  -e BITBUCKET_WORKSPACE=your-workspace \
  -e BITBUCKET_EMAIL=your-email@example.com \
  -e BITBUCKET_API_TOKEN=your-api-token \
  -- mcp-server-bitbucket

Full Installation Guide - Includes API token creation, permissions setup, and troubleshooting.

Hosted

If you'd rather not run the server yourself, a hosted deployment is available on Fronteir AI.

Configuration

Environment Variables
VariableRequiredDescription
BITBUCKET_WORKSPACE✅Bitbucket workspace slug
BITBUCKET_EMAIL✅ (basic auth)Account email for Basic Auth
BITBUCKET_API_TOKEN✅Atlassian API token (Basic auth)
BITBUCKET_OAUTH_TOKENAccess token sent as Authorization: Bearer
BITBUCKET_AUTH_TYPEForce auth mode: basic or bearer (auto-detected)
API_TIMEOUTRequest timeout in seconds (default: 30)
MAX_RETRIESMax retry attempts for rate limiting (default: 3)
Authentication modes

Bitbucket Cloud has two credential families, and they do not share an auth scheme:

CredentialHeaderConfiguration
Atlassian API token (ATATT...), tied to a personal accountAuthorization: Basic base64(email:token)BITBUCKET_EMAIL + BITBUCKET_API_TOKEN
Workspace / project / repository access token (ATCTT...), owned by the workspaceAuthorization: Bearer <token>BITBUCKET_OAUTH_TOKEN

Access tokens return 401 with Basic auth, so the server picks the mode automatically:

  1. BITBUCKET_AUTH_TYPE, when set, always wins.
  2. Otherwise bearer is used when BITBUCKET_OAUTH_TOKEN is set, or when no BITBUCKET_EMAIL is configured.
  3. Otherwise basic is used (the default for personal API tokens).

Bearer example — a company-owned workspace access token with no personal account involved:

claude mcp add bitbucket -s user \
  -e BITBUCKET_WORKSPACE=your-workspace \
  -e BITBUCKET_OAUTH_TOKEN=your-workspace-access-token \
  -- npx mcp-server-bitbucket
Protecting the remote server (OAuth)

The stdio server runs on your machine with your own credential, so it needs no protection. A remote deployment is different: it holds one shared credential and serves whoever reaches it, so /mcp can be gated on a bearer token issued by an external authorization server (Microsoft Entra ID, Okta, Auth0…).

VariableDescription
MCP_OAUTH_ISSUERToken issuer, e.g. https://login.microsoftonline.com/<tenant>/v2.0
MCP_OAUTH_AUDIENCEExpected aud claim, e.g. api://bitbucket-mcp
MCP_OAUTH_JWKS_URISigning keys (derived from the issuer when omitted)
MCP_OAUTH_REQUIRED_SCOPEScope the token must carry, e.g. mcp.access
MCP_PUBLIC_URLPublic URL of this server, advertised as the resource

Protection is off unless both MCP_OAUTH_ISSUER and MCP_OAUTH_AUDIENCE are set, so existing deployments are unaffected. With them set, the server:

  • answers unauthenticated /mcp requests with 401 and a WWW-Authenticate header pointing at /.well-known/oauth-protected-resource, which is what makes an MCP client start the OAuth flow;
  • serves that metadata document (RFC 9728) naming the authorization server;
  • verifies every request's JWT — signature against the issuer's JWKS, plus iss, aud and expiry — and returns 403 insufficient_scope when a valid token lacks the required scope;
  • leaves /health open, so platform probes keep working.

Note what this does and does not do: it controls who may use the server. Calls still reach Bitbucket under the server's own credential, so it does not attribute actions to individual users.

Claude Code CLI
# TypeScript version
claude mcp add bitbucket -s user \
  -e BITBUCKET_WORKSPACE=your-workspace \
  -e BITBUCKET_EMAIL=your-email@example.com \
  -e BITBUCKET_API_TOKEN=your-api-token \
  -- npx mcp-server-bitbucket

# Python version
claude mcp add bitbucket -s user \
  -e BITBUCKET_WORKSPACE=your-workspace \
  -e BITBUCKET_EMAIL=your-email@example.com \
  -e BITBUCKET_API_TOKEN=your-api-token \
  -- mcp-server-bitbucket
Cursor IDE

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "bitbucket": {
      "command": "npx",
      "args": ["mcp-server-bitbucket"],
      "env": {
        "BITBUCKET_WORKSPACE": "your-workspace",
        "BITBUCKET_EMAIL": "your-email@example.com",
        "BITBUCKET_API_TOKEN": "your-api-token"
      }
    }
  }
}

Available Tools (58 total)

Repositories
ToolDescription
list_repositoriesList and search repositories
get_repositoryGet repository details
create_repositoryCreate a new repository
delete_repositoryDelete a repository
update_repositoryUpdate repo settings
Pull Requests
ToolDescription
list_pull_requestsList PRs
get_pull_requestGet PR details
create_pull_requestCreate a new PR
merge_pull_requestMerge a PR
approve_prApprove a PR
unapprove_prRemove approval
request_changes_prRequest changes
decline_prDecline a PR
list_pr_commentsList comments
add_pr_commentAdd comment
get_pr_diffGet the diff
Pipelines
ToolDescription
list_pipelinesList recent runs
get_pipelineGet status
get_pipeline_logsView logs
trigger_pipelineTrigger a run (supports custom pipelines and commit triggers)
stop_pipelineStop pipeline
list_pipeline_variablesList variables
get_pipeline_variableGet variable
create_pipeline_variableCreate variable
update_pipeline_variableUpdate variable
delete_pipeline_variableDelete variable
trigger_pipeline Parameters
ParameterTypeDescription
repo_slugstringRepository slug (required)
branchstringBranch to run on (default: main). Mutually exclusive with commit
commitstringCommit hash to run on. Mutually exclusive with branch
custom_pipelinestringName from custom: section in bitbucket-pipelines.yml
variablesarrayVariables as [{key, value, secured?}]

Examples:

# Default pipeline on main
trigger_pipeline(repo_slug="my-repo")

# Custom pipeline
trigger_pipeline(repo_slug="my-repo", custom_pipeline="deploy-staging")

# Custom pipeline on specific commit with variables
trigger_pipeline(
    repo_slug="my-repo",
    commit="abc123def",
    custom_pipeline="deploy-prod",
    variables=[
        {"key": "ENV", "value": "production"},
        {"key": "SECRET", "value": "xxx", "secured": True}
    ]
)
Branches, Commits, Tags
ToolDescription
list_branchesList branches
get_branchGet branch details
list_commitsList commits
get_commitGet commit details
compare_commitsCompare branches
get_commit_statusesGet build statuses
create_commit_statusReport CI status
list_tagsList tags
create_tagCreate a tag
delete_tagDelete a tag
And more...
  • Deployments: list_environments, get_environment, list_deployment_history
  • Webhooks: list_webhooks, create_webhook, get_webhook, delete_webhook
  • Branch Restrictions: list_branch_restrictions, create_branch_restriction, delete_branch_restriction
  • Source Browsing: get_file_content, list_directory
  • Permissions: User and group permission management (8 tools)
  • Projects: list_projects, get_project

MCP Prompts

Reusable workflow templates:

PromptDescription
code_reviewComprehensive PR code review
release_notesGenerate changelog between versions
pipeline_debugDebug failed CI/CD pipelines
repo_summaryComplete repository status overview

MCP Resources

Browsable workspace data:

Resource URIDescription
bitbucket://repositoriesList all repos
bitbucket://repositories/{repo}Repository details
bitbucket://repositories/{repo}/branchesBranch list
bitbucket://repositories/{repo}/pull-requestsOpen PRs
bitbucket://projectsList all projects

Development

TypeScript
cd typescript
npm install
npm run build
npm run dev  # Watch mode
Python
cd python
uv sync
uv run python -m src.server

Creating a Bitbucket API Token

  1. Go to your repository in Bitbucket
  2. Navigate to Repository settings > Access tokens
  3. Click Create Repository Access Token
  4. Select permissions:
    • Repository: Read, Write, Admin, Delete
    • Pull requests: Read, Write
    • Pipelines: Read, Write
  5. Copy the token immediately

Using this at work

If your team is running this against a company Bitbucket, I'd like to know. It decides what gets built next, and issues that come from a real deployment get looked at first.

Two kinds of work I take on around this:

  • An MCP server for an internal system that doesn't have one. Same shape as this one, against your own API.
  • Help getting an MCP deployment past a security review — scopes, token handling, self-hosting the transport.

Open an issue, or write to javier@javieraguilar.ai.

Author

Built and maintained by Javier Aguilar — AI engineer working on agent systems and MCP integrations. There's a write-up of how and why this server was built here.

License

MIT

Questions fréquentes

Qu'est-ce que MCP Server Bitbucket ?

Bitbucket repository management: PRs, pipelines, branches, commits, deployments, webhooks, tags, branch restrictions and source browsing.

Comment installer MCP Server Bitbucket ?

Suivez les étapes d'installation de sa documentation, affichée sur cette page et dans son dépôt.

MCP Server Bitbucket est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient MCP Server Bitbucket ?

Il est publié par JaviMaligno. AI.tn le référence sans le maintenir ni le recommander.

Issu des listes communautaires awesome-mcp-servers et du dépôt GitHub du projet. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.