---
title: 'MediaLab MCP Server'
description: 'Connect Claude to MediaLab using the MCP. Setup, available tools with their parameters, and example prompts.'
url: https://www.medialab.co/developers/mcp
---

# MediaLab MCP Server

## 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:

1. **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.
2. **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:

1. **Search & browse** - quick name search, structured search using your metadata template fields, and browsing file, folder, and folder-contents details.
2. **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.
3. **Folders** - create new folders and inspect folder details and contents.
4. **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.
5. **Download** - get a signed, time-limited download URL for a file's source or a specific rendered format.
6. **Comments & reactions** - read and add review comments, including timecoded comments for video review, and add or remove emoji reactions.
7. **Share links** - generate, update, and revoke public share links for files and folders, and generate upload-invite links for external collaborators.
8. **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](#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:

1. **MCP server URL** - `https://mcp.medialabapps.eu/<your-medialab-address>/mcp`, for example `https://mcp.medialabapps.eu/your-company.medialab.app/mcp`.
2. **OAuth client ID**
3. **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](https://www.medialab.co/support/core/integrations/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:

1. [Claude Code](https://claude.com/product/claude-code) installed.
2. A MediaLab private token, generate one under Settings > Profile > API access.
3. Your MediaLab instance URL, e.g. `https://your-company.medialab.app`.

```bash
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

1. **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.
2. **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.
3. 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. |
