@jestay/bitbucket-mcp
@jestay/bitbucket-mcp
MCP server for code review of Bitbucket Cloud pull requests: list PRs, read diffs, file contents and comments, post review comments (general, inline on specific lines, or replies), resolve comment threads and update the PR title/description.
Tools
Tool | Description |
| List PRs of a repo, filtered by state (default OPEN) |
| Full PR metadata: branches, commits, reviewers, approval status |
| Unified diff of the PR (plain text) |
| Raw file content at a branch/tag/commit |
| Existing PR comments (general and inline), with resolution status |
| Post a comment: general, inline ( |
| Resolve (or reopen with |
| Update the |
Bitbucket Cloud allows resolving any top-level comment, general or inline; replies cannot be resolved, so pass the id of the comment that opens the thread. Liking a comment is not exposed by the public REST API 2.0, so it is not available here.
Bitbucket's PUT /pullrequests/{id} is a full replace: any field omitted from
the body is dropped (reviewers included). update_pull_request therefore reads
the PR first and sends reviewers, close_source_branch and draft back
unchanged, so only the title/description you pass actually change.
Review workflow
By default the server ships MCP instructions telling the connected agent to
review first and comment later: read the diff, consolidate all findings,
present them to the user, and post only the comments the user explicitly
approved. create_pull_request_comment carries the same warning in its
description, and the other mutating tools (resolve_pull_request_comment,
update_pull_request) ask the agent to act only on an explicit user request.
For unattended use (automation/CI), set BITBUCKET_YOLO=true to remove the
approval gate and let the agent comment autonomously.
Requirements
Node.js 20.6+
An Atlassian API token (see below)
Creating the API token
Create an API token with scopes at https://id.atlassian.com/manage-profile/security/api-tokens, select Bitbucket as the app, and grant these scopes:
Scope | Used for |
| Authentication / identifying the token's user |
| Resolving the workspace in API routes |
| Reading repository file contents ( |
| Listing and reading PRs, diffs and comments |
| Posting review comments, resolving threads, updating the PR |
No other scopes are needed — in particular, write:repository:bitbucket is
NOT required (this server never pushes code).
Note: Atlassian App Passwords are deprecated — use API tokens.
Usage (npx)
No installation needed — any machine with Node 20.6+ can run it via npx.
.mcp.json (Claude Code) or claude_desktop_config.json (Claude Desktop):
{
"mcpServers": {
"bitbucket": {
"command": "npx",
"args": ["-y", "@jestay/bitbucket-mcp"],
"env": {
"BITBUCKET_EMAIL": "you@company.com",
"BITBUCKET_API_TOKEN": "your_token_here",
"BITBUCKET_WORKSPACE": "your-workspace"
}
}
}
}Or with the Claude Code CLI:
claude mcp add bitbucket \
-e BITBUCKET_EMAIL=you@company.com \
-e BITBUCKET_API_TOKEN=your_token_here \
-e BITBUCKET_WORKSPACE=your-workspace \
-- npx -y @jestay/bitbucket-mcpEnvironment variables
Variable | Required | Description |
| Yes | Atlassian account email |
| Yes | Atlassian API token (scopes above) |
| No | Default workspace so tools don't need it per call |
| No | Set to |
Local development
pnpm install
pnpm build
cp .env.example .env # then fill in the values
pnpm dev # run from source (tsx)
pnpm start # run the compiled buildpnpm dev and pnpm start load environment variables from a .env file in
the project root. When registering the server in an MCP client, environment
variables come from the client's own config instead and no .env file is
needed. To register a local build, use
node /absolute/path/to/bitbucket-mcp/dist/index.js as the command.
Project layout
src/
├── index.ts # entry point
├── config.ts # env-var configuration
├── client.ts # HTTP client for the Bitbucket Cloud API 2.0 (auth lives here)
└── server.ts # McpServer + tool registration