Installation
Prerequisites
- Python
3.13or higher - Box Platform app credentials (Client ID, Client Secret)
- Clone the repository:
- Install
uvif it’s not installed on your machine:
uv command gets picked up.
- Create and set up our project:
- Create a
.envfile in the root directory and fill your Box Platform app credentials:
Running Box MCP server locally
To start the Box MCP server, run the following command:Use Cursor as the Box MCP client
Prerequisites:- Download Cursor desktop app
- Open the Cursor app.
- Click the cog icon to open settings.
- Select
MCPwithin the Cursor Settings tab. - Click the
Add new global MCP serverbutton. This opens themcp.jsonfile. - Update the values with your local setup and paste the following JSON:
- Save and close the
mcp.jsonfile. - Restart Cursor if necessary.
- Use the
box_authorize_app_tooltool to start using Box MCP.
Use Claude as the Box MCP client
Prerequisites:- Download Claude for Desktop client
- Optionally, set up
codecommand for VS Code
- Edit your
claude_desktop_config.json.
Settings. Select the Developers tab and click Edit Config. This opens a folder window containing claude_desktop_config.json.
- Add the configuration:
- Restart Claude desktop app.
- Authenticate the Box MCP server using
box_authorize_app_tooltool.
Available tools
Authentication and Authorization
| Tool | Description | Parameters | Returns |
|---|---|---|---|
get_box_client | Helper function to get Box client from context |
| Box client instance |
box_who_am_i | Get the current user’s information |
| User information string |
box_authorize_app_tool | Authorize the Box application | None | Authorization status message |
Search and Navigation
| Tool | Description | Parameters | Returns |
|---|---|---|---|
box_search_tool | Search for files in Box |
| Newline-separated list of file names and IDs |
| Locate a folder by name | folder_name (str): Name of the folder | Folder ID and information |
box_list_folder_content_by_folder_id | List folder contents |
| Folder content in JSON format |
File Operations
| Tool | Description | Parameters | Returns |
|---|---|---|---|
box_read_tool | Read the text content of a Box file |
| File content |
box_upload_file_from_path_tool | Upload a file from local path |
| File details or error message |
box_upload_file_from_content_tool | Upload content as a file |
| Upload success message |
box_download_file_tool | Download a file from Box |
| File content or save confirmation |
get_file_content | Extract text content from a file |
| Text file content |
Folder Management
| Tool | Description | Parameters | Returns |
|---|---|---|---|
box_manage_folder_tool | Create, update, or delete folders |
| Status message with folder details |
Box AI
| Tool | Description | Parameters | Returns |
|---|---|---|---|
box_ask_ai_tool | Ask Box AI about a file |
| AI response |
box_ask_ai_tool_multi_file | Query Box AI using multiple files |
| AI-generated answer |
box_hubs_ask_ai_tool | Ask Box AI about a hub |
| AI response |
box_ai_extract_data | Extract data from a file using AI |
| Extracted data in JSON format |
Collaborations
| Tool | Description | Parameters | Returns |
|---|---|---|---|
box_collaboration_list_by_file_tool | List all collaborations on a specific file |
| List of collaborations in JSON format |
box_collaboration_list_by_folder_tool | List all collaborations on a specific folder |
| List of collaborations in JSON format |
box_collaboration_delete_tool | Delete a specific collaboration |
| Deletion confirmation |
box_collaboration_file_group_by_group_id_tool | Add a group as a collaborator to a file |
| Created collaboration details |
Groups
| Tool | Description | Parameters | Returns |
|---|---|---|---|
box_groups_search_tool | Search for groups by name (partial match) |
| List of matching groups in JSON format |
box_groups_list_members_tool | List all members of a specific group |
| List of group members in JSON format |
box_groups_list_by_user_tool | List all groups that a specific user belongs to |
| List of groups in JSON format |
Users
| Tool | Description | Parameters | Returns |
|---|---|---|---|
box_users_list_tool | List all users in the Box account |
| List of users in JSON format |
box_users_locate_by_name_tool | Locate a user by their name (exact match) |
| User details in JSON format |
box_users_locate_by_email_tool | Locate a user by their email address (exact match) |
| User details in JSON format |
box_users_search_by_name_or_email_tool | Search for users by name or email (partial match) |
| List of matching users in JSON format |
Box Shared Links
| Tool | Description | Parameters | Returns |
|---|---|---|---|
box_shared_link_file_get_tool | Get a shared link for a file |
| Shared link details in JSON format |
box_shared_link_file_create_or_update_tool | Create or update a shared link for a file |
| Created/updated shared link details in JSON format |
Box Tools Web Link
| Tool | Description | Parameters | Returns |
|---|---|---|---|
box_web_link_create_tool | Create a Box web link |
| Created web link details in JSON format |
box_web_link_get_by_id_tool | Get a Box web link by its ID |
| Web link details in JSON format |
box_web_link_update_by_id_tool | Update a Box web link by its ID |
| Updated web link details in JSON format |
Box Doc Gen
| Tool | Description | Parameters | Returns |
|---|---|---|---|
box_docgen_create_batch_tool | Generate documents using a template |
| Batch generation result |
box_docgen_get_job_tool | Fetch a Doc Gen job by ID | job_id (str): Job identifier | Job details in JSON |
box_docgen_list_jobs_tool | List all Doc Gen jobs |
| List of jobs in JSON |
box_docgen_list_jobs_by_batch_tool | List jobs in a specific batch |
| Batch jobs details |
box_docgen_template_create_tool | Mark a file as a template | file_id (str): File ID to mark | Template details |
box_docgen_template_list_tool | List all available templates |
| List of templates |
box_docgen_template_delete_tool | Remove template marking | template_id (str): Template identifier | Deletion confirmation |
box_docgen_template_get_by_id_tool | Get template details | template_id (str): Template identifier | Template details |
box_docgen_template_list_tags_tool | List template tags |
| List of tags |
box_docgen_template_list_jobs_tool | List jobs using a template |
| Job details |
Box Metadata
| Tool | Description | Parameters | Returns |
|---|---|---|---|
box_metadata_template_get_by_key_tool | Retrieves a metadata template by its key. | template_name (str): The key of the metadata template to retrieve. | The metadata template associated with the provided key. |
box_metadata_template_get_by_name_tool | Retrieve a metadata template by its name. | template_name (str): The name of the metadata template to retrieve. | The metadata template associated with the provided name. |
box_metadata_template_create_tool | Create a metadata template. |
| The created metadata template. |
box_metadata_set_instance_on_file_tool | Set a metadata instance on a file. |
| The metadata instance associated with the file. |
box_metadata_update_instance_on_file_tool | Update a metadata instance on a file. |
| The response from the Box API after updating the metadata. |
box_metadata_delete_instance_on_file_tool | Delete a metadata instance on a file. |
| The response from the Box API after deleting the metadata. |
Troubleshooting
In case of anError: spawn uv ENOENT on MacOS when running the MCP server with Claude Desktop, you can:
- Remove
uvand reinstall it with Homebrew:brew install uv. - Provide the full path to the
uvexecutable in your configuration:
