io.github.droplinkperformance/bitbucket-mcp-server

السجل الرسمي الذكاء الاصطناعي والوكلاء

Provider-agnostic, AI-review-first MCP server for Bitbucket Cloud.

ماذا يمكنك أن تفعل مع io.github.droplinkperformance/bitbucket-mcp-server؟

  • Dual transports: stdio (Cursor / Claude Desktop) and Streamable HTTP (Node http, for remote/production).
  • Auto-discovered tools via a ToolRegistry — no manual registration.
  • Explicit BitbucketContext (workspace + optional repository) on every tool — multi-workspace ready.
  • Resilient BitbucketClient: auth injection, auto-pagination, retry/backoff, rate-limit handling, caching, secret masking.
  • Two auth strategies: OAuth 2.0 (Authorization Code, with rotating refresh-token persistence) and Bearer token.
  • AI code review (analyze_pull_request) backed by a CodeReviewAgent that chunks large PRs and returns a standard ReviewResult.
  • Pluggable LLM provider (OpenAI / Anthropic / Gemini / Bedrock), cache (memory / Redis), and token store (file / memory / Redis).

التثبيت

أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: ‏.cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).

NPM package @droplinkperformance/bitbucket-mcp-server
Claude Code
claude mcp add bitbucket-mcp-server -e 'BITBUCKET_ACCESS_TOKEN=<your bitbucket_access_token>' -e 'BITBUCKET_EMAIL=<BITBUCKET_EMAIL>' -e 'BITBUCKET_DEFAULT_WORKSPACE=<BITBUCKET_DEFAULT_WORKSPACE>' -e 'LLM_PROVIDER=<LLM_PROVIDER>' -e 'OPENAI_API_KEY=<your openai_api_key>' -- npx -y @droplinkperformance/bitbucket-mcp-server@1.2.0
إعداد JSON (Claude Desktop وCursor وVS Code)
{
    "mcpServers": {
        "bitbucket-mcp-server": {
            "command": "npx",
            "args": [
                "-y",
                "@droplinkperformance/bitbucket-mcp-server@1.2.0"
            ],
            "env": {
                "BITBUCKET_ACCESS_TOKEN": "<your bitbucket_access_token>",
                "BITBUCKET_EMAIL": "<BITBUCKET_EMAIL>",
                "BITBUCKET_DEFAULT_WORKSPACE": "<BITBUCKET_DEFAULT_WORKSPACE>",
                "LLM_PROVIDER": "<LLM_PROVIDER>",
                "OPENAI_API_KEY": "<your openai_api_key>"
            }
        }
    }
}

متغيرات البيئة

  • BITBUCKET_ACCESS_TOKEN إلزامي سري Bitbucket API token (ATATT), app password, or OAuth access token
  • BITBUCKET_EMAIL إلزامي Atlassian account email (required with API tokens)
  • BITBUCKET_DEFAULT_WORKSPACE Default Bitbucket workspace when a tool omits workspace
  • LLM_PROVIDER LLM backend for analyze_pull_request (openai, anthropic, gemini, bedrock)
  • OPENAI_API_KEY سري OpenAI API key when LLM_PROVIDER is openai

التوثيق

مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.

المحتويات
  1. @droplinkperformance/bitbucket-mcp-server
  2. Features (Phase 1)
  3. Architecture
  4. Requirements
  5. Install
  6. Release
  7. Configuration
  8. Running
  9. Development
  10. Roadmap
  11. License

@droplinkperformance/bitbucket-mcp-server

Provider-agnostic, AI-review-first Model Context Protocol (MCP) server for Bitbucket Cloud.

The primary value of this server is AI-powered code review and pull request analysis, not CRUD against the Bitbucket API. Every major dependency (SCM access, cache, token storage, rate limiting, LLM, events) is hidden behind a provider-agnostic interface so the same business logic can later target GitHub / GitLab / Azure DevOps and OpenAI / Anthropic / Gemini / Bedrock without changes to use-cases, agents, or domain contracts.

Status: Phase 1. See Roadmap.

Features (Phase 1)

  • Dual transports: stdio (Cursor / Claude Desktop) and Streamable HTTP (Node http, for remote/production).
  • Auto-discovered tools via a ToolRegistry — no manual registration.
  • Explicit BitbucketContext (workspace + optional repository) on every tool — multi-workspace ready.
  • Resilient BitbucketClient: auth injection, auto-pagination, retry/backoff, rate-limit handling, caching, secret masking.
  • Two auth strategies: OAuth 2.0 (Authorization Code, with rotating refresh-token persistence) and Bearer token.
  • AI code review (analyze_pull_request) backed by a CodeReviewAgent that chunks large PRs and returns a standard ReviewResult.
  • Pluggable LLM provider (OpenAI / Anthropic / Gemini / Bedrock), cache (memory / Redis), and token store (file / memory / Redis).
Tools
ToolDescription
get_current_userAuthenticated user.
list_pull_requestsList PRs (filter by state/query).
get_pull_requestFetch a PR by id.
create_pull_requestOpen a PR.
update_pull_requestEdit an open PR title and/or description.
get_pull_request_diffRaw unified diff.
get_pull_request_filesChanged files + line stats.
get_pull_request_commentsPR comments.
comment_pull_requestAdd a (optionally inline) comment.
analyze_pull_requestAI review returning a standard ReviewResult.

All tool inputs accept workspace (optional if BITBUCKET_DEFAULT_WORKSPACE is set) and, where applicable, repository.

Architecture

src/
  index.ts            entry: chooses transport
  container.ts        composition root (the only place wiring concretes)
  mcp/                McpServer + ToolRegistry (auto-discovery) + transports
  tools/              thin MCP adapters (*.tool.ts) -> call exactly one use-case
  application/        use-cases (CQRS-ish: command|query) with Input/Output DTOs
  agents/             autonomous workflows implementing Agent<TInput,TOutput>
  domain/             provider-agnostic types, repository contracts, ReviewResult
  repositories/bitbucket/  Bitbucket implementations of the contracts
  clients/bitbucket/  resilient REST client
  auth/               AuthProvider (+ token/oauth) and TokenStore implementations
  cache/              CacheProvider (+ memory/redis)
  ratelimit/          RateLimitStrategy (+ bitbucket)
  llm/                LlmProvider (+ openai/anthropic/gemini/bedrock)
  events/             EventBus (+ in-memory)
  services/           reusable services (masking, chunking)
  telemetry/          OpenTelemetry bootstrap + metrics
  infrastructure/     config, logger, http, attachments
  shared/             errors, result envelope, http-status, BitbucketContext

Flow: tool -> use-case -> (agent | repository contract) -> repositories/bitbucket -> BitbucketClient. Agents may also use the LlmProvider and EventBus. Tools never contain business logic.

Requirements

  • Node.js 23+

Install

Published as @droplinkperformance/bitbucket-mcp-server.

npx -y @droplinkperformance/bitbucket-mcp-server

From source:

npm install
npm run build

Release

Merges to main run .github/workflows/release.yml: tests, build, then semantic-release. Version and npm publish happen only when the merge includes Conventional Commits:

CommitBump
fix:patch
feat:minor
BREAKING CHANGE / feat!:major

Other messages skip publish. The GitHub secret NPM_TOKEN (npm Automation token for the droplinkperformance org) is required.

After a successful npm release, the same workflow waits until that version is visible on the npm registry, then publishes metadata to the MCP Registry as io.github.droplinkperformance/bitbucket-mcp-server (OIDC, no extra secret). To republish MCP metadata for the current package.json version without cutting a new release, run the workflow manually with Publish mcp only. github.com/mcp syncs from that registry; if the server does not appear, email partnerships@github.com.

To stay on 0.x for the first release, tag the current commit (git tag v0.1.0 && git push origin v0.1.0) before the first conventional merge; otherwise semantic-release starts at 1.0.0.

Configuration

Copy .env.example to .env and fill in values. Load it with Node's built-in flag:

node --env-file=.env dist/index.js

Key variables:

VariableDefaultNotes
MCP_TRANSPORTstdiostdio or http.
HTTP_HOST / HTTP_PORT0.0.0.0 / 3000HTTP transport bind.
BITBUCKET_DEFAULT_WORKSPACE–Fallback when a tool omits workspace.
BITBUCKET_ACCESS_TOKEN–API token (ATATT…), app password, or OAuth access token
BITBUCKET_EMAIL–Required with API tokens (ATATT…) — your Atlassian account email
BITBUCKET_CLIENT_ID / BITBUCKET_CLIENT_SECRET–Required for OAuth (when no access token).
BITBUCKET_REFRESH_TOKEN–Optional seed for headless OAuth.
TOKEN_STOREfilefile \memory \redis.
CACHE_PROVIDERmemorymemory \redis.
LLM_PROVIDERopenaiopenai \anthropic \gemini \bedrock.
MAX_FILES_PER_CHUNK / MAX_DIFF_LINES_PER_CHUNK50 / 5000Large-PR chunking thresholds.
OTEL_ENABLEDfalseNo-op metrics unless enabled.
Authentication

Bearer (OAuth access token): set BITBUCKET_ACCESS_TOKEN only (non-ATATT tokens).

API token (recommended, ATATT…): set BITBUCKET_ACCESS_TOKEN and BITBUCKET_EMAIL (your Atlassian account email from Bitbucket → Personal settings → Email aliases). API tokens use HTTP Basic auth, not Bearer.

App password (legacy, until June 2026): set BITBUCKET_ACCESS_TOKEN and BITBUCKET_USERNAME (your Bitbucket username).

OAuth 2.0 (Authorization Code): set BITBUCKET_CLIENT_ID / BITBUCKET_CLIENT_SECRET. Tokens are persisted by the configured TOKEN_STORE; Bitbucket rotates refresh tokens, and the server persists the new one on every refresh. For headless boot, provide a previously obtained BITBUCKET_REFRESH_TOKEN.

Bitbucket OAuth endpoints used: authorize https://bitbucket.org/site/oauth2/authorize, token https://bitbucket.org/site/oauth2/access_token. The authorize URL can be built from OAuthProvider.buildAuthorizeUrl() and the returned ?code= exchanged via OAuthProvider.loginWithCode(code).

LLM provider

Set LLM_PROVIDER and the matching key:

LLM_PROVIDER=openai      # OPENAI_API_KEY
LLM_PROVIDER=anthropic   # ANTHROPIC_API_KEY
LLM_PROVIDER=gemini      # GEMINI_API_KEY
LLM_PROVIDER=bedrock     # AWS creds + BEDROCK_MODEL_ID (needs @aws-sdk/client-bedrock-runtime)

ioredis (Redis providers) and @aws-sdk/client-bedrock-runtime (Bedrock) are optional and loaded lazily — only needed when selected.

Running

stdio
MCP_TRANSPORT=stdio node --env-file=.env dist/index.js
Streamable HTTP
MCP_TRANSPORT=http HTTP_PORT=3000 node --env-file=.env dist/index.js
# health:   GET  http://localhost:3000/health
# endpoint: POST http://localhost:3000/mcp
MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.js
Cursor

~/.cursor/mcp.json (or project .cursor/mcp.json):

{
  "mcpServers": {
    "bitbucket": {
      "command": "npx",
      "args": ["-y", "@droplinkperformance/bitbucket-mcp-server"],
      "env": {
        "MCP_TRANSPORT": "stdio",
        "BITBUCKET_ACCESS_TOKEN": "ATATT-your-api-token",
        "BITBUCKET_EMAIL": "you@company.com",
        "BITBUCKET_DEFAULT_WORKSPACE": "your-workspace",
        "LLM_PROVIDER": "openai",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}
Claude Desktop

claude_desktop_config.json:

{
  "mcpServers": {
    "bitbucket": {
      "command": "npx",
      "args": ["-y", "@droplinkperformance/bitbucket-mcp-server"],
      "env": {
        "BITBUCKET_ACCESS_TOKEN": "your-token",
        "BITBUCKET_DEFAULT_WORKSPACE": "your-workspace",
        "LLM_PROVIDER": "anthropic",
        "ANTHROPIC_API_KEY": "sk-ant-..."
      }
    }
  }
}

Development

npm run dev          # tsx watch (stdio)
npm run typecheck
npm run lint
npm test
npm run test:coverage

Roadmap

  • Phase 1 (this release): auth, abstractions, BitbucketClient, tool auto-discovery, PR tools, analyze_pull_request.
  • Phase 2: Pipelines + full-text paginated logs, pipeline-investigator agent, auto_review_pull_request (dry-run / publish inline comments).
  • Phase 3: Remaining CRUD — repositories, commits, branches, tags, issues, workspaces, members, search.
  • Phase 4: analyze_dotnet_pull_request (dotnet-review agent), advanced agents, automation workflows.
  • Phase 5: Docker, Compose, Helm, production deploy guide.

License

MIT

الأسئلة الشائعة

ما هو io.github.droplinkperformance/bitbucket-mcp-server؟

Provider-agnostic, AI-review-first MCP server for Bitbucket Cloud.

كيف أثبّت io.github.droplinkperformance/bitbucket-mcp-server؟

يعمل على جهازك. في Claude Code: claude mcp add bitbucket-mcp-server -e 'BITBUCKET_ACCESS_TOKEN=<your bitbucket_access_token>' -e 'BITBUCKET_EMAIL=<BITBUCKET_EMAIL>' -e 'BITBUCKET_DEFAULT_WORKSPACE=<BITBUCKET_DEFAULT_WORKSPACE>' -e 'LLM_PROVIDER=<LLM_PROVIDER>' -e 'OPENAI_API_KEY=<your openai_api_key>' -- npx -y @droplinkperformance/bitbucket-mcp-server@1.2.0. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.

هل يحتاج io.github.droplinkperformance/bitbucket-mcp-server إلى مفتاح API؟

نعم. يتطلب BITBUCKET_ACCESS_TOKEN, BITBUCKET_EMAIL, OPENAI_API_KEY، وتضبطها في إعداداته.

هل io.github.droplinkperformance/bitbucket-mcp-server مفتوح المصدر؟

نعم. شيفرته متاحة على GitHub بترخيص MIT.

من يصون io.github.droplinkperformance/bitbucket-mcp-server؟

ينشره droplinkperformance. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.

من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.