> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pickcel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How do I connect ChatGPT or Claude to the Pickcel MCP server?

> Connect ChatGPT, Codex, Claude, or Claude Code to your Pickcel digital signage account with the Pickcel MCP server. Setup steps, tools, and example prompts.

The **Pickcel MCP server** exposes your Pickcel digital signage account to AI agents (ChatGPT, Codex, Claude, Gemini and any other client that speaks the [Model Context Protocol](https://modelcontextprotocol.io)) as a set of callable tools. Instead of clicking through the console, you can ask an agent in plain language to list your screens, generate a design, upload media, build a composition, schedule content, or push an urgent Quickplay.

<Note>
  The Pickcel MCP server is available on the **Business plan**. If **APIs** doesn't appear under **Settings**, your account isn't on the Business plan yet.
</Note>

## What you can do

Once connected, an agent working on your behalf can:

* **Upload** a new image or video straight into your media library from a local file
* Find your screens, media, layouts, compositions, templates, and schedules
* Create a layout, or reuse an existing one, and build a **composition** from your media
* Push an immediate **Quickplay** to one or more screens
* Create recurring daily **schedules** and assign them to screens
* Build **advanced schedules** that play only on specific dates
* Generate a signage **design** (a poster, greeting, or promo) and hand you an editor link to review it

<Info>
  It cannot delete anything yet. Deleting is planned for an upcoming release, so don't rely on it for anything destructive today.
</Info>

## Set up the Pickcel MCP server

<Steps>
  <Step title="Generate the API key or token">
    In the [Pickcel console](https://console.pickcel.com), open **Settings → APIs**, then click **Generate Token** under **Authentication Token**.

    <Frame>
      <img src="https://cdn.pickcel.com/images/pickcel-docs/api-integration/api-integration-03-documentation.LA3ElrEO-KNU.png" alt="API Documentation card with Open Documentation button in Pickcel Settings" />
    </Frame>

    Copy it immediately. You'll need it for the MCP connection command below, and once you close the page it's shown only in masked form.

    <Frame>
      <img src="https://cdn.pickcel.com/images/pickcel-docs/api-integration/api-integration-04-token.4tHjHSSWRVG4.png" alt="Authentication Token section showing a masked API token in Pickcel Settings" />
    </Frame>

    <Warning>
      Your token gives full access to your account. Keep it private. If you regenerate it, the old token stops working immediately, so update it in your AI app too.
    </Warning>
  </Step>

  <Step title="Add Pickcel to your AI app">
    <Tabs>
      <Tab title="ChatGPT">
        In the ChatGPT app, open **Settings → Plugins**, select the **MCPs** tab, and click **Add → Connect to a custom MCP**.

        1. **Name:** `Pickcel-Digital-Signage`
        2. **Type:** **Streamable HTTP**
        3. **URL:** `https://signage.pickcel.com/v5.1/mcp`
        4. Under **Headers**, add:
           * **Key:** `Authorization`
           * **Value:** `Bearer <token>`
        5. Click **Save**.

        <Frame>
          <img src="https://cdn.pickcel.com/images/pickcel-docs/pickcel-mcp/pickcel-mcp-08-chatgpt-custom-mcp.KD4sjzU8sNiP.png" alt="Connect to a custom MCP form in ChatGPT with the Pickcel name, Streamable HTTP type, URL, and Authorization header" />
        </Frame>
      </Tab>

      <Tab title="Claude.ai app">
        In the Claude app (web or desktop), open **Settings → Connectors** and click **Add**.

        <Frame>
          <img src="https://cdn.pickcel.com/images/pickcel-docs/pickcel-mcp/pickcel-mcp-01-connectors.oHE2xszggTbA.png" alt="Connectors page in Claude settings with the Add button" />
        </Frame>

        Enter the name `Pickcel-Digital-Signage` and the URL `https://signage.pickcel.com/v5.1/mcp`, then click **Continue**.

        <Frame>
          <img src="https://cdn.pickcel.com/images/pickcel-docs/pickcel-mcp/pickcel-mcp-02-add-connector.Ai_e1BdKFmrB.png" alt="Add custom connector dialog with the Pickcel-Digital-Signage name and server URL" />
        </Frame>

        Under **Authentication**, select **No sign-in**. Under **Request headers**, choose `authorization` and enter `Bearer <token>` as the value, then click **Add**.

        <Frame>
          <img src="https://cdn.pickcel.com/images/pickcel-docs/pickcel-mcp/pickcel-mcp-03-auth-headers.wXDEvQCTChI3.png" alt="No sign-in authentication selected and an authorization request header added" />
        </Frame>

        Click **Connect**.

        <Frame>
          <img src="https://cdn.pickcel.com/images/pickcel-docs/pickcel-mcp/pickcel-mcp-04-connect.MPXatuVI1STD.png" alt="Pickcel-Digital-Signage connector page with the Connect button" />
        </Frame>

        Under **Tool permissions**, choose when Claude can use Pickcel's tools. Every tool starts on **Needs approval**. Change all tools at once from the dropdown, or set each tool individually.

        <Frame>
          <img src="https://cdn.pickcel.com/images/pickcel-docs/pickcel-mcp/pickcel-mcp-06-permission-options.5NurEeyIZNwD.png" alt="Permission dropdown with Always allow, Needs approval, Blocked, and Custom options" />
        </Frame>

        <Note>
          On a **Team** or **Enterprise** plan, an organization owner must add the connector before members can use it.
        </Note>
      </Tab>

      <Tab title="Claude Code (CLI)">
        Run this in a terminal, replacing `<token>` with the token you copied:

        ```bash theme={null}
        claude mcp add --transport http --scope user pickcel-digital-signage \
          https://signage.pickcel.com/v5.1/mcp \
          --header "Authorization: Bearer <token>"
        ```
      </Tab>

      <Tab title="Codex CLI">
        Codex reads the token from an environment variable. Set it to the token you copied, without the `Bearer ` prefix. Add the line to your shell profile (for example `~/.zshrc`) so it's set in every terminal:

        ```bash theme={null}
        export PICKCEL_API_TOKEN="<token>"
        ```

        Then register the server:

        ```bash theme={null}
        codex mcp add pickcel-digital-signage \
          --url https://signage.pickcel.com/v5.1/mcp \
          --bearer-token-env-var PICKCEL_API_TOKEN
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Verify the connection">
    <Tabs>
      <Tab title="ChatGPT">
        In **Settings → Plugins → MCPs**, `pickcel-digital-signage` shows under **Servers** with its toggle on.

        <Frame>
          <img src="https://cdn.pickcel.com/images/pickcel-docs/pickcel-mcp/pickcel-mcp-09-chatgpt-mcp-list._XWotkL3xzyI.png" alt="MCPs tab in ChatGPT settings with pickcel-digital-signage enabled" />
        </Frame>
      </Tab>

      <Tab title="Claude.ai app">
        In **Settings → Connectors**, `Pickcel-Digital-Signage` shows a checkmark under **Status**.

        <Frame>
          <img src="https://cdn.pickcel.com/images/pickcel-docs/pickcel-mcp/pickcel-mcp-07-connected.Fyt-A4OFc7jJ.png" alt="Pickcel-Digital-Signage listed as a connected custom connector in Claude" />
        </Frame>
      </Tab>

      <Tab title="Claude Code (CLI)">
        Start `claude` and run `/mcp`. `pickcel-digital-signage` should show as connected.
      </Tab>

      <Tab title="Codex CLI">
        Start `codex` and run `/mcp`. `pickcel-digital-signage` should show as connected, with its tools.

        `codex mcp list` only confirms the server is saved. It shows the server as enabled even when the token is missing or wrong.
      </Tab>
    </Tabs>
  </Step>

  <Step title="Start prompting">
    Ask in plain language, for example *"List my screens"* or *"Build a composition from my recent media."* See [Example prompts](#example-prompts) for more.

    <Warning>
      In the ChatGPT app, use Pickcel from **Codex**, not ChatGPT. Switch to **Codex** from the menu at the top left before you start prompting.
    </Warning>

    For example, this prompt in Codex generated an image, built a composition from it, and scheduled it for weekends:

    <Frame>
      <img src="https://cdn.pickcel.com/images/pickcel-docs/pickcel-mcp/pickcel-mcp-10-codex-mode.xvTZg3seb7rG.png" alt="Codex selected in the ChatGPT app, with a prompt that generated an image, built a composition, and scheduled it" />
    </Frame>

    The new composition in the Pickcel console:

    <Frame>
      <img src="https://cdn.pickcel.com/images/pickcel-docs/pickcel-mcp/pickcel-mcp-11-result-composition.uCr84e69lvzv.png" alt="Happy Weekend composition created by the agent in the Pickcel console" />
    </Frame>

    And its weekend schedule:

    <Frame>
      <img src="https://cdn.pickcel.com/images/pickcel-docs/pickcel-mcp/pickcel-mcp-12-result-schedule.x2mR7g-BBpR8.png" alt="Happy Weekend advanced schedule playing every Saturday and Sunday in the Pickcel Schedule View" />
    </Frame>
  </Step>
</Steps>

## Example prompts

Fill in the bracketed values and paste the prompt into your agent.

<AccordionGroup>
  <Accordion title="Generate an image and play it on a screen" icon="image">
    ```text theme={null}
    Generate an image of [description], upload it to my media library, build a
    composition on the [layout name/orientation] layout using it, and Quickplay
    it on [screen name].
    ```

    Needs an agent that can generate images itself. Tested end to end in Codex.
  </Accordion>

  <Accordion title="Build a composition" icon="clapperboard">
    ```text theme={null}
    List my layouts, then build a composition on the [N]-zone [landscape/portrait]
    one. Loop [media names] at [X] seconds each in [zone name], and show
    [image name] in [zone name].
    ```
  </Accordion>

  <Accordion title="Play something right now" icon="bolt">
    ```text theme={null}
    Play composition '[name]' on [screen name] today from [start time] to
    [end time].
    ```
  </Accordion>

  <Accordion title="Daily rotation" icon="rotate">
    ```text theme={null}
    Create a daily schedule that plays [content A] from [time]-[time] and
    [content B] from [time]-[time], and assign it to [screen name].
    ```
  </Accordion>

  <Accordion title="Play on specific dates" icon="calendar-days">
    ```text theme={null}
    Schedule '[composition name]' to play on [date]-[date] and [date]-[date],
    mornings [time]-[time] and evenings [time]-[time].
    ```
  </Accordion>

  <Accordion title="Move a screen to another schedule" icon="right-left">
    ```text theme={null}
    Move [screen name] from schedule '[A]' to schedule '[B]'.
    ```
  </Accordion>

  <Accordion title="Generate a design" icon="wand-magic-sparkles">
    ```text theme={null}
    Create a [portrait/landscape] [greeting/promo/announcement] design for
    [occasion/offer], brand colour [hex], saying "[exact words]".
    ```

    Give the exact wording up front. The agent won't invent prices, dates, or offers.
  </Accordion>

  <Accordion title="Upload media" icon="cloud-arrow-up">
    ```text theme={null}
    Upload [file path] to my media library[, in folder '[folder name]'].
    ```
  </Accordion>
</AccordionGroup>

## Available tools

Your agent picks the right tools on its own. You don't need to name them in your prompts.

| Area                       | Tool                         | What it does                                             |
| :------------------------- | :--------------------------- | :------------------------------------------------------- |
| **Screens & media**        | `list_screens`               | List the screens in your account                         |
|                            | `list_media`                 | Find images, videos, and PDFs in your media library      |
|                            | `begin_media_upload`         | Start uploading a new image or video                     |
|                            | `save_media`                 | Finish an upload and add the file to your media library  |
| **Layouts & compositions** | `list_layouts`               | Browse Pickcel's default layouts and your saved layouts  |
|                            | `get_layout`                 | Read the zones in a layout                               |
|                            | `create_layout`              | Save a new layout                                        |
|                            | `list_compositions`          | Find existing compositions                               |
|                            | `create_composition`         | Build a composition from a layout and your media         |
| **Templates & designs**    | `list_templates`             | Browse published design templates                        |
|                            | `get_template`               | Get one template                                         |
|                            | `use_template`               | Create a media file from a template                      |
|                            | `get_design_guide`           | Read the rules for creating a design                     |
|                            | `get_design_template`        | Read a template's canvas so it can be adapted            |
|                            | `validate_design`            | Check a design for problems before saving it             |
|                            | `create_design`              | Save a new design and return an editor link              |
|                            | `get_design`                 | Read a saved design                                      |
|                            | `update_design`              | Save a new version of a design                           |
| **Scheduling & playback**  | `list_day_partitions`        | Find Day Sequences (reusable time-slot plans)            |
|                            | `create_day_partition`       | Create a Day Sequence                                    |
|                            | `update_day_partition`       | Edit a Day Sequence                                      |
|                            | `list_schedules`             | Find active, upcoming, or expired schedules              |
|                            | `create_schedule`            | Schedule Day Sequences over a date range                 |
|                            | `update_schedule`            | Change a schedule's dates, content, or screens           |
|                            | `assign_schedule_to_screens` | Choose which screens play a schedule                     |
|                            | `push_quick_play`            | Play a composition on screens right away, for a set time |

## Good to know

* **Your account only.** The agent can only see and change content in the account your token belongs to.
* **One schedule per screen.** Assigning a schedule to a screen replaces the schedule it was playing.
* **Quickplay takes over.** It interrupts whatever the selected screens are playing until its time window ends.
* **Shared Day Sequences.** Editing a Day Sequence changes every schedule that uses it.
* **Uploads need file access.** The agent must be able to read the file, whether it's on your computer or an image it generated. Some hosted agents can't.
* **Designs are text, shapes, and colour.** Generated designs don't include photos. Add images in the editor using the link the agent returns.

## Troubleshooting

<AccordionGroup>
  <Accordion title="The server doesn't connect or shows an auth error" icon="plug-circle-xmark">
    * Check the token was copied in full, with no extra spaces.
    * Confirm your account is on a **Business plan**.
    * In the Claude app, make sure **Authentication** is set to **No sign-in**.
    * In ChatGPT, make sure **Type** is set to **Streamable HTTP**, and that you're prompting from **Codex**, not ChatGPT.
    * In the Codex CLI, if Codex reports `MCP startup failed`:
      * `Environment variable PICKCEL_API_TOKEN ... is not set`: set the variable in the terminal you start `codex` from.
      * `Auth required`: the token is wrong, or it includes the `Bearer ` prefix. Set `PICKCEL_API_TOKEN` to the token only.
    * Still failing? Generate a new token and reconnect with it. See the next entry.
  </Accordion>

  <Accordion title="I regenerated my token and the connection stopped working" icon="key">
    A new token replaces the old one immediately, so any AI app still using the old token loses its connection. Update each one:

    **Claude.ai app:** a connector's saved header can't be edited. Delete the `Pickcel-Digital-Signage` connector in **Settings → Connectors**, then add it again with the new token.

    **Claude Code:** `claude mcp add` doesn't overwrite an existing server. Remove it, then add it again:

    ```bash theme={null}
    claude mcp remove pickcel-digital-signage --scope user
    claude mcp add --transport http --scope user pickcel-digital-signage \
      https://signage.pickcel.com/v5.1/mcp \
      --header "Authorization: Bearer <new-token>"
    ```

    A Claude Code session that's already open keeps the old connection. Run `/mcp` in it, or start a new session.

    **Codex CLI:** update `PICKCEL_API_TOKEN` in your shell profile, then open a new terminal and start `codex` again.
  </Accordion>

  <Accordion title="The agent says Templates aren't enabled" icon="lock">
    Templates is a paid module that isn't enabled on your account. The agent can still create designs from scratch.
  </Accordion>

  <Accordion title="A schedule isn't playing on the dates I expected" icon="calendar-xmark">
    Open the schedule in the console's [Advanced Schedule](/schedule-and-publish/v5/advanced-scheduler) calendar to see exactly which dates it covers. If they're wrong, ask the agent to rebuild it as an advanced schedule for those dates.
  </Accordion>

  <Accordion title="A composition looks wrong on the screen" icon="tv">
    If it plays black, blank, or at the wrong size, contact Pickcel support instead of asking the agent to recreate it.
  </Accordion>

  <Accordion title="A Quickplay won't stop" icon="hand">
    The agent can't stop a Quickplay. Delete it from the console under **Publish → Quickplay**, or wait for its time window to end. See [Quickplay](/schedule-and-publish/v5/quick-play#managing-quickplays).
  </Accordion>
</AccordionGroup>

## Related guides

<CardGroup cols={2}>
  <Card title="API Integration" icon="plug" href="/settings/api-integration">
    Manage the API token your agent connects with.
  </Card>

  <Card title="Compositions" icon="palette" href="/compositions/compositions">
    Layouts, zones, and compositions in the console.
  </Card>

  <Card title="Quickplay" icon="bolt" href="/schedule-and-publish/v5/quick-play">
    View or delete Quickplays, including ones your agent started.
  </Card>

  <Card title="Advanced Schedule" icon="calendar-days" href="/schedule-and-publish/v5/advanced-scheduler">
    Review schedules your agent created in the calendar view.
  </Card>
</CardGroup>
