1. Conduid
  2. Developer Tools
  3. RobSpectre/mvf1
MCP server · Developer Tools

RobSpectre/mvf1

A Python package and command line interface to control video players for MultiViewer For F1, the best way to watch Formula 1.

Unclaimed MIT devtools
54Fair

Scored 5 days ago · breakdown

About RobSpectre/mvf1

RobSpectre/mvf1 is an MCP server published by RobSpectre in the Developer Tools category: a Python package and command line interface to control video players for MultiViewer For F1, the best way to watch Formula 1.

The repository has 19 stars and 4 forks, with the last commit a month ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/RobSpectre/mvf1

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about RobSpectre/mvf1

Powered by Claude · Grounded in docs

I know everything about RobSpectre/mvf1. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 6 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • !Dependencies pinnedNo lockfile. Installs can pull different code over time.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

2.0.1Add the ability to connect to remote MultiViewer instance. · 5 Jul 2025Added new `--url` parameter to the `mcp` command to run an MCP server for a remote host running MultiViewer.
2.0.02.0.0 - Model Context Protocol (MCP) Server · 4 Jun 2025MCP Server New to this release is a Model Context Protocol (MCP) server for MultiViewer enabling AI agents to control your setup. To launch the MCP server, simply `mvf1-cli mcp`. To add to an agentic framework like PydanticAI, use their…
1.1.21.1.2 · 23 Feb 2024Added ability to `set_driver_header_mode` for driver feeds - users can choose between NONE, DRIVER_HEADER that shows the driver team an TLA, or OBC_LIVE_TIMING for current data.
v1.0.5v1.0.5 · 27 Feb 2023First release of this Python module and command line interface for MultiViewer for F1. Featured in this release: Command line interface for controlling MultiViewer for F1. Great for integration peripherals like the Elgato Streamdeck with…

README


mvf1


A Python package, command line interface and MCP server to control video players for MultiViewer_, the best way to watch Formula 1.

.. image:: https://dl.circleci.com/status-badge/img/gh/RobSpectre/mvf1/tree/main.svg?style=svg :target: https://dl.circleci.com/status-badge/redirect/gh/RobSpectre/mvf1/tree/main

.. image:: https://codecov.io/gh/RobSpectre/mvf1/branch/main/graph/badge.svg?token=L5N96KXN2V :target: https://codecov.io/gh/RobSpectre/mvf1

.. image:: https://readthedocs.org/projects/mvf1/badge/?version=latest :target: https://mvf1.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status

Table of Contents

.. contents:: :local: :depth: 1 :backlinks: none

Features

  • Command line interface for controlling MultiViewer. Useful for integrations with control interfaces like StreamDeck
  • Pythonic interface for controlling MultiViewer_. No GraphQL needed!
  • MCP server for controlling MultiViewer_ - perfect for controlling the broadcast for with AI agents.
  • Type hints_
  • Full documentation_
  • Test coverage_
  • black_ Praise the Dark Lord

Installation

The latest version can be installed via pip_.

.. code-block:: bash

$ pip install mvf1

Quickstart

Command Line

.. code-block:: bash

$ mvf1-cli --help

Model Context Protocol (MCP) Server

.. code-block:: bash

$ mvf1-cli mcp 

To use in an AI agent, use your framework's affordance for a stdio MCP server.

Here is an example with PydanticAI.

.. code-block:: python

from pydantic_ai import Agent
from pydantic_ai.mcp import MCPServerStdio

server = MCPServerStdio(  
    'mvf1-cli',
    args=[
        'mcp'
    ]
)
agent = Agent('openai:gpt-4o', mcp_servers=[server])

Library

Displaying all players

.. code-block:: python

>>> from mvf1 import MultiViewerForF1
>>> remote = MultiViewerForF1()
>>> remote.players
[6: INTERNATIONAL, 7: PER]

Pause all players

.. code-block:: python

>>> from mvf1 import MultiViewerForF1
>>> remote = MultiViewerForF1()
>>> for player in remote.players:
>>>     player.mute()
{'data': {'playerSetMuted': True}}
{'data': {'playerSetMuted': True}}

Retrieve specific player

.. code-block:: python

>>> from mvf1 import MultiViewerForF1
>>> remote = MultiViewerForF1()
>>> player = remote.player(6)
>>> player.state
{'ts': 1677168293.21, 'paused': False, 'muted': True, 'volume': 100, 'live': False, 'currentTime': 10.002025, 'interpolatedCurrentTime': 363.656025}

Switch stream of player to data channel

.. code-block:: python

>>> from mvf1 import MultiViewerForF1
>>> remote = MultiViewerForF1()
>>> player = remote.player(6)
>>> player.switch_stream('DATA')
{'data': {'playerCreate': '12'}}

Synchronize all players to specific player

.. code-block:: python

>>> from mvf1 import MultiViewerForF1
>>> remote = MultiViewerForF1()
>>> player = remote.player(6)
>>> player.sync()
{'data': {'playerSync': True}}

Synchornize all players to player streaming broadcast commentary

.. code-block:: python

>>> from mvf1 import MultiViewerForF1
>>> remote = MultiViewerForF1()
>>> remote.player_sync_to_commentary()
{'data': {'playerSync': True}}

Synchronize open players to live timing

.. code-block:: python

>>> from mvf1 import MultiViewerForF1
>>> remote = MultiViewerForF1()
>>> remote.player_sync_to_live_timing()
{'data': {'meeting_id': '1279', 'session_id': '11234', 'synced_players': [...]}}

The same operation is available to MCP clients as player_sync_to_live_timing. It uses the current live-timing clock, session start, and each feed's signed offset to seek matching open players to the first open player's session.

Development

Hacking

To hack on the project, clone the GitHub repo_:

.. code-block:: bash

$ git clone https://github.com/RobSpectre/mvf1

Then install in a virtualenv_.

.. code-block:: bash

$ pip install -e ./

Test

The project uses tox_ for tests. Simply run from project root

.. code-block:: bash

$ tox

Meta

  • Written by Rob Spectre_.
  • Released under MIT License_.
  • Software is as is - no warranty expressed or implied, diggity.
  • This package is not developed or maintained by MultiViewer_ or Formula 1 TV_.
  • Shout out to the excellent MultiViewer_ team! This app absolutely changed how I enjoy Formula 1.
  • 🏎️ Go Weeyums! 🏎️

.. _MultiViewer: https://multiviewer.app/ .. _pip: https://multiviewer.app/ .. _GitHub Repo: https://github.com/RobSpectre/mvf1 .. _virtualenv: https://multiviewer.app/ .. _Rob Spectre: https://brooklynhacker.com .. _MIT License: http://opensource.org/licenses/MIT .. _tox: https://tox.wiki/en/latest/ .. _black: https://black.readthedocs.io/en/stable/ .. _StreamDeck: https://www.elgato.com/en/welcome-to-stream-deck .. _type hints: https://docs.python.org/3/library/typing.html .. _Full documentation: https://mvf1.readthedocs.io/en/latest/ .. _Test coverage: https://app.codecov.io/gh/RobSpectre/mvf1 .. _Formula 1 TV: https://f1tv.formula1.com/

README fetched from the repository 6 days ago. The original is authoritative.

Questions

About RobSpectre/mvf1

How do I install RobSpectre/mvf1?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is RobSpectre/mvf1 safe to use with an AI agent?

Its trust score is 54 out of 100 (fair). It passes 4 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is RobSpectre/mvf1 still maintained?

Yes — the last commit was a month ago. The repository has 19 stars and 4 forks and 1 open issues.