Bitbucket MCP について
Bitbucket MCP は、Bitbucket Cloud および Server API に接続する MCP サーバーです。AI アシスタントからリポジトリやプルリクエストを扱いたい開発者を対象とし、承認やマージなどの PR 操作にも対応しています。
主な機能
- 01リポジトリの一覧と詳細の取得
- 02プルリクエストの取得・作成・更新
- 03インラインコメントを含むプルリクエストへのコメント
- 04プルリクエストの承認・却下・マージ
- 05大量データ取得のためのページネーション制御
活用シーン
- 01Cursor から Bitbucket の未処理プルリクエストを確認する
- 02AI アシスタントからレビュアーを指定してドラフトのプルリクエストを作成する
- 03アシスタント経由でプルリクエストにインラインレビューコメントを追加する
MCP 対応
本プロジェクトは MCP サーバーであり、Bitbucket のリポジトリおよびプルリクエスト操作をツールとして MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Bitbucket MCP
Bitbucket Cloud および Server API と連携するための Model Context Protocol(MCP)サーバーです。この MCP サーバーを使用すると、Cursor などの AI アシスタントが Bitbucket のリポジトリ、プルリクエスト、その他のリソースを操作できます。
安全性を最優先
このパッケージは安全かつ責任を持って設計されており、DELETE 操作を使用しないため、データを失うリスクはありません。 すべてのプルリクエストは CodeQL で分析され、コードのセキュリティが確保されます。
概要
公式 npm パッケージを確認してください。 このサーバーは Model Context Protocol 標準を実装し、AI アシスタントが Bitbucket のデータや操作にアクセスできるようにします。次のようなツールを備えています。
- リポジトリの一覧表示と取得
- リポジトリの詳細情報の取得
- プルリクエストの取得
- その他...
インストール
-- ご質問があったため補足します。多くの場合、BITBUCKET_USERNAME には通常、メールアドレスを指定します。
NPX を使用する(推奨)
この MCP サーバーを使用する最も簡単な方法は NPX を利用することです。グローバルにインストールせずに実行できます。
# Option A (recommended): API URL + explicit workspace
BITBUCKET_URL="https://api.bitbucket.org/2.0" \
BITBUCKET_WORKSPACE="your-workspace" \
BITBUCKET_USERNAME="your-username" \
BITBUCKET_PASSWORD="your-app-password" \
npx -y bitbucket-mcp@latest
# Option B (legacy-compatible): web URL only; workspace is auto-extracted
BITBUCKET_URL="https://bitbucket.org/your-workspace" \
BITBUCKET_USERNAME="your-username" \
BITBUCKET_PASSWORD="your-app-password" \
npx -y bitbucket-mcp@latest
手動インストール
または、グローバルに、あるいはプロジェクトの一部としてインストールできます。
# Install globally
npm install -g bitbucket-mcp
# Or install in your project
npm install bitbucket-mcp
次のコマンドで実行します。
# If installed globally (Option A)
BITBUCKET_URL="https://api.bitbucket.org/2.0" \
BITBUCKET_WORKSPACE="your-workspace" \
BITBUCKET_USERNAME="your-username" \
BITBUCKET_PASSWORD="your-app-password" \
bitbucket-mcp
# If installed globally (Option B - legacy-compatible)
BITBUCKET_URL="https://bitbucket.org/your-workspace" \
BITBUCKET_USERNAME="your-username" \
BITBUCKET_PASSWORD="your-app-password" \
bitbucket-mcp
# If installed in your project (Option A)
BITBUCKET_URL="https://api.bitbucket.org/2.0" \
BITBUCKET_WORKSPACE="your-workspace" \
BITBUCKET_USERNAME="your-username" \
BITBUCKET_PASSWORD="your-app-password" \
npx bitbucket-mcp
# If installed in your project (Option B - legacy-compatible)
BITBUCKET_URL="https://bitbucket.org/your-workspace" \
BITBUCKET_USERNAME="your-username" \
BITBUCKET_PASSWORD="your-app-password" \
npx bitbucket-mcp
設定
環境変数
次の環境変数を使用してサーバーを設定します。
| 変数 | 説明 | 必須 |
|---|---|---|
BITBUCKET_URL | Bitbucket API のベース URL。デフォルトは https://api.bitbucket.org/2.0 です | いいえ |
BITBUCKET_USERNAME | Bitbucket のユーザー名 | はい* |
BITBUCKET_PASSWORD | Bitbucket のアプリパスワード | はい* |
BITBUCKET_TOKEN | Bitbucket のアクセストークン(ユーザー名/パスワードの代わりに使用) | いいえ |
BITBUCKET_WORKSPACE | 使用するデフォルトのワークスペース。省略され、BITBUCKET_URL に含まれている場合は自動設定 | いいえ |
BITBUCKET_ENABLE_DANGEROUS | true に設定すると、危険なツール(削除など)を有効にします。デフォルトでは無効です | いいえ |
BITBUCKET_LOG_DISABLE | true/1 に設定すると、ファイルへのログ記録を無効にします | いいえ |
BITBUCKET_LOG_FILE | 特定のログファイルへの絶対パス | いいえ |
BITBUCKET_LOG_DIR | ログを保存するディレクトリ(デフォルトは OS 固有のアプリログディレクトリ) | いいえ |
BITBUCKET_LOG_PER_CWD | true の場合、作業ディレクトリごとのサブフォルダー内にログを保存します | いいえ |
BITBUCKET_TOKEN、または BITBUCKET_USERNAME と BITBUCKET_PASSWORD の両方を指定する必要があります。
Bitbucket アプリパスワードの作成
- Bitbucket アカウントにログインします
- Personal Settings > App Passwords に移動します
- 次の権限を設定して、新しいアプリパスワードを作成します。
- Repositories:Read
- Pull requests:Read、Write
- Pipelines:Read(パイプライン操作に必要)
- 生成されたパスワードをコピーし、
BITBUCKET_PASSWORD環境変数の値として使用します
トラブルシューティング
401 認証エラー
401 認証エラーが発生する場合は、以下を確認してください。
- アプリパスワードを確認する:通常の Bitbucket パスワードではなく、アプリパスワードを使用していることを確認してください
- アプリパスワードの権限を確認する:アプリパスワードには、少なくとも「Repositories: Read」権限が必要です
- API URL 形式を試す:引き続き 401 エラーが発生する場合は、直接 API URL 形式を使用してみてください
BITBUCKET_URL="https://api.bitbucket.org/2.0"
- API アクセスをテストする:Bitbucket API に直接アクセスして、認証情報が機能することを確認してください
# Test with curl (replace with your actual values)
curl -u "your-username:your-app-password" \
"https://api.bitbucket.org/2.0/repositories/your-workspace"
Atlassian API キー
- Atlassian API キーは
BITBUCKET_TOKENではなく、BITBUCKET_PASSWORD変数に設定してください - 通常のユーザー名の代わりに、Bitbucket のメールアドレスを
BITBUCKET_USERNAMEとして使用してください
詳細については、API トークンのドキュメントをご確認ください。
ヘルプの利用
問題が発生した場合は、以下をお試しください。
- API の詳細については、Bitbucket REST API ドキュメントを確認してください
- 一般的なヘルプについては、Bitbucket Cloud ドキュメントを確認してください
Cursor との統合
この MCP サーバーを Cursor と統合するには、以下の手順に従ってください。
- Cursor を開きます
- Settings > Extensions に移動します
- 「Model Context Protocol」をクリックします
- 新しい MCP 設定を追加します
"bitbucket": {
"command": "npx",
"env": {
"BITBUCKET_URL": "https://api.bitbucket.org/2.0",
"BITBUCKET_WORKSPACE": "your-workspace",
"BITBUCKET_USERNAME": "your-username",
"BITBUCKET_PASSWORD": "your-app-password"
},
"args": ["-y", "bitbucket-mcp@latest"]
}
- 設定を保存します
- Cursor で「/bitbucket」コマンドを使用して、Bitbucket のリポジトリとプルリクエストにアクセスします
Cursor でローカルビルドを使用する
ローカルで開発していて、変更をテストする場合は、以下を実行してください。
"bitbucket-local": {
"command": "node",
"env": {
"BITBUCKET_URL": "https://api.bitbucket.org/2.0",
"BITBUCKET_WORKSPACE": "your-workspace",
"BITBUCKET_USERNAME": "your-username",
"BITBUCKET_PASSWORD": "your-app-password"
},
"args": ["/path/to/your/local/bitbucket-mcp/dist/index.js"]
}
利用可能なツール
この MCP サーバーは、Bitbucket のリポジトリとプルリクエストを操作するためのツールを提供します。利用可能な操作の一覧を以下に示します。
ページネーション
特に記載がない限り、一覧表示ツールでは以下のオプションパラメーターを使用できます。
pagelen:1 ページあたりの項目数(Bitbucket のpagelen)。デフォルトは 10 で、上限は 100 です。page:取得する Bitbucket のページ番号(1 から開始)。省略すると、最初のページが返されます。all:trueの場合(かつpageが指定されていない場合)、すべての項目を取得するか、安全上の上限である 1,000 件に達するまで、サーバーが Bitbucket のnextリンクを自動的にたどります。limit:下位互換性のために残されている、非推奨のpagelenの別名です。
これらのパラメーターを使うと、CLI の出力が切り詰められることなく、大規模なコレクションをページ単位で取得できます。
リポジトリ操作
listRepositories
ワークスペース内のリポジトリを一覧表示します。
パラメーター:
workspace(任意):Bitbucket のワークスペース名name(任意):部分一致する名前でリポジトリを絞り込みます- ページネーションで説明されているページネーション制御
getRepository
特定のリポジトリの詳細を取得します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグ
プルリクエスト操作
getPullRequests
リポジトリのプルリクエストを取得します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグstate(任意):プルリクエストの状態(OPEN、MERGED、DECLINED、SUPERSEDED)- ページネーションで説明されているページネーション制御
createPullRequest
新しいプルリクエストを作成します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグtitle:プルリクエストのタイトルdescription:プルリクエストの説明sourceBranch:ソースブランチ名targetBranch:ターゲットブランチ名reviewers(任意):レビュアーのユーザー名のリストdraft(任意):プルリクエストをドラフトとして作成するかどうか
getPullRequest
特定のプルリクエストの詳細を取得します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID- ページネーションで説明されているページネーション制御
- ページネーションで説明されているページネーション制御
- ページネーションで説明されているページネーション制御
- ページネーションで説明されているページネーション制御
updatePullRequest
プルリクエストを更新します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID- ページネーションで説明されているページネーション制御
- ページネーションで説明されているページネーション制御
- その他の各種更新用パラメーター(タイトル、説明など)
getPullRequestActivity
プルリクエストのアクティビティログを取得します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
approvePullRequest
プルリクエストを承認します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
unapprovePullRequest
プルリクエストの承認を取り消します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
declinePullRequest
プルリクエストを却下します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト IDmessage(任意):却下する理由
mergePullRequest
プルリクエストをマージします。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト IDmessage(任意):マージコミットのメッセージstrategy(任意):マージ戦略(merge-commit、squash、fast-forward)
requestChanges
プルリクエストに変更をリクエストします。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
removeChangeRequest
プルリクエストの変更リクエストを取り消します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
createDraftPullRequest
新しいドラフトのプルリクエストを作成します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグtitle:プルリクエストのタイトルdescription:プルリクエストの説明sourceBranch:ソースブランチ名targetBranch:ターゲットブランチ名reviewers(任意):レビュアーのユーザー名のリスト
注: これは、draft: trueを指定してcreatePullRequestを呼び出すのと同じです。
publishDraftPullRequest
ドラフトのプルリクエストを公開し、レビュー可能な状態にします。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
convertTodraft
通常のプルリクエストをドラフト状態に変換します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
プルリクエストのコメント操作
getPullRequestComments
プルリクエストのコメント一覧を取得します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
addPullRequestComment
プルリクエストにコメント(全般またはインライン)を作成します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト IDcontent:Markdown 形式のコメント内容inline(任意):特定の行にコメントするためのインラインコメント情報
インラインコメントの形式:
inlineパラメーターを使用すると、プルリクエストの差分内の特定のコード行にコメントを作成できます。
{
"path": "src/file.ts",
"to": 15, // Line number in NEW version (for added/modified lines)
"from": 10 // Line number in OLD version (for deleted/modified lines)
}
例:
- 全般的なコメント:プルリクエストへの全般的なコメントには、
inlineパラメーターを省略します - 新しい行へのコメント:
toパラメーターのみを使用します - 削除された行へのコメント:
fromパラメーターのみを使用します - 変更された行へのコメント:
fromとtoの両方のパラメーターを使用します
使用方法:
// General comment
addPullRequestComment(workspace, repo, pr_id, "Great work!");
// Inline comment on new line 25
addPullRequestComment(workspace, repo, pr_id, "Consider error handling here", {
path: "src/service.ts",
to: 25,
});
getPullRequestComment
プルリクエストの特定のコメントを取得します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト IDcomment_id:コメント ID
updatePullRequestComment
プルリクエスト上のコメントを更新します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト IDcomment_id:コメント IDcontent:更新後のコメント内容
deletePullRequestComment
プルリクエスト上のコメントを削除します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト IDcomment_id:コメント ID
resolveComment
プルリクエスト上のコメントスレッドを解決済みにします。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト IDcomment_id:コメント ID
reopenComment
プルリクエスト上の解決済みコメントスレッドを再オープンします。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト IDcomment_id:コメント ID
プルリクエストの差分操作
getPullRequestDiff
プルリクエストの差分を取得します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
getPullRequestDiffStat
プルリクエストの差分統計を取得します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
getPullRequestPatch
プルリクエストのパッチを取得します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
プルリクエストのタスク操作
getPullRequestTasks
プルリクエスト上のタスクを一覧表示します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
createPullRequestTask
プルリクエスト上にタスクを作成します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト IDcontent:タスクの内容comment(任意):タスクに関連付けるコメント IDpending(任意):タスクが保留中かどうか
getPullRequestTask
プルリクエスト上の特定のタスクを取得します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト IDtask_id:タスク ID
updatePullRequestTask
プルリクエスト上のタスクを更新します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト IDtask_id:タスク IDcontent(任意):更新後のタスク内容state(任意):更新後のタスク状態
deletePullRequestTask
プルリクエスト上のタスクを削除します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト IDtask_id:タスク ID
その他のプルリクエスト操作
getPullRequestCommits
プルリクエスト上のコミットを一覧表示します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
getPullRequestStatuses
プルリクエストのコミットステータスを一覧表示します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグpull_request_id:プルリクエスト ID
パイプライン操作
listPipelineRuns
リポジトリのパイプライン実行を一覧表示します。
パラメーター:
workspace:Bitbucket のワークスペース名repo_slug:リポジトリのスラッグ- ページネーションで説明しているページネーション制御
status(任意):ステータスでパイプラインを絞り込みます(PENDING、IN_PROGRESS、SUCCESSFUL、FAILED、ERROR、STOPPED)target_branch(任意):ターゲットブランチでパイプラインを絞り込みますtrigger_type(任意):トリガータイプでパイプラインを絞り込みます(manual、push、pullrequest、schedule)
getPipelineRun
特定のパイプライン実行の詳細を取得します。
パラメーター:
workspace:Bitbucket ワークスペース名repo_slug:リポジトリのスラッグpipeline_uuid:パイプライン UUID- ページネーションで説明されているページネーション制御
runPipeline
新しいパイプライン実行を開始します。
パラメーター:
workspace:Bitbucket ワークスペース名repo_slug:リポジトリのスラッグtarget:パイプラインのターゲット設定(ref_type、ref_name、および省略可能なcommit_hash、selector_type、selector_patternを含むオブジェクト)variables(省略可能):パイプライン変数の配列(key、value、および省略可能なsecuredフィールドを含むオブジェクト)
stopPipeline
実行中のパイプラインを停止します。
パラメーター:
workspace:Bitbucket ワークスペース名repo_slug:リポジトリのスラッグpipeline_uuid:パイプライン UUID
getPipelineSteps
パイプライン実行のステップ一覧を取得します。
パラメーター:
workspace:Bitbucket ワークスペース名repo_slug:リポジトリのスラッグpipeline_uuid:パイプライン UUID
getPipelineStep
特定のパイプラインステップの詳細を取得します。
パラメーター:
workspace:Bitbucket ワークスペース名repo_slug:リポジトリのスラッグpipeline_uuid:パイプライン UUIDstep_uuid:ステップ UUID
getPipelineStepLogs
特定のパイプラインステップのログを取得します。
パラメーター:
workspace:Bitbucket ワークスペース名repo_slug:リポジトリのスラッグpipeline_uuid:パイプライン UUIDstep_uuid:ステップ UUID
開発
前提条件
- Node.js 18 以降
- npm または yarn
セットアップ
# Clone the repository
git clone https://github.com/MatanYemini/bitbucket-mcp.git
cd bitbucket-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode
npm run dev
MCP Registry への公開
新しいサーバーリリースを公開する準備ができたら、Model Context Protocol の公式公開ガイドを使用してください。このリポジトリには、ガイドで必要とされるものがすべて含まれています。
- プロジェクトをビルドして、
dist/index.jsを最新の状態にします。npm run build - レジストリマニフェストを生成します(これは
package.jsonを読み込み、registry/bitbucket-mcp.manifest.jsonを出力します)。npm run registry:manifest - サーバー公開ガイド
に従って、
smithery publishまたはガイドで推奨されているワークフローを使ってマニフェストを公開します。
生成されたマニフェストには、CLI コマンド(node dist/index.js)、ドキュメントに記載されているすべての設定オプション、セットアップ手順を示すこの README への参照が含まれているため、そのまま MCP レジストリに提出できます。
ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細についてはLICENSEファイルを参照してください。
リンク
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。