Back to System Ops

Dacast MCP

The Dacast MCP (Model Context Protocol) Server integrates Dacast’s comprehensive video streaming and hosting platform with your AI-powered applications. Once configured, you can upload and manage video content, control live streams, review analytics, and access nearly all of Dacast’s broadcasting infrastructure through natural-language prompts in supported AI clients.

Last updated: 1/27/2026

README

# Dacast MCP Server

This repository provides a **Model Context Protocol (MCP) server** that exposes the Dacast video platform API as a set of structured MCP tools. It lets MCP-compatible clients (such as Claude Desktop) manage Dacast resources — channels, playlists, images, simulcast destinations, and more — through natural language.

---

## Features

- **StdIO-based MCP server**
  - Speaks the [Model Context Protocol](https://modelcontextprotocol.io/) over standard input/output.
  - Designed to be launched by an MCP client process and kept running as a child process.

- **Dacast API integration**
  - Channel management: create, list, get, update.
  - Playlist management: create, list, get, update, set playlist content.
  - Image management: thumbnails and splash images.
  - Simulcast destination management: create, get, delete.

---

## Installation

### Prerequisites

- **Go**: Go 1.24+ (earlier versions may work but are not guaranteed).
- **Dacast account and API key**: required to perform authenticated operations.

### MCP Client Configuration

JSON based MCP client configuration might look like:

```json
{
  "mcpServers": {
    "dacast": {
      "command": "go",
      "args": ["run", "github.com/Dacast-Inc/mcp-server-public@latest"],
      "env": {
        "DACAST_API_KEY": "DACAST API KEY HERE"
      }
    }
  }
}
```

## Architecture Overview

### High-level design

The server is a single Go binary that:

1. Starts an MCP stdio server.
2. Registers a set of tools grouped by Dacast domain (channels, playlists, images, simulcast).
3. For each incoming MCP `call_tool` request:
   - Binds and validates the tool arguments.
   - Constructs an HTTP request to the relevant Dacast REST endpoint using the internal `ApiClient`.
   - Forwards the request to Dacast with the appropriate authentication headers.
   - Returns the JSON response (and optionally a transformed, structured form) back to the MCP client.

Key packages:

- `main.go` – entrypoint that initializes the MCP server and registers tools.
- `pkg/apiclient/` – minimal HTTP client wrapper around the Dacast REST API.
- `pkg/tools/` – tool implementations grouped by domain:
  - `channel/` – channel-related operations.
  - `playlist/` – playlist-related operations.
  - `images/` – thumbnail and splash image operations.
  - `simulcast/` – simulcast destination operations.
- `pkg/tools/toolscommon/` – shared types, handlers and utilities for building tools.

### Tools → Dacast API mapping

Each tool under `pkg/tools/` corresponds to one or more Dacast API endpoints.

- **Channels** (`pkg/tools/channel/`)
  - `create_channel.go` – create a new channel.
  - `get_channel.go` – get channel details.
  - `update_channel.go` – update an existing channel.
  - `list_channel.go` – list all or filtered channels.

- **Playlists** (`pkg/tools/playlist/`)
  - `create_playlist.go` – create a new playlist.
  - `get_playlist.go` – get playlist details.
  - `update_playlist.go` – update an existing playlist.
  - `list_playlist.go` – list playlists.
  - `set_playlist_content.go` – set or update playlist content.

- **Images** (`pkg/tools/images/`)
  - `thumbnail.go` – manage channel/asset thumbnails.
  - `splash.go` – manage splash images.

- **Simulcast** (`pkg/tools/simulcast/`)
  - `create_simulcast_destination.go` – create a simulcast destination.
  - `get_simulcast_destination.go` – retrieve a simulcast destination.
  - `delete_simulcast_destination.go` – delete a simulcast destination.
---

## License

This project is licensed under the terms described in the [`LICENSE`](./LICENSE) file in this repository. Please review that file for the full text.

Installation

Add this MCP to your configuration:

{
  "mcpServers": {
    "dacast-mcp": {
      // See GitHub repository for configuration
    }
  }
}

See the GitHub repository for full installation instructions.