Bitbucket MCP Server
Bitbucket MCP Server
本番運用に重点を置いた Model Context Protocol サーバーで、Bitbucket Cloud および Bitbucket Server/Data Center からプルリクエストのメタデータと差分を取得し、オプトインでプルリクエストコメントにも対応します。
機能
Bitbucket Cloud とセルフホスト型 Bitbucket Server/Data Center をサポートします。
プルリクエストのメタデータ、差分、レビュー議論、一般/インラインコメントに特化したツールを公開します。
Bearer トークンと基本認証をサポートします。
Bitbucket が提供する場合、生の差分と構造化された変更ファイルデータの両方を返します。
設定可能な glob パターンにより、生成されたファイル、フォルダー、またはファイルタイプを除外します。
UTF-8 文字を壊すことなく大きな差分に上限を設けます。
プロトコルを壊すログを stdout に書き出さず、stdio を使用します。
コメント作成はデフォルトで無効のままとし、プルリクエストの承認、マージ、その他の変更は行いません。
Related MCP server: Atlassian Bitbucket MCP Server
クイックスタート
対応する Node.js LTS リリース(Node.js 22 以降)が必要です。
git clone https://github.com/inceon/bitbucket-mcp.git
cd bitbucket-mcp
npm install
npm run build
cp .env.example .envBITBUCKET_URL と BITBUCKET_TOKEN を MCP クライアント設定に設定し、コンパイル済みサーバーを node dist/index.js で起動してください。このサーバーは意図的に .env ファイルを自分で読み込みません。MCP クライアントが環境変数を直接渡す必要があります。
認証
Bearer 認証がデフォルトであり、Bitbucket Server/Data Center の個人アクセストークンに推奨されます:
BITBUCKET_URL=https://bitbucket.example.com/bitbucket
BITBUCKET_TOKEN=your-personal-access-token
BITBUCKET_AUTH_TYPE=bearer基本認証が必要な Bitbucket Cloud API トークンまたはアプリパスワードの場合:
BITBUCKET_URL=https://api.bitbucket.org
BITBUCKET_TOKEN=your-api-token-or-app-password
BITBUCKET_AUTH_TYPE=basic
BITBUCKET_USERNAME=your-bitbucket-username有効にするツールに必要な権限のみを認証情報に付与してください。コメント作成には、プルリクエストコメントを作成する権限が必要です。認証情報をコミットしたり、実際のトークンを issue レポートに記載したりしないでください。
環境変数
変数 | 必須 | デフォルト | 説明 |
| はい | - | Bitbucket のベース URL(例: |
| はい | - | API トークン、アプリパスワード、または個人アクセストークン |
| いいえ |
|
|
| 基本認証の場合 | - | 基本認証でトークンと組み合わせるユーザー名 |
| いいえ |
|
|
| いいえ |
| 停止するまでに上流の生 diff から読み取る最大バイト数 |
| いいえ |
| 任意の Bitbucket JSON 応答から読み取る最大バイト数 |
| いいえ |
| ページをまたいで収集するプルリクエストコメントの最大数 |
| いいえ |
| 追跡するプルリクエストコメントページの最大数 |
| いいえ |
| ページをまたいで収集するプルリクエストコミットの最大数 |
| いいえ |
| 追跡するプルリクエストコミットページの最大数 |
| いいえ |
| ページをまたいで収集する構造化変更ファイルエントリの最大数 |
| いいえ |
| 追跡する構造化変更ファイルページの最大数 |
| いいえ |
| 各 Bitbucket HTTP リクエストの期限(ミリ秒) |
| いいえ | - | すべての PR 差分から除外するカンマ区切りのファイル glob |
| いいえ |
| Bitbucket を変更するツール(現時点では PR コメント作成)を許可するには |
サーバーは起動時エラーを stderr にのみ書き出し、Bitbucket HTTP エラースニペットから設定された認証情報をマスクします。
MCP 設定
Claude Desktop の設定:
{
"mcpServers": {
"bitbucket": {
"command": "node",
"args": ["/absolute/path/to/my-bitbucket-mcp/dist/index.js"],
"env": {
"BITBUCKET_URL": "https://api.bitbucket.org",
"BITBUCKET_TOKEN": "your-token"
}
}
}
}Codex の config.toml 設定:
[mcp_servers.bitbucket]
command = "node"
args = ["/absolute/path/to/my-bitbucket-mcp/dist/index.js"]
[mcp_servers.bitbucket.env]
BITBUCKET_URL = "https://api.bitbucket.org"
BITBUCKET_TOKEN = "your-token"利用可能なツール
get_pull_request
プルリクエストのメタデータ(説明、状態、作成者、レビュアー、ブランチ、タイムスタンプ、リンク)を返します。
{
"name": "get_pull_request",
"arguments": {
"workspace": "my-workspace",
"repository": "my-repository",
"pull_request_id": 123
}
}get_pull_request_comments
既存の一般コメントとインラインコメントを、プロバイダー独自のコメントオブジェクトとして返します。レビュー指摘を投稿する前に、既存のフィードバックを考慮するために使用してください。設定された取得上限に達すると、commentsStatus.complete は false になり、理由は max_comments または max_pages になります。
get_pull_request_commits
現在プルリクエストにあるプロバイダー独自のコミットを返します。指摘の発端となったコミットを追跡したり、後続の作業で対処されているかを確認したりするために使用します。設定された取得上限に達すると、commitsStatus.complete は false になり、理由は max_commits または max_pages になります。
get_pull_request_diff
利用可能な場合、git スタイルのレビュー差分と構造化された変更ファイルを返します。
{
"name": "get_pull_request_diff",
"arguments": {
"workspace": "PROJECT_KEY",
"repository": "my-repository",
"pull_request_id": 123,
"ignore_patterns": ["dist/**", "**/*.generated.ts", "package-lock.json"],
"path": "src/service.ts",
"context": 5,
"ignore_whitespace": true,
"renames": true
}
}差分出力は、後方互換性のある JSON テキストと MCP の structuredContent の両方として利用でき、公開された出力スキーマを備えています。含まれるもの:
provider、pull_request_id、rawDiff、rawDiffBytes、rawDiffSource。rawDiffSourceは、Cloud ではprovider_raw、ローカルで正規化された Server/Data Center 応答ではserver_structuredになります。truncatedとtruncationReason: 上流の Cloud 読み取り上限に達した場合はinput_limit、フィルタリング後の結果がBITBUCKET_MAX_DIFF_BYTESを超えた場合はoutput_limit、Server/Data Center が構造化差分を切り詰め済みとマークした場合はprovider_limitです。オプションのコンパクトな
filesエントリには、path、正規化されたstatus、およびリネームまたはコピーの場合のoldPathのみが含まれます。必須のfilesStatusは完全性を報告します。completeが false の場合、理由はmax_files、max_pages、またはunsupportedで、returnedは実際に返されたフィルタリング済みエントリを反映します。除外が有効な場合のオプションの
ignoredメタデータ。
完全な結果:
{
"provider": "cloud",
"pull_request_id": 123,
"rawDiff": "diff --git ...",
"rawDiffBytes": 128,
"rawDiffSource": "provider_raw",
"files": [],
"filesStatus": { "available": true, "complete": true, "returned": 0 },
"truncated": false
}上限付きの部分結果:
{
"provider": "cloud",
"pull_request_id": 123,
"rawDiff": "diff --git ...",
"rawDiffBytes": 200000,
"rawDiffSource": "provider_raw",
"files": [{ "path": "src/service.ts", "status": "modified" }],
"filesStatus": {
"available": true,
"complete": false,
"returned": 1,
"reason": "max_pages"
},
"truncated": true,
"truncationReason": "output_limit"
}切り詰められた rawDiff は UTF-8 セーフなレビュー用プレフィックスであり、必ずしも完全な行、ハンク、または適用可能なパッチではありません。
構造化ファイルページは、完了するか、設定されたファイル数/ページ数の上限に達するまで追跡され、その後、プロバイダーのハッシュ、リンク、重複するパス構造を返すのではなく、コンパクトなレビューメタデータに正規化されます。利用できない diffstat または changes エンドポイントは、HTTP 404 の後にのみ報告されます。認可、レート制限、サーバー、不正な応答、タイムアウト、転送の失敗は、メタデータを黙って省略するのではなく、ツール呼び出しを失敗させます。
Cloud の rawDiff はプロバイダーの生の応答を保持します。Server/Data Center は構造化された /diff 応答を使用し、そのファイル、ハンク、セグメント、行を git スタイルのレビューテキストに正規化します。これにより、別の .diff エクスポート経路でのバージョン固有の失敗を回避できます。rawDiffSource はその違いを明示します。
path は両プロバイダーでサポートされており、大きなプルリクエストをファイル単位でレビューする推奨方法です。返される files メタデータは同じパスにスコープされます。renames は Cloud のみです。context は Cloud の context と Server/Data Center の contextLines に対応します。ignore_whitespace は Cloud の ignore_whitespace と Server/Data Center の whitespace=ignore-all に対応します。これらが指定されていない場合、プロバイダーのデフォルトは変更されません。
パターンはリポジトリ相対パスを使用し、*、**、? をサポートします。package-lock.json や *.png のように / を含まないパターンは、そのファイル名を任意の場所で照合します。末尾のスラッシュはディレクトリを再帰的に除外します。除外が有効な場合、応答には ignored.patterns、ignored.files、ignored.rawDiffFiltered が含まれます。rawDiffFiltered が false の場合、Cloud プロバイダーが安全にフィルタリングできない非 git 差分形式を返したことを意味します。コンテンツを黙って落とす代わりに、応答が保持されます。
add_pull_request_comment
プルリクエストに一般コメント、ファイルレベルコメント、またはインライン行コメントを作成します。この書き込み操作は、MCP サーバー環境で BITBUCKET_ENABLE_WRITE_TOOLS=true が設定されている場合にのみ利用できます。
一般コメント:
{
"name": "add_pull_request_comment",
"arguments": {
"workspace": "my-workspace",
"repository": "my-repository",
"pull_request_id": 123,
"comment": "The implementation looks good. Please add a regression test for the empty input case."
}
}追加された行へのインラインコメント:
{
"name": "add_pull_request_comment",
"arguments": {
"workspace": "my-workspace",
"repository": "my-repository",
"pull_request_id": 123,
"comment": "Please handle an empty value here.",
"file_path": "src/service.ts",
"line": 42,
"line_type": "added"
}
}line_type には added、removed、context のいずれかを使用します。追加行はデフォルトで new 側、削除行はデフォルトで old 側、コンテキスト行はデフォルトで new になります。コンテキストコメントを old に配置するには、line_side を明示的に設定してください。ファイルレベルコメントには、行フィールドなしで file_path を指定します。Server/Data Center でリネームされたファイルの場合、source_file_path で以前のパスを指定できます。
認証された Bitbucket ユーザーがコメント作成者になります。MCP クライアントでツール呼び出しを承認する前に、対象のワークスペース、リポジトリ、プルリクエスト ID、コメントテキストを確認してください。
プロバイダーの動作
URL のホストがプロバイダーを決定します。bitbucket.org と api.bitbucket.org は Bitbucket Cloud を使用し、その他のすべてのホストは Server/Data Center を使用します。
Cloud URL は 1 つの /2.0 API プレフィックスに正規化され、以下を使用します:
/repositories/{workspace}/{repository}/pullrequests/{id}/repositories/{workspace}/{repository}/pullrequests/{id}/diff/repositories/{workspace}/{repository}/pullrequests/{id}/diffstat/repositories/{workspace}/{repository}/pullrequests/{id}/comments(GET; 有効時はPOST)/repositories/{workspace}/{repository}/pullrequests/{id}/commits(GET)
Server/Data Center URL は /bitbucket などのコンテキストパスを保持し、1 つの /rest/api/1.0 プレフィックスに正規化して、以下を使用します:
/projects/{project}/repos/{repository}/pull-requests/{id}/projects/{project}/repos/{repository}/pull-requests/{id}/diff(git スタイルのレビューテキストに正規化された構造化差分)/projects/{project}/repos/{repository}/pull-requests/{id}/diff/{path}(パスにスコープされた構造化差分)/projects/{project}/repos/{repository}/pull-requests/{id}/changes/projects/{project}/repos/{repository}/pull-requests/{id}/comments(GET; 有効時はPOST)/projects/{project}/repos/{repository}/pull-requests/{id}/commits(GET)
オプションの diffstat または changes リクエストは、HTTP 404 の後に filesStatus.reason: "unsupported" を報告します。その他の HTTP、タイムアウト、転送、解析の失敗はツール呼び出しを失敗させ、不完全なメタデータが完全な応答と誤認されることを防ぎます。
Atlassian Rovo MCP
Atlassian は Cloud 専用の bitbucketPullRequest.diff アクションを文書化していますが、その引数スキーマ、出力形式、ページネーション、フィルタリング、切り詰め契約は公開していません。したがって、このサーバーは直接の Bitbucket API を正規の情報源として維持します。Rovo アダプターは、実際の tools/list スキーマと制御された diff レスポンスを検証した後にのみ追加すべきであり、明示的に設定された状態を維持する必要があり、Server/Data Center サポートを置き換えることはできません。Atlassian のサポート対象ツールページ を参照してください。
ロードマップ
今後のリリースで計画されている領域は次のとおりです。
リトライ処理と、より明確なレート制限診断を追加する。
プロバイダー固有のフィールドへのアクセスを維持しつつ、正規化されたプルリクエスト出力を提供する。
プルリクエストの一覧表示とビルドステータス取得のための読み取り専用ツールを追加する。
stdio をデフォルトに保ちながら、オプションの Streamable HTTP トランスポートを提供する。
より簡単なインストールおよびアップグレードパスでバージョン付きリリースを公開する。
書き込み操作はデフォルトで無効のままです。承認、マージ、その他の影響の大きい Bitbucket 操作は計画されていません。アイデアや実装提案は GitHub issues を通じて歓迎します。
開発
npm run dev # Run directly from TypeScript
npm run build # Compile to dist/
npm test # Run the test suite once
npm run test:watch # Run tests in watch mode
npm run check # Build and test, matching CIコマンドレジストリは、各 MCP ツールを src/tools の下に分離して保持します。プルリクエストを開く前に CONTRIBUTING.md を参照してください。
セキュリティ
このサーバーは認証情報をメモリ内で処理し、設定された BITBUCKET_URL にのみ送信します。サーバーを起動する前に、その URL を慎重に確認してください。書き込みツールを有効にすると、接続された MCP クライアントが認証済みの Bitbucket ユーザーとして PR コメントを投稿できるようになります。脆弱性を非公開で報告するには、SECURITY.md に従ってください。
ライセンス
MIT License の下で公開されています。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables management of Bitbucket Cloud pull requests through natural language, including creating, reviewing, approving, and commenting on PRs with automatic default reviewer support.791MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Bitbucket Cloud and self-hosted instances for pull request reviews, code search, repository operations, and managing PR comments and approvals.19GPL 3.0
- AlicenseAqualityDmaintenanceEnables LLMs to review Bitbucket pull requests with custom checklists and API token authentication.51MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to read Bitbucket Cloud pull requests and diffs through natural conversation.229MIT
Related MCP Connectors
Human-authenticated setup for routing GitHub pull requests into the right Slack channel.
Human-authenticated setup for routing GitHub pull requests into the right Slack channel.
A Model Context Protocol (MCP) application for automated GitHub PR analysis and issue management.…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/inceon/bitbucket-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server