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 Name | Description |
|---|---|
storage_list_connectors | Get list of available storage services |
storage_list_integrations | Get integrations for a specific storage service |
storage_list_drives | Browse available drives with pagination |
storage_get_drive_details | Retrieve comprehensive drive information |
storage_list_folders | Browse and search folders with pagination |
storage_get_folder_details | Retrieve detailed folder information |
storage_create_folder | Create a new folder |
storage_update_folder | Update folder properties |
storage_delete_folder | Delete a folder |
storage_list_files | Browse and search files with pagination |
storage_get_file_details | Retrieve comprehensive file information |
storage_create_file | Create a new file |
storage_update_file | Update file content |
storage_delete_file | Delete a file |
storage_list_users | Browse storage users with pagination |
storage_get_user_details | Retrieve user information |
storage_list_groups | Browse storage groups with pagination |
storage_get_group_details | Retrieve group information |
storage_list_versions | List file version history |
storage_get_version_details | Retrieve specific version information |
storage_list_permissions | List file permissions |
storage_get_permission_details | Retrieve permission details |
storage_add_permission | Add file permission |
storage_delete_permission | Remove file permission |
storage_list_comments | List file comments |
storage_get_comment_details | Retrieve comment information |
storage_create_comment | Create a new comment |
storage_update_comment | Update comment content |
storage_delete_comment | Delete 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:
UNIZO_API_KEY: Your Unizo API key Your Unizo API key
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 IDREPOSITORY_NOT_FOUND: Repository doesn't exist or no accessBRANCH_NOT_FOUND: Branch doesn't existFILE_NOT_FOUND: File path not foundRATE_LIMIT_EXCEEDED: API rate limit reachedUNAUTHORIZED: Invalid credentials or permissions