比特桶MCP服务器
A. 真正详尽无遗 Bitbucket Cloud的模型上下文协议(MCP)服务器,用Java编写。该服务器使IntelliJ IDEA中的GitHub Copilot等AI助手能够与Bitbucket存储库、拉取请求、管道等进行交互。
随着 140+综合工具,该服务器提供了几乎所有Bitbucket Cloud API操作的完整覆盖。
特性
此MCP服务器提供 真正详尽的报道 使用140多种工具进行Bitbucket云操作:
🗂️ 存储库操作(6个工具)
- 列出工作区中的存储库
- 获取存储库详细信息
- 创建新存储库
- 更新存储库设置
- 删除存储库
- Fork存储库
🔀 拉取请求操作(24个工具)
- 列出拉取请求(按状态筛选)
- 获取拉取请求详细信息
- 创建、更新、合并、拒绝拉取请求
- 批准/取消批准拉取请求
- 添加/更新/删除PR评论(包括特定行的内联评论)
- 获取PR差异、差异统计、提交、活动、状态
- 添加审阅者以拉取请求
- 创建/更新/删除PR任务
- 获取PR作为补丁文件
📝 提交操作(9个工具)
- 列表提交(按分支或全部)
- 获取提交详细信息
- 列出提交状态(CI/CD结果)
- 创建提交状态
- 获取提交差异
- 列出并添加提交注释(包括内联)
- 以补丁文件的形式获取提交
🌿 分支机构运营(7种工具)
- 列出所有分支
- 获取分行详细信息
- 创建新分支
- 删除分支
- 列出/创建/删除分支限制(保护规则)
🚀 管道作业(13个工具)
- 列出所有管道(CI/CD运行)
- 获取管道详细信息
- 运行/触发管道
- 停止运行管道
- 获取管道步骤和步骤日志
- 列出/创建管道变量
- 列出/创建/更新/删除管道计划(基于cron)
📦 部署操作(6个工具)
- 列出部署
- 获取部署详细信息
- 列出/创建/删除部署环境
🔔 Webhook操作(3个工具)
- 列出webhooks
- 使用事件订阅创建Webhook
- 删除webhooks
👥 工作空间和项目操作(8个工具)
- 列出工作区
- 获取工作区详细信息
- 列出项目
- 创建/更新/删除项目
- 列出工作区成员
📄 文件/源操作(5个工具)
- 从存储库获取文件内容
- 列出目录内容
- 通过API创建和更新文件
- 获取文件提交历史记录
🐛 问题操作(13个工具)
- 列出问题(按州/种类筛选)
- 获取问题详细信息
- 创建/更新/删除问题
- 列出并添加问题注释
- 观察/不观察问题
- 对问题进行投票/取消投票
- 列出问题观察者和选民
🔍 搜索操作(2个工具)
- 按名称/描述搜索存储库
- 存储库中的搜索代码
🏷️ 标签操作(4个工具)
- 列表标记
- 创建新标签
- 获取标签详细信息
- 删除标签
👤 用户操作(2个工具)
- 获取当前经过身份验证的用户
- 按用户名获取用户详细信息
👀 观察者和叉子操作(4个工具)
- 列出存储库观察者
- 列表存储库分支
- 监视/取消监视存储库
👥 默认审阅者(3个工具)
- 列出默认审阅者
- 添加/删除默认审阅者
🔑 SSH和部署密钥(6个工具)
- 列出/创建/删除用户SSH密钥
- 列出/创建/删除存储库部署密钥
📥 下载(2个工具)
- 列出存储库下载
- 删除下载
📝 片段(5个工具)
- 列出片段
- 获取/创建/更新/删除代码段
🔧 存储库变量(4个工具)
- 列出/创建/更新/删除存储库级管道变量(安全变量)
🎯 里程碑(4个工具)
- 列出/获取/创建/删除问题的里程碑
📦 组件(4个工具)
- 列出/获取/创建/删除用于问题分类的组件
📌 版本(4个工具)
- 列出/获取/创建/删除版本以进行问题跟踪
需求
- Java 17或更高版本
- Bitbucket云账户
- 身份验证凭据 (选择一个):
- 访问令牌 (OAuth 2.0-推荐)或 - 用户名+应用密码 (基本身份验证)
- 梅文 (从源头建设)
安装
1.从源头构建
git clone
cd BitbucketMCP
mvn clean package这将创建一个可执行JAR: target/bitbucket-mcp-server-1.0.0.jar
2.配置Bitbucket凭据
您可以使用以下任一方式进行身份验证 访问令牌 (推荐)或 用户名+应用密码.
选项A:访问令牌(推荐)
使用环境变量:
export BITBUCKET_ACCESS_TOKEN="your-access-token"
export BITBUCKET_WORKSPACE="your-default-workspace" # Optional
export BITBUCKET_BASE_URL="https://api.bitbucket.org/2.0" # Optional, defaults to Bitbucket Cloud注: 这 BITBUCKET_BASE_URL 默认为 https://api.bitbucket.org/2.0 (比特桶云)。仅当您使用以下内容时才设置此选项:
- 比特桶服务器 (自托管):
https://your-server.com/rest/api/1.0 - 比特桶数据中心:
https://your-datacenter.com/rest/api/1.0
使用配置文件:
创建 ~/.bitbucket-mcp.json:
{
"accessToken": "your-access-token",
"workspace": "your-default-workspace",
"baseUrl": "https://api.bitbucket.org/2.0"
}注: 这 baseUrl 字段是可选的,默认为Bitbucket Cloud。仅在使用Bitbucket服务器/数据中心时才包含它。
如何创建访问令牌:
- 首选 比特桶设置 → 个人设置 → 访问令牌
- 点击 创建令牌
- 为其命名并选择权限:
- 仓库:读、写、管理 - 拉取请求:读,写 - 管道:读,写 - 问题:读,写 - 网络钩子:读,写 - 账户:阅读
- 立即复制生成的令牌(不会再次显示)
选项B:用户名+应用程序密码
使用环境变量:
export BITBUCKET_USERNAME="your-username"
export BITBUCKET_APP_PASSWORD="your-app-password"
export BITBUCKET_WORKSPACE="your-default-workspace" # Optional
export BITBUCKET_BASE_URL="https://api.bitbucket.org/2.0" # Optional, defaults to Bitbucket Cloud使用配置文件:
创建 ~/.bitbucket-mcp.json:
{
"username": "your-bitbucket-username",
"appPassword": "your-app-password",
"workspace": "your-default-workspace",
"baseUrl": "https://api.bitbucket.org/2.0"
}注: 这 baseUrl 字段是可选的,默认为Bitbucket Cloud。仅在使用Bitbucket服务器/数据中心时才包含它。
如何创建应用程序密码:
- 首选 比特桶设置 → 个人设置 → 应用密码
- 点击 创建应用密码
- 选择所需权限:
- 仓库:读、写、管理 - 拉取请求:读,写 - 管道:读取、写入、编辑变量 - 问题:读,写 - 网络钩子:读,写 - 账户:阅读
- 复制生成的密码
与IntelliJ IDEA和GitHub Copilot一起使用
配置IntelliJ IDEA
- 安装GitHub副本 IntelliJ中的插件
- 创建或编辑 MCP配置文件
对于macOS/Linux上的IntelliJ:
创建/编辑 .vscode/mcp.json 在您的主目录或项目中:
使用访问令牌(推荐):
{
"mcpServers": {
"bitbucket": {
"command": "java",
"args": [
"-jar",
"/absolute/path/to/bitbucket-mcp-server-1.0.0.jar"
],
"env": {
"BITBUCKET_ACCESS_TOKEN": "your-access-token",
"BITBUCKET_WORKSPACE": "your-workspace"
}
}
}
}使用用户名+应用程序密码:
{
"mcpServers": {
"bitbucket": {
"command": "java",
"args": [
"-jar",
"/absolute/path/to/bitbucket-mcp-server-1.0.0.jar"
],
"env": {
"BITBUCKET_USERNAME": "your-username",
"BITBUCKET_APP_PASSWORD": "your-app-password",
"BITBUCKET_WORKSPACE": "your-workspace"
}
}
}
}对于Windows上的IntelliJ:
使用访问令牌(推荐):
{
"mcpServers": {
"bitbucket": {
"command": "java",
"args": [
"-jar",
"C:\\path\\to\\bitbucket-mcp-server-1.0.0.jar"
],
"env": {
"BITBUCKET_ACCESS_TOKEN": "your-access-token",
"BITBUCKET_WORKSPACE": "your-workspace"
}
}
}
}使用用户名+应用程序密码:
{
"mcpServers": {
"bitbucket": {
"command": "java",
"args": [
"-jar",
"C:\\path\\to\\bitbucket-mcp-server-1.0.0.jar"
],
"env": {
"BITBUCKET_USERNAME": "your-username",
"BITBUCKET_APP_PASSWORD": "your-app-password",
"BITBUCKET_WORKSPACE": "your-workspace"
}
}
}
}- 重新启动IntelliJ IDEA
- 打开GitHub Copilot聊天 并验证Bitbucket工具是否可用
使用GitHub Copilot
配置后,您可以在GitHub Copilot Chat中使用自然语言与Bitbucket交互:
查询示例:
List all repositories in my workspace
Show me open pull requests for my-repo
Create a new pull request from feature-branch to main
Get the details of commit abc123
List all branches in my-repo
Run the pipeline for the main branch
Search for TODO comments in my-repo
Create a new issue titled "Fix login bug"
Get the content of src/main.py file
List all recent commits on the develop branch可用工具
服务器暴露 50+MCP工具 涵盖所有主要的Bitbucket操作:
| 类别 | 工具 |
|---|---|
| 存储库 | list_repositories, get_repository, create_repository, delete_repository, fork_repository |
| 拉取请求 | list_pull_requests, get_pull_request, create_pull_request, update_pull_request, merge_pull_request, decline_pull_request, approve_pull_request, unapprove_pull_request, list_pr_comments, add_pr_comment |
| 承诺 | list_commits, get_commit, list_commit_statuses, create_commit_status |
| 分支机构 | list_branches, get_branch, create_branch, delete_branch |
| 管道 | list_pipelines, get_pipeline, run_pipeline, stop_pipeline |
| 部署 | list_deployments, get_deployment |
| Webhooks | list_webhooks, create_webhook, delete_webhook |
| 工作区 | list_workspaces, get_workspace |
| 项目 | list_projects, create_project |
| 文件 | get_file_content, list_directory |
| 问题 | list_issues, get_issue, create_issue |
| 搜索 | search_repositories, search_code |
| 标签 | list_tags, create_tag |
| 用户 | get_current_user, get_user |
建筑
┌─────────────────────────────────────┐
│ IntelliJ IDEA + GitHub Copilot │
└──────────────┬──────────────────────┘
│ MCP Protocol (JSON-RPC 2.0)
│ STDIO Transport
┌──────────────┴──────────────────────┐
│ Bitbucket MCP Server (Java) │
│ ┌─────────────────────────────┐ │
│ │ MCP Server Core │ │
│ │ - Protocol Handler │ │
│ │ - Tool Registry │ │
│ └──────────┬──────────────────┘ │
│ │ │
│ ┌──────────┴──────────────────┐ │
│ │ Bitbucket API Client │ │
│ │ - HTTP Client (OkHttp) │ │
│ │ - Authentication │ │
│ └──────────┬──────────────────┘ │
└──────────────┼──────────────────────┘
│ HTTPS
┌──────────────┴──────────────────────┐
│ Bitbucket Cloud REST API v2 │
└─────────────────────────────────────┘配置参考
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
BITBUCKET_ACCESS_TOKEN | 是\* | 比特桶访问令牌(OAuth 2.0) |
BITBUCKET_USERNAME | 是\*\* | 您的Bitbucket用户名 |
BITBUCKET_APP_PASSWORD | 是\*\* | Bitbucket应用程序密码 |
BITBUCKET_WORKSPACE | 否 | 默认工作区段塞 |
BITBUCKET_BASE_URL | 没有 | API基本URL(默认值:https://api.bitbucket.org/2.0) |
\*如果不使用用户名/应用程序密码,则需要 \*\*如果不使用访问令牌,则需要
配置文件格式
文件位置: ~/.bitbucket-mcp.json
使用访问令牌(推荐):
{
"accessToken": "your-access-token",
"workspace": "your-workspace (optional)",
"baseUrl": "https://api.bitbucket.org/2.0 (optional)"
}使用用户名+应用程序密码:
{
"username": "your-username",
"appPassword": "your-app-password",
"workspace": "your-workspace (optional)",
"baseUrl": "https://api.bitbucket.org/2.0 (optional)"
}日志记录
日志将写入:
- 控制台(stderr):警告和错误
- 文件:
~/.bitbucket-mcp.log(所有日志级别)
要更改日志级别,请编辑 src/main/resources/logback.xml
故障排除
“配置无效”错误
解决方案:确保通过环境变量设置凭据或 ~/.bitbucket-mcp.json
“401未经授权”错误
解决方案:
- 验证您的访问令牌或应用程序密码是否正确且未过期
- 确保令牌/密码具有所需的权限
- 如果使用用户名/密码,请检查您的用户名是否正确
- 尝试重新生成您的访问令牌或应用程序密码
工具未出现在GitHub Copilot中
解决方案:
- 验证
mcp.json位置正确 - 检查JAR路径是否绝对正确
- 重新启动IntelliJ IDEA
- 检查GitHub Copilot MCP设置
网络错误
解决方案:
- 检查互联网连接
- 验证您是否可以访问https://api.bitbucket.org
- 如果位于公司防火墙之后,请检查代理设置
发展
项目结构
BitbucketMCP/
├── src/main/java/com/bitbucket/mcp/
│ ├── BitbucketMCPServer.java # Main entry point
│ ├── server/
│ │ └── MCPServer.java # MCP protocol server
│ ├── protocol/ # MCP protocol classes
│ ├── bitbucket/
│ │ └── BitbucketClient.java # Bitbucket API client
│ ├── config/
│ │ └── BitbucketConfig.java # Configuration management
│ └── tools/
│ ├── ToolRegistry.java # Tool registration
│ ├── ToolExecutor.java # Tool interface
│ ├── BaseToolExecutor.java # Base implementation
│ └── impl/ # Tool implementations
├── src/main/resources/
│ └── logback.xml # Logging configuration
├── pom.xml # Maven configuration
└── README.md添加新工具
- 在中创建新类
tools/impl/延伸BaseToolExecutor - 实施
createInputSchema()和execute()方法 - 在中注册该工具
ToolRegistry.registerAllTools()
例子:
public class MyCustomTool extends BaseToolExecutor {
public MyCustomTool(BitbucketClient client) {
super(client, "my_custom_tool", "Description of what it does");
}
@Override
protected JsonObject createInputSchema() {
JsonObject schema = createSchema();
addStringProperty(schema, "param1", "Parameter description", true);
return schema;
}
@Override
public JsonObject execute(JsonObject arguments) throws Exception {
String param1 = getRequiredString(arguments, "param1");
// Implementation
return client.get("/some/endpoint");
}
}API覆盖范围
此MCP服务器实现 全面覆盖 Bitbucket云REST API v2的版本:
✅ 仓库 ✅ 拉取请求 ✅ 提交和提交状态 ✅ 分支 ✅ 标签 ✅ 管道(CI/CD) ✅ 部署 ✅ 网络钩子 ✅ 问题 ✅ 工作区 ✅ 项目 ✅ 文件/源浏览 ✅ 搜索(存储库和代码) ✅ 用户
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 通过测试进行更改
- 提交拉取请求
许可证
\[在此处指定您的许可证\]
支持
对于问题、疑问或贡献:
- 在GitHub上打开一个问题
- 检查 Bitbucket API文档
- 查看 MCP规范
致谢
- 建立在 模型上下文协议 通过Anthropic
- 用途 Bitbucket云REST API v2
______________________________________________________________________
由以下材料制成❤️ 面向开发者社区
