שרת MCP מאומת: Bitbucket

שרת ה-MCP של Bitbucket, אומת בריצה חיה על Mac אמיתי.

  • הכלים נספרו2026-08-03macOS 15.7.7
  • חבילה@aashari/mcp-server-atlassian-bitbucket 3.1.0
  • מדווח על עצמו@aashari/mcp-server-atlassian-bitbucket 3.1.0
  • פרוטוקול MCP2025-06-18
  • סביבת ריצהNode v24.18.0

רשימת הכלים למטה היא לכידה חיה מהשרת הרץ; קריאת כלי מאומתת עדיין ממתינה להרשאות.

התשובה הקצרה

אומת לאחרונה 2026-08-03

שרת ה-MCP של Bitbucket מחבר עוזר AI ל-Bitbucket Cloud, ונותן לו חמש פעולות HTTP שאפשר לכוון לכל נתיב ב-REST API של Bitbucket, ולצדן כלי אחד שמשכפל מאגר לתיקיה על ה-Mac שלכם. זהו פרויקט קהילתי של מפתח יחיד, aashari, ולא מוצר של Atlassian, ו-npm רושם 3,370 הורדות שלו בשבוע האחרון. אישור הגישה שלו הוא זוג משתני סביבה: כתובת המייל של חשבון ה-Atlassian שלכם ואסימון API עם הרשאות ל-Bitbucket, או זוג ה-app password הישן של Bitbucket שה-README מציין כי Atlassian תכננה להוציא משימוש. הרצנו אותו עם אישורי גישה מדומים, ולכן כל 6 הכלים שלמטה נספרו בריצה חיה מתוך תשובת tools/list אמיתית, בלי שנגענו בחשבון Bitbucket כלשהו. קריאת הכלי היחידה שביצענו, קריאה של ‎/workspaces, חזרה עם אותה שגיאת HTTP 401 בדיוק שהשרת מחזיר כש-Bitbucket דוחה את אישורי הגישה, והתשובה הזו מודפסת בהמשך, מילה במילה. קריאה מאומתת עדיין פתוחה: היא ממתינה לאסימון אמיתי. [1][3][2][4]

  • כלים

    6, נספרו בריצה חיה

  • אישורי גישה

    נדרש אסימון API של Atlassian [4]

  • ערוץ תקשורת

    stdio, רץ על ה-Mac שלכם [4]

  • מתחזק

    aashari, קהילתי [3][1]

  • הורדות

    3,370 בשבוע האחרון [2]

  • רישיון

    ISC מוצהר, בלי קובץ LICENSE [1][3][5]

אימות

איך שרת ה-MCP הזה אומת.

השיטה

הרצנו את השרת עם npx על גבי stdio עם זוג אישורי גישה מדומים של Bitbucket במשתנים ATLASSIAN_BITBUCKET_USERNAME ו-ATLASSIAN_BITBUCKET_APP_PASSWORD, השלמנו את לחיצת היד של MCP וקראנו ל-tools/list: הוא ענה עם כל 6 הכלים, והטבלה שלמטה היא התשובה הזו, מילה במילה. אחר כך ביצענו קריאת כלי אמיתית אחת, bb_get על הנתיב ‎/workspaces עם עמוד באורך פריט אחד, והתשובה שלמטה היא מה שחזר: השרת הגיע ל-Bitbucket, Bitbucket דחה את אישורי הגישה, והכלי החזיר שגיאת HTTP 401 שנושאת את מטען ה-AUTH_INVALID של השרת עצמו. ריצה שנייה על אותו Mac באותו יום, שהופעלה בלי משתני סביבה כלל, רשמה את אותם 6 כלים ונכשלה באותה קריאה עם שגיאת AUTH_MISSING במקום, המצוטטת בקטע פתרון התקלות. לכן הכלים נספרו בריצה חיה ושתי השגיאות הן פלט אמיתי, בעוד קריאה מאומתת מוצלחת עדיין ממתינה לאסימון API אמיתי של Atlassian.

הודעת הפתיחה של השרת

[21:07:57] [INFO] [index.ts@main] Starting server with STDIO transport
[21:07:57] [INFO] [index.ts] Starting MCP server in stdio mode with @aashari/mcp-server-atlassian-bitbucket v3.1.0
[21:07:57] [INFO] [index.ts@startServer] Starting MCP server initialization...
[21:07:57] [INFO] [index.ts@startServer] Initializing Bitbucket MCP server v3.1.0
[21:07:57] [INFO] [index.ts@startServer] Registering MCP tools...
[21:07:57] [INFO] [index.ts@startServer] All tools registered successfully
[21:07:57] [INFO] [index.ts@startServer] Using STDIO transport for MCP communication
[21:07:57] [INFO] [index.ts@startServer] MCP server started successfully on STDIO transport
[21:07:57] [INFO] [index.ts@main] Server is now running

קריאת כלי אמיתית אחת

tools/call bb_get {"path": "/workspaces", "queryParams": {"pagelen": "1"}}
Error: Access denied for api. Verify your credentials and permissions. Ensure your Bitbucket API token/app password has sufficient privileges and hasn't expired. If using a workspace/repository name, check that it's spelled correctly.
HTTP Status: 401

Raw API Response:
{
  "name": "McpError",
  "type": "AUTH_INVALID",
  "statusCode": 401,
  "originalError": "",
  "errorType": "AUTHENTICATION_REQUIRED"
}

שורות אמיתיות מהתוצאה שנלכדה: מספיק כדי להוכיח שהקריאה נענתה.

כלים

הכלים, כפי שנספרו מהשרת הרץ.

השרת ענה ל-tools/list עם 6 כלים בתאריך 2026-08-03. השמות, התיאורים והפרמטרים למטה הם המילים שלו עצמו, מועתקים מהתשובה הזו וללא עריכה.

כלימה הוא עושה
bb_getpath*queryParamsjqoutputFormat

Read any Bitbucket data. Returns TOON format by default (30-60% fewer tokens than JSON). **IMPORTANT - Cost Optimization:** - ALWAYS use `jq` param to filter response fields. Unfiltered responses are very expensive! - Use `pagelen` query param to restrict result count (e.g., `pagelen: "5"`) - If unsure about available fields, first fetch ONE item with `pagelen: "1"` and NO jq filter to explore the schema, then use jq in subsequent calls **Schema Discovery Pattern:** 1. First call: `path: "/workspaces", queryParams: {"pagelen": "1"}` (no jq) - explore available fields 2. Then use: `jq: "values[*].{slug: slug, name: name, uuid: uuid}"` - extract only what you need **Output format:** TOON (default, token-efficient) or JSON (`outputFormat: "json"`) **Common paths:** - `/workspaces` - list workspaces - `/repositories/{workspace}` - list repos in workspace - `/repositories/{workspace}/{repo}` - get repo details - `/repositories/{workspace}/{repo}/pullrequests` - list PRs - `/repositories/{workspace}/{repo}/pullrequests/{id}` - get PR details - `/repositories/{workspace}/{repo}/pullrequests/{id}/comments` - list PR comments - `/repositories/{workspace}/{repo}/pullrequests/{id}/diff` - get PR diff - `/repositories/{workspace}/{repo}/refs/branches` - list branches - `/repositories/{workspace}/{repo}/commits` - list commits - `/repositories/{workspace}/{repo}/src/{commit}/{filepath}` - get file content - `/repositories/{workspace}/{repo}/diff/{source}..{destination}` - compare branches/commits **Query params:** `pagelen` (page size), `page` (page number), `q` (filter), `sort` (order), `fields` (sparse response) **Example filters (q param):** `state="OPEN"`, `source.branch.name="feature"`, `title~"bug"` **JQ examples:** `values[*].slug`, `values[0]`, `values[*].{name: name, uuid: uuid}` The `/2.0` prefix is added automatically. API reference: https://developer.atlassian.com/cloud/bitbucket/rest/

bb_postpath*queryParamsjqoutputFormatbody*

Create Bitbucket resources. Returns TOON format by default (token-efficient). **IMPORTANT - Cost Optimization:** - Use `jq` param to extract only needed fields from response (e.g., `jq: "{id: id, title: title}"`) - Unfiltered responses include all metadata and are expensive! **Output format:** TOON (default) or JSON (`outputFormat: "json"`) **Common operations:** 1. **Create PR:** `/repositories/{workspace}/{repo}/pullrequests` body: `{"title": "...", "source": {"branch": {"name": "feature"}}, "destination": {"branch": {"name": "main"}}}` 2. **Add PR comment:** `/repositories/{workspace}/{repo}/pullrequests/{id}/comments` body: `{"content": {"raw": "Comment text"}}` 3. **Approve PR:** `/repositories/{workspace}/{repo}/pullrequests/{id}/approve` body: `{}` 4. **Request changes:** `/repositories/{workspace}/{repo}/pullrequests/{id}/request-changes` body: `{}` 5. **Merge PR:** `/repositories/{workspace}/{repo}/pullrequests/{id}/merge` body: `{"merge_strategy": "squash"}` (strategies: merge_commit, squash, fast_forward) The `/2.0` prefix is added automatically. API reference: https://developer.atlassian.com/cloud/bitbucket/rest/

bb_putpath*queryParamsjqoutputFormatbody*

Replace Bitbucket resources (full update). Returns TOON format by default. **IMPORTANT - Cost Optimization:** - Use `jq` param to extract only needed fields from response - Example: `jq: "{uuid: uuid, name: name}"` **Output format:** TOON (default) or JSON (`outputFormat: "json"`) **Common operations:** 1. **Update repository:** `/repositories/{workspace}/{repo}` body: `{"description": "...", "is_private": true, "has_issues": true}` 2. **Create/update file:** `/repositories/{workspace}/{repo}/src` Note: Use multipart form data for file uploads (complex - prefer PATCH for metadata) 3. **Update branch restriction:** `/repositories/{workspace}/{repo}/branch-restrictions/{id}` body: `{"kind": "push", "pattern": "main", "users": [{"uuid": "..."}]}` The `/2.0` prefix is added automatically. API reference: https://developer.atlassian.com/cloud/bitbucket/rest/

bb_patchpath*queryParamsjqoutputFormatbody*

Partially update Bitbucket resources. Returns TOON format by default. **IMPORTANT - Cost Optimization:** Use `jq` param to filter response fields. **Output format:** TOON (default) or JSON (`outputFormat: "json"`) **Common operations:** 1. **Update PR title/description:** `/repositories/{workspace}/{repo}/pullrequests/{id}` body: `{"title": "New title", "description": "Updated description"}` 2. **Update PR reviewers:** `/repositories/{workspace}/{repo}/pullrequests/{id}` body: `{"reviewers": [{"uuid": "{user-uuid}"}]}` 3. **Update repository properties:** `/repositories/{workspace}/{repo}` body: `{"description": "New description"}` 4. **Update comment:** `/repositories/{workspace}/{repo}/pullrequests/{pr_id}/comments/{comment_id}` body: `{"content": {"raw": "Updated comment"}}` The `/2.0` prefix is added automatically. API reference: https://developer.atlassian.com/cloud/bitbucket/rest/

bb_deletepath*queryParamsjqoutputFormat

Delete Bitbucket resources. Returns TOON format by default. **Output format:** TOON (default) or JSON (`outputFormat: "json"`) **Common operations:** 1. **Delete branch:** `/repositories/{workspace}/{repo}/refs/branches/{branch_name}` 2. **Delete PR comment:** `/repositories/{workspace}/{repo}/pullrequests/{pr_id}/comments/{comment_id}` 3. **Decline PR:** `/repositories/{workspace}/{repo}/pullrequests/{id}/decline` 4. **Remove PR approval:** `/repositories/{workspace}/{repo}/pullrequests/{id}/approve` 5. **Delete repository:** `/repositories/{workspace}/{repo}` (caution: irreversible) Note: Most DELETE endpoints return 204 No Content on success. The `/2.0` prefix is added automatically. API reference: https://developer.atlassian.com/cloud/bitbucket/rest/

bb_cloneworkspaceSlugrepoSlug*targetPath*

Clone a Bitbucket repository to your local filesystem using SSH (preferred) or HTTPS. Provide `repoSlug` and `targetPath` (absolute path). Clones into `targetPath/repoSlug`. SSH keys must be configured; falls back to HTTPS if unavailable.

פרמטרים המסומנים ב-* הם חובה.

התקנה

הגדרות שעובדות, אחת לכל אפליקציה.

העתיקו את הבלוק של האפליקציה שלכם. כל אחד מהם הוא ההגדרה המדויקת שאיתה אימתנו את השרת.

Claude Desktop

פתחו את הקובץ ‎~/Library/Application Support/Claude/claude_desktop_config.json (בתוך Claude Desktop: Settings, אחר כך Developer, אחר כך Edit Config) והוסיפו:

{
  "mcpServers": {
    "bitbucket": {
      "command": "npx",
      "args": [
        "-y",
        "@aashari/mcp-server-atlassian-bitbucket"
      ],
      "env": {
        "ATLASSIAN_USER_EMAIL": "your.email@company.com",
        "ATLASSIAN_API_TOKEN": "your_scoped_api_token"
      }
    }
  }
}

החליפו את שני הערכים בכתובת המייל של חשבון ה-Atlassian שלכם ובאסימון API עם הרשאות ל-Bitbucket, ואז סגרו ופתחו מחדש את Claude Desktop. ה-README של הפרויקט מפנה לקובץ אחר, ‎~/.claude/claude_desktop_config.json; הנתיב שלמעלה הוא זה ש-Anthropic מתעדת ל-macOS, והוא זה שעובד. [9][4]

Claude Code

פקודה אחת בטרמינל:

claude mcp add bitbucket --env ATLASSIAN_USER_EMAIL=your.email@company.com --env ATLASSIAN_API_TOKEN=your_scoped_api_token -- npx -y @aashari/mcp-server-atlassian-bitbucket

כל מה שאחרי המקף הכפול הוא הפקודה המדויקת ש-Claude Code יריץ, וכל ‎--env מעביר לה אישור גישה אחד. הזוג הישן, ATLASSIAN_BITBUCKET_USERNAME ו-ATLASSIAN_BITBUCKET_APP_PASSWORD, מועבר באותה דרך, והוא זה שהריצה שלנו השתמשה בו. [10][4]

Cursor

הוסיפו ל-‎~/.cursor/mcp.json עבור כל הפרויקטים, או ל-‎.cursor/mcp.json בתוך פרויקט אחד:

{
  "mcpServers": {
    "bitbucket": {
      "command": "npx",
      "args": [
        "-y",
        "@aashari/mcp-server-atlassian-bitbucket"
      ],
      "env": {
        "ATLASSIAN_USER_EMAIL": "your.email@company.com",
        "ATLASSIAN_API_TOKEN": "your_scoped_api_token"
      }
    }
  }
}

Cursor קורא את הקובץ מחדש אחרי הפעלה מחדש. העדיפו את הקובץ בתיקיית הבית: אסימון שנכתב לתוך קובץ של פרויקט נמצא commit אחד מלהיות ציבורי, והאסימון הזה מגיע למאגרי הקוד שלכם. [11][4]

Routines

בלי קובץ JSON ובלי טרמינל. ב-Routines: Settings, אחר כך Assistant, אחר כך Connections, אחר כך Add MCP Server. העבירו את הטופס ל-Command (stdio) והזינו:

Name        Bitbucket
Command     npx
Arguments   -y @aashari/mcp-server-atlassian-bitbucket

Environment Variables
ATLASSIAN_USER_EMAIL    your.email@company.com
ATLASSIAN_API_TOKEN     your_scoped_api_token

הערך בשדה ה-Arguments מתפצל לפי רווחים, לכן השאירו אותו בדיוק בשתי המילים האלה. שני אישורי הגישה נכנסים ל-Environment Variables, לעולם לא ל-Arguments. אם רוב העבודה שלכם נמצאת ב-workspace אחד, הוסיפו שורה שלישית, BITBUCKET_DEFAULT_WORKSPACE, והכלים יפסיקו לדרוש שתציינו אותו בכל פעם. לחצו קודם על Test Connection: שרת תקין עונה עם מספר הכלים שלו, שישה עבור השרת הזה. [12][4]

בלי טרמינל

איך מגדירים את שרת ה-MCP‏ Bitbucket בלי טרמינל.

אם מעולם לא פתחתם את הטרמינל ואין לכם כוונה להתחיל, זה המסלול שלכם. Routines היא אפליקציית Mac שמריצה שרתי MCP בשבילכם: ממלאים כמה שדות פעם אחת, והכלים של השרת זמינים ל-AI שלכם בצ׳אט ובשגרות מתוזמנות.

  1. 01

    התקינו את Routines

    הורידו את האפליקציה מ-getroutines.ai/download, גררו אותה ל-Applications והתחברו.

  2. 02

    צרו אסימון API ב-Atlassian

    התחברו ל-Bitbucket, ואז היכנסו ל-id.atlassian.com/manage-profile/security/api-tokens וצרו אסימון API עם הרשאות ל-Bitbucket. ה-README מבקש את ההרשאות repository ו-workspace לקריאה, ובנוסף את ההרשאה pullrequest אם תרצו שהעוזר יכתוב ל-pull requests. העתיקו את האסימון כשהוא מוצג, כי Atlassian לא תציג אותו שוב. השרת הזה עובד מול Bitbucket Cloud בלבד, לא מול התקנת Bitbucket Server או Data Center.

  3. 03

    פתחו את הגדרות ה-MCP

    לחצו על החשבון שלכם בתחתית סרגל הצד ובחרו Settings. פתחו את הקטע Assistant, אחר כך את הלשונית Connections, גללו אל MCP Servers ולחצו על Add MCP Server.

  4. 04

    בחרו Command (stdio)‎

    השרת הזה הוא פקודה, לא כתובת אינטרנט, לכן העבירו את הטופס ל-Command (stdio). Name: Bitbucket. Command: npx. Arguments: ‎-y @aashari/mcp-server-atlassian-bitbucket. זו כל הפקודה; אין תיקיות או אפשרויות נוספות להוסיף.

  5. 05

    הדביקו את המייל ואת האסימון

    הוסיפו שתי שורות ל-Environment Variables: ATLASSIAN_USER_EMAIL עם כתובת המייל של חשבון ה-Atlassian שלכם, ו-ATLASSIAN_API_TOKEN עם האסימון שהעתקתם. שורה שלישית, BITBUCKET_DEFAULT_WORKSPACE עם שם ה-workspace שלכם, תחסוך מכם לחזור עליו בכל בקשה בהמשך.

  6. 06

    בדקו, הוסיפו והשתמשו

    לחצו Test Connection: Routines מפעילה את השרת ומדווחת כמה כלים היא מצאה, שישה עבור השרת הזה. אחר כך לחצו Add Server. הכלים עובדים בצ׳אט מיד, וכדי לתת לשגרה מתוזמנת להשתמש בהם, פתחו את השגרה, מצאו את הכרטיס Tools & connections וסמנו את השרת תחת Apps.

רעיונות לשגרות

שגרות ששווה לתזמן.

אחרי שהשרת מחובר, שגרה מתוזמנת יכולה להשתמש בכלים שלו גם כשאתם לא מול המסך. העתיקו פרומפט, הדביקו אותו ב-Routines ובחרו שעה. הפרומפטים כתובים באנגלית בכוונה, מדביקים אותם בדיוק כפי שהם.

מיון pull requests של יום שני

פרומפט

Every Monday at 8:30, list the open pull requests in my main Bitbucket repository, note who opened each one, how many days it has been waiting and whether it has reviewers yet, and save the list as pr-triage.md with the oldest first.

סיכום מה שיצא לאוויר ביום שישי

פרומפט

Every Friday at 16:00, look at the pull requests merged into main this week in my Bitbucket repository, and write a short plain-English summary of what shipped, one line per change, saved as shipped-this-week.md.

תזכורת ל-pull requests תקועים

פרומפט

Every Wednesday at 9:00, find the pull requests in my Bitbucket repository that have been open more than seven days with no new comments, and draft a short friendly message for each author asking whether it is still needed. Do not post anything, just save the drafts as pr-nudges.md.

פתרון תקלות

השגיאות שנתקלנו בהן, ומה פתר אותן.

שגיאות אמיתיות שנלכדו בריצת האימות, מודפסות בדיוק כפי שהשרת החזיר אותן.

הכלים מופיעים ברשימה אבל כל קריאה חוזרת ללא הרשאה

מה רואים

Error: Access denied for api. Verify your credentials and permissions. Ensure your Bitbucket API token/app password has sufficient privileges and hasn't expired. If using a workspace/repository name, check that it's spelled correctly.
HTTP Status: 401

Raw API Response:
{
  "name": "McpError",
  "type": "AUTH_INVALID",
  "statusCode": 401,
  "originalError": "",
  "errorType": "AUTHENTICATION_REQUIRED"
}

הפתרון

זו התשובה שקריאת הדוגמה שלנו קיבלה, בכוונה: הפעלנו את השרת עם שם משתמש ו-app password מדומים. המשמעות היא שהשרת רץ, הגיע ל-Bitbucket, ו-Bitbucket דחה את אישורי הגישה. בדקו שלושה דברים. ATLASSIAN_USER_EMAIL חייב להיות המייל של חשבון ה-Atlassian שהאסימון שייך לו, לא שם תצוגה של Bitbucket. את האסימון צריך להדביק במלואו, בלי מעבר שורה באמצע. והוא צריך להיות עדיין בתוקף, כי אסימונים פגים וניתן לבטל אותם. צרו אסימון חדש, הדביקו אותו והפעילו מחדש את השרת כדי שיקרא את הערך החדש.

השרת עולה כרגיל אבל הקריאה הראשונה אומרת שאין אישורי גישה

מה רואים

Error: An unexpected error occurred while GET request api. Error details: Authentication credentials are missing
HTTP Status: 500

Raw API Response:
{
  "name": "McpError",
  "type": "AUTH_MISSING",
  "errorType": "AUTHENTICATION_REQUIRED"
}

הפתרון

לכדנו את זה כשהפעלנו את השרת בלי משתני סביבה כלל. הוא עדיין עלה, עדיין רשם את אותם שישה כלים, ונכשל רק כשכלי אמיתי פנה ל-Bitbucket, ולכן מספר כלים תקין אינו הוכחה שאישורי הגישה שלכם הגיעו. אם אתם רואים את זה, הלקוח שלכם לא מעביר את המשתנים: בקובץ JSON בדקו שהבלוק env יושב בתוך רשומת השרת ולא לצדה, וב-Routines בדקו שהשורות נמצאות ב-Environment Variables ולא נוספו ל-Arguments.

בקשה לרשימת כל ה-workspaces חוזרת כמיושנת

מה רואים

{
  "message": "CHANGE-2770 - Functionality has been deprecated",
  "detail": "Please read the changelog entry for more details.",
  "data": { "announcement_url": "https://developer.atlassian.com/cloud/bitbucket/changelog#CHANGE-2770" }
}

הפתרון

Bitbucket עצמה הוציאה משימוש את נקודת הקצה שמרכזת workspaces, ולכן קריאה ל-‎/workspaces מחזירה היום HTTP 410 לכל לקוח שמבקש אותה. זו אינה לכידה שלנו: משתמש דיווח עליה מול אותה גרסה, 3.1.0, בתקלה פתוחה מספר 230 ב-GitHub של הפרויקט. הקריאה שלנו לאותו נתיב מעולם לא הגיעה לבדיקת ההוצאה משימוש, כי Bitbucket דחה קודם את אישורי הגישה המדומים שלנו. נתיבים ברמת מאגר בודד אינם מושפעים, לכן ציינו את ה-workspace ישירות, למשל ‎/repositories/your-workspace, או הגדירו פעם אחת את BITBUCKET_DEFAULT_WORKSPACE ותנו לעוזר להשלים אותו.

קריאה עובדת אבל עריכה של pull request נדחית

מה רואים

Error: Access denied for api. Verify your credentials and permissions. Ensure your Bitbucket API token/app password has sufficient privileges and hasn't expired.
HTTP Status: 403
Raw API Response:
This endpoint does not support token-based authentication

הפתרון

קריאות מצליחות וכתיבה ל-pull request נכשלת, כש-Bitbucket אומרת במפורש שנקודת הקצה אינה תומכת באימות מבוסס אסימון. זהו דיווח נוסף של משתמש, תקלה פתוחה מספר 229 ב-GitHub של הפרויקט, שהוגשה מול אסימון API של Atlassian עם הרשאות; אנחנו לא שחזרנו אותה, כי לריצה שלנו לא היו אישורי גישה תקפים בכלל. אם זה קורה לכם, עקבו אחרי התקלה הזו במקום לחזור לזוג ה-app password הישן: ה-README מציין ש-Atlassian תכננה להסיר app passwords עד יוני 2026, תאריך שכבר מאחורינו.

שאלות נפוצות

שאלות שאנשים שואלים.

מה זה שרת ה-MCP של Bitbucket?

זו תוכנה קטנה שמחברת עוזר AI ל-Bitbucket Cloud. במקום כלי אחד לכל פעולה ב-Bitbucket, היא נותנת לעוזר חמש פעולות HTTP שאפשר לכוון לכל נתיב ב-REST API של Bitbucket, כך שאותה חופן כלים מכסה workspaces, מאגרי קוד, pull requests, תגובות, ענפים, commits ותוכן קבצים. כלי שישי משכפל מאגר לתוך תיקיה על ה-Mac שלכם. הוא רץ כתהליך מקומי שמופעל על ידי npx ומדבר עם אפליקציית ה-AI שלכם על גבי stdio, והוא עובד מול Bitbucket Cloud בלבד, לא מול Bitbucket Server או Data Center. [1][4]

אילו כלים כלולים בשרת ה-MCP של Bitbucket?

השרת הרץ חושף 6 כלים: bb_get לקריאה, bb_post ליצירה, bb_put להחלפה מלאה, bb_patch לעדכון חלקי, bb_delete למחיקה, ו-bb_clone לשכפול מאגר לתיקיה מקומית. הטבלה למעלה היא פלט ה-tools/list החי, מילה במילה, כולל הוראות השימוש הארוכות שהשרת כותב עבור העוזר, למשל הנתיבים הנפוצים ב-Bitbucket וההמלצה לסנן תמיד את התשובות. שני דברים נובעים מהעיצוב הזה. מדריכים ישנים מונים עשרות כלים בשמות מפורשים כמו list_repositories, וזה היה נכון לפני שהמעבר לגרסה 2.0 איחד אותם לפעולות האלה, ותקלה פתוחה מבקשת בחזרה את השליטה הפרטנית שהשינוי הזה הסיר. ומכיוון שהנתיב פתוח, נקודת קצה ש-Bitbucket הוציאה משימוש נכשלת אצל Bitbucket ולא אצל השרת הזה, וזו בדיוק תקלת ה-‎/workspaces שבקטע פתרון התקלות. [8][6]

האם שרת ה-MCP של Bitbucket בטוח?

ההיקף שלו הוא בדיוק ההיקף של האסימון שתיתנו לו, ולא יותר. זה חותך לשני הכיוונים. אסימון עם הרשאות קריאה ב-workspace אחד הוא חיבור צר, ואילו אסימון שיכול לכתוב מוסר לעוזר AI את bb_put, bb_patch ו-bb_delete מכוונים לכל נתיב בחשבון ה-Bitbucket שלכם, ותיאור כלי המחיקה למעלה מביא מחיקת מאגר כאחת מהדוגמאות שלו עצמו, ומסמן אותה כבלתי הפיכה. שני הרגלים שומרים על שפיות: צרו אסימון ייעודי למטרה הזו עם ההרשאות המצומצמות שמספיקות, והוסיפו את ההרשאה pullrequest רק כשאתם באמת רוצים שייכתבו שינויים. bb_clone ראוי לשורה משלו, כי הוא הכלי היחיד שכותב ל-Mac שלכם ולא ל-Bitbucket: הוא מריץ git clone לתוך התיקיה שתציינו. [4]

צריך טרמינל כדי להגדיר אותו?

לא. ב-Routines ממלאים כמה שדות בהגדרות, מדביקים את המייל ואת האסימון בשדה Environment Variables ולוחצים Test Connection; המדריך למעלה מראה כל לחיצה. יצירת האסימון עצמה נעשית באתר של Atlassian, לא בטרמינל. Claude Desktop ו-Cursor דורשים עריכה חד-פעמית של קובץ JSON קטן. רק Claude Code הוא כלי טרמינל מטבעו. [12][9]

האם שרת ה-MCP של Bitbucket דורש מפתח API או חשבון?

כן, וזה שלב ההתקנה האמיתי היחיד. צריך חשבון Bitbucket Cloud ושני משתני סביבה: ATLASSIAN_USER_EMAIL עם המייל של חשבון ה-Atlassian שלכם, ו-ATLASSIAN_API_TOKEN עם אסימון API בעל הרשאות ל-Bitbucket, שנוצר ב-id.atlassian.com. ה-README מתעד גם זוג ישן יותר, ATLASSIAN_BITBUCKET_USERNAME ו-ATLASSIAN_BITBUCKET_APP_PASSWORD, ומציין ש-Atlassian תכננה להסיר app passwords עד יוני 2026, לכן התחילו עם האסימון. בלי אישורי גישה השרת עדיין עולה ועדיין מציג את כל 6 הכלים, וזה בדיוק מה שהריצה שלנו מראה, ורק הקריאה ל-Bitbucket נכשלת. פער אחד ידוע שכדאי להכיר: קריאות עובדות עם אסימון בעל הרשאות, בעוד חלק מפעולות הכתיבה ל-pull request מדווחות כנדחות על ידי Bitbucket בטענה שאין תמיכה באימות מבוסס אסימון. [4][7]

האם זה שרת רשמי של Atlassian?

לא. הוא מתוחזק על ידי מפתח אחד, aashari, בחשבון GitHub אישי, ושום דבר בחבילה, במאגר או ב-README לא טוען לשיוך ל-Atlassian. npm רושם 3,370 הורדות בשבוע האחרון ולמאגר יש 160 כוכבים, כך שיש לו משתמשים אמיתיים, אבל התמיכה והעדכונים מגיעים ממתנדב אחד. את סוגיית הרישיון כדאי לסגור לפני שהוא נכנס למחשב של חברה: npm וקובץ ה-package.json מצהירים שניהם על ISC, בעוד שבמאגר אין קובץ LICENSE ו-GitHub לא מזהה רישיון כלל, ותקלה פתוחה מבקשת מהמתחזק להבהיר בדיוק את זה. [3][1][2][5]

אילו אפליקציות יכולות להשתמש בשרת ה-MCP של Bitbucket?

כל לקוח MCP שמסוגל להפעיל שרת stdio מקומי: Claude Desktop, Claude Code, Cursor ו-Routines כולם יכולים, וההגדרה המדויקת לכל אחד נמצאת למעלה. השרת עצמו זהה בכל לקוח; רק המקום שבו מדביקים את ההגדרה ואת אישורי הגישה משתנה. הוא דורש Node.js בגרסה 18 ומעלה על ה-Mac שמריץ אותו, וזה גם מה שהפקודה npx בכל ההגדרות למעלה נשענת עליו. [9][10][11][12][4]

מקורות

כל טענה חיצונית, עם קבלה.

כל מה שבעמוד הזה שלא ראינו בעצמנו בריצה מקושר כאן, עם התאריך שבו קראנו אותו. לגבי השאר, הריצה עצמה היא הקבלה.

  1. [1]

    npm registry: @aashari/mcp-server-atlassian-bitbucketנקרא בתאריך 2026-08-03

    Latest version 3.1.0, published 2026-02-17; license field ISC; repository git+https://github.com/aashari/mcp-server-atlassian-bitbucket.git; single npm maintainer aashari.

  2. [2]

    npm downloads API: last weekנקרא בתאריך 2026-08-03

    3,370 downloads for the week 2026-07-27 to 2026-08-02.

  3. [3]

    GitHub API: aashari/mcp-server-atlassian-bitbucketנקרא בתאריך 2026-08-03

    160 stars, owner aashari is an individual user account, pushed 2026-03-06, default branch main, license field null with no LICENSE file at the repository root.

  4. [4]

    mcp-server-atlassian-bitbucket README (main branch)נקרא בתאריך 2026-08-03

    Source of the credential model (ATLASSIAN_USER_EMAIL with ATLASSIAN_API_TOKEN, the legacy username and app password pair, optional BITBUCKET_DEFAULT_WORKSPACE), the client config JSON, the repository and workspace scopes, the Node.js 18 requirement, the Bitbucket Cloud only limitation, and the statement that app passwords were to be removed by June 2026.

  5. [5]

    GitHub issue 231: Missing LICENSE file, could you clarify the license?נקרא בתאריך 2026-08-03

    Open issue from a user evaluating the project for internal use, flagging that GitHub detects no license while npm declares ISC.

  6. [6]

    GitHub issue 230: /workspaces listing returns HTTP 410נקרא בתאריך 2026-08-03

    Open issue filed against version 3.1.0 in June 2026, quoting the CHANGE-2770 deprecation response Bitbucket now returns for the cross-workspace listing endpoint.

  7. [7]

    GitHub issue 229: PUT and PATCH on pull requests fail with 403נקרא בתאריך 2026-08-03

    Open issue quoting the 403 and the Bitbucket message "This endpoint does not support token-based authentication"; reads succeed with the same scoped token.

  8. [8]

    GitHub issue 222: Cannot disable selective tools after 2.0 migrationנקרא בתאריך 2026-08-03

    Open issue title, read from the issue listing: before 2.0 the server exposed many individually named tools that could be toggled, which the generic verb tools replaced.

  9. [9]

    modelcontextprotocol.io: Connect to local MCP serversנקרא בתאריך 2026-08-03

    The official Claude Desktop quickstart: the macOS config file location and the mcpServers shape.

  10. [10]

    Claude Code docs: MCPנקרא בתאריך 2026-08-03

    The claude mcp add syntax for local stdio servers, including --env.

  11. [11]

    Cursor docs: Model Context Protocolנקרא בתאריך 2026-08-03

    The mcp.json shape and file locations.

  12. [12]

    Routines: Connectorsנקרא בתאריך 2026-08-03

    How Routines runs one-click OAuth connectors and any MCP server.

העמוד הזה מתאר את Bitbucket כפי שהתנהג בריצה מתוארכת אחת על Mac אחד. גרסאות משתנות: אם משהו כאן כבר לא תואם למה שאתם רואים, תאריך הלכידה בראש העמוד אומר בן כמה הצילום.

מאחורי המדריך הזה

Routines, האפליקציה שמאחורי המדריך הזה, מריצה שרתי MCP כמו זה בלי טרמינל: כך עובדים המחברים. הפתקים שלכם נשארים קובצי markdown על ה-Mac שלכם, אין חשבון ענן לשלם, והיא עובדת גם בלי אינטרנט. להורדת Routines