Bitbucket集成协议服务

Bitbucket MCP是一个为Bitbucket Cloud和Server API设计的模型上下文协议服务器,支持AI助手如Cursor与Bitbucket仓库、拉取请求等资源交互。

  • by MatanYemini
  • JavaScript
  • 本地部署
  • 167 星标
  • 更新于
在 GitHub 查看 MatanYemini/bitbucket-mcp

使用说明

比特桶MCP

用于与Bitbucket云和服务器API集成的模型上下文协议(MCP)服务器。此MCP服务器使Cursor等AI助手能够与您的Bitbucket存储库、拉取请求和其他资源进行交互。

安全第一

这是一个安全可靠的包——不使用DELETE操作,因此没有数据丢失的风险。 每个pull请求都使用CodeQL进行分析,以确保代码保持安全。

概述

查看 官方npm包 该服务器实现了模型上下文协议标准,为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 存储日志的目录(默认为特定于操作系统的应用程序日志目录) 否
BITBUCKET_LOG_PER_CWD 何时 true,将日志嵌套在每个工作目录的子文件夹下 否

要么 BITBUCKET_TOKEN 或两者 BITBUCKET_USERNAME 和 BITBUCKET_PASSWORD 必须提供。

创建Bitbucket应用程序密码

  1. 登录您的Bitbucket账户
  2. 前往“个人设置”>“应用密码”
  3. 使用以下权限创建新的应用程序密码:
    • 存储库:阅读
    • 拉取请求:读取、写入
    • 管道:读取(管道操作所需)
  4. 复制生成的密码并将其用作 BITBUCKET_PASSWORD 环境变量

故障排除

401身份验证错误

如果您遇到401身份验证错误,请检查以下内容:

  1. 验证您的应用程序密码:确保您使用的是应用程序密码,而不是您的常规Bitbucket密码
  2. 验证应用程序密码权限:您的应用程序密码至少需要“存储库:读取”权限
  3. 尝试API URL格式:如果仍有401个错误,请尝试使用直接的API URL格式:
BITBUCKET_URL="https://api.bitbucket.org/2.0"
  1. 测试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密钥

  1. 将Atlassian API密钥放入 BITBUCKET_PASSWORD 变量,不是 BITBUCKET_TOKEN
  2. 将您的Bitbucket电子邮件用作 BITBUCKET_USERNAME 而不是您的常规用户名

作为参考,您可以查看 API令牌文档

获取帮助

如果您遇到问题:

  1. 检查 Bitbucket REST API文档 获取API详细信息
  2. 查看 Bitbucket云文档 寻求一般帮助

与Cursor集成

要将此MCP服务器与Cursor集成,请执行以下操作:

  1. 打开的游标
  2. 前往“设置”>“扩展”
  3. 点击“模型上下文协议”
  4. 添加新的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"]
}
  1. 保存配置
  2. 使用Cursor中的“/bitbucket”命令访问bitbucket存储库并拉取请求

使用带有游标的本地构建

如果您正在本地开发并想测试您的更改:

"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:每页项目数(Bitbucket pagelen).默认值为10,上限为100。
  • page:要获取的基于1的Bitbucket页码。如果省略,则返回第一页。
  • all:何时 true (以及 page 未提供),服务器自动跟随Bitbucket next 链接,直到所有项目都被提取或达到1000个条目的安全上限。
  • limit:弃用的别名 pagelen 保持向后兼容性。

使用这些旋钮在大型集合中翻页,而不会碰到CLI截断。

存储库操作

listRepositories

列出工作区中的存储库。

参数:

  • workspace (可选):Bitbucket工作区名称
  • name (可选):按部分名称匹配筛选存储库
  • 中描述的分页控件 分页

getRepository

获取特定存储库的详细信息。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞

拉取请求操作

getPullRequests

获取对存储库的拉取请求。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • state (可选):拉取请求状态(OPEN, MERGED, DECLINED, SUPERSEDED)
  • 中描述的分页控件 分页

createPullRequest

创建新的pull请求。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • title:拉取请求标题
  • description:拉取请求描述
  • sourceBranch:源分支名称
  • targetBranch:目标分支名称
  • reviewers (可选):审阅者用户名列表
  • draft (可选):是否将pull请求创建为草稿

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:拉取请求ID
  • message (可选):拒绝原因

mergePullRequest

合并拉取请求。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • pull_request_id:拉取请求ID
  • message (可选):合并提交消息
  • strategy (可选):合并策略(merge-commit, squash, fast-forward)

requestChanges

请求对pull请求进行更改。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • pull_request_id:拉取请求ID

removeChangeRequest

从pull请求中删除更改请求。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • pull_request_id:拉取请求ID

createDraftPullRequest

创建新的草稿拉取请求。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • title:拉取请求标题
  • description:拉取请求描述
  • sourceBranch:源分支名称
  • targetBranch:目标分支名称
  • reviewers (可选):审阅者用户名列表

注: 这相当于打电话 createPullRequest 和 draft: true.

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:拉取请求ID
  • content:以markdown格式评论内容
  • inline (可选):用于评论特定行的内联评论信息

内联注释格式:

这 inline 参数允许您在pull请求diff中的特定代码行上创建注释:

{
  "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 通用pull请求注释的参数
  • 对新线的评论:仅限使用 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:拉取请求ID
  • comment_id:评论ID

updatePullRequestComment

更新对拉取请求的评论。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • pull_request_id:拉取请求ID
  • comment_id:评论ID
  • content:更新评论内容

deletePullRequestComment

删除pull请求上的注释。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • pull_request_id:拉取请求ID
  • comment_id:评论ID

resolveComment

解析pull请求上的注释线程。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • pull_request_id:拉取请求ID
  • comment_id:评论ID

reopenComment

在pull请求中重新打开已解析的评论线程。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • pull_request_id:拉取请求ID
  • comment_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:拉取请求ID
  • content:任务内容
  • comment (可选):与任务关联的注释ID
  • pending (可选):任务是否待定

getPullRequestTask

获取拉取请求上的特定任务。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • pull_request_id:拉取请求ID
  • task_id:任务ID

updatePullRequestTask

根据拉取请求更新任务。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • pull_request_id:拉取请求ID
  • task_id:任务ID
  • content (可选):更新任务内容
  • state (可选):更新任务状态

deletePullRequestTask

删除拉取请求中的任务。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • pull_request_id:拉取请求ID
  • task_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:管道UUID
  • step_uuid:步骤UUID

getPipelineStepLogs

获取特定管道步骤的日志。

参数:

  • workspace:Bitbucket工作区名称
  • repo_slug:存储库段塞
  • pipeline_uuid:管道UUID
  • step_uuid:步骤UUID

发展

先决条件

  • Node.js 18或更高版本
  • npm或纱线

设置

# 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注册表

当您准备发布新的服务器版本时,请使用官方的模型上下文协议发布指南。存储库包括 指南所期望的一切:

  1. 这样构建项目 dist/index.js 是最新的:
    npm run build
    
  2. 生成注册表清单(内容如下 package.json 并发出 registry/bitbucket-mcp.manifest.json):
    npm run registry:manifest
    
  3. 跟随 发布服务器指南 用以下命令推送清单 smithery publish 或指南中推荐的工作流程。

生成的清单捕获了CLI命令(node dist/index.js),所有记录的配置选项,以及返回的指针 此README用于安装说明,因此可以直接提交给MCP注册表。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

链接