This documentation is for an unreleased version of MPF!

This is the developer documentation for MPF 0.50, which is the “dev” (next) release of MPF that is a work-in-progress. Use the “Read the Docs” link in the lower left corner to view the developer docs for the version of MPF you’re using.

How MPF installs itself

This guide explains what happens when MPF is installed.

MPF contains a setup.py file in the root of the MPF repository. This is the file that’s called by pip when MPF is installed. (You can also install MPF without using pip by running python3 setup.py from the root folder.)


MPF requires Python 3.4 or newer. In our installation instructions, we also recommend that users install/update the following Python packages to their latest versions:

  • pip
  • setuptools (for Linux & Mac)
  • Cython 0.24.1 (for Linux & Mac)

The additional packages for Linux & Mac are used because MPF-MC is actually compiled on built on those platforms. For Windows we have pre-built wheels, so compiling is not necessary.

MPF has the following additional dependencies which are specified in the setup.py file and automatically installed when MPF is installed.

  • ruamel.yaml >=0.10,<0.11: Used for reading & writing YAML files.
  • pyserial >= 3.2.0: Used for serial communication with several types of hardware
  • pyserial-asyncio >= 0.3: Also used for serial communication
  • typing Used for type-checking & type hinting.

Note that some of these dependencies will install their own dependencies.

The setup.py file also specifies a console_scripts entry point called mpf. This is what lets the user type mpf from the command environment to launch MPF.