Skip to main content

Model Context Protocol (MCP)

Unizo offers an MCP server that integrates file storage platforms with any LLM provider supporting the MCP protocol. This enables your AI agent to perform repository operations across GitHub, GitLab, Bitbucket, and Azure DevOps via a single MCP server.

Supported Tools & Use Cases

The following tools are available in the File storage MCP Server:

Tool NameDescription
storage_list_connectorsGet list of available storage services
storage_list_integrationsGet integrations for a specific storage service
storage_list_drivesBrowse available drives with pagination
storage_get_drive_detailsRetrieve comprehensive drive information
storage_list_foldersBrowse and search folders with pagination
storage_get_folder_detailsRetrieve detailed folder information
storage_create_folderCreate a new folder
storage_update_folderUpdate folder properties
storage_delete_folderDelete a folder
storage_list_filesBrowse and search files with pagination
storage_get_file_detailsRetrieve comprehensive file information
storage_create_fileCreate a new file
storage_update_fileUpdate file content
storage_delete_fileDelete a file
storage_list_usersBrowse storage users with pagination
storage_get_user_detailsRetrieve user information
storage_list_groupsBrowse storage groups with pagination
storage_get_group_detailsRetrieve group information
storage_list_versionsList file version history
storage_get_version_detailsRetrieve specific version information
storage_list_permissionsList file permissions
storage_get_permission_detailsRetrieve permission details
storage_add_permissionAdd file permission
storage_delete_permissionRemove file permission
storage_list_commentsList file comments
storage_get_comment_detailsRetrieve comment information
storage_create_commentCreate a new comment
storage_update_commentUpdate comment content
storage_delete_commentDelete a comment

Tool Reference

Service Discovery Tools

storage_list_connectors

  • Description: Get list of available storage services
  • Parameters:
    • None
  • Returns: List of available storage services (e.g., Google Drive, OneDrive, Dropbox, Box)
  • Example Response:
[
{ "name": "googledrive" },
{ "name": "onedrive" },
{ "name": "dropbox" },
{ "name": "box" }
]

storage_list_integrations

  • Description: Get integrations for a specific storage service
  • Parameters:
    • service (string, required): Name of the service (e.g., "googledrive", "onedrive")
  • Returns: List of integrations available for the specified service
  • Example Response:
[
{
"id": "integration-123",
"name": "Company Google Drive"
},
{
"id": "integration-456",
"name": "Department OneDrive"
}
]

Drive Management Tools

storage_list_drives

  • Description: Browse available drives with pagination and sorting
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • offset (integer, optional): Number of items to skip (default: 0)
    • limit (integer, optional): Maximum number of items to return (default: 20, max: 100)
    • sort (string, optional): Sort criteria (e.g., 'name,-createdDateTime')
  • Returns: Paginated list of drives
  • Example Response:
{
"status": "success",
"message": "Retrieved 3 drives",
"data": {
"drives": [
{
"id": "drive-123",
"name": "My Drive",
"driveUrl": "https://drive.google.com/drive/my-drive",
"changeLog": {
"createdDateTime": "2024-01-15T10:30:00Z",
"lastUpdatedDateTime": "2024-09-02T08:00:00Z"
}
}
],
"pagination": {
"total": 3,
"offset": 0,
"limit": 20
},
"total_count": 3
}
}

storage_get_drive_details

  • Description: Get detailed information about a specific drive
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • drive_id (string, required): Unique identifier of the drive
  • Returns: Comprehensive drive information
  • Example Response:
{
"status": "success",
"message": "Retrieved drive details for drive-123",
"data": {
"drive": {
"id": "drive-123",
"name": "My Drive",
"driveUrl": "https://drive.google.com/drive/my-drive",
"changeLog": {
"createdDateTime": "2024-01-15T10:30:00Z",
"lastUpdatedDateTime": "2024-09-02T08:00:00Z",
"createdBy": {
"id": "user-123",
"firstName": "John",
"lastName": "Doe"
}
}
},
"drive_id": "drive-123"
}
}

Folder Management Tools

storage_list_folders

  • Description: Browse and search folders with pagination and sorting
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • offset (integer, optional): Number of items to skip (default: 0)
    • limit (integer, optional): Maximum number of items to return (default: 20, max: 100)
    • sort (string, optional): Sort criteria (e.g., 'name,-lastUpdatedDateTime')
  • Returns: Paginated list of folders
  • Example Response:
{
"status": "success",
"message": "Retrieved 15 folders",
"data": {
"folders": [
{
"id": "folder-123",
"name": "Project Documents",
"description": "All project related files",
"size": "2.5GB",
"mimeType": "application/vnd.google-apps.folder",
"folderUrl": "https://drive.google.com/drive/folders/folder-123",
"parents": ["root"],
"changeLog": {
"createdDateTime": "2024-03-10T14:20:00Z",
"lastUpdatedDateTime": "2024-09-01T11:15:00Z"
}
}
],
"pagination": {
"total": 15,
"offset": 0,
"limit": 20
},
"total_count": 15
}
}

storage_get_folder_details

  • Description: Get detailed information about a specific folder
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • folder_id (string, required): Unique identifier of the folder
  • Returns: Comprehensive folder information
  • Example Response:
{
"status": "success",
"message": "Retrieved folder details for folder-123",
"data": {
"folder": {
"id": "folder-123",
"name": "Project Documents",
"description": "All project related files",
"size": "2.5GB",
"mimeType": "application/vnd.google-apps.folder",
"folderUrl": "https://drive.google.com/drive/folders/folder-123",
"parents": ["root"],
"changeLog": {
"createdDateTime": "2024-03-10T14:20:00Z",
"lastUpdatedDateTime": "2024-09-01T11:15:00Z",
"createdBy": {
"id": "user-456",
"firstName": "Jane",
"lastName": "Smith"
},
"lastUpdatedBy": {
"id": "user-123",
"firstName": "John",
"lastName": "Doe"
}
}
},
"folder_id": "folder-123"
}
}

storage_create_folder

  • Description: Create a new folder
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • name (string, required): Folder name
    • description (string, optional): Folder description
    • size (string, optional): Folder size
    • mime_type (string, optional): MIME type
    • folder_url (string, optional): Folder URL
    • parents (array[string], optional): Parent folder IDs
  • Returns: Created folder information
  • Example Response:
{
"status": "success",
"message": "Folder created successfully",
"data": {
"id": "folder-789",
"name": "New Project",
"description": "Project documentation",
"folderUrl": "https://drive.google.com/drive/folders/folder-789",
"parents": ["folder-123"],
"changeLog": {
"createdDateTime": "2024-09-15T10:30:00Z"
}
}
}

storage_update_folder

  • Description: Update an existing folder
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • folder_id (string, required): Unique identifier of the folder
    • name (string, optional): New folder name
    • description (string, optional): New folder description
    • size (string, optional): Updated size
    • folder_url (string, optional): Updated folder URL
  • Returns: Updated folder information
  • Example Response:
{
"status": "success",
"message": "Folder folder-123 updated successfully",
"data": {
"id": "folder-123",
"name": "Updated Project Name",
"description": "Updated description",
"changeLog": {
"lastUpdatedDateTime": "2024-09-15T11:00:00Z"
}
}
}

storage_delete_folder

  • Description: Delete a folder
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • folder_id (string, required): Unique identifier of the folder to delete
  • Returns: Deletion confirmation
  • Example Response:
{
"status": "success",
"message": "Folder folder-123 deleted successfully",
"data": {
"id": "folder-123",
"name": "Old Project"
}
}

File Management Tools

storage_list_files

  • Description: Browse and search files with pagination and sorting
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • offset (integer, optional): Number of items to skip (default: 0)
    • limit (integer, optional): Maximum number of items to return (default: 20, max: 100)
    • sort (string, optional): Sort criteria (e.g., 'name,-lastUpdatedDateTime')
  • Returns: Paginated list of files
  • Example Response:
{
"status": "success",
"message": "Retrieved 42 files",
"data": {
"files": [
{
"id": "file-123",
"name": "Project_Plan.docx",
"description": "Q4 project planning document",
"size": "1.2MB",
"mimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"fileUrl": "https://drive.google.com/file/d/file-123/view",
"parents": ["folder-456"],
"changeLog": {
"createdDateTime": "2024-08-01T09:00:00Z",
"lastUpdatedDateTime": "2024-09-10T15:45:00Z"
}
}
],
"pagination": {
"total": 42,
"offset": 0,
"limit": 20
},
"total_count": 42
}
}

storage_get_file_details

  • Description: Get detailed information about a specific file
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file
  • Returns: Comprehensive file information
  • Example Response:
{
"status": "success",
"message": "Retrieved file details for file-123",
"data": {
"file": {
"id": "file-123",
"name": "Project_Plan.docx",
"description": "Q4 project planning document",
"size": "1.2MB",
"mimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"fileUrl": "https://drive.google.com/file/d/file-123/view",
"parents": ["folder-456"],
"changeLog": {
"createdDateTime": "2024-08-01T09:00:00Z",
"lastUpdatedDateTime": "2024-09-10T15:45:00Z",
"createdBy": {
"id": "user-789",
"firstName": "Alice",
"lastName": "Johnson"
},
"lastUpdatedBy": {
"id": "user-123",
"firstName": "John",
"lastName": "Doe"
}
}
},
"file_id": "file-123"
}
}

storage_create_file

  • Description: Create a new file
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • name (string, required): File name
    • description (string, optional): File description
    • size (string, optional): File size
    • mime_type (string, optional): MIME type
    • file_url (string, optional): File URL
    • parents (array[string], optional): Parent folder IDs
  • Returns: Created file information
  • Example Response:
{
"status": "success",
"message": "File created successfully",
"data": {
"id": "file-999",
"name": "meeting_notes.txt",
"description": "Team meeting notes",
"size": "4KB",
"mimeType": "text/plain",
"fileUrl": "https://drive.google.com/file/d/file-999/view",
"parents": ["folder-123"],
"changeLog": {
"createdDateTime": "2024-09-15T11:00:00Z"
}
}
}

storage_update_file

  • Description: Update an existing file
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file
    • content (string, optional): New file content
  • Returns: Updated file information
  • Example Response:
{
"status": "success",
"message": "File file-123 updated successfully",
"data": {
"id": "file-123",
"name": "Project_Plan.docx",
"changeLog": {
"lastUpdatedDateTime": "2024-09-15T12:00:00Z"
}
}
}

storage_delete_file

  • Description: Delete a file
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file to delete
  • Returns: Deletion confirmation
  • Example Response:
{
"status": "success",
"message": "File file-123 deleted successfully",
"data": {
"id": "file-123",
"name": "old_document.pdf"
}
}

User Management Tools

storage_list_users

  • Description: Browse storage users with pagination and sorting
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • offset (integer, optional): Number of items to skip (default: 0)
    • limit (integer, optional): Maximum number of items to return (default: 20, max: 100)
    • sort (string, optional): Sort criteria (e.g., 'name,-createdDateTime')
  • Returns: Paginated list of users
  • Example Response:
{
"status": "success",
"message": "Retrieved 8 users",
"data": {
"users": [
{
"id": "user-123",
"name": "John Doe",
"emailAddress": "john.doe@company.com",
"status": "ACTIVE",
"isAdmin": true,
"changeLog": {
"createdDateTime": "2024-01-10T08:00:00Z"
}
}
],
"pagination": {
"total": 8,
"offset": 0,
"limit": 20
},
"total_count": 8
}
}

storage_get_user_details

  • Description: Get detailed information about a specific user
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • user_id (string, required): Unique identifier of the user
  • Returns: Comprehensive user information
  • Example Response:
{
"status": "success",
"message": "Retrieved user details for user-123",
"data": {
"user": {
"id": "user-123",
"name": "John Doe",
"emailAddress": "john.doe@company.com",
"status": "ACTIVE",
"isAdmin": true,
"changeLog": {
"createdDateTime": "2024-01-10T08:00:00Z",
"lastUpdatedDateTime": "2024-09-01T10:00:00Z"
}
},
"user_id": "user-123"
}
}

Group Management Tools

storage_list_groups

  • Description: Browse storage groups with pagination and sorting
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • offset (integer, optional): Number of items to skip (default: 0)
    • limit (integer, optional): Maximum number of items to return (default: 20, max: 100)
    • sort (string, optional): Sort criteria (e.g., 'name,-membersCount')
  • Returns: Paginated list of groups
  • Example Response:
{
"status": "success",
"message": "Retrieved 5 groups",
"data": {
"groups": [
{
"id": "group-123",
"name": "Engineering Team",
"description": "All engineering staff",
"emailAddress": "engineering@company.com",
"membersCount": 25,
"changeLog": {
"createdDateTime": "2024-02-01T10:00:00Z"
}
}
],
"pagination": {
"total": 5,
"offset": 0,
"limit": 20
},
"total_count": 5
}
}

storage_get_group_details

  • Description: Get detailed information about a specific group
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • group_id (string, required): Unique identifier of the group
  • Returns: Comprehensive group information
  • Example Response:
{
"status": "success",
"message": "Retrieved group details for group-123",
"data": {
"group": {
"id": "group-123",
"name": "Engineering Team",
"description": "All engineering staff",
"emailAddress": "engineering@company.com",
"membersCount": 25,
"changeLog": {
"createdDateTime": "2024-02-01T10:00:00Z",
"lastUpdatedDateTime": "2024-09-05T14:30:00Z"
}
},
"group_id": "group-123"
}
}

Version Management Tools

storage_list_versions

  • Description: List version history for a file
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file
    • offset (integer, optional): Number of items to skip (default: 0)
    • limit (integer, optional): Maximum number of items to return (default: 20, max: 100)
    • sort (string, optional): Sort criteria (e.g., '-createdDateTime')
  • Returns: Paginated list of file versions
  • Example Response:
{
"status": "success",
"message": "Retrieved 7 versions",
"data": {
"versions": [
{
"id": "version-123",
"username": "john.doe@company.com",
"size": "1.3MB",
"mimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"changeLog": {
"createdDateTime": "2024-09-10T15:45:00Z",
"createdBy": {
"id": "user-123",
"firstName": "John",
"lastName": "Doe"
}
}
}
],
"pagination": {
"total": 7,
"offset": 0,
"limit": 20
},
"total_count": 7
}
}

storage_get_version_details

  • Description: Get detailed information about a specific file version
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file
    • version_id (string, required): Unique identifier of the version
  • Returns: Comprehensive version information
  • Example Response:
{
"status": "success",
"message": "Retrieved version details for version-123",
"data": {
"version": {
"id": "version-123",
"username": "john.doe@company.com",
"size": "1.3MB",
"mimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"changeLog": {
"createdDateTime": "2024-09-10T15:45:00Z",
"createdBy": {
"id": "user-123",
"firstName": "John",
"lastName": "Doe"
}
}
},
"version_id": "version-123"
}
}

Permission Management Tools

storage_list_permissions

  • Description: List permissions for a file
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file
    • offset (integer, optional): Number of items to skip (default: 0)
    • limit (integer, optional): Maximum number of items to return (default: 20, max: 100)
    • sort (string, optional): Sort criteria (e.g., 'userRole,-createdDateTime')
  • Returns: Paginated list of file permissions
  • Example Response:
{
"status": "success",
"message": "Retrieved 4 permissions",
"data": {
"permissions": [
{
"id": "permission-123",
"userRole": "editor",
"userType": "user",
"emailAddress": "jane.smith@company.com",
"changeLog": {
"createdDateTime": "2024-08-15T09:30:00Z"
}
}
],
"pagination": {
"total": 4,
"offset": 0,
"limit": 20
},
"total_count": 4
}
}

storage_get_permission_details

  • Description: Get detailed information about a specific permission
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file
    • permission_id (string, required): Unique identifier of the permission
  • Returns: Comprehensive permission information
  • Example Response:
{
"status": "success",
"message": "Retrieved permission details for permission-123",
"data": {
"permission": {
"id": "permission-123",
"userRole": "editor",
"userType": "user",
"emailAddress": "jane.smith@company.com",
"changeLog": {
"createdDateTime": "2024-08-15T09:30:00Z",
"lastUpdatedDateTime": "2024-09-01T11:00:00Z"
}
},
"permission_id": "permission-123"
}
}

storage_add_permission

  • Description: Add a new permission to a file
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file
    • user_role (string, required): User role
      • Valid values: viewer, commenter, editor, owner
    • user_type (string, required): User type
      • Valid values: user, group, domain, anyone
    • email_address (string, required): Email address of the user or group
  • Returns: Created permission information
  • Example Response:
{
"status": "success",
"message": "Permission added successfully",
"data": {
"id": "permission-456",
"userRole": "editor",
"userType": "user",
"emailAddress": "bob.wilson@company.com",
"changeLog": {
"createdDateTime": "2024-09-15T12:00:00Z"
}
}
}

storage_delete_permission

  • Description: Remove a permission from a file
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file
    • permission_id (string, required): Unique identifier of the permission to delete
  • Returns: Deletion confirmation
  • Example Response:
{
"status": "success",
"message": "Permission permission-123 deleted successfully",
"data": {
"id": "permission-123",
"emailAddress": "old.user@company.com"
}
}

Comment Management Tools

storage_list_comments

  • Description: List comments on a file
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file
    • offset (integer, optional): Number of items to skip (default: 0)
    • limit (integer, optional): Maximum number of items to return (default: 20, max: 100)
    • sort (string, optional): Sort criteria (e.g., '-createdDateTime')
  • Returns: Paginated list of comments
  • Example Response:
{
"status": "success",
"message": "Retrieved 12 comments",
"data": {
"comments": [
{
"id": "comment-123",
"content": "Please review the changes in section 3",
"username": "john.doe@company.com",
"changeLog": {
"createdDateTime": "2024-09-12T14:30:00Z",
"lastUpdatedDateTime": "2024-09-12T14:35:00Z"
}
}
],
"pagination": {
"total": 12,
"offset": 0,
"limit": 20
},
"total_count": 12
}
}

storage_get_comment_details

  • Description: Get detailed information about a specific comment
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file
    • comment_id (string, required): Unique identifier of the comment
  • Returns: Comprehensive comment information
  • Example Response:
{
"status": "success",
"message": "Retrieved comment details for comment-123",
"data": {
"comment": {
"id": "comment-123",
"content": "Please review the changes in section 3",
"username": "john.doe@company.com",
"changeLog": {
"createdDateTime": "2024-09-12T14:30:00Z",
"lastUpdatedDateTime": "2024-09-12T14:35:00Z",
"createdBy": {
"id": "user-123",
"firstName": "John",
"lastName": "Doe"
}
}
},
"comment_id": "comment-123"
}
}

storage_create_comment

  • Description: Create a new comment on a file
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file
    • content (string, required): Comment content
    • username (string, optional): Username of the commenter
  • Returns: Created comment information
  • Example Response:
{
"status": "success",
"message": "Comment created successfully",
"data": {
"id": "comment-789",
"content": "Looks good to me!",
"username": "jane.smith@company.com",
"changeLog": {
"createdDateTime": "2024-09-15T13:00:00Z"
}
}
}

storage_update_comment

  • Description: Update an existing comment
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file
    • comment_id (string, required): Unique identifier of the comment
    • content (string, optional): Updated comment content
    • username (string, optional): Updated username
  • Returns: Updated comment information
  • Example Response:
{
"status": "success",
"message": "Comment comment-123 updated successfully",
"data": {
"id": "comment-123",
"content": "Updated comment text",
"changeLog": {
"lastUpdatedDateTime": "2024-09-15T13:30:00Z"
}
}
}

storage_delete_comment

  • Description: Delete a comment from a file
  • Parameters:
    • integration_id (string, required): Unique identifier for the integration
    • file_id (string, required): Unique identifier of the file
    • comment_id (string, required): Unique identifier of the comment to delete
  • Returns: Deletion confirmation
  • Example Response:
{
"status": "success",
"message": "Comment comment-123 deleted successfully",
"data": {
"id": "comment-123",
"content": "Old comment text"
}
}

Installation

Prerequisites

  • A Unizo API key
  • An active File storage integration (GitHub, GitLab, Bitbucket, or Azure DevOps)
  • Node.js v20 or higher

MCP Configuration

Here is an example configuration for setting up the Unizo File storage MCP server:

{
"mcpServers": {
"unizo": {
"command": "npx",
"args": [
"mcp-remote",
"https://api.unizo.ai/mcp",
"--header",
"apikey:${UNIZO_API_KEY}",
"--header",
"x-mcp-scopes : storage"
],
"env": {
"UNIZO_API_KEY": "your_api_key"
}
}
}
}

Client Setup

For detailed setup instructions with specific AI clients:

Environment Variables

The following environment variables are required:

Error Handling

All tools return errors in a consistent format:

{
"error": {
"code": "REPOSITORY_NOT_FOUND",
"message": "Repository 'example/repo' not found"
}
}

Common error codes:

  • INTEGRATION_NOT_FOUND: Invalid integration ID
  • REPOSITORY_NOT_FOUND: Repository doesn't exist or no access
  • BRANCH_NOT_FOUND: Branch doesn't exist
  • FILE_NOT_FOUND: File path not found
  • RATE_LIMIT_EXCEEDED: API rate limit reached
  • UNAUTHORIZED: Invalid credentials or permissions