diff --git a/classes/obmc-xmlpatch.bbclass b/classes/obmc-xmlpatch.bbclass
new file mode 100644
index 0000000..9dc3750
--- /dev/null
+++ b/classes/obmc-xmlpatch.bbclass
@@ -0,0 +1,74 @@
+#This class applies patches to an XML file during do_patch().  The
+#patches themselves are specified in XML in a separate file that must
+#be in SRC_URI and end in .patch.xml.  The patch XML file must also
+#have a <targetFile> element that specifies the base name of the file
+#that needs to be patched.
+#
+#See patchxml.py for details on the XML patch format.
+#
+
+inherit pythonnative
+inherit obmc-phosphor-utils
+do_patch[depends] = "mrw-patch-native:do_populate_sysroot"
+
+
+def find_patch_files(d):
+    all_patches = listvar_to_list(d, 'SRC_URI')
+    xml_patches = filter(lambda x: x.endswith('.patch.xml') and
+                         x.startswith('file://'), all_patches)
+
+    return [x.lstrip('file://') for x in xml_patches]
+
+
+def apply_xml_patch(base_patch_name, d):
+    import xml.etree.ElementTree as et
+    import subprocess
+
+    patch_file = os.path.join(d.getVar("WORKDIR", True), base_patch_name)
+
+    if not os.path.exists(patch_file):
+        bb.fatal("Could not find patch file " + patch_file +
+                 " specified in SRC_URI")
+
+    patch_tree = et.parse(patch_file)
+    patch_root = patch_tree.getroot()
+    target_file_element = patch_root.find("targetFile")
+
+    if target_file_element is None:
+        bb.fatal("Could not find <targetFile> element in patch file "
+                 + patch_file)
+    else:
+        xml = target_file_element.text
+
+    xml = os.path.join(d.getVar("S", True), xml)
+
+    if not os.path.exists(xml):
+        bb.fatal("Could not find XML file to patch: " + xml)
+
+    print("Applying XML fixes found in " + patch_file + " to " + xml)
+
+    cmd = []
+    cmd.append(os.path.join(d.getVar("bindir", True), "obmc-mrw/patchxml.py"))
+    cmd.append("-x")
+    cmd.append(xml)
+    cmd.append("-p")
+    cmd.append(patch_file)
+    cmd.append("-o")
+    cmd.append(xml + ".patched")
+
+    try:
+        subprocess.check_call(cmd)
+    except subprocess.CalledProcessError as e:
+        bb.fatal("Failed patching XML:\n%s" % e.output)
+
+    os.rename(xml, xml + ".orig")
+    os.rename(xml + ".patched", xml)
+
+
+python xmlpatch_do_patch() {
+
+    for patch in find_patch_files(d):
+        apply_xml_patch(patch, d)
+}
+
+do_patch[postfuncs] += "xmlpatch_do_patch"
diff --git a/common/recipes-phosphor/mrw/mrw-native.bb b/common/recipes-phosphor/mrw/mrw-native.bb
index 3ce4c97..e06a682 100644
--- a/common/recipes-phosphor/mrw/mrw-native.bb
+++ b/common/recipes-phosphor/mrw/mrw-native.bb
@@ -5,6 +5,7 @@
 S = "${WORKDIR}/git"
 
 inherit obmc-phosphor-license
+inherit obmc-xmlpatch
 inherit native
 
 PHOSPHOR_MRW_URI ?= "http://missing-mrw-uri"
diff --git a/common/recipes-phosphor/mrw/mrw-patch-native.bb b/common/recipes-phosphor/mrw/mrw-patch-native.bb
new file mode 100644
index 0000000..694ece9
--- /dev/null
+++ b/common/recipes-phosphor/mrw/mrw-patch-native.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Phosphor machine readable workbook patching script"
+DESCRIPTION = "Retrieve the script that can patch the MRW XML"
+PR = "r1"
+
+S = "${WORKDIR}/git"
+
+inherit obmc-phosphor-license
+inherit native
+
+DEPENDS += "python-native python-lxml-native"
+
+SRC_URI += "git://github.com/openbmc/phosphor-mrw-tools"
+SRCREV = "ab015d7e2a2eb87eab2ca7d731ebcb7a873442e9"
+
+do_install() {
+    install -d ${bindir}/obmc-mrw
+    install -m 0755 patchxml.py ${bindir}/obmc-mrw
+}
