<!DOCTYPE html>
<html lang="en" class="scroll-smooth">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bitbucket MCP Server - Documentation</title>
<meta name="description" content="MCP server for Bitbucket Cloud with full API coverage for repositories, pull requests, branches, commits, issues, and pipelines.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
darkMode: 'class',
theme: {
extend: {
fontFamily: {
sans: ['Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'sans-serif'],
},
colors: {
// Atlassian Design System Colors
atlassian: {
blue: {
50: '#E9F2FF',
100: '#CCE0FF',
200: '#85B8FF',
300: '#579DFF',
400: '#388BFF',
500: '#1D7AFC',
600: '#0C66E4',
700: '#0055CC',
800: '#09326C',
900: '#1C2B41',
},
neutral: {
0: '#FFFFFF',
100: '#F7F8F9',
200: '#F1F2F4',
300: '#DCDFE4',
400: '#B3B9C4',
500: '#8590A2',
600: '#626F86',
700: '#44546F',
800: '#2C3E5D',
900: '#1D2125',
1000: '#161A1D',
},
green: {
500: '#22A06B',
600: '#1F845A',
},
yellow: {
500: '#CF9F02',
},
red: {
500: '#E2483D',
},
purple: {
500: '#8270DB',
},
teal: {
500: '#2898BD',
},
}
}
}
}
}
</script>
<style>
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.code-block {
background: #1D2125;
border: 1px solid #2C3E5D;
}
.gradient-hero {
background: linear-gradient(135deg, #0055CC 0%, #0C66E4 50%, #1D7AFC 100%);
}
.bitbucket-card {
background: #FFFFFF;
border: 1px solid #DCDFE4;
transition: box-shadow 0.2s ease, border-color 0.2s ease;
}
.bitbucket-card:hover {
border-color: #B3B9C4;
box-shadow: 0 4px 12px rgba(9, 30, 66, 0.15);
}
.dark .bitbucket-card {
background: #22272B;
border-color: #44546F;
}
.dark .bitbucket-card:hover {
border-color: #626F86;
}
.tool-row:hover {
background: #F7F8F9;
}
.dark .tool-row:hover {
background: #2C3E5D;
}
</style>
</head>
<body class="bg-atlassian-neutral-100 dark:bg-atlassian-neutral-900 text-atlassian-neutral-900 dark:text-atlassian-neutral-0 transition-colors duration-200">
<!-- Navigation -->
<nav class="fixed top-0 left-0 right-0 z-50 bg-white dark:bg-atlassian-neutral-1000 border-b border-atlassian-neutral-300 dark:border-atlassian-neutral-800">
<div class="container mx-auto px-6 h-14 flex items-center justify-between">
<div class="flex items-center gap-3">
<!-- Bitbucket Logo -->
<svg class="w-8 h-8" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="bitbucket-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#2684FF"/>
<stop offset="100%" style="stop-color:#0052CC"/>
</linearGradient>
</defs>
<path d="M2 5.5C2 4.67157 2.67157 4 3.5 4H28.5C29.3284 4 30 4.67157 30 5.5C30 5.69165 29.9638 5.87573 29.8963 6.0457L25.5 28H6.5L2.10374 6.0457C2.03623 5.87573 2 5.69165 2 5.5Z" fill="url(#bitbucket-gradient)"/>
<path d="M12.5 14.5H19.5L18.5 22H13.5L12.5 14.5Z" fill="white" fill-opacity="0.9"/>
</svg>
<span class="font-semibold text-lg">Bitbucket MCP</span>
</div>
<div class="flex items-center gap-4">
<a href="https://github.com/lexmata/bitbucket-mcp" class="text-atlassian-neutral-600 dark:text-atlassian-neutral-400 hover:text-atlassian-blue-600 dark:hover:text-atlassian-blue-400 transition-colors">
<i class="fa-brands fa-github text-xl"></i>
</a>
<a href="https://www.npmjs.com/package/@lexmata/bitbucket-mcp" class="text-atlassian-neutral-600 dark:text-atlassian-neutral-400 hover:text-atlassian-blue-600 dark:hover:text-atlassian-blue-400 transition-colors">
<i class="fa-brands fa-npm text-xl"></i>
</a>
<button id="theme-toggle" class="p-2 rounded-md hover:bg-atlassian-neutral-200 dark:hover:bg-atlassian-neutral-800 transition-colors">
<i class="fa-solid fa-sun text-lg hidden dark:block"></i>
<i class="fa-solid fa-moon text-lg block dark:hidden"></i>
</button>
</div>
</div>
</nav>
<!-- Hero Section -->
<header class="pt-14">
<div class="gradient-hero text-white">
<div class="container mx-auto px-6 py-20">
<div class="max-w-3xl">
<div class="inline-flex items-center gap-2 px-3 py-1.5 bg-white/15 rounded-full text-sm font-medium mb-6 backdrop-blur-sm">
<span class="w-2 h-2 bg-atlassian-green-500 rounded-full"></span>
Model Context Protocol Server
</div>
<h1 class="text-4xl md:text-5xl font-bold mb-4 tracking-tight">
Bitbucket MCP Server
</h1>
<p class="text-xl text-blue-100 mb-8 leading-relaxed">
Connect AI assistants to Bitbucket Cloud with 25+ tools for repositories, pull requests, branches, commits, issues, pipelines, and code search.
</p>
<div class="flex flex-wrap gap-3">
<a href="#installation" class="inline-flex items-center gap-2 px-5 py-2.5 bg-white text-atlassian-blue-700 font-medium rounded hover:bg-blue-50 transition-colors">
Get started
</a>
<a href="https://github.com/lexmata/bitbucket-mcp" class="inline-flex items-center gap-2 px-5 py-2.5 bg-white/10 backdrop-blur-sm text-white font-medium rounded hover:bg-white/20 transition-colors border border-white/20">
<i class="fa-brands fa-github text-lg"></i>
View on GitHub
</a>
</div>
</div>
</div>
</div>
</header>
<!-- Features Section -->
<section class="py-16 bg-white dark:bg-atlassian-neutral-1000">
<div class="container mx-auto px-6">
<div class="text-center mb-12">
<h2 class="text-2xl font-semibold mb-3">Full Bitbucket Cloud coverage</h2>
<p class="text-atlassian-neutral-600 dark:text-atlassian-neutral-400 max-w-xl mx-auto">Everything you need to interact with Bitbucket through AI assistants</p>
</div>
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-4 max-w-5xl mx-auto">
<div class="bitbucket-card rounded-lg p-5">
<div class="w-10 h-10 bg-atlassian-blue-50 dark:bg-atlassian-blue-900/30 rounded flex items-center justify-center mb-3">
<i class="fa-solid fa-folder text-atlassian-blue-600"></i>
</div>
<h3 class="font-semibold mb-1">Repositories</h3>
<p class="text-sm text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Create, list, update, and delete repositories. Manage forks and access files.</p>
</div>
<div class="bitbucket-card rounded-lg p-5">
<div class="w-10 h-10 bg-atlassian-green-500/10 rounded flex items-center justify-center mb-3">
<i class="fa-solid fa-code-pull-request text-atlassian-green-600"></i>
</div>
<h3 class="font-semibold mb-1">Pull Requests</h3>
<p class="text-sm text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Full PR lifecycle: create, review, comment, approve, and merge.</p>
</div>
<div class="bitbucket-card rounded-lg p-5">
<div class="w-10 h-10 bg-atlassian-purple-500/10 rounded flex items-center justify-center mb-3">
<i class="fa-solid fa-circle-exclamation text-atlassian-purple-500"></i>
</div>
<h3 class="font-semibold mb-1">Issues</h3>
<p class="text-sm text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Create and manage issues with priorities, assignees, and states.</p>
</div>
<div class="bitbucket-card rounded-lg p-5">
<div class="w-10 h-10 bg-atlassian-yellow-500/10 rounded flex items-center justify-center mb-3">
<i class="fa-solid fa-bolt text-atlassian-yellow-500"></i>
</div>
<h3 class="font-semibold mb-1">Pipelines</h3>
<p class="text-sm text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Trigger, monitor, and control CI/CD pipeline runs.</p>
</div>
<div class="bitbucket-card rounded-lg p-5">
<div class="w-10 h-10 bg-atlassian-teal-500/10 rounded flex items-center justify-center mb-3">
<i class="fa-solid fa-magnifying-glass text-atlassian-teal-500"></i>
</div>
<h3 class="font-semibold mb-1">Code Search</h3>
<p class="text-sm text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Search across all repositories in your workspace.</p>
</div>
<div class="bitbucket-card rounded-lg p-5">
<div class="w-10 h-10 bg-atlassian-red-500/10 rounded flex items-center justify-center mb-3">
<i class="fa-solid fa-lock text-atlassian-red-500"></i>
</div>
<h3 class="font-semibold mb-1">OAuth 2.0</h3>
<p class="text-sm text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Secure auth with automatic token refresh.</p>
</div>
</div>
</div>
</section>
<!-- Installation Section -->
<section id="installation" class="py-16 bg-atlassian-neutral-100 dark:bg-atlassian-neutral-900">
<div class="container mx-auto px-6">
<div class="max-w-3xl mx-auto">
<h2 class="text-2xl font-semibold mb-2">Installation</h2>
<p class="text-atlassian-neutral-600 dark:text-atlassian-neutral-400 mb-6">Install the package globally or use npx to run it directly</p>
<div class="code-block rounded-lg overflow-hidden">
<div class="flex items-center gap-2 px-4 py-3 border-b border-atlassian-neutral-800">
<div class="w-3 h-3 rounded-full bg-atlassian-red-500/80"></div>
<div class="w-3 h-3 rounded-full bg-atlassian-yellow-500/80"></div>
<div class="w-3 h-3 rounded-full bg-atlassian-green-500/80"></div>
<span class="ml-3 text-atlassian-neutral-400 text-sm font-mono">Terminal</span>
</div>
<pre class="p-4 text-sm overflow-x-auto"><code class="text-atlassian-neutral-300"><span class="text-atlassian-neutral-500"># Using npm</span>
<span class="text-atlassian-green-500">npm</span> install -g @lexmata/bitbucket-mcp
<span class="text-atlassian-neutral-500"># Using pnpm</span>
<span class="text-atlassian-green-500">pnpm</span> add -g @lexmata/bitbucket-mcp
<span class="text-atlassian-neutral-500"># Or run directly with npx</span>
<span class="text-atlassian-green-500">npx</span> @lexmata/bitbucket-mcp</code></pre>
</div>
</div>
</div>
</section>
<!-- Configuration Section -->
<section id="configuration" class="py-16 bg-white dark:bg-atlassian-neutral-1000">
<div class="container mx-auto px-6">
<div class="max-w-4xl mx-auto">
<h2 class="text-2xl font-semibold mb-2">Configuration</h2>
<p class="text-atlassian-neutral-600 dark:text-atlassian-neutral-400 mb-8">Choose your preferred authentication method</p>
<div class="grid md:grid-cols-2 gap-6">
<!-- OAuth -->
<div class="bitbucket-card rounded-lg p-6">
<div class="flex items-center gap-3 mb-4">
<span class="w-7 h-7 bg-atlassian-blue-600 text-white rounded flex items-center justify-center text-sm font-semibold">1</span>
<h3 class="font-semibold">OAuth 2.0</h3>
<span class="ml-auto px-2 py-0.5 bg-atlassian-blue-50 dark:bg-atlassian-blue-900/30 text-atlassian-blue-600 text-xs font-medium rounded">Recommended</span>
</div>
<ol class="space-y-2 text-sm text-atlassian-neutral-600 dark:text-atlassian-neutral-400 mb-4">
<li>1. Create an OAuth consumer in your workspace settings</li>
<li>2. Set callback URL to <code class="bg-atlassian-neutral-200 dark:bg-atlassian-neutral-800 px-1 rounded">http://localhost:9876/callback</code></li>
<li>3. Run the OAuth flow script to get tokens</li>
</ol>
<div class="code-block rounded p-3 text-xs">
<code class="text-atlassian-neutral-300">node scripts/oauth-flow.js "CLIENT_ID" "CLIENT_SECRET"</code>
</div>
</div>
<!-- App Password -->
<div class="bitbucket-card rounded-lg p-6">
<div class="flex items-center gap-3 mb-4">
<span class="w-7 h-7 bg-atlassian-neutral-600 text-white rounded flex items-center justify-center text-sm font-semibold">2</span>
<h3 class="font-semibold">App Password</h3>
<span class="ml-auto px-2 py-0.5 bg-atlassian-neutral-200 dark:bg-atlassian-neutral-700 text-atlassian-neutral-600 dark:text-atlassian-neutral-300 text-xs font-medium rounded">Simple</span>
</div>
<ol class="space-y-2 text-sm text-atlassian-neutral-600 dark:text-atlassian-neutral-400 mb-4">
<li>1. Go to Personal Settings → App passwords</li>
<li>2. Create a new app password with required permissions</li>
<li>3. Use your username and the app password</li>
</ol>
<div class="code-block rounded p-3 text-xs">
<code class="text-atlassian-neutral-300">BITBUCKET_USERNAME=your-username
BITBUCKET_ACCESS_TOKEN=app-password</code>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- MCP Config Section -->
<section id="mcp-config" class="py-16 bg-atlassian-neutral-100 dark:bg-atlassian-neutral-900">
<div class="container mx-auto px-6">
<div class="max-w-3xl mx-auto">
<h2 class="text-2xl font-semibold mb-2">MCP Configuration</h2>
<p class="text-atlassian-neutral-600 dark:text-atlassian-neutral-400 mb-6">Add to your Claude Desktop or Cursor configuration file</p>
<div class="code-block rounded-lg overflow-hidden">
<div class="flex items-center gap-2 px-4 py-3 border-b border-atlassian-neutral-800">
<div class="w-3 h-3 rounded-full bg-atlassian-red-500/80"></div>
<div class="w-3 h-3 rounded-full bg-atlassian-yellow-500/80"></div>
<div class="w-3 h-3 rounded-full bg-atlassian-green-500/80"></div>
<span class="ml-3 text-atlassian-neutral-400 text-sm font-mono">mcp.json</span>
</div>
<pre class="p-4 text-sm overflow-x-auto"><code class="text-atlassian-neutral-300">{
<span class="text-atlassian-blue-300">"mcpServers"</span>: {
<span class="text-atlassian-blue-300">"bitbucket"</span>: {
<span class="text-atlassian-blue-300">"command"</span>: <span class="text-atlassian-green-500">"npx"</span>,
<span class="text-atlassian-blue-300">"args"</span>: [<span class="text-atlassian-green-500">"@lexmata/bitbucket-mcp"</span>],
<span class="text-atlassian-blue-300">"env"</span>: {
<span class="text-atlassian-blue-300">"BITBUCKET_USERNAME"</span>: <span class="text-atlassian-green-500">"your-username"</span>,
<span class="text-atlassian-blue-300">"BITBUCKET_ACCESS_TOKEN"</span>: <span class="text-atlassian-green-500">"your-app-password"</span>
}
}
}
}</code></pre>
</div>
<div class="mt-6 grid grid-cols-3 gap-3 text-center text-sm">
<div class="bg-white dark:bg-atlassian-neutral-800 rounded p-3 border border-atlassian-neutral-300 dark:border-atlassian-neutral-700">
<strong class="block text-atlassian-neutral-900 dark:text-white mb-1">Cursor</strong>
<code class="text-xs text-atlassian-neutral-500">~/.cursor/mcp.json</code>
</div>
<div class="bg-white dark:bg-atlassian-neutral-800 rounded p-3 border border-atlassian-neutral-300 dark:border-atlassian-neutral-700">
<strong class="block text-atlassian-neutral-900 dark:text-white mb-1">Claude (macOS)</strong>
<code class="text-xs text-atlassian-neutral-500">~/Library/.../Claude/</code>
</div>
<div class="bg-white dark:bg-atlassian-neutral-800 rounded p-3 border border-atlassian-neutral-300 dark:border-atlassian-neutral-700">
<strong class="block text-atlassian-neutral-900 dark:text-white mb-1">Claude (Linux)</strong>
<code class="text-xs text-atlassian-neutral-500">~/.config/Claude/</code>
</div>
</div>
</div>
</div>
</section>
<!-- Tools Section -->
<section id="tools" class="py-16 bg-white dark:bg-atlassian-neutral-1000">
<div class="container mx-auto px-6">
<div class="max-w-5xl mx-auto">
<h2 class="text-2xl font-semibold mb-2">Available Tools</h2>
<p class="text-atlassian-neutral-600 dark:text-atlassian-neutral-400 mb-8">25+ tools covering all major Bitbucket operations</p>
<!-- Tabs -->
<div class="flex flex-wrap gap-1 mb-6 border-b border-atlassian-neutral-300 dark:border-atlassian-neutral-700">
<button class="tool-tab active px-4 py-2 text-sm font-medium transition-colors border-b-2 border-atlassian-blue-600 text-atlassian-blue-600" data-tab="repositories">Repositories</button>
<button class="tool-tab px-4 py-2 text-sm font-medium transition-colors border-b-2 border-transparent text-atlassian-neutral-600 dark:text-atlassian-neutral-400 hover:text-atlassian-neutral-900 dark:hover:text-white" data-tab="pullrequests">Pull Requests</button>
<button class="tool-tab px-4 py-2 text-sm font-medium transition-colors border-b-2 border-transparent text-atlassian-neutral-600 dark:text-atlassian-neutral-400 hover:text-atlassian-neutral-900 dark:hover:text-white" data-tab="branches">Branches</button>
<button class="tool-tab px-4 py-2 text-sm font-medium transition-colors border-b-2 border-transparent text-atlassian-neutral-600 dark:text-atlassian-neutral-400 hover:text-atlassian-neutral-900 dark:hover:text-white" data-tab="commits">Commits</button>
<button class="tool-tab px-4 py-2 text-sm font-medium transition-colors border-b-2 border-transparent text-atlassian-neutral-600 dark:text-atlassian-neutral-400 hover:text-atlassian-neutral-900 dark:hover:text-white" data-tab="issues">Issues</button>
<button class="tool-tab px-4 py-2 text-sm font-medium transition-colors border-b-2 border-transparent text-atlassian-neutral-600 dark:text-atlassian-neutral-400 hover:text-atlassian-neutral-900 dark:hover:text-white" data-tab="pipelines">Pipelines</button>
</div>
<!-- Tool Lists -->
<div id="tab-repositories" class="tool-content">
<div class="bitbucket-card rounded-lg overflow-hidden">
<table class="w-full text-sm">
<thead class="bg-atlassian-neutral-100 dark:bg-atlassian-neutral-800">
<tr>
<th class="px-4 py-3 text-left font-medium text-atlassian-neutral-700 dark:text-atlassian-neutral-300">Tool</th>
<th class="px-4 py-3 text-left font-medium text-atlassian-neutral-700 dark:text-atlassian-neutral-300">Description</th>
</tr>
</thead>
<tbody class="divide-y divide-atlassian-neutral-200 dark:divide-atlassian-neutral-700">
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">list_repositories</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">List repositories in a workspace</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">get_repository</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Get details of a specific repository</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">create_repository</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Create a new repository</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">delete_repository</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Delete a repository</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">list_repository_forks</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">List all forks of a repository</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">get_file_content</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Get the content of a file</td></tr>
</tbody>
</table>
</div>
</div>
<div id="tab-pullrequests" class="tool-content hidden">
<div class="bitbucket-card rounded-lg overflow-hidden">
<table class="w-full text-sm">
<thead class="bg-atlassian-neutral-100 dark:bg-atlassian-neutral-800">
<tr>
<th class="px-4 py-3 text-left font-medium text-atlassian-neutral-700 dark:text-atlassian-neutral-300">Tool</th>
<th class="px-4 py-3 text-left font-medium text-atlassian-neutral-700 dark:text-atlassian-neutral-300">Description</th>
</tr>
</thead>
<tbody class="divide-y divide-atlassian-neutral-200 dark:divide-atlassian-neutral-700">
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">list_pull_requests</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">List pull requests with optional filtering</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">get_pull_request</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Get details of a specific pull request</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">create_pull_request</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Create a new pull request</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">update_pull_request</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Update a pull request</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">merge_pull_request</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Merge a pull request</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">decline_pull_request</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Decline a pull request</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">approve_pull_request</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Approve a pull request</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">request_changes</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Request changes on a pull request</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">list_pr_comments</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">List comments on a pull request</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">add_pr_comment</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Add a comment to a pull request</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">get_pr_diff</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Get the diff for a pull request</td></tr>
</tbody>
</table>
</div>
</div>
<div id="tab-branches" class="tool-content hidden">
<div class="bitbucket-card rounded-lg overflow-hidden">
<table class="w-full text-sm">
<thead class="bg-atlassian-neutral-100 dark:bg-atlassian-neutral-800">
<tr>
<th class="px-4 py-3 text-left font-medium text-atlassian-neutral-700 dark:text-atlassian-neutral-300">Tool</th>
<th class="px-4 py-3 text-left font-medium text-atlassian-neutral-700 dark:text-atlassian-neutral-300">Description</th>
</tr>
</thead>
<tbody class="divide-y divide-atlassian-neutral-200 dark:divide-atlassian-neutral-700">
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">list_branches</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">List branches in a repository</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">get_branch</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Get details of a specific branch</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">create_branch</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Create a new branch</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">delete_branch</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Delete a branch</td></tr>
</tbody>
</table>
</div>
</div>
<div id="tab-commits" class="tool-content hidden">
<div class="bitbucket-card rounded-lg overflow-hidden">
<table class="w-full text-sm">
<thead class="bg-atlassian-neutral-100 dark:bg-atlassian-neutral-800">
<tr>
<th class="px-4 py-3 text-left font-medium text-atlassian-neutral-700 dark:text-atlassian-neutral-300">Tool</th>
<th class="px-4 py-3 text-left font-medium text-atlassian-neutral-700 dark:text-atlassian-neutral-300">Description</th>
</tr>
</thead>
<tbody class="divide-y divide-atlassian-neutral-200 dark:divide-atlassian-neutral-700">
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">list_commits</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">List commits with optional filtering</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">get_commit</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Get details of a specific commit</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">get_commit_diff</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Get the diff for a commit</td></tr>
</tbody>
</table>
</div>
</div>
<div id="tab-issues" class="tool-content hidden">
<div class="bitbucket-card rounded-lg overflow-hidden">
<table class="w-full text-sm">
<thead class="bg-atlassian-neutral-100 dark:bg-atlassian-neutral-800">
<tr>
<th class="px-4 py-3 text-left font-medium text-atlassian-neutral-700 dark:text-atlassian-neutral-300">Tool</th>
<th class="px-4 py-3 text-left font-medium text-atlassian-neutral-700 dark:text-atlassian-neutral-300">Description</th>
</tr>
</thead>
<tbody class="divide-y divide-atlassian-neutral-200 dark:divide-atlassian-neutral-700">
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">list_issues</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">List issues in a repository</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">get_issue</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Get details of a specific issue</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">create_issue</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Create a new issue</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">update_issue</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Update an issue</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">delete_issue</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Delete an issue</td></tr>
</tbody>
</table>
</div>
</div>
<div id="tab-pipelines" class="tool-content hidden">
<div class="bitbucket-card rounded-lg overflow-hidden">
<table class="w-full text-sm">
<thead class="bg-atlassian-neutral-100 dark:bg-atlassian-neutral-800">
<tr>
<th class="px-4 py-3 text-left font-medium text-atlassian-neutral-700 dark:text-atlassian-neutral-300">Tool</th>
<th class="px-4 py-3 text-left font-medium text-atlassian-neutral-700 dark:text-atlassian-neutral-300">Description</th>
</tr>
</thead>
<tbody class="divide-y divide-atlassian-neutral-200 dark:divide-atlassian-neutral-700">
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">list_pipelines</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">List pipeline runs</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">get_pipeline</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Get details of a pipeline run</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">trigger_pipeline</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Trigger a new pipeline run</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">stop_pipeline</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Stop a running pipeline</td></tr>
<tr class="tool-row"><td class="px-4 py-3 font-mono text-atlassian-blue-600">search_code</td><td class="px-4 py-3 text-atlassian-neutral-600 dark:text-atlassian-neutral-400">Search code across repositories</td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</section>
<!-- Resources Section -->
<section id="resources" class="py-16 bg-atlassian-neutral-100 dark:bg-atlassian-neutral-900">
<div class="container mx-auto px-6">
<div class="max-w-4xl mx-auto">
<h2 class="text-2xl font-semibold mb-2">MCP Resources</h2>
<p class="text-atlassian-neutral-600 dark:text-atlassian-neutral-400 mb-8">Access Bitbucket data through standardized resource URIs</p>
<div class="space-y-3">
<div class="bitbucket-card rounded-lg p-4 flex items-center gap-4">
<div class="w-10 h-10 bg-atlassian-blue-50 dark:bg-atlassian-blue-900/30 rounded flex items-center justify-center flex-shrink-0">
<i class="fa-solid fa-folder text-atlassian-blue-600"></i>
</div>
<div class="flex-1 min-w-0">
<h3 class="font-medium mb-0.5">Repository</h3>
<code class="text-sm text-atlassian-neutral-500 dark:text-atlassian-neutral-400">bitbucket://repository/{workspace}/{repo}</code>
</div>
</div>
<div class="bitbucket-card rounded-lg p-4 flex items-center gap-4">
<div class="w-10 h-10 bg-atlassian-green-500/10 rounded flex items-center justify-center flex-shrink-0">
<i class="fa-solid fa-code-pull-request text-atlassian-green-600"></i>
</div>
<div class="flex-1 min-w-0">
<h3 class="font-medium mb-0.5">Pull Request</h3>
<code class="text-sm text-atlassian-neutral-500 dark:text-atlassian-neutral-400">bitbucket://pullrequest/{workspace}/{repo}/{id}</code>
</div>
</div>
<div class="bitbucket-card rounded-lg p-4 flex items-center gap-4">
<div class="w-10 h-10 bg-atlassian-purple-500/10 rounded flex items-center justify-center flex-shrink-0">
<i class="fa-solid fa-file-code text-atlassian-purple-500"></i>
</div>
<div class="flex-1 min-w-0">
<h3 class="font-medium mb-0.5">File</h3>
<code class="text-sm text-atlassian-neutral-500 dark:text-atlassian-neutral-400">bitbucket://file/{workspace}/{repo}/{path}</code>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer class="bg-atlassian-neutral-900 dark:bg-atlassian-neutral-1000 text-white py-10 border-t border-atlassian-neutral-800">
<div class="container mx-auto px-6">
<div class="flex flex-col md:flex-row justify-between items-center gap-6">
<div class="flex items-center gap-3">
<svg class="w-7 h-7" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="bitbucket-gradient-footer" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#2684FF"/>
<stop offset="100%" style="stop-color:#0052CC"/>
</linearGradient>
</defs>
<path d="M2 5.5C2 4.67157 2.67157 4 3.5 4H28.5C29.3284 4 30 4.67157 30 5.5C30 5.69165 29.9638 5.87573 29.8963 6.0457L25.5 28H6.5L2.10374 6.0457C2.03623 5.87573 2 5.69165 2 5.5Z" fill="url(#bitbucket-gradient-footer)"/>
<path d="M12.5 14.5H19.5L18.5 22H13.5L12.5 14.5Z" fill="white" fill-opacity="0.9"/>
</svg>
<div>
<p class="font-medium">@lexmata/bitbucket-mcp</p>
<p class="text-sm text-atlassian-neutral-400">MCP server for Bitbucket Cloud</p>
</div>
</div>
<div class="flex items-center gap-4">
<a href="https://github.com/lexmata/bitbucket-mcp" class="text-atlassian-neutral-400 hover:text-white transition-colors">
<i class="fa-brands fa-github text-xl"></i>
</a>
<a href="https://www.npmjs.com/package/@lexmata/bitbucket-mcp" class="text-atlassian-neutral-400 hover:text-white transition-colors">
<i class="fa-brands fa-npm text-xl"></i>
</a>
</div>
</div>
<div class="border-t border-atlassian-neutral-800 mt-8 pt-6 text-center text-sm text-atlassian-neutral-500">
<p>MIT License · Copyright © 2025 Lexmata LLC</p>
</div>
</div>
</footer>
<script>
// Dark mode toggle
const themeToggle = document.getElementById('theme-toggle');
const html = document.documentElement;
if (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
html.classList.add('dark');
}
themeToggle.addEventListener('click', () => {
html.classList.toggle('dark');
localStorage.theme = html.classList.contains('dark') ? 'dark' : 'light';
});
// Tool tabs
const tabs = document.querySelectorAll('.tool-tab');
const contents = document.querySelectorAll('.tool-content');
tabs.forEach(tab => {
tab.addEventListener('click', () => {
const target = tab.dataset.tab;
tabs.forEach(t => {
t.classList.remove('border-atlassian-blue-600', 'text-atlassian-blue-600');
t.classList.add('border-transparent', 'text-atlassian-neutral-600', 'dark:text-atlassian-neutral-400');
});
tab.classList.remove('border-transparent', 'text-atlassian-neutral-600', 'dark:text-atlassian-neutral-400');
tab.classList.add('border-atlassian-blue-600', 'text-atlassian-blue-600');
contents.forEach(content => {
content.classList.add('hidden');
});
document.getElementById(`tab-${target}`).classList.remove('hidden');
});
});
</script>
</body>
</html>