Skip to main content
Glama

MCP Server Box

MIT License
51
  • Apple
  • Linux
from typing import List, Union from box_ai_agents_toolkit import ( File, Folder, box_create_folder, box_delete_folder, box_folder_list_content, box_update_folder, ) from mcp.server.fastmcp import Context from box_tools_generic import get_box_client async def box_list_folder_content_by_folder_id( ctx: Context, folder_id: str, is_recursive: bool = False, ) -> dict: """ List the content of a folder in Box by its ID. Args: folder_id (str): The ID of the folder to list the content of. is_recursive (bool): Whether to list the content recursively. return: dict: The content of the folder in a json string format, including the "id", "name", "type", and "description". """ box_client = get_box_client(ctx) # check if file id isn't a string and convert to a string if not isinstance(folder_id, str): folder_id = str(folder_id) response: List[Union[File, Folder]] = box_folder_list_content( box_client, folder_id, is_recursive ) # Convert the response to a json string response = [ { "id": item.id, "name": item.name, "type": item.type, "description": item.description if hasattr(item, "description") else None, } for item in response ] return response # return json.dumps(response) async def box_manage_folder_tool( ctx: Context, action: str, folder_id: str = "", # Required for delete and update; empty means not provided name: str = "", # Required for create; empty means not provided parent_id: str = "", # Optional for create; empty means root description: str = "", # Optional for update recursive: bool = False, # Optional for delete ) -> str: """ Manage Box folders - create, delete, or update. Args: action (str): The action to perform: "create", "delete", or "update" folder_id (str | None): The ID of the folder (required for delete and update) name (str | None): The name for the folder (required for create, optional for update) parent_id (str | None): The ID of the parent folder (required for create, optional for update) Root folder is "0" or 0. description (str): Description for the folder (optional for update) recursive (bool): Whether to delete recursively (optional for delete) return: str: Result of the operation """ box_client = get_box_client(ctx) # Validate and normalize inputs if action.lower() not in ["create", "delete", "update"]: return f"Invalid action: {action}. Must be one of: create, delete, update." action = action.lower() # Convert IDs to strings if needed if folder_id is not None and not isinstance(folder_id, str): folder_id = str(folder_id) if parent_id is not None and not isinstance(parent_id, str): parent_id = str(parent_id) # Handle create action if action == "create": if not name: return "Error: name is required for create action" try: # Default to root folder ("0") if no parent_id provided parent_id_str = parent_id or "0" new_folder = box_create_folder( client=box_client, name=name, parent_id=parent_id_str ) return f"Folder created successfully. Folder ID: {new_folder.id}, Name: {new_folder.name}" except Exception as e: return f"Error creating folder: {str(e)}" # Handle delete action elif action == "delete": if not folder_id: return "Error: folder_id is required for delete action" try: box_delete_folder( client=box_client, folder_id=folder_id, recursive=recursive ) return f"Folder with ID {folder_id} deleted successfully" except Exception as e: return f"Error deleting folder: {str(e)}" # Handle update action elif action == "update": if not folder_id: return "Error: folder_id is required for update action" try: updated_folder = box_update_folder( client=box_client, folder_id=folder_id, name=name, description=description, parent_id=parent_id, ) return f"Folder updated successfully. Folder ID: {updated_folder.id}, Name: {updated_folder.name}" except Exception as e: return f"Error updating folder: {str(e)}"

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/box-community/mcp-server-box'

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