Developer Docs
MediaLab MCP Server
Give Claude direct access to MediaLab. Search, upload, download, organize, and share your media from a conversation, no scripts, no raw API calls.
What it is
The MediaLab MCP server enables Claude to securely connect to MediaLab using the MCP, translating natural language into structured MediaLab API calls.
MediaLab hosts it for you at https://mcp.medialabapps.eu, just connect and go, nothing to install or run yourself. There are two ways to connect:
- Claude connector (claude.ai, Claude Desktop and the Claude mobile apps): add MediaLab as a custom connector. Every user signs in with their own MediaLab account, no tokens to copy.
- Claude Code and other MCP clients: connect with your own MediaLab private token.
No credentials are stored on the server, every request runs in the security context of the user who authenticated it.
What Claude can do
The MCP server exposes MediaLab as a set of tools Claude can call directly on your behalf, grouped by what they let Claude do:
- Search & browse - quick name search, structured search using your metadata template fields, and browsing file, folder, and folder-contents details.
- Metadata - read the full metadata template, look up or add option values for select-lookup fields, and read or update a file's metadata values.
- Folders - create new folders and inspect folder details and contents.
- Upload - import a file from a URL. Uploading a file from your computer only works when you run the MCP server yourself; over the hosted server, Claude gives you the folder's link or an upload link instead.
- Download - get a signed, time-limited download URL for a file's source or a specific rendered format.
- Comments & reactions - read and add review comments, including timecoded comments for video review, and add or remove emoji reactions.
- Share links - generate, update, and revoke public share links for files and folders, and generate upload-invite links for external collaborators.
- Branding kits - list your branding kits so the right one can be applied to a share link.
The full list of tools and their parameters is in the tool reference below.
Connect Claude (web, Desktop, mobile)
An administrator adds a Claude cloud connection in MediaLab under Settings > Cloud storage > Cloud connections. The Set up in Claude window shows three values to add to Claude as a custom connector under Settings > Connectors:
- MCP server URL -
https://mcp.medialabapps.eu/<your-medialab-address>/mcp, for examplehttps://mcp.medialabapps.eu/your-company.medialab.app/mcp. - OAuth client ID
- OAuth client secret
Each user then clicks Connect, signs in to MediaLab and allows access. Claude only gets the rights that user has in MediaLab. See Connecting MediaLab to Claude for the full steps.
The Claude integration has to be enabled for your MediaLab account; contact MediaLab support. Claude connects from Anthropic's servers, so your MediaLab instance must be reachable from the internet.
Connect Claude Code
You'll need:
- Claude Code installed.
- A MediaLab private token, generate one under Settings > Profile > API access.
- Your MediaLab instance URL, e.g.
https://your-company.medialab.app.
claude mcp add --transport http medialab https://mcp.medialabapps.eu/mcp \
--header "Authorization: Bearer <your-medialab-private-token>" \
--header "X-MediaLab-URL: https://your-medialab-instance" \
--scope user
Run this once from a terminal with Claude Code installed. --scope user makes it available in every project on your machine.
Example prompts
Once connected, just ask Claude in plain language - no need to know the tool or parameter names.
| Example prompt | What happens |
|---|---|
| "Find my MediaLab file called "File 1.mp4"" | Claude calls search_medialab_assets with that query and returns a direct link to the matching file. |
| "Search MediaLab for a folder named "Demo"" | Claude sets include_files to false so only matching folders come back. |
| "Open File 1.mp4 in MediaLab" | Claude will open this file in the browser. |
| "Upload highlights.mp4 to my Marketing folder and generate a share link with download permissions" | Claude uploads the file, then generates a share link with the source format downloadable and returns it. |
| "Search for files with attribution "Jane Doe" and download them to my Downloads folder" | Claude looks up the attribution metadata field, finds matching files, and fetches each one's download URL to save locally. |
| "Leave a comment on file 1234 at 00:01:23 saying the color grading needs work" | Claude adds a timecoded review comment to the file, useful for video review workflows. |
| "Create a "Q1 Campaign" folder under Marketing and set up an upload link so our agency can send us files" | Claude creates the folder, then generates an upload-invite link scoped to it. |
| "What metadata fields do we have for videos, and what are the valid values for "Usage Rights"?" | Claude lists the client's metadata fields and looks up the option values for that field. |
Security
- Claude connector: each user signs in with their own MediaLab account through OAuth. Claude asks for basic, user info, download, upload, manage, share and admin settings access, but only gets the rights the user has in MediaLab. Deleting the Claude connection in MediaLab signs everyone out of Claude at once.
- Claude Code: each connection authenticates with your own MediaLab private token, sent as a Bearer header on every request. Your private token grants access to your account, so use a token limited to the scopes you need, treat it like a password and never share it.
- Nothing is stored server-side, the MCP server holds no credentials of its own. Its logs contain request paths and status codes, not your search terms or file contents.
Tool reference
Every tool the MCP server exposes, with its parameters. Claude picks the right tool and fills in the parameters from your request, so you normally never need these names yourself.
Each entry in the filters parameter of search_medialab_files is an object with a key (a filter key from list_medialab_search_filters, e.g. title or meta_my_field), a value (a string, or an array of strings for list, nlist and range) and a match_strategy (eq, neq, like, nlike, lt, lte, gt, gte, range, list, nlist, null or nnull).
search_medialab_assets
Search MediaLab assets by name. Returns files and folders matching the query.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | yes | Search term (minimum 2 characters) |
include_files | boolean | no | Include files in results. Default: true. |
include_folders | boolean | no | Include folders in results. Default: true. |
list_medialab_search_filters
List the fields available for advanced/metadata search (search_medialab_files) on files or folders, including client-specific metadata template fields and their supported match strategies. Call this before search_medialab_files when filtering on a field you don't already know the key for.
| Parameter | Type | Required | Description |
|---|---|---|---|
type | files | folders | yes | Whether to list filters for files or for folders. |
search_medialab_files
Search for files using structured filters (including metadata template fields), or list files without filters, e.g. the most recent ones with order_by date_added and order_dir DESC. Use list_medialab_search_filters first to discover available filter keys and match strategies. Date fields only support range with [from, to]; relative values work, e.g. ["-7 days", "now"].
| Parameter | Type | Required | Description |
|---|---|---|---|
filters | array | no | Filters to apply. Omit to list all files. |
filter_merge_strategy | and | or | no | Combine filters with AND or OR. Default: "and". |
limit | number | no | Max number of results (max 500). Default: 25. |
offset | number | no | Offset for pagination. Default: 0. |
order_by | title | date_added | no | Field to order results by. Default: "title". |
order_dir | ASC | DESC | no | Order direction. Default: "DESC". |
get_medialab_file_info
Get detailed information about a single MediaLab file by its file_id, including media metadata, QC/approval status, and flags (processing, deleted, locked, etc).
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | number | yes | The file's ID. |
get_medialab_file_meta
Get a file's title/description/reference plus all of its metadata template field values.
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | number | yes | The file's ID. |
update_medialab_file_meta
Update a file's title/description/reference and/or its metadata template field values (by field short name, single string values only - not for multi-value/array or JSON-type fields). Requires the 'manage' scope, and the account must either have file-edit permission or be the file's uploader. Fails on read-only files unless the client allows an override for the account's level.
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | number | yes | The file's ID. |
title | string | no | New title. |
description | string | no | New description. |
reference | string | no | New reference. |
meta | record | no | Metadata template field values to set, keyed by short name (see list_medialab_meta_fields) |
get_medialab_folder_info
Get detailed information about a single MediaLab folder by its folder_id.
| Parameter | Type | Required | Description |
|---|---|---|---|
folder_id | number | yes | The folder's ID (0 for root) |
list_medialab_folder_contents
List the files and/or subfolders directly inside a MediaLab folder.
| Parameter | Type | Required | Description |
|---|---|---|---|
folder_id | number | yes | The folder's ID (0 for root) |
include_files | boolean | no | Include files in results. Default: true. |
include_folders | boolean | no | Include subfolders in results. Default: true. |
create_medialab_folder
Create a new subfolder inside a MediaLab folder. Requires the 'manage' scope and 'create' permission on the account used.
| Parameter | Type | Required | Description |
|---|---|---|---|
parent_folder_id | number | yes | The parent folder's ID (0 to create at the root) |
name | string | yes | Name for the new folder. |
reference | string | no | Optional external reference to store on the folder. |
upload_medialab_file
Upload a file to MediaLab, either from a remote URL (source_url) or, when running locally, from a file path on disk (local_path). Exactly one of source_url or local_path must be given. Over the hosted server only source_url, folder_id, folder_path and title are available.
| Parameter | Type | Required | Description |
|---|---|---|---|
source_url | string | no | URL to fetch and import the file from. |
local_path | string | no | Absolute path to a local file to upload. Only available when the MCP server runs over stdio. |
folder_id | number | no | Target folder ID. Required when using source_url. |
folder_path | string | no | Folder path to auto-create/select a subfolder under folder_id (requires 'create' rights) |
title | string | no | Title for the new file (defaults to the filename) |
description | string | no | Description for the new file (local_path uploads only) |
reference | string | no | External reference to store on the new file (local_path uploads only) |
meta | record | no | Metadata template fields to set, keyed by short name (local_path uploads only) |
download_medialab_file
Get a signed, time-limited download URL for a MediaLab file's source, or for a specific rendered format (e.g. a transcode or preview image) if format_name is given. Requires download rights.
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | number | yes | The file's ID. |
format_name | string | no | Specific format to download (e.g. 'mp4_high'). Omit to download the original source. |
list_medialab_file_comments
List review comments (including timecoded comments and threaded replies) on a MediaLab file. Requires the media comments add-on to be enabled for the client.
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | number | yes | The file's ID. |
add_medialab_file_comment
Add a review comment to a MediaLab file, optionally at a specific timecode (video review) or as a reply to an existing comment. Requires the media comments add-on to be enabled for the client.
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | number | yes | The file's ID. |
comment | string | yes | Comment text. |
timecode_in | string | no | Timecode for the comment, format HH:MM:SS or HH:MM:SS:FF. Omit for a general (non-timecoded) comment. |
comment_id | number | no | ID of an existing comment to reply to. |
get_medialab_meta_template
Get the full metadata template: all groups and fields configured for this client, including field types and required/searchable/multiple flags. Use this to understand what metadata is available before searching or setting metadata on a file.
No parameters.
list_medialab_meta_fields
List all metadata fields configured for this client as a flat list.
No parameters.
get_medialab_meta_field
Get detailed information about a single metadata field by its short name.
| Parameter | Type | Required | Description |
|---|---|---|---|
field_name | string | yes | The metadata field's short name. |
get_medialab_meta_field_options
Get the available options (value list) for a select/selectlookup metadata field. Use this to find valid values before filtering or setting that field.
| Parameter | Type | Required | Description |
|---|---|---|---|
field_name | string | yes | The metadata field's short name. |
add_medialab_meta_field_option
Add a new option value to a select-lookup metadata field. Only works for fields of type 'selectlookup' - plain 'select' field options are managed through the meta template itself and aren't supported here (use get_medialab_meta_field to check a field's type first). Requires the 'manage' scope, and the account's user level must meet the client-configured minimum for managing lookup options.
| Parameter | Type | Required | Description |
|---|---|---|---|
field_name | string | yes | The metadata field's short name. |
label | string | yes | Label for the new option. |
list_medialab_file_reactions
List emoji reactions on a MediaLab file. Requires the media reactions add-on to be enabled for the client.
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | number | yes | The file's ID. |
add_medialab_file_reaction
Add an emoji reaction to a MediaLab file. Requires the media reactions add-on to be enabled for the client.
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | number | yes | The file's ID. |
reaction | string | yes | The reaction emoji. |
remove_medialab_file_reaction
Remove one of your own emoji reactions from a MediaLab file.
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | number | yes | The file's ID. |
reaction | string | yes | The reaction emoji to remove. |
create_medialab_file_share_link
Generate a unique, personal (revocable) public share link for one or more MediaLab files. Requires 'share' permissions for the client.
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | number | yes | The file's ID. |
files | array | no | Additional file IDs to include in the same share link. |
download | array | no | Downloadable formats to allow. |
expires | number | no | Days until the link expires. |
notification | boolean | no | Notify when the link is viewed. |
is_short_url | boolean | no | Use a short URL (client default if omitted) |
max_views | number | no | Max number of times this link can be viewed (0/omit for unlimited) |
reference | string | no | Reference name shown in settings. |
share_password | string | no | Password required to unlock the share link. |
create_medialab_folder_share_link
Generate a unique, personal (revocable) public share link for a MediaLab folder. Requires 'share' permissions for the client and the 'share_objects' add-on.
| Parameter | Type | Required | Description |
|---|---|---|---|
folder_id | number | yes | The folder's ID. |
is_recursive | boolean | no | Allow access to media in subfolders too. |
download | array | no | Downloadable formats to allow. |
expires | number | no | Days until the link expires. |
notification | boolean | no | Notify when the link is viewed. |
is_short_url | boolean | no | Use a short URL (client default if omitted) |
max_views | number | no | Max number of times this link can be viewed (0/omit for unlimited) |
reference | string | no | Reference name shown in settings. |
share_password | string | no | Password required to unlock the share link. |
create_medialab_upload_link
Generate a personal upload link (optionally emailed) that lets external recipients upload files directly into a specific MediaLab folder. Requires the 'upload' scope, and the account used must have been granted the 'Share Upload' (upload_invite) permission flag by an administrator.
| Parameter | Type | Required | Description |
|---|---|---|---|
folder_id | number | yes | Target folder for uploaded files. |
to | array | yes | Recipient email address(es) |
subject | string | no | Email subject. |
message | string | no | Personal message included in the email. |
expires | number | no | Days until the link expires. |
nof_files | number | no | Max number of files that may be uploaded (0/omit for unlimited) |
max_size | number | no | Max total filesize in bytes that may be uploaded (0/omit for unlimited) |
notification | boolean | no | Notify when files are uploaded. |
is_short_url | boolean | no | Use a short URL (client default if omitted) |
send_email | boolean | no | Actually send the email? If false, only the link(s) are generated. Default: true. |
allow_folders | boolean | no | Allow recipients to create subfolders (requires 'create' permissions) |
share_password | string | no | Password required to unlock the upload link. |
is_auto_home_folder | boolean | no | Auto-organize uploads into a home folder per recipient. |
email_language | en | nl | no | Language of the invite email. |
update_medialab_share_link
Update settings on an existing MediaLab share link (file, folder, or playlist), by the share link ID returned when it was created. Only the parameters given are changed. Requires 'share' permissions for the client.
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | yes | The share link's ID (returned when it was created) |
expires | string | no | New expiry, e.g. '2026-01-01' or 'now'. Omit to leave unchanged. |
max_views | number | no | Max number of views (0 for unlimited) |
share_password | string | no | New password to unlock the link. Pass an empty string to remove the current password. |
download | array | no | Downloadable formats to allow. |
is_recursive | boolean | no | Whether a folder share link includes subfolders. |
share_player_branding_logo | boolean | no | Add/remove the player watermark image (requires the branding watermark add-on) |
brand_id | string | no | Brand to apply (requires the branding kits add-on). Pass an empty string to remove the current brand. |
revoke_medialab_share_link
Immediately stop a MediaLab share link from working, by setting its expiry to now. This is the documented way to revoke an active link - the underlying delete endpoint only accepts links that have already expired. Requires 'share' permissions for the client.
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | yes | The share link's ID (returned when it was created) |
list_medialab_brands
List the branding kits (brands) configured for this client, with their IDs. Use the returned brand_id with the brand_id parameter on create_medialab_file_share_link, create_medialab_folder_share_link, or update_medialab_share_link to apply a branding kit to a share link. Requires admin privileges and the branding add-on.
No parameters.
get_medialab_brand
Get detailed information about a single branding kit (brand) by its ID. Requires admin privileges and the branding add-on.
| Parameter | Type | Required | Description |
|---|---|---|---|
brand_id | string | yes | The brand's ID. |