Bitbucket MCP Server
Bitbucket MCP Server
Ein MCP-Server (Model Context Protocol), der Tools für die Interaktion mit der Bitbucket-API bereitstellt und sowohl Bitbucket Cloud als auch Bitbucket Server unterstützt.
Funktionen
Verfügbare Tools (insgesamt 29)
PR Core (pr_core)
get_pull_request- Vollständige PR-Details inklusive Kommentaren, Dateiänderungen und Merge-Informationenlist_pull_requests- PRs auflisten mit Filtern (Status, Autor, Paginierung)create_pull_request- Neue Pull Requests erstellenupdate_pull_request- PR-Details aktualisieren (Titel, Beschreibung, Reviewer, Ziel-Branch)merge_pull_request- Pull Requests mit verschiedenen Strategien mergendecline_pull_request- Einen Pull Request ablehnen
PR-Kommentare (pr_comments)
add_comment- Allgemeine, Inline-, Threaded- oder Vorschlagskommentare zu einem PR hinzufügendelete_comment- Einen Kommentar aus einem Pull Request löschen
Code Review (pr_review)
get_pull_request_diff- Strukturierter zeilenweiser Diff mit ADDED/REMOVED/CONTEXT-Typenset_pr_approval- Einen PR genehmigen (approved: true) oder die Genehmigung zurückziehen (approved: false)set_review_status- Änderungen anfordern (request_changes: true) oder die Anforderung entfernen (false)
PR-Aufgaben — nur Bitbucket Server (pr_tasks)
list_pr_tasks- Alle Aufgaben eines Pull Requests auflistencreate_pr_task- Eine neue Aufgabe für einen Pull Request erstellenupdate_pr_task- Den Text einer bestehenden Aufgabe aktualisierenset_pr_task_status- Eine Aufgabe als erledigt markieren (done: true) oder wieder öffnen (done: false)delete_pr_task- Eine Aufgabe aus einem Pull Request löschenconvert_pr_item- Einen Kommentar in eine Aufgabe umwandeln (direction: "to_task") oder umgekehrt ("to_comment")
Commits (commits)
list_pr_commits- Alle Commits in einem Pull Request auflistenlist_branch_commits- Commits in einem Branch auflisten mit Datums-/Autor-/Nachrichtenfilternget_commit_detail- Den strukturierten Diff für einen bestimmten Commit per SHA abrufen
Branches (branches)
list_branches- Branches auflisten mit Filterung und Paginierungget_branch- Detaillierte Branch-Informationen inklusive zugehöriger PRs und Statistikendelete_branch- Einen Branch löschen
Dateien (files)
list_directory_content- Dateien und Verzeichnisse in einem Repository-Pfad auflistenget_file_content- Dateiinhalt abrufen mit intelligenter Kürzung für große Dateiensearch_files- Nach Dateien per Glob-Muster suchen (Groß-/Kleinschreibung ignoriert, wie VS Code Strg+P)
Suche — nur Bitbucket Server (search)
search_code- Code über Repositories hinweg durchsuchensearch_repositories- Nach Repositories anhand von Name oder Beschreibung suchen
Discovery (discovery)
list_projects- Alle zugänglichen Bitbucket-Projekte/Workspaces auflistenlist_repositories- Repositories in einem Projekt oder über alle zugänglichen Projekte hinweg auflisten
Token-Optimierung
v2.0.0 führt signifikante Token-Einsparungen bei jeder LLM-Anfrage ein:
Konfiguration | Verfügbare Tools | Geschätzte Token |
Bitbucket Server (alle Gruppen) | 29 | ~5.100 |
Bitbucket Cloud (automatisch gefiltert) | 21 | ~3.900 |
Benutzerdefinierte Gruppenvoreinstellung (z. B. | 12 | ~2.100 |
Bitbucket Cloud blendet die 10 Server-only-Tools automatisch aus, ohne dass eine Konfiguration erforderlich ist.
BITBUCKET_TOOL_GROUPS ermöglicht es Ihnen, nur die für Ihren Workflow relevanten Gruppen freizugeben — siehe Tool-Gruppenfilterung unten.
Related MCP server: MCP Server
Installation
Verwendung von npx (Empfohlen)
Der einfachste Weg, diesen MCP-Server zu nutzen, ist direkt über npx:
{
"mcpServers": {
"bitbucket": {
"command": "npx",
"args": [
"-y",
"@nexus2520/bitbucket-mcp-server"
],
"env": {
"BITBUCKET_USERNAME": "your-username",
"BITBUCKET_APP_PASSWORD": "your-app-password"
}
}
}
}Für 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"
}
}
}
}Aus dem Quellcode
Klonen oder laden Sie dieses Repository herunter
Abhängigkeiten installieren:
npm installTypeScript-Code bauen:
npm run build
Authentifizierungseinrichtung
Dieser Server verwendet Bitbucket-App-Passwörter für die Authentifizierung.
Erstellen eines App-Passworts
Melden Sie sich bei Ihrem Bitbucket-Konto an
Navigieren Sie zu: https://bitbucket.org/account/settings/app-passwords/
Klicken Sie auf "App-Passwort erstellen"
Geben Sie eine beschreibende Bezeichnung ein (z. B. "MCP Server")
Wählen Sie die folgenden Berechtigungen:
Konto: Lesen
Repositories: Lesen, Schreiben
Pull Requests: Lesen, Schreiben
Klicken Sie auf "Erstellen"
Wichtig: Kopieren Sie das generierte Passwort sofort (Sie können es später nicht mehr sehen!)
Ausführen des Setup-Skripts
node scripts/setup-auth.jsDies führt Sie durch den Authentifizierungsprozess.
Konfiguration
Fügen Sie den Server zu Ihrer MCP-Einstellungsdatei hinzu (normalerweise unter ~/.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"
}
}
}
}Ersetzen Sie:
/absolute/path/to/bitbucket-mcp-serverdurch den tatsächlichen Pfad zu diesem Verzeichnisyour-usernamedurch Ihren Bitbucket-Benutzernamen (nicht die E-Mail-Adresse)your-app-passworddurch das von Ihnen erstellte App-Passwort
Für Bitbucket Server verwenden Sie:
{
"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"
}
}
}
}Wichtig für Bitbucket Server-Benutzer:
Verwenden Sie Ihre vollständige E-Mail-Adresse als Benutzernamen (z. B. "john.doe@company.com")
Dies ist erforderlich, damit Genehmigungs-/Review-Aktionen korrekt funktionieren
Tool-Gruppenfilterung
Reduzieren Sie die Anzahl der Tools, die bei jeder Anfrage an das LLM gesendet werden, indem Sie BITBUCKET_TOOL_GROUPS auf eine kommagetrennte Liste von Gruppennamen setzen. Nur Tools in den aufgeführten Gruppen werden freigegeben.
Verfügbare Gruppen
Gruppe | Tools | Plattform |
|
| Beide |
|
| Beide |
|
| Beide |
|
| Nur Server |
|
| Beide |
|
| Beide |
|
| Beide |
|
| Nur Server |
|
| Beide |
Beispiel-Voreinstellungen
PR-Review-Workflow (~2.100 Token):
"env": {
"BITBUCKET_TOOL_GROUPS": "pr_core,pr_review,files"
}Vollständiges PR-Management (~3.500 Token):
"env": {
"BITBUCKET_TOOL_GROUPS": "pr_core,pr_comments,pr_review,pr_tasks"
}Nur Code-Erkundung (~1.400 Token):
"env": {
"BITBUCKET_TOOL_GROUPS": "files,search,discovery"
}Wenn BITBUCKET_TOOL_GROUPS nicht gesetzt ist, werden alle anwendbaren Tools freigegeben (Standardverhalten). Bitbucket Cloud-Benutzer haben immer automatisch die Server-only-Tools ausgeblendet, unabhängig von dieser Einstellung.
Verwendung
Sobald konfiguriert, können Sie die verfügbaren Tools verwenden:
Pull Request abrufen
{
"tool": "get_pull_request",
"arguments": {
"workspace": "PROJ", // Required - your project key
"repository": "my-repo",
"pull_request_id": 123
}
}Gibt detaillierte Informationen über den Pull Request zurück, einschließlich:
Titel und Beschreibung
Autor und Reviewer
Quell- und Ziel-Branch
Genehmigungsstatus
Links zur Web-UI und zum Diff
Merge-Commit-Details (wenn der PR gemergt wurde):
merge_commit_hash: Der Hash des Merge-Commitsmerged_by: Wer den Merge durchgeführt hatmerged_at: Wann der Merge stattfandmerge_commit_message: Die Merge-Commit-Nachricht
Aktive Kommentare mit verschachtelten Antworten (ungelöste Kommentare, die Aufmerksamkeit erfordern):
active_comments: Array aktiver Kommentare (bis zu 20 der neuesten Top-Level-Kommentare)Kommentartext und Autor
Erstellungsdatum
Ob es sich um einen Inline-Kommentar handelt (mit Dateipfad und Zeilennummer)
Verschachtelte Antworten (für Bitbucket Server):
replies: Array von Antwortkommentaren mit gleicher StrukturAntworten können mehrfach tief verschachtelt sein
Eltern-Referenz (für Bitbucket Cloud):
parent_id: ID des Elternkommentars für Antworten
active_comment_count: Gesamtzahl der ungelösten Kommentare (einschließlich verschachtelter Antworten)total_comment_count: Gesamtzahl aller Kommentare (einschließlich gelöster und Antworten)
Dateiänderungen:
file_changes: Array aller im PR geänderten DateienDateipfad
Status (hinzugefügt, geändert, entfernt oder umbenannt)
Alter Pfad (für umbenannte Dateien)
file_changes_summary: Zusammenfassende StatistikenGesamtzahl der geänderten Dateien
Und mehr...
Code suchen
Suchen Sie nach Code in Bitbucket-Repositories (derzeit nur für Bitbucket Server unterstützt):
// Search in a specific repository
{
"tool": "search_code",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"search_query": "TODO",
"limit": 50
}
}
// Search across all repositories in a workspace
{
"tool": "search_code",
"arguments": {
"workspace": "PROJ",
"search_query": "deprecated",
"file_pattern": "*.java", // Optional: filter by file pattern
"limit": 100
}
}
// Search with file pattern filtering
{
"tool": "search_code",
"arguments": {
"workspace": "PROJ",
"repository": "frontend-app",
"search_query": "useState",
"file_pattern": "*.tsx", // Only search in .tsx files
"start": 0,
"limit": 25
}
}Gibt Suchergebnisse zurück mit:
Dateipfad und Name
Repository- und Projektinformationen
Übereinstimmende Zeilen mit:
Zeilennummer
Vollständiger Zeileninhalt
Hervorgehobene Segmente, die exakte Übereinstimmungen zeigen
Paginierungsinformationen
Beispielantwort:
{
"message": "Code search completed successfully",
"workspace": "PROJ",
"repository": "my-repo",
"search_query": "TODO",
"results": [
{
"file_path": "src/utils/helper.js",
"file_name": "helper.js",
"repository": "my-repo",
"project": "PROJ",
"matches": [
{
"line_number": 42,
"line_content": " // TODO: Implement error handling",
"highlighted_segments": [
{ "text": " // ", "is_match": false },
{ "text": "TODO", "is_match": true },
{ "text": ": Implement error handling", "is_match": false }
]
}
]
}
],
"total_count": 15,
"start": 0,
"limit": 50,
"has_more": false
}Hinweis: Dieses Tool funktioniert derzeit nur mit Bitbucket Server. Unterstützung für Bitbucket Cloud ist für ein zukünftiges Release geplant.
Pull Requests auflisten
{
"tool": "list_pull_requests",
"arguments": {
"workspace": "PROJ", // Required - your project key
"repository": "my-repo",
"state": "OPEN", // Optional: OPEN, MERGED, DECLINED, ALL (default: OPEN)
"author": "username", // Optional: filter by author (see note below)
"limit": 25, // Optional: max results per page (default: 25)
"start": 0 // Optional: pagination start index (default: 0)
}
}Gibt eine paginierte Liste von Pull Requests zurück mit:
Array von Pull Requests mit denselben Details wie bei get_pull_request
Gesamtzahl der passenden PRs
Paginierungsinformationen (has_more, next_start)
Hinweis zum Autor-Filter:
Für Bitbucket Cloud: Verwenden Sie den Benutzernamen (z. B. "johndoe")
Für Bitbucket Server: Verwenden Sie die vollständige E-Mail-Adresse (z. B. "john.doe@company.com")
Pull Request erstellen
{
"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...", // Optional
"reviewers": ["john.doe", "jane.smith"], // Optional
"close_source_branch": true // Optional (default: false)
}
}Pull Request aktualisieren
{
"tool": "update_pull_request",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"title": "Updated title", // Optional
"description": "Updated description", // Optional
"destination_branch": "develop", // Optional
"reviewers": ["new.reviewer"] // Optional - see note below
}
}Wichtiger Hinweis zu Reviewern:
Wenn Sie einen PR aktualisieren, ohne den Parameter
reviewersanzugeben, bleiben bestehende Reviewer und ihr Genehmigungsstatus erhaltenWenn Sie den Parameter
reviewersangeben:Die Reviewer-Liste wird durch die neue Liste ersetzt
Für Reviewer, die bereits im PR vorhanden sind, bleibt der Genehmigungsstatus erhalten
Neue Reviewer werden ohne Genehmigungsstatus hinzugefügt
Dies verhindert das versehentliche Entfernen von Reviewern, wenn Sie nur die PR-Beschreibung oder den Titel aktualisieren möchten
Kommentar hinzufügen
Fügen Sie einen Kommentar zu einem Pull Request hinzu, entweder als allgemeiner Kommentar oder Inline zu spezifischem Code:
// General comment
{
"tool": "add_comment",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"comment_text": "Great work on this PR!"
}
}
// Inline comment on specific line
{
"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
}
}
// Reply to existing comment
{
"tool": "add_comment",
"arguments": {
"workspace": "PROJ",
"repository": "my-repo",
"pull_request_id": 123,
"comment_text": "I agree with this suggestion",
"parent_comment_id": 456
}
}
// Add comment with code suggestion (single line)
{
"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;"
}
}
// Add comment with multi-line code suggestion
{
"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}"
}
}Die Vorschlagsfunktion formatiert Kommentare mithilfe von Markdown-Vorschlagsblöcken im GitHub-Stil, die Bitbucket rendern kann. Beim Hinzufügen eines Vorschlags:
suggestionist erforderlich und enthält den Ersatzcodefile_pathundline_numbersind bei Verwendung von Vorschlägen erforderlichsuggestion_end_lineist optional und wird für mehrzeilige Vorschläge verwendet (Standard istline_number)Der Kommentar wird mit einem
suggestionMarkdown-Block formatiert, der in der Bitbucket-UI anwendbar sein kann
Verwendung von Code-Snippets anstelle von Zeilennummern
Das Tool add_comment unterstützt jetzt das automatische Finden von Zeilennummern mithilfe von Code-Snippets. Dies ist besonders nützlich, wenn KI-Tools Diffs analysieren und Schwierigkeiten mit exakten Zeilennummern haben könnten:
// Add comment using code snippet
{
"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)"]
}
}
}
// Handle multiple matches with strategy
{
"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" // Auto-select highest confidence match
}
}Code-Snippet-Parameter:
code_snippet: Die exakte Codezeile, die gefunden werden soll (Alternative zuline_number)search_context: Optionaler Kontext zur Unterscheidung mehrerer Übereinstimmungenbefore: Array von Zeilen, die vor dem Ziel erscheinen solltenafter: Array von Zeilen, die nach dem Ziel erscheinen sollten
match_strategy: Wie mit mehreren Übereinstimmungen umgegangen werden soll"strict"(Standard): Fehler mit Anzeige aller Übereinstimmungen"best": Automatische Auswahl der Übereinstimmung mit der höchsten Konfidenz
Fehlerantwort bei mehreren Übereinstimmungen (Strict-Modus):
{
"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"
},
// ... more matches
],
"suggestion": "To resolve, either:\n1. Add more context...\n2. Use match_strategy: 'best'...\n3. Use line_number directly"
}
}Diese Funktion ist besonders nützlich für:
KI-gestützte Code-Review-Tools, die Diffs analysieren
Skripte, die automatisch Kommentare basierend auf Codemustern hinzufügen
Vermeidung von Verwirrung bei Zeilennummern in großen Diffs
Hinweis zu Kommentar-Antworten:
Verwenden Sie
parent_comment_id, um auf einen Kommentar zu antworten (allgemein oder Inline)In `get_
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pdogra1299/bitbucket-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server