Skip to main content
Glama
Kallows

MCP Bitbucket Python

by Kallows

bb_search_repositories

Search Bitbucket repositories by name, project key, language, or update date using Bitbucket's query syntax. Supports pagination and workspace-specific searches for efficient repository management.

Instructions

Search repositories in Bitbucket using Bitbucket's query syntax. Search by name (name ~ "pattern"), project key (project.key = "PROJ"), language (language = "python"), or dates (updated_on >= "2024-01-19"). NOTE: All dates must be in ISO 8601 format (YYYY-MM-DD). For searching files within repositories, use Bitbucket's code search in the web interface.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination
pagelenNoNumber of results per page (max 100)
queryYesSearch query (e.g., 'name ~ "test"' or 'project.key = "PROJ"')
workspaceNoWorkspace to search in (defaults to kallows)kallows

Implementation Reference

  • The handler function within handle_call_tool that executes the bb_search_repositories tool by querying the Bitbucket API with the provided search parameters, formatting and returning the repository results.
    elif name == "bb_search_repositories": workspace = arguments.get("workspace", "kallows") query = arguments.get("query") page = arguments.get("page", 1) pagelen = min(arguments.get("pagelen", 10), 100) # Cap at 100 url = f"https://api.bitbucket.org/2.0/repositories/{workspace}" params = { 'q': query, 'page': page, 'pagelen': pagelen } response = requests.get(url, params=params, auth=auth, headers=headers) if response.status_code == 200: repos = response.json() # Format the results nicely results = [] for repo in repos.get('values', []): repo_info = { 'name': repo.get('name'), 'full_name': repo.get('full_name'), 'description': repo.get('description', 'No description'), 'created_on': repo.get('created_on'), 'updated_on': repo.get('updated_on'), 'size': repo.get('size', 0), 'language': repo.get('language', 'Unknown'), 'has_wiki': repo.get('has_wiki', False), 'is_private': repo.get('is_private', True), 'url': repo.get('links', {}).get('html', {}).get('href', '') } results.append(repo_info) # Add pagination info pagination = { 'page': page, 'pagelen': pagelen, 'size': repos.get('size', 0), 'next': 'next' in repos.get('links', {}), 'previous': 'previous' in repos.get('links', {}) } return [types.TextContent( type="text", text=f"Found {len(results)} repositories:\n\n" + '\n\n'.join([ f"• {r['name']}\n" f" Description: {r['description']}\n" f" Language: {r['language']}\n" f" URL: {r['url']}" for r in results ]) + f"\n\nPage {pagination['page']} | " f"Total results: {pagination['size']} | " f"{'More results available' if pagination['next'] else 'End of results'}" )] else: return [types.TextContent( type="text", text=f"Failed to search repositories: {response.status_code}\n{format_permission_error(response.text)}", isError=True )]
  • The tool registration in handle_list_tools, defining the name, description, and input schema for bb_search_repositories.
    types.Tool( name="bb_search_repositories", description="Search repositories in Bitbucket using Bitbucket's query syntax. Search by name (name ~ \"pattern\"), project key (project.key = \"PROJ\"), language (language = \"python\"), or dates (updated_on >= \"2024-01-19\"). NOTE: All dates must be in ISO 8601 format (YYYY-MM-DD). For searching files within repositories, use Bitbucket's code search in the web interface.", inputSchema={ "type": "object", "properties": { "workspace": { "type": "string", "description": "Workspace to search in (defaults to kallows)", "default": "kallows" }, "query": { "type": "string", "description": "Search query (e.g., 'name ~ \"test\"' or 'project.key = \"PROJ\"')" }, "page": { "type": "integer", "description": "Page number for pagination", "default": 1 }, "pagelen": { "type": "integer", "description": "Number of results per page (max 100)", "default": 10 } }, "required": ["query"] } ),

Other Tools

Related Tools

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/Kallows/mcp-bitbucket'

If you have feedback or need assistance with the MCP directory API, please join our Discord server