We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Acendas/bitbucket-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
"""Configuration tools for Bitbucket MCP Server."""
import os
import httpx
from bitbucket_mcp.server import mcp, load_config, save_config, CONFIG_FILE, BITBUCKET_API
@mcp.tool()
def setup_bitbucket(workspace: str, username: str, api_token: str) -> str:
"""
Configure Bitbucket credentials for the MCP server.
Args:
workspace: Bitbucket workspace slug (e.g., "myworkspace")
username: Your Atlassian account email (e.g., "user@example.com")
api_token: Atlassian API Token from https://id.atlassian.com/manage-profile/security/api-tokens
Returns:
Success or error message
"""
try:
auth = httpx.BasicAuth(username, api_token)
with httpx.Client() as client:
user_response = client.get(
f"{BITBUCKET_API}/user",
auth=auth,
timeout=30.0
)
if user_response.status_code == 401:
return "Error: Invalid credentials. Please check your email and API token."
ws_response = client.get(
f"{BITBUCKET_API}/workspaces/{workspace}",
auth=auth,
timeout=30.0
)
if ws_response.status_code == 404:
return f"Error: Workspace '{workspace}' not found or you don't have access to it."
elif ws_response.status_code == 403:
return f"Error: No permission to access workspace '{workspace}'."
elif ws_response.status_code != 200:
return f"Error: Failed to validate workspace. Status: {ws_response.status_code} - {ws_response.text}"
config = {
"workspace": workspace,
"username": username,
"token": api_token
}
save_config(config)
return f"Successfully configured Bitbucket for workspace '{workspace}'. Configuration saved to {CONFIG_FILE}"
except httpx.RequestError as e:
return f"Error: Failed to connect to Bitbucket API: {str(e)}"
except Exception as e:
return f"Error: {str(e)}"
@mcp.tool()
def get_config_status() -> dict:
"""
Check if Bitbucket is configured and return current status.
Returns:
Configuration status with workspace info
"""
config = load_config()
env_token = os.environ.get("BITBUCKET_API_TOKEN")
env_workspace = os.environ.get("BITBUCKET_WORKSPACE")
env_username = os.environ.get("BITBUCKET_USERNAME")
has_token = bool(config.get("token") or env_token)
has_username = bool(config.get("username") or env_username)
configured = has_token and has_username
workspace = config.get("workspace") or env_workspace
username = config.get("username") or env_username
return {
"configured": configured,
"workspace": workspace,
"username": username,
"config_file": str(CONFIG_FILE),
"source": "config_file" if config.get("token") else ("environment" if env_token else None)
}