{"id":20384869,"url":"https://github.com/screenly/cli","last_synced_at":"2026-03-02T17:18:52.482Z","repository":{"id":62692249,"uuid":"554099966","full_name":"Screenly/cli","owner":"Screenly","description":"Command Line Interface (CLI) and GitHub Actions workflow for Screenly.","archived":false,"fork":false,"pushed_at":"2025-02-04T20:42:55.000Z","size":1122,"stargazers_count":27,"open_issues_count":7,"forks_count":6,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-24T00:02:14.074Z","etag":null,"topics":["cli","command-line","command-line-tool","github-actions"],"latest_commit_sha":null,"homepage":"https://screenly.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Screenly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-19T08:49:09.000Z","updated_at":"2025-02-01T18:59:26.000Z","dependencies_parsed_at":"2024-02-29T11:53:01.107Z","dependency_job_id":"e500f122-5860-4123-8492-53bc8e5d5d66","html_url":"https://github.com/Screenly/cli","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Screenly%2Fcli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Screenly%2Fcli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Screenly%2Fcli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Screenly%2Fcli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Screenly","download_url":"https://codeload.github.com/Screenly/cli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248544860,"owners_count":21122045,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","command-line","command-line-tool","github-actions"],"created_at":"2024-11-15T02:30:14.761Z","updated_at":"2026-03-02T17:18:52.447Z","avatar_url":"https://github.com/Screenly.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![sbomified](https://sbomify.com/assets/images/logo/badge.svg)](https://app.sbomify.com/component/UUzAdk8ixV)\n[![Lint](https://github.com/Screenly/cli/actions/workflows/lint.yml/badge.svg)](https://github.com/Screenly/cli/actions/workflows/lint.yml)\n[![Rust](https://github.com/Screenly/cli/actions/workflows/rust.yml/badge.svg)](https://github.com/Screenly/cli/actions/workflows/rust.yml)\n[![Nix](https://github.com/Screenly/cli/actions/workflows/nix.yml/badge.svg)](https://github.com/Screenly/cli/actions/workflows/nix.yml)\n\n# Screenly Command Line Interface (CLI)\n\nThe Screenly CLI simplifies interactions with Screenly through your terminal, designed for both manual use and task automation.\n\n## Installation\n\n### From Releases\n\nDownload the latest release [here](https://github.com/Screenly/cli/releases/latest).\n\n### Homebrew (macOS only)\n\n```bash\n$ brew tap screenly/screenly-cli\n$ brew install screenly-cli\n```\n\n### Nix\n\n```bash\n$ nix-shell -p screenly-cli\n```\n\n### Docker\n\nFor other operating systems or Docker usage:\n\n```bash\n$ docker run --rm \\\n    -e API_TOKEN=YOUR_API_TOKEN \\\n    screenly/cli:latest help\n```\n\n## Building from Source\n\nTo build the Screenly CLI from source, ensure you have [Rust](https://www.rust-lang.org) installed:\n\n```bash\n$ cargo build --release\n```\n\n\u003e [!NOTE]\n\u003e If you're building from source in Ubuntu, make sure to install `build-essential`:\n\u003e ```bash\n\u003e sudo apt-get install -y build-essential\n\u003e ```\n\u003e\n\u003e Otherwise, you'll get the following error:\n\u003e ```\n\u003e error: linker `cc` not found\n\u003e ```\n\nThe `screenly` binary will be located in `target/release`.\n\nTo configure a non-production API server, set the `API_SERVER_NAME` environment variable:\n\n```bash\n$ API_SERVER_NAME=local cargo build --release\n```\n\n## Commands\n\nExplore available commands [here](https://developer.screenly.io/cli/#commands).\n\n## MCP Server (AI Assistant Integration)\n\nThe Screenly CLI includes a built-in [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server, enabling AI assistants like Claude, Cursor, and others to interact with your Screenly digital signage network.\n\n### Starting the MCP Server\n\n```bash\n$ screenly mcp\n```\n\nThe server communicates over stdio and exposes the full Screenly API as tools.\n\n### Available Tools\n\n| Category | Tools |\n|----------|-------|\n| **Screens** | `screen_list`, `screen_get` |\n| **Assets** | `asset_list`, `asset_get`, `asset_create`, `asset_update`, `asset_delete` |\n| **Asset Groups** | `asset_group_list`, `asset_group_create`, `asset_group_update`, `asset_group_delete` |\n| **Playlists** | `playlist_list`, `playlist_create`, `playlist_update`, `playlist_delete` |\n| **Playlist Items** | `playlist_item_list`, `playlist_item_create`, `playlist_item_update`, `playlist_item_delete` |\n| **Labels** | `label_list`, `label_create`, `label_update`, `label_delete`, `label_link_screen`, `label_unlink_screen`, `label_link_playlist`, `label_unlink_playlist` |\n| **Shared Playlists** | `shared_playlist_list`, `shared_playlist_create`, `shared_playlist_delete` |\n| **Edge Apps** | `edge_app_list`, `edge_app_list_settings`, `edge_app_list_instances` |\n\n### Configuration Examples\n\n#### Cursor / Claude Desktop\n\nAdd to your MCP configuration file:\n\n```json\n{\n  \"mcpServers\": {\n    \"screenly\": {\n      \"command\": \"screenly\",\n      \"args\": [\"mcp\"],\n      \"env\": {\n        \"API_TOKEN\": \"your-api-token-here\"\n      }\n    }\n  }\n}\n```\n\n#### Authentication\n\nThe MCP server uses the same authentication as the CLI:\n- Set the `API_TOKEN` environment variable, or\n- Run `screenly login` to store credentials in `~/.screenly`\n\n## GitHub Action\n\nIntegrate Screenly CLI into your GitHub workflows:\n\n### Inputs\n\n#### `screenly_api_token`\n\n**Required** Screenly API token for your team.\n\n#### `cli_commands`\n\n**Required** Command to execute (e.g., `screen list`).\n\n#### `cli_version`\n\nOptional CLI version override.\n\n### Example usage\n\n```yaml\nuses: screenly/cli@master\nwith:\n  screenly_api_token: ${{ secrets.SCREENLY_API_TOKEN }}\n  cli_commands: screen list\n```\n\n## Protocol Buffers (Protobuf) Generation\n\nGenerate `pb_signature.rs` from `signature.proto`:\n\n```bash\n$ cargo install protobuf-codegen\n$ protoc --rust_out . signature.proto\n$ mv signature.rs src/pb_signature.rs\n```\n\n## Release Process\n\nThis project follows [Semantic Versioning](https://semver.org/) (M.m.p = Major.minor.patch).\n\n1. **Prepare the release:**\n  - Create a release branch (e.g., `release-M.m.p`, like `release-1.0.6`).\n  - Update the version in `Cargo.toml`, `action.yml`, and `Dockerfile`\n  - Run `cargo build` to update `Cargo.lock` with the new version\n\n2. **Create and merge the pull request:**\n  - Create a pull request from the release branch to `master`\n  - Once approved, merge the pull request\n\n3. **Create the GitHub release:**\n  - Make sure that you're on the `master` branch and have pulled the latest changes\n  - Create a version tag (e.g., `vM.m.p`, like `v1.0.6`) and push it to GitHub by running:\n    ```bash\n    git tag vM.m.p\n    git push origin vM.m.p\n    ```\n  - The release workflow will detect the version tag and create the release automatically\n  - Add the release notes to the GitHub release description\n\n4. **Update Homebrew:**\n   - Update the [Homebrew repo](https://github.com/Screenly/homebrew-screenly-cli) with the latest version\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscreenly%2Fcli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscreenly%2Fcli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscreenly%2Fcli/lists"}