diff --git a/Custom_EasyBlocks/mpcframework.py b/Custom_EasyBlocks/mpcframework.py
new file mode 100644
index 0000000000000000000000000000000000000000..5808d43ac48c2da5337f3d1ad758694a2b800819
--- /dev/null
+++ b/Custom_EasyBlocks/mpcframework.py
@@ -0,0 +1,34 @@
+from easybuild.easyblocks.generic.binary import Binary
+from easybuild.tools.filetools import write_file
+
+import os.path
+
+
+class EB_MPCFramework(Binary):
+    """Support for building/installing the MPC Framework."""
+
+    def make_module_extra(self):
+        """Correctly prepend $PYTHONPATH and set environment variables for MPC Framework. Equivalent to mpcvars.sh."""
+
+        txt = super(EB_MPCFramework, self).make_module_extra()
+
+        txt += self.module_generator.set_environment(
+            "MPC_INSTALL_DIR_PREFIX", self.installdir)
+        txt += self.module_generator.set_environment(
+            "MPC_VERSION", self.version)
+
+        # Variables such as $PATH, $CPATH or $LD_LIBRARY_PATH are already set
+        # by default by EasyBuild.
+        txt += self.module_generator.prepend_paths(
+            "PYTHONPATH", ['lib/python/', 'lib64/python/'])
+
+        txt += self.module_generator.set_environment(
+            "MPCFRAMEWORK_DIR", self.installdir + 'share/mpcframework/cmake/')
+
+        return txt
+
+    def post_install_step(self):
+        """Override network rail configuration by adding an MPC configuration file"""
+
+        write_file(os.path.join(self.installdir, "etc", "mpcframework", "rail.conf"),
+                   "LOWCOMM_NETWORKING_RAILS_IBMPI_DEVICE=mlx5_0")
diff --git a/Golden_Repo/m/MPCFramework/MPCFramework-4.2.0-GCC-11.3.0.eb b/Golden_Repo/m/MPCFramework/MPCFramework-4.2.0-GCC-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..b3f3ff8c90d59568c89f94c7a04579924fe0e9ae
--- /dev/null
+++ b/Golden_Repo/m/MPCFramework/MPCFramework-4.2.0-GCC-11.3.0.eb
@@ -0,0 +1,58 @@
+name = 'MPCFramework'
+version = '4.2.0'
+
+homepage = 'https://mpc.hpcframework.com'
+description = """An Implementation of MPI and OpenMP relying on user-level threads"""
+
+toolchain = {'name': 'GCC', 'version': '11.3.0'}
+
+source_urls = [
+    'https://github.com/cea-hpc/mpc/archive/refs/tags/'
+]
+
+sources = ['MPC_%(version)s.zip']
+checksums = [
+    # MPC_4.2.0.zip
+    'd2610173cf0bf8f64985bc45602c133ca0beaff78c8bea7fe35fda771ceae5ca',
+    # nvdimm.patch
+    '36e058b5aa7a2b4d850e0ffba72c113acede2906b143a61dc63a5da68a4c7e85',
+    # pmix.patch
+    '85bd42edd90d6e9bb83e0dd60accc69e260eecd600b15230e6693be39e88598a',
+    # rma-get-attr.patch
+    'f5f308c1438fd5c33ead66ac83592749227a8cabd99ff717bcdde85ce89ecf8f',
+]
+
+patches = [
+    'nvdimm.patch',
+    'pmix.patch',
+    'rma-get-attr.patch',
+]
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('bzip2', '1.0.8', '', ('GCCcore', '11.3.0')),
+    ('cURL', '7.83.0'),
+    ('help2man', '1.49.2'),
+    ('OpenSSL', '1.1', '', SYSTEM),
+]
+
+installopts = '--prefix=%(installdir)s '
+installopts += '-j%(parallel)s '
+installopts += '--enable-color '
+installopts += '--disable-spack '
+installopts += '--disable-spack-build '
+installopts += '--mpc-option="--without-portals" '
+
+# To enable SLURM integration (site-specific)
+installopts += '--with-pmix '
+
+sanity_check_commands = [
+    "mpcrun --help",
+    "mpc_print_config"
+]
+
+moduleclass = 'devel'
+
+# Options passed to the Binary EasyBlock (superclass of the MPCFramework EasyBlock)
+extract_sources = True
+install_cmd = 'mkdir BUILD && cd BUILD && ../installmpc'
diff --git a/Golden_Repo/m/MPCFramework/nvdimm.patch b/Golden_Repo/m/MPCFramework/nvdimm.patch
new file mode 100644
index 0000000000000000000000000000000000000000..61cadd0d9b4dcc0f27e68099af301bbcda495e92
--- /dev/null
+++ b/Golden_Repo/m/MPCFramework/nvdimm.patch
@@ -0,0 +1,26 @@
+[PATCH] LAUNCH: Fix mpcrun --help crash with NVDIMM
+author: Remi Dehenne
+
+mpcrun --help no longer crashes when mpc_print_config displays
+`<Topology> NVDIMM Found ! (OS Device #xx)` messages.
+Those messages are now printed on stderr with
+mpc_common_debug_log, rather than with fprintf on stdout.
+---
+ src/MPC_Topology/src/topology.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/MPC_Topology/src/topology.c b/src/MPC_Topology/src/topology.c
+index e62cbcb01..9172c6de2 100644
+--- a/src/MPC_Topology/src/topology.c
++++ b/src/MPC_Topology/src/topology.c
+@@ -1376,7 +1376,7 @@ void _mpc_topology_nvdimm_detection(hwloc_topology_t topology)
+ 		{
+ 			if(strcmp(current->subtype, "NVDIMM") == 0)
+ 			{
+-				fprintf(stdout, "<Topology> %s Found ! (OS Device #%d)\n", current->subtype, current->logical_index);
++				mpc_common_debug_log("<Topology> %s Found ! (OS Device #%d)\n", current->subtype, current->logical_index);
+ 				++__mpc_module_avail_nvdimm;
+ 			}
+ 		}
+-- 
+
diff --git a/Golden_Repo/m/MPCFramework/pmix.patch b/Golden_Repo/m/MPCFramework/pmix.patch
new file mode 100644
index 0000000000000000000000000000000000000000..82ccc355e0ddbeef9cdf3c8eb9c3d825125629ff
--- /dev/null
+++ b/Golden_Repo/m/MPCFramework/pmix.patch
@@ -0,0 +1,25 @@
+From fc4b775594984ecac16ec56074a0636961ecb3f2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Dehenne?= <remi.dehenne@cea.fr>
+Date: Tue, 25 Jul 2023 13:02:19 +0200
+Subject: [PATCH] LAUNCH: Fix PMIx compilation error
+
+---
+ src/MPC_Launch/src/pmi.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/MPC_Launch/src/pmi.c b/src/MPC_Launch/src/pmi.c
+index 3970bd598..08916cd46 100644
+--- a/src/MPC_Launch/src/pmi.c
++++ b/src/MPC_Launch/src/pmi.c
+@@ -1004,7 +1004,7 @@ int mpc_launch_pmi_get( char *value, size_t size, char *key, int remote)
+ 	assume(val->type == PMIX_STRING);
+ 	strcpy(value, val->data.string);
+ 	PMIX_VALUE_RELEASE(val);
+-	PMIX_PROC_DESTRUCT(proc);
++	PMIX_PROC_DESTRUCT(&proc);
+ 	PMI_RETURN( rc );
+ #else
+ 	UNUSED(remote);
+-- 
+2.34.1
+
diff --git a/Golden_Repo/m/MPCFramework/rma-get-attr.patch b/Golden_Repo/m/MPCFramework/rma-get-attr.patch
new file mode 100644
index 0000000000000000000000000000000000000000..dc20f77ac82b36500b894d613dd2459cc85cf992
--- /dev/null
+++ b/Golden_Repo/m/MPCFramework/rma-get-attr.patch
@@ -0,0 +1,58 @@
+From 831247ca5ab5589e42be0864bc3d1965b7cec914 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Dehenne?= <remi.dehenne@cea.fr>
+Date: Fri, 27 Oct 2023 18:44:31 +0200
+Subject: [PATCH] RMA: Fix invalid arg type in MPI_Win_get_attr
+
+The attribute_val argument of MPI_Win_get_attr was improperly set regarding
+to the MPI Standard.
+Prior to casting, the attribute_val argument must be an int** or void**.
+MPC assumed attribute_val to be an int* or void*, thus leading to
+unexpected behaviors in user applications.
+---
+ src/MPC_MPI/src/mpi_rma_win.c | 11 ++++-------
+ 1 file changed, 4 insertions(+), 7 deletions(-)
+
+diff --git a/src/MPC_MPI/src/mpi_rma_win.c b/src/MPC_MPI/src/mpi_rma_win.c
+index de22d11db..c02ba4d9c 100644
+--- a/src/MPC_MPI/src/mpi_rma_win.c
++++ b/src/MPC_MPI/src/mpi_rma_win.c
+@@ -1163,7 +1163,6 @@ int mpc_MPI_Win_get_attr(MPI_Win win, int keyval, void *attr_val, int *flag)
+ 	}
+ 
+ 	struct mpc_lowcomm_rdma_window *low_win = sctk_win_translate(win);
+-	uintptr_t val;
+ 
+ 	/* First handle special values */
+ 	switch(keyval)
+@@ -1175,24 +1174,22 @@ int mpc_MPI_Win_get_attr(MPI_Win win, int keyval, void *attr_val, int *flag)
+ 
+ 		case MPI_WIN_SIZE:
+ 			*flag = 1;
+-			*( (void **)attr_val) = (void *)low_win->size;
++			*( (void **)attr_val) = (void *)&low_win->size;
+ 			return MPI_SUCCESS;
+ 
+ 		case MPI_WIN_DISP_UNIT:
+ 			*flag = 1;
+-			*( (void **)attr_val) = (void *)low_win->disp_unit;
++			*( (void **)attr_val) = (void *)&low_win->disp_unit;
+ 			return MPI_SUCCESS;
+ 
+ 		case MPI_WIN_CREATE_FLAVOR:
+ 			*flag = 1;
+-			val   = desc->flavor;
+-			*( (void **)attr_val) = (void *)val;
++			*( (void **)attr_val) = (void *)&desc->flavor;
+ 			return MPI_SUCCESS;
+ 
+ 		case MPI_WIN_MODEL:
+ 			*flag = 1;
+-			val   = desc->model;
+-			*( (void **)attr_val) = (void *)val;
++			*( (void **)attr_val) = (void *)&desc->model;
+ 			return MPI_SUCCESS;
+ 	}
+ 
+-- 
+2.34.1
+