个人比特桶MCP服务器
](https://lobehub.com/mcp/tedysaputro-personal-bitbucket-mcp-server)
一个模型上下文协议(MCP)服务器,为AI助手提供与Bitbucket Cloud存储库交互的工具。使用Quarkus,超音速亚原子Java框架构建。
作者: 那么 Saputro | 联系: tedy@saputro.dev
什么是MCP?
模型上下文协议(MCP)是一个开放协议,它规范了应用程序如何向大型语言模型(LLM)提供上下文。该服务器实现了MCP,将Bitbucket操作作为Claude、ChatGPT或其他LLM驱动的应用程序等AI助手可以使用的工具。
特性
- 🔧 11 MCP工具 用于Bitbucket操作
- 🚀 原生映像支持 使用GraalVM实现快速启动和低内存占用
- 🐳 多架构Docker镜像 (AMD64和ARM64)
- 🔐 安全认证 使用Bitbucket应用程序密码
- 📦 RESTful API 用于直接HTTP访问
- ⚡ 多种运输方式 -stdio(通用)、SSE和HTTP流
- 🎯 通用客户端支持 -stdio适用于所有MCP客户端(Claude Desktop、Cursor、VS Code、Cherry Studio等)
如果您想了解更多关于Quarkus的信息,请访问其网站: .
目录
快速开始
先决条件
- 比特桶API代币:在创建API令牌https://bitbucket.org/account/settings/api-token/
- 所需权限: repository:read, pullrequest:read, pullrequest:write - 看 创建Bitbucket API令牌 详细说明
- 码头工人 (可选):用于运行容器化版本
使用Docker(推荐)
docker run -p 8080:8080 \
-e BITBUCKET_EMAIL=your-email@example.com \
-e BITBUCKET_API_TOKEN=your-api-token \
-e BITBUCKET_WORKSPACE=your-workspace \
subrutin/bitbucket-mcp-server:latest在支持的客户端上使用MCP
此服务器支持多种传输协议。选择最适合您客户的方法:
🎯 方法1:stdio传输(推荐-适用于所有客户端)
stdio传输允许直接进程通信,而无需运行HTTP服务器。这是 通用方法 它适用于所有MCP客户端。
适用于克劳德桌面,将此添加到您的配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json\ 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"bitbucket": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "BITBUCKET_EMAIL=your-email@example.com",
"-e", "BITBUCKET_API_TOKEN=your-api-token",
"-e", "BITBUCKET_WORKSPACE=your-workspace",
"subrutin/bitbucket-mcp-server:stdio-0.0.2"
]
}
}
}重新启动Claude Desktop,您将在🔨 工具菜单。
用于游标IDE,添加到您的光标设置中(格式与Claude Desktop相同):
{
"mcpServers": {
"bitbucket": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "BITBUCKET_EMAIL=your-email@example.com",
"-e", "BITBUCKET_API_TOKEN=your-api-token",
"-e", "BITBUCKET_WORKSPACE=your-workspace",
"subrutin/bitbucket-mcp-server:stdio-0.0.2"
]
}
}
}VS代码 使用MCP扩展(格式相同):
{
"mcp.servers": {
"bitbucket": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "BITBUCKET_EMAIL=your-email@example.com",
"-e", "BITBUCKET_API_TOKEN=your-api-token",
"-e", "BITBUCKET_WORKSPACE=your-workspace",
"subrutin/bitbucket-mcp-server:stdio-0.0.2"
]
}
}
}对于其他MCP客户端,对stdio传输使用相同的Docker命令模式。
🌐 方法2:SSE传输(基于Web的客户端的替代方案)
SSE传输要求服务器正在运行并且可以通过HTTP访问。
第一步: 使用Docker启动服务器:
docker run -d \
--name bitbucket-mcp \
-p 8080:8080 \
-e BITBUCKET_EMAIL=your-email@example.com \
-e BITBUCKET_API_TOKEN=your-api-token \
-e BITBUCKET_WORKSPACE=your-workspace \
subrutin/bitbucket-mcp-server:latest第二步: 配置您的MCP客户端:
✅ 光标IDE
添加到光标设置中:
{
"mcpServers": {
"bitbucket": {
"url": "http://localhost:8080/mcp/sse"
}
}
}✅ VS Code
安装MCP扩展并添加到您的设置中:
{
"mcp.servers": {
"bitbucket": {
"url": "http://localhost:8080/mcp/sse"
}
}
}✅ 樱桃工作室
- 前往设置
- 选择MCP
- 点击按钮创建
"Type": sse
"url": "http://localhost:8080/mcp/sse",
"name": "Bitbucket MCP"
支持的交通工具
- ✅ 标准 -直接过程通信(通用-推荐)
- 适用于:所有MCP客户端 (克劳德桌面、光标、VS代码、樱桃工作室等) - 不需要HTTP服务器 - 最简单的设置 - 使用图像: subrutin/bitbucket-mcp-server:stdio-0.0.2
- ✅ SSE(服务器发送事件) -基于HTTP的传输
- 基于web的客户端的替代选项 - 需要运行HTTP服务器 - 长期连接 - 实时更新 - 使用图像: subrutin/bitbucket-mcp-server:latest
- ✅ HTTP流 -适用于定制MCP客户端
- 请求/响应模式 - 编程访问 - 使用图像: subrutin/bitbucket-mcp-server:latest
- ⚠️ HTTPS/TLS -尚未支持
- 目前只有HTTP可用于SSE - HTTPS支持计划在未来发布
MCP工具参考
该服务器提供11个与Bitbucket交互的工具:
拉取请求工具
1. findAllPullRequest
返回指定存储库上的所有拉取请求。
参数:
workspace(string):存储库所在的工作区ID或slugreposlug(string):从中获取拉取请求的存储库slug或名称
例子:
Use the findAllPullRequest tool with workspace "myteam" and reposlug "myrepo"2. findAPullRequest
按ID返回包含详细信息的特定拉取请求。
参数:
workspace(string):工作区ID或slugreposlug(string):仓库段塞pullRequestId(整数):从中获取详细信息的拉取请求ID
例子:
Get details of pull request #42 from myteam/myrepo3. findDiffStatForPullRequest
返回pull请求的diffstat(关于更改的统计信息)。
参数:
workspace(string):工作区ID或slugreposlug(string):仓库段塞id(整数):拉取请求ID
例子:
Show me the diffstat for PR #424. findListChangesInAPullRequest
返回拉取请求中的实际差异/更改,显示添加/删除的行。
参数:
workspace(string):工作区ID或slugreposlug(string):仓库段塞id(整数):拉取请求ID
例子:
Show me all the code changes in PR #42拉取请求评论工具
5. createComment
对pull请求创建一般注释。
参数:
workspace(string):工作区ID或slugreposlug(string):仓库段塞pullRequestId(integer):要评论的拉取请求IDcommentText(string):评论文本内容(支持Markdown)
例子:
Add a comment to PR #42 saying "LGTM! Great work on the refactoring."6. updateComment
更新对拉取请求的现有评论。
参数:
workspace(string):工作区ID或slugreposlug(string):仓库段塞pullRequestId(整数):拉取请求IDcommentId(整数):要更新的评论IDcommentText(string):更新的评论文本内容
例子:
Update comment #123 on PR #42 with new text7. createInlineComment
在拉取请求差异中的特定代码行上创建内联注释。
参数:
workspace(string):工作区ID或slugreposlug(string):仓库段塞pullRequestId(整数):拉取请求IDfilePath(string):PR diff中显示的精确文件路径(区分大小写)lineNumber(整数):文件新版本中的行号commentText(string):Markdown格式的评论文本
重要提示:
- 这
filePath必须与PR差异中显示的文件路径完全匹配 - 这
lineNumber必须来自新/修改版本(diff中带“+”的行) - 该行必须存在于PR差异中-您不能对未更改的行进行注释
- 工作流程:第一次通话
findListChangesInAPullRequest要获取差异,请确定正确的文件路径和行号
例子:
First, get the diff for PR #42, then add an inline comment on line 25 of src/main/java/Service.java8. findAComment
返回一个特定的拉取请求注释及其详细信息。
参数:
workspace(string):工作区ID或slugreposlug(string):仓库段塞pullRequestId(整数):拉取请求IDcommentId(整数):要检索的注释ID
例子:
Get details of comment #123 from PR #429. findCommentList
返回特定拉取请求的分页注释列表。
参数:
workspace(string):工作区ID或slugreposlug(string):仓库段塞pullRequestId(整数):拉取请求IDpage(整数):分页的页码pageLength(整数):每页的项目数size(整数):项目总数
例子:
Get the first 10 comments from PR #42用户配置文件工具
10. Fetch user profile
返回经过身份验证的用户的Bitbucket配置文件信息。
参数: 无
例子:
Show me my Bitbucket profile配置
环境变量
此服务器需要以下环境变量才能与Bitbucket Cloud进行身份验证:
| 变量 | 必填 | 描述 | 示例 |
|---|---|---|---|
BITBUCKET_EMAIL | 是 | 您的Bitbucket帐户电子邮件 | user@example.com |
BITBUCKET_API_TOKEN | 是 | 具有存储库和PR权限的API令牌 | ATBBxxx... |
BITBUCKET_WORKSPACE | 是 | 操作的默认工作区段塞 | myteam |
创建Bitbucket API令牌
- 首选https://bitbucket.org/account/settings/api-token/
- 点击“创建API令牌”
- 给它一个标签(例如“MCP服务器”)
- 选择权限:
- 仓库:阅读 - 拉取请求:读,写
- 点击“创建”并复制生成的令牌(将其用作
BITBUCKET_API_TOKEN)
注: API令牌与应用程序密码不同。API令牌提供更细粒度的权限,是推荐的身份验证方法。有关更多信息,请参见 Atlassian的API代币文档.
应用程序配置
服务器配置位于 src/main/resources/application.yml:
bitbucket:
api:
email: ${BITBUCKET_EMAIL:}
token: ${BITBUCKET_API_TOKEN:}
workspace: ${BITBUCKET_WORKSPACE:}
quarkus:
rest-client:
bitbucket-api:
url: https://api.bitbucket.org/2.0支持的交通工具
此MCP服务器支持以下传输协议:
- ✅ 标准 -直接过程通信(通用-推荐)
- 适用于:所有MCP客户端 (克劳德桌面、光标、VS代码、樱桃工作室等) - 不需要HTTP服务器 - 最简单的设置和集成 - Docker镜像: subrutin/bitbucket-mcp-server:stdio-0.0.2
- ✅ SSE(服务器发送事件) -
GET /mcp/sse
- 基于web的客户端的替代方案 - 需要运行HTTP服务器 - 长期连接 - 实时更新 - 目前仅支持HTTP(HTTPS即将推出) - Docker镜像: subrutin/bitbucket-mcp-server:latest
- ✅ HTTP流 -
POST /mcp/stream
- 适用于定制MCP客户端 - 请求/响应模式 - 编程访问 - Docker镜像: subrutin/bitbucket-mcp-server:latest
- ⚠️ HTTPS/TLS -尚未支持(正在开发中)
- 将启用安全的SSE连接 - 需要SSL证书配置 - 看 路线图 关于时间线
使用Docker运行
可用的Docker镜像
该项目为不同的用例提供了两个Docker镜像:
subrutin/bitbucket-mcp-server:latest-SSE/HTTP传输
- 适用于Cursor、VS Code、Cherry Studio - 需要运行HTTP服务器 - 支持SSE和HTTP流
subrutin/bitbucket-mcp-server:stdio-0.0.2-stdio传输(推荐)
- 适用于所有MCP客户端(Claude Desktop、Cursor、VS Code、Cherry Studio等) - 直接过程沟通 - 不需要HTTP服务器 - 最简单的设置
拉取并运行(SSE/HTTP传输)
# Pull the latest image
docker pull subrutin/bitbucket-mcp-server:latest
# Run the container
docker run -d \
--name bitbucket-mcp \
-p 8080:8080 \
-e BITBUCKET_EMAIL=your-email@example.com \
-e BITBUCKET_API_TOKEN=your-api-token \
-e BITBUCKET_WORKSPACE=your-workspace \
subrutin/bitbucket-mcp-server:latest使用stdio传输运行(所有MCP客户端-推荐)
# Pull the stdio image
docker pull subrutin/bitbucket-mcp-server:stdio-0.0.2
# Run interactively (for testing)
docker run -i --rm \
-e BITBUCKET_EMAIL=your-email@example.com \
-e BITBUCKET_API_TOKEN=your-api-token \
-e BITBUCKET_WORKSPACE=your-workspace \
subrutin/bitbucket-mcp-server:stdio-0.0.2备注:对于MCP客户端(Claude Desktop、Cursor、VS Code等),请使用中所示的配置 方法1:stdio传输 而不是手动运行。
使用Docker Compose
创建一个 docker-compose.yml:
version: '3.8'
services:
bitbucket-mcp:
image: subrutin/bitbucket-mcp-server:latest
ports:
- "8080:8080"
environment:
BITBUCKET_EMAIL: ${BITBUCKET_EMAIL}
BITBUCKET_API_TOKEN: ${BITBUCKET_API_TOKEN}
BITBUCKET_WORKSPACE: ${BITBUCKET_WORKSPACE}
restart: unless-stopped然后运行:
docker-compose up -d健康检查
检查服务器是否正在运行:
curl http://localhost:8080/q/health发展
在开发模式下运行
在启用实时编码的开发模式下运行应用程序:
./mvnw quarkus:devDev UI可在以下网址获得
本地测试MCP工具
服务器运行后,您可以测试MCP端点:
# Test SSE connection (Server-Sent Events)
curl -N http://localhost:8080/mcp/sse
# Test HTTP Stream connection
curl -N http://localhost:8080/mcp
# Test with MCP Inspector (if installed)
npx @modelcontextprotocol/inspector http://localhost:8080/mcp/sse可用的MCP传输:
stdio-直接过程通信(通用-适用于所有MCP客户端-使用stdio-0.0.2图像)⭐ 推荐GET /mcp/sse-SSE传输(备选方案-需要HTTP服务器)POST /mcp/stream-HTTP流传输(用于自定义MCP客户端)
建筑
构建多架构Docker镜像
该项目包括一个为AMD64和ARM64架构构建原生Docker镜像的脚本:
# Build and push multi-platform image
./build-multiplatform.sh subrutin/bitbucket-mcp-server 0.0.1
# The script will:
# 1. Use Docker buildx to create multi-arch images
# 2. Build native executables with GraalVM
# 3. Push to Docker Hub registry构建JVM版本
将应用程序打包为JVM应用程序:
./mvnw package这产生 quarkus-run.jar 在 target/quarkus-app/ 目录。
运行方式:
java -jar target/quarkus-app/quarkus-run.jar构建本地可执行文件
使用GraalVM构建本机可执行文件:
# With local GraalVM installation
./mvnw package -Dnative
# Or using Docker (no GraalVM installation required)
./mvnw package -Dnative -Dquarkus.native.container-build=true运行本机可执行文件:
./target/bitbucket-mcp-server-1.0.0-SNAPSHOT-runner原生图像的好处:
- ⚡ 快速启动时间(约0.01秒,JVM约1-2s)
- 💾 低内存占用(约20-30MB,而JVM约100-200MB)
- 📦 较小的映像大小(约50-100MB,JVM约300-400MB)
手动构建Docker镜像
# Build native image
docker build -f src/main/docker/Dockerfile.multiplatform -t bitbucket-mcp-server:native .
# Build JVM image
docker build -f src/main/docker/Dockerfile.jvm -t bitbucket-mcp-server:jvm .API 文档
MCP端点
MCP服务器提供三种传输选项:
1.stdio-直接过程通信✨ 新(通用-推荐)
# Use with Docker
docker run -i --rm \
-e BITBUCKET_EMAIL=your-email@example.com \
-e BITBUCKET_API_TOKEN=your-api-token \
-e BITBUCKET_WORKSPACE=your-workspace \
subrutin/bitbucket-mcp-server:stdio-0.0.2最适合:
- 所有MCP客户端 (克劳德桌面、光标、VS代码、樱桃工作室等)
- 不需要HTTP服务器
- 直接过程沟通
- 最简单的设置
- 建议用于所有用例
2.SSE(服务器发送事件)
GET http://localhost:8080/mcp/sse最适合:
- 备选方案 当stdio不是首选时
- 基于Web的客户端
- 长期连接
- 实时更新
3.HTTP流
POST http://localhost:8080/mcp/stream
Content-Type: application/json最适合:
- 自定义MCP客户端
- 请求/响应模式
- 编程访问
REST API端点
除了MCP工具,服务器还公开了REST端点:
获取存储库
GET /bitbucket/repositories?workspace={workspace}&page={page}&pagelen={pagelen}例子:
curl "http://localhost:8080/bitbucket/repositories?workspace=myteam&page=1&pagelen=10"健康和指标
# Health check
curl http://localhost:8080/q/health
# Readiness check
curl http://localhost:8080/q/health/ready
# Liveness check
curl http://localhost:8080/q/health/live
# Metrics (if enabled)
curl http://localhost:8080/q/metrics用例
代码审查自动化
使用AI助手:
- 审查拉取请求并提供反馈
- 检查代码质量问题
- 提出改进建议
- 在特定行添加内联注释
Claude的示例提示:
Review pull request #42 in workspace "myteam" repository "myrepo".
Check for:
1. Code quality issues
2. Potential bugs
3. Best practice violations
Add inline comments where improvements are needed.公共关系管理
- 列出所有打开的拉取请求
- 获取特定PR的详细信息
- 查看差异和更改
- 管理评论和讨论
示例提示:
Show me all open pull requests in myteam/myrepo and summarize what each one does团队协作
- 获取用户配置文件
- 跟踪公关活动
- 监控代码更改
- 促进代码审查讨论
故障排除
常见问题
问题:“身份验证失败”
- 验证您的
BITBUCKET_EMAIL和BITBUCKET_API_TOKEN是正确的 - 确保API令牌具有所需的权限(存储库:读取,拉取请求:读取和写入)
- 检查工作区是否存在以及您是否有访问权限
- 请确保您使用的是API令牌,而不是应用程序密码
问题:“未找到存储库”
- 验证工作区和存储库块是否正确
- 确保您具有对存储库的读取权限
- 检查指定工作区中是否存在存储库
问题:“无法创建内联注释”
- 第一个电话
findListChangesInAPullRequest获取确切的文件路径 - 确保文件路径完全匹配(区分大小写)
- 验证行号是否来自文件的新版本
- 该行必须是PR更改的一部分(不是不变的行)
问题:“Docker镜像无法启动”
- 检查是否设置了所有必需的环境变量
- 验证端口8080是否尚未使用
- 检查Docker日志:
docker logs bitbucket-mcp
日志
查看应用程序日志:
# Docker logs
docker logs -f bitbucket-mcp
# Local development
# Logs are printed to console when running ./mvnw quarkus:dev路线图
我们正在积极改进Bitbucket MCP服务器。计划如下:
✅ 最近完成
- stdio传输支持 - ✨ 现在可用!
- 所有MCP客户端的通用传输 - 无需HTTP服务器的直接进程通信 - 适用于Claude Desktop、Cursor、VS Code、Cherry Studio等 - 使用图像: subrutin/bitbucket-mcp-server:stdio-0.0.2 - 在版本0.0.2中发布
🚧 在开发中
- HTTPS/TLS支持 -为SSE传输启用安全连接
- 将使Claude Desktop能够使用SSE传输 - SSL证书配置 - 自动HTTP到HTTPS重定向 - 预计在下一个主要版本中
📋 计划的功能
- 增强身份验证
- OAuth 2.0支持 - 多工作区支持 - 令牌刷新机制
💡 未来的考虑因素
- GitHub集成(类似于GitHub的MCP服务器)
- GitLab集成
- Webhook支持实时更新
- 自定义工具插件系统
想贡献吗?看看我们的 贡献 部分!
贡献
欢迎投稿!请随时提交拉取请求。
如何做出贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
开发设置
请参阅 发展 有关设置本地环境的说明的部分。
许可证
这个项目是开源的。请查看许可证文件以了解详细信息。
作者
那么 Saputro
- 📧 电子邮件: tedy@saputro.dev
- 🌐 网站: tedy.saputro.dev
资源
支持
对于问题、疑问或贡献:
- 📧 电子邮件: tedy@saputro.dev
- 🌐 网站: tedy.saputro.dev
- 💻 GitHub:访问项目存储库以获取问题和拉取请求
