diff --git a/GNUmakefile b/GNUmakefile
index 306eaf19baf..64a044be0c2 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -22,6 +22,7 @@ Blender Convenience Targets
    * developer:     Enable faster builds, error checking and tests, recommended for developers.
    * ninja:         Use ninja build tool for faster builds.
    * ccache:        Use ccache for faster rebuilds.
+   * mblender:      Applies mechanical Blender patches
 
    Note: when passing in multiple targets their order is not important.
    So for a fast build you can for e.g. run 'make lite ccache ninja'.
@@ -575,6 +576,9 @@ format: .FORCE
 	@$(PYTHON) tools/utils_maintenance/autopep8_format_paths.py --autopep8-command="$(AUTOPEP8)" $(PATHS)
 
 
+mblender: .FORCE
+	@$(PYTHON) ./build_files/utils/apply_mblender_patches.py
+
 # -----------------------------------------------------------------------------
 # Documentation
 #
diff --git a/build_files/utils/apply_mblender_patches.py b/build_files/utils/apply_mblender_patches.py
new file mode 100644
index 00000000000..eb73220fe01
--- /dev/null
+++ b/build_files/utils/apply_mblender_patches.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python3
+# 
+# Mechanical Blender
+
+"""
+"make mblender" for applying mblender patches on current source.
+"""
+
+import argparse
+import sys
+import os
+
+import make_utils
+from make_utils import call
+
+
+MB_0001 = "https://projects.blender.org/JaumeBellet/mblender/raw/branch/mb-0001-operator-repeat/diff/mb-0001-operator-repeat.diff"
+
+def parse_arguments() -> argparse.Namespace:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--git-command", default="git")
+    parser.add_argument("--wget-command", default="wget")
+    return parser.parse_args()
+
+
+args = parse_arguments()
+git_command = args.git_command
+wget_command = args.wget_command
+
+tmp_file = "/tmp/mblender.patch"
+
+if make_utils.command_missing(git_command):
+        sys.stderr.write("git not found, can't checkout test files\n")
+        sys.exit(1)
+
+if make_utils.command_missing(wget_command):
+        sys.stderr.write("wget not found, used for downloading patches\n")
+        sys.exit(1)
+
+
+if __name__ == "__main__":
+	call([wget_command, MB_0001, "-O", tmp_file])
+	call([git_command, "apply", tmp_file])
