Bitbucket Mcp Server

Bitbucket Mcp Server

🚀 Bitbucket MCP Server

Bitbucket MCP Server 是一个基于模型上下文协议(MCP)的服务器,它提供了与 Bitbucket API 交互的工具,同时支持 Bitbucket Cloud 和 Bitbucket Server。

🚀 快速开始

本 MCP 服务器提供了丰富的工具,用于与 Bitbucket API 进行交互。你可以按照以下步骤进行安装和配置,从而使用这些工具。

✨ 主要特性

当前已实现的工具

核心 PR 生命周期工具

  • get_pull_request - 获取拉取请求的详细信息
  • list_pull_requests - 按筛选条件(状态、作者、分页)列出拉取请求
  • create_pull_request - 创建新的拉取请求
  • update_pull_request - 更新拉取请求的详细信息(标题、描述、审核人、目标分支)
  • add_comment - 为拉取请求添加评论(支持回复)
  • merge_pull_request - 以各种策略合并拉取请求
  • list_pr_commits - 列出属于拉取请求的所有提交
  • delete_branch - 合并后删除分支

分支管理工具

  • list_branches - 按筛选条件和分页列出分支
  • delete_branch - 删除分支(进行保护检查)
  • get_branch - 获取详细的分支信息,包括关联的 PR
  • list_branch_commits - 按高级筛选条件列出分支中的提交

文件和目录工具

  • list_directory_content - 列出存储库路径中的文件和目录
  • get_file_content - 获取文件内容,对大文件进行智能截断

代码审查工具

  • get_pull_request_diff - 获取拉取请求的差异/更改
  • approve_pull_request - 批准拉取请求
  • unapprove_pull_request - 撤销对拉取请求的批准
  • request_changes - 请求对拉取请求进行更改
  • remove_requested_changes - 撤销对拉取请求的更改请求

📦 安装指南

使用 npx(推荐)

使用 npx 直接使用此 MCP 服务器是最简单的方法:

{
"mcpServers": {
"bitbucket": {
"command": "npx",
"args": [
"-y",
"@nexus2520/bitbucket-mcp-server"
],
"env": {
"BITBUCKET_USERNAME": "your-username",
"BITBUCKET_APP_PASSWORD": "your-app-password"
}
}
}
}

对于 Bitbucket Server:

{
"mcpServers": {
"bitbucket": {
"command": "npx",
"args": [
"-y",
"@nexus2520/bitbucket-mcp-server"
],
"env": {
"BITBUCKET_USERNAME": "your.email@company.com",
"BITBUCKET_TOKEN": "your-http-access-token",
"BITBUCKET_BASE_URL": "https://bitbucket.yourcompany.com"
}
}
}
}

从源代码安装

  1. 克隆或下载此存储库
  2. 安装依赖项:
    npm install
    
  3. 构建 TypeScript 代码:
    npm run build
    

📚 详细文档

身份验证设置

此服务器使用 Bitbucket 应用密码进行身份验证。

创建应用密码

  1. 登录到你的 Bitbucket 账户
  2. 导航到:https://bitbucket.org/account/settings/app-passwords/
  3. 点击“创建应用密码”
  4. 给它一个描述性标签(例如,“MCP Server”)
  5. 选择以下权限:
    • 账户:读取
    • 存储库:读取、写入
    • 拉取请求:读取、写入
  6. 点击“创建”
  7. 重要提示:立即复制生成的密码(你将无法再次看到它!)

运行设置脚本

node scripts/setup-auth.js

这将引导你完成身份验证设置过程。

配置

将服务器添加到你的 MCP 设置文件中(通常位于 ~/.vscode-server/data/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json):

{
"mcpServers": {
"bitbucket": {
"command": "node",
"args": ["/absolute/path/to/bitbucket-mcp-server/build/index.js"],
"env": {
"BITBUCKET_USERNAME": "your-username",
"BITBUCKET_APP_PASSWORD": "your-app-password"
}
}
}
}

替换:

  • /absolute/path/to/bitbucket-mcp-server 为该目录的实际路径
  • your-username 为你的 Bitbucket 用户名(不是电子邮件)
  • your-app-password 为你创建的应用密码

对于 Bitbucket Server,使用:

{
"mcpServers": {
"bitbucket": {
"command": "node",
"args": ["/absolute/path/to/bitbucket-mcp-server/build/index.js"],
"env": {
"BITBUCKET_USERNAME": "your.email@company.com",
"BITBUCKET_TOKEN": "your-http-access-token",
"BITBUCKET_BASE_URL": "https://bitbucket.yourcompany.com"
}
}
}
}

Bitbucket Server 用户注意事项

  • 使用你的完整电子邮件地址作为用户名(例如,“john.doe@company.com”)
  • 这是确保批准/审核操作正确工作所必需的

💻 使用示例

基础用法

获取拉取请求

{
"tool": "get_pull_request",
"arguments": {
"workspace": "PROJ",  // 必需 - 你的项目密钥
"repository": "my-repo",
"pull_request_id": 123
}
}

返回拉取请求的详细信息,包括:

  • 标题和描述
  • 作者和审核人
  • 源分支和目标分支
  • 批准状态
  • 指向 Web UI 和差异的链接
  • 合并提交详情(当 PR 合并时):
    • merge_commit_hash:合并提交的哈希值
    • merged_by:执行合并的人
    • merged_at:合并发生的时间
    • merge_commit_message:合并提交消息
  • 带有嵌套回复的活动评论(需要关注的未解决评论):
    • active_comments:活动评论数组(最多 20 条最近的顶级评论)
      • 评论文本和作者
      • 创建日期
      • 是否为内联评论(带有文件路径和行号)
      • 嵌套回复(适用于 Bitbucket Server):
        • replies:具有相同结构的回复评论数组
        • 回复可以嵌套多层
      • 父引用(适用于 Bitbucket Cloud):
        • parent_id:回复评论的父评论 ID
    • active_comment_count:未解决评论的总数(包括嵌套回复)
    • total_comment_count:所有评论的总数(包括已解决和回复)
  • 文件更改
    • file_changes:PR 中修改的所有文件的数组
      • 文件路径
      • 状态(添加、修改、删除或重命名)
      • 旧路径(对于重命名的文件)
    • file_changes_summary:摘要统计信息
      • 更改的文件总数
  • 以及更多...

列出拉取请求

{
"tool": "list_pull_requests",
"arguments": {
"workspace": "PROJ",  // 必需 - 你的项目密钥
"repository": "my-repo",
"state": "OPEN",  // 可选: OPEN, MERGED, DECLINED, ALL (默认: OPEN)
"author": "username",  // 可选: 按作者筛选 (见下面的注释)
"limit": 25,  // 可选: 每页的最大结果数 (默认: 25)
"start": 0  // 可选: 分页起始索引 (默认: 0)
}
}

返回分页的拉取请求列表,包含:

  • get_pull_request 相同详细信息的拉取请求数组
  • 匹配的 PR 总数
  • 分页信息(has_more, next_start)

作者筛选注意事项

  • 对于 Bitbucket Cloud:使用用户名(例如,“johndoe”)
  • 对于 Bitbucket Server:使用完整的电子邮件地址(例如,“john.doe@company.com”)

创建拉取请求

{
"tool": "create_pull_request",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"title": "Add new feature",
"source_branch": "feature/new-feature",
"destination_branch": "main",
"description": "This PR adds a new feature...",  // 可选
"reviewers": ["john.doe", "jane.smith"],  // 可选
"close_source_branch": true  // 可选 (默认: false)
}
}

更新拉取请求

{
"tool": "update_pull_request",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"title": "Updated title",  // 可选
"description": "Updated description",  // 可选
"destination_branch": "develop",  // 可选
"reviewers": ["new.reviewer"]  // 可选 - 见下面的注释
}
}

审核人重要说明

  • 当更新 PR 时未指定 reviewers 参数,现有审核人和他们的批准状态将被保留
  • 当提供 reviewers 参数时:
    • 审核人列表将被新列表替换
    • 对于已经在 PR 上的审核人,他们的批准状态将被保留
    • 新审核人将以未批准状态添加
  • 这可以防止在仅想更新 PR 描述或标题时意外删除审核人

添加评论

为拉取请求添加评论,可以是一般评论或特定代码行的内联评论:

// 一般评论
{
"tool": "add_comment",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"comment_text": "Great work on this PR!"
}
}

// 特定行的内联评论
{
"tool": "add_comment",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"comment_text": "Consider extracting this into a separate function",
"file_path": "src/utils/helpers.js",
"line_number": 42,
"line_type": "CONTEXT"  // ADDED, REMOVED, or CONTEXT
}
}

// 回复现有评论
{
"tool": "add_comment",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"comment_text": "I agree with this suggestion",
"parent_comment_id": 456
}
}

// 添加带有代码建议的评论(单行)
{
"tool": "add_comment",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"comment_text": "This variable name could be more descriptive.",
"file_path": "src/utils/helpers.js",
"line_number": 42,
"line_type": "CONTEXT",
"suggestion": "const userAuthenticationToken = token;"
}
}

// 添加带有多行代码建议的评论
{
"tool": "add_comment",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"comment_text": "This function could be simplified using array methods.",
"file_path": "src/utils/calculations.js",
"line_number": 50,
"suggestion_end_line": 55,
"line_type": "CONTEXT",
"suggestion": "function calculateTotal(items) {\n  return items.reduce((sum, item) => sum + item.price, 0);\n}"
}
}

建议功能使用 GitHub 风格的 markdown 建议块格式化评论,Bitbucket 可以渲染。添加建议时:

  • suggestion 是必需的,包含替换代码
  • 使用建议时,file_pathline_number 是必需的
  • suggestion_end_line 是可选的,用于多行建议(默认为 line_number
  • 评论将使用 ````suggestion` markdown 块格式化,可能适用于 Bitbucket UI

使用代码片段代替行号

add_comment 工具现在支持使用代码片段自动查找行号。这在 AI 工具分析差异时特别有用,因为它们可能难以确定确切的行号:

// 使用代码片段添加评论
{
"tool": "add_comment",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"comment_text": "This variable name could be more descriptive",
"file_path": "src/components/Button.res",
"code_snippet": "let isDisabled = false",
"search_context": {
"before": ["let onClick = () => {"],
"after": ["setLoading(true)"]
}
}
}

// 使用策略处理多个匹配项
{
"tool": "add_comment",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"comment_text": "Consider extracting this",
"file_path": "src/utils/helpers.js",
"code_snippet": "return result;",
"search_context": {
"before": ["const result = calculate();"],
"after": ["}"]
},
"match_strategy": "best"  // 自动选择最高置信度匹配
}
}

代码片段参数

  • code_snippet:要查找的精确代码行(替代 line_number
  • search_context:可选上下文,用于消除多个匹配项的歧义
    • before:应出现在目标之前的行数组
    • after:应出现在目标之后的行数组
  • match_strategy:如何处理多个匹配项
    • "strict"(默认):失败并显示所有匹配项的错误
    • "best":自动选择最高置信度匹配

多个匹配项的错误响应(严格模式)

{
"error": {
"code": "MULTIPLE_MATCHES_FOUND",
"message": "Code snippet 'return result;' found in 3 locations",
"occurrences": [
{
"line_number": 42,
"file_path": "src/utils/helpers.js",
"preview": "  const result = calculate();\n> return result;\n}",
"confidence": 0.9,
"line_type": "ADDED"
},
// ... 更多匹配项
],
"suggestion": "To resolve, either:\n1. Add more context...\n2. Use match_strategy: 'best'...\n3. Use line_number directly"
}
}

此功能对于以下情况特别有用:

  • 分析差异的 AI 驱动的代码审查工具
  • 根据代码模式自动添加评论的脚本
  • 避免大差异中的行号混淆

评论回复注意事项

  • 使用 parent_comment_id 回复任何评论(一般或内联)
  • get_pull_request 响应中:
    • Bitbucket Server 在 replies 数组中显示嵌套回复
    • Bitbucket Cloud 为回复评论显示 parent_id 字段
  • 你可以回复回复,创建嵌套对话

内联评论注意事项

  • file_path:差异中显示的文件路径
  • line_number:差异中显示的行号
  • line_type
    • ADDED - 对于新添加的行(差异中为绿色)
    • REMOVED - 对于删除的行(差异中为红色)
    • CONTEXT - 对于未更改的上下文行

添加评论 - 完整使用指南

add_comment 工具支持多种场景。以下是何时以及如何使用每种方法:

1. 一般 PR 评论(无文件/行)

  • 使用场景:对 PR 进行总体反馈
  • 必需参数:仅 comment_text
  • 示例:“LGTM!”,“请更新文档”

2. 回复现有评论

  • 使用场景:继续对话线程
  • 必需参数:comment_textparent_comment_id
  • 适用于一般和内联评论回复

3. 带行号的内联评论

  • 使用场景:你知道差异中的确切行号
  • 必需参数:comment_textfile_pathline_number
  • 可选:line_type(默认为 CONTEXT)

4. 带代码片段的内联评论

  • 使用场景:你有代码但不知道行号(AI 工具常见)
  • 必需参数:comment_textfile_pathcode_snippet
  • 工具将自动查找行号
  • 如果代码多次出现,添加 search_context
  • 当存在多个匹配项时,使用 match_strategy: "best" 自动选择

5. 代码建议

  • 使用场景:提出特定的代码更改建议
  • 必需参数:comment_textfile_pathline_numbersuggestion
  • 对于多行:还需添加 suggestion_end_line
  • 在 Bitbucket UI 中创建适用的建议块

AI/自动化工具的决策流程

1. 你是否想建议代码更改?
→ 使用带行号的建议

2. 你是否有确切的行号?
→ 直接使用行号

3. 你有代码片段但没有行号吗?
→ 使用代码片段(如有需要添加搜索上下文)

4. 这是关于 PR 的一般评论吗?
→ 仅使用 comment_text

5. 你是否在回复另一条评论?
→ 添加 parent_comment_id

避免常见陷阱

  • 不要同时使用 line_numbercode_snippet - 选择其一
  • 建议始终需要 file_pathline_number
  • 代码片段必须完全匹配(包括空白)
  • REMOVED 行引用源文件,ADDED/CONTEXT 引用目标文件

合并拉取请求

{
"tool": "merge_pull_request",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"merge_strategy": "squash",  // 可选: merge-commit, squash, fast-forward
"close_source_branch": true,  // 可选
"commit_message": "Custom merge message"  // 可选
}
}

列出分支

{
"tool": "list_branches",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"filter": "feature",  // 可选: 按名称模式筛选
"limit": 25,  // 可选 (默认: 25)
"start": 0  // 可选: 用于分页 (默认: 0)
}
}

返回分页的分支列表,包含:

  • 分支名称和 ID
  • 最新提交哈希
  • 默认分支指示符
  • 分页信息

删除分支

{
"tool": "delete_branch",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"branch_name": "feature/old-feature",
"force": false  // 可选 (默认: false)
}
}

注意:删除分支需要适当的权限。分支将被永久删除。

获取分支

{
"tool": "get_branch",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"branch_name": "feature/new-feature",
"include_merged_prs": false  // 可选 (默认: false)
}
}

返回全面的分支信息,包括:

  • 分支详情:
    • 名称和 ID
    • 最新提交(哈希、消息、作者、日期)
    • 默认分支指示符
  • 从此分支发出的开放拉取请求:
    • PR 标题和 ID
    • 目标分支
    • 作者和审核人
    • 批准状态(批准人、请求更改人、待处理)
    • PR URL
  • 合并的拉取请求(如果 include_merged_prs 为 true):
    • PR 标题和 ID
    • 合并日期和合并人
  • 统计信息:
    • 开放 PR 总数
    • 合并 PR 总数
    • 自上次提交以来的天数

此工具对于以下情况特别有用:

  • 在删除分支之前检查是否有开放 PR
  • 获取分支活动概述
  • 了解 PR 审核状态
  • 识别陈旧分支

列出分支提交

获取特定分支中的所有提交,并具有高级筛选选项:

// 基本用法 - 获取最近的提交
{
"tool": "list_branch_commits",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"branch_name": "feature/new-feature",
"limit": 50  // 可选 (默认: 25)
}
}

// 按日期范围筛选
{
"tool": "list_branch_commits",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"branch_name": "main",
"since": "2025-01-01T00:00:00Z",  // ISO 日期字符串
"until": "2025-01-15T23:59:59Z"   // ISO 日期字符串
}
}

// 按作者筛选
{
"tool": "list_branch_commits",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"branch_name": "develop",
"author": "john.doe@company.com",  // 电子邮件或用户名
"limit": 100
}
}

// 排除合并提交
{
"tool": "list_branch_commits",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"branch_name": "release/v2.0",
"include_merge_commits": false
}
}

// 在提交消息中搜索
{
"tool": "list_branch_commits",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"branch_name": "main",
"search": "bugfix",  // 在提交消息中搜索
"limit": 50
}
}

// 组合多个筛选器
{
"tool": "list_branch_commits",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"branch_name": "develop",
"author": "jane.smith@company.com",
"since": "2025-01-01T00:00:00Z",
"include_merge_commits": false,
"search": "feature",
"limit": 100,
"start": 0  // 用于分页
}
}

筛选参数

  • since:ISO 日期字符串 - 仅显示此日期之后的提交
  • until:ISO 日期字符串 - 仅显示此日期之前的提交
  • author:按作者电子邮件/用户名筛选
  • include_merge_commits:布尔值,是否包含合并提交(默认:true)
  • search:在提交消息中搜索文本

返回详细的提交信息:

{
"branch_name": "feature/new-feature",
"branch_head": "abc123def456",  // 最新提交哈希
"commits": [
{
"hash": "abc123def456",
"abbreviated_hash": "abc123d",
"message": "Add new feature implementation",
"author": {
"name": "John Doe",
"email": "john.doe@example.com"
},
"date": "2025-01-03T10:30:00Z",
"parents": ["parent1hash", "parent2hash"],
"is_merge_commit": false
}
// ... 更多提交
],
"total_count": 150,
"start": 0,
"limit": 25,
"has_more": true,
"next_start": 25,
"filters_applied": {
"author": "john.doe@example.com",
"since": "2025-01-01",
"include_merge_commits": false
}
}

此工具对于以下情况特别有用:

  • 在发布前审查提交历史
  • 查找特定作者的提交
  • 跟踪日期范围内的更改
  • 搜索特定功能或修复
  • 分析分支活动模式

获取拉取请求中的提交

获取属于拉取请求的所有提交:

{
"tool": "list_pr_commits",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"limit": 50,  // 可选 (默认: 25)
"start": 0    // 可选: 用于分页
}
}

返回 PR 的提交信息:

{
"pull_request_id": 123,
"pull_request_title": "Add awesome feature",
"commits": [
{
"hash": "def456ghi789",
"abbreviated_hash": "def456g",
"message": "Initial implementation",
"author": {
"name": "Jane Smith",
"email": "jane.smith@example.com"
},
"date": "2025-01-02T14:20:00Z",
"parents": ["parent1hash"],
"is_merge_commit": false
}
// ... 更多提交
],
"total_count": 5,
"start": 0,
"limit": 25,
"has_more": false
}

此工具对于以下情况特别有用:

  • 在合并前审查 PR 中的所有更改
  • 了解 PR 的开发历史
  • 检查提交消息的质量
  • 验证更改的作者身份
  • 通过提交计数分析 PR 的复杂性

获取拉取请求差异

获取拉取请求的差异/更改,并具有可选的筛选功能:

// 获取完整差异(默认行为)
{
"tool": "get_pull_request_diff",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"context_lines": 5  // 可选 (默认: 3)
}
}

// 排除特定文件类型
{
"tool": "get_pull_request_diff",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"exclude_patterns": ["*.lock", "*.svg", "node_modules/**", "*.min.js"]
}
}

// 仅包含特定文件类型
{
"tool": "get_pull_request_diff",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"include_patterns": ["*.res", "*.resi", "src/**/*.js"]
}
}

// 仅获取特定文件的差异
{
"tool": "get_pull_request_diff",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"file_path": "src/components/Button.res"
}
}

// 组合筛选器
{
"tool": "get_pull_request_diff",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"include_patterns": ["src/**/*"],
"exclude_patterns": ["*.test.js", "*.spec.js"]
}
}

筛选选项

  • include_patterns:要包含的 glob 模式数组(白名单)
  • exclude_patterns:要排除的 glob 模式数组(黑名单)
  • file_path:仅获取特定文件的差异
  • 模式支持标准 glob 语法(例如,*.jssrc/**/*.res!test/**

响应包含筛选元数据

{
"message": "Pull request diff retrieved successfully",
"pull_request_id": 123,
"diff": "..filtered diff content..",
"filter_metadata": {
"total_files": 15,
"included_files": 12,
"excluded_files": 3,
"excluded_file_list": ["package-lock.json", "logo.svg", "yarn.lock"],
"filters_applied": {
"exclude_patterns": ["*.lock", "*.svg"]
}
}
}

批准拉取请求

{
"tool": "approve_pull_request",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123
}
}

请求更改

{
"tool": "request_changes",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"comment": "Please address the following issues..."  // 可选
}
}

列出目录内容

{
"tool": "list_directory_content",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"path": "src/components",  // 可选 (默认为根目录)
"branch": "main"  // 可选 (默认为默认分支)
}
}

返回目录列表,包含:

  • 路径和分支信息
  • 内容数组,包含:
    • 名称
    • 类型(文件或目录)
    • 大小(对于文件)
    • 完整路径
  • 总项目数

获取文件内容

{
"tool": "get_file_content",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"file_path": "src/index.ts",
"branch": "main",  // 可选 (默认为默认分支)
"start_line": 1,  // 可选: 起始行 (基于 1,负数表示从末尾开始)
"line_count": 100,  // 可选: 返回的行数
"full_content": false  // 可选: 强制获取完整内容 (默认: false)
}
}

智能截断功能

  • 自动截断大文件(>50KB)以防止令牌过载
  • 根据文件类型的默认行数:
    • 配置文件(.yml,.json):200 行
    • 文档文件(.md,.txt):300 行
    • 代码文件(.ts,.js,.py):500 行
    • 日志文件:最后 100 行
  • 使用 start_line: -50 获取最后 50 行(尾部功能)
  • 大于 1MB 的文件需要显式 full_content: true 或行参数

返回文件内容,包含:

  • 文件路径和分支
  • 文件大小和编码
  • 内容(根据参数为完整或截断)
  • 行信息(如果截断):
    • 文件中的总行数
    • 返回的行范围
    • 截断指示符
  • 最后修改信息(提交、作者、日期)

示例响应:

// 小文件 - 返回完整内容
{
"file_path": "package.json",
"branch": "main",
"size": 1234,
"encoding": "utf-8",
"content": "{\n  \"name\": \"my-project\",\n  ...",
"last_modified": {
"commit_id": "abc123",
"author": "John Doe",
"date": "2025-01-21T10:00:00Z"
}
}

// 大文件 - 自动截断
{
"file_path": "src/components/LargeComponent.tsx",
"branch": "main",
"size": 125000,
"encoding": "utf-8",
"content": "... first 500 lines ...",
"line_info": {
"total_lines": 3500,
"returned_lines": {
"start": 1,
"end": 500
},
"truncated": true,
"message": "Showing lines 1-500 of 3500. File size: 122.1KB"
}
}

高级用法

在实际开发中,你可以根据具体需求组合使用这些工具,以实现更复杂的功能。例如,结合 list_pull_requestsget_pull_request_diff 工具,先列出符合条件的拉取请求,再获取特定拉取请求的差异信息,从而进行更细致的代码审查。

🔧 技术细节

本项目使用 Node.js 构建,并使用 TypeScript 进行类型检查,以确保代码的健壮性和可维护性。通过与 Bitbucket API 交互,实现了各种工具的功能。在处理大文件时,采用了智能截断的策略,避免因文件过大导致的性能问题。同时,在身份验证方面,使用 Bitbucket 应用密码,提供了安全可靠的认证方式。

📄 许可证

本项目采用 MIT 许可证。

  • 0 关注
  • 0 收藏,23 浏览
  • system 提出于 2025-09-27 10:54

相似服务问题

相关AI产品