diff --git a/code/modules/research/material_silo.dm b/code/modules/research/material_silo.dm
index a6e09a40bf5..2d8333d9390 100644
--- a/code/modules/research/material_silo.dm
+++ b/code/modules/research/material_silo.dm
@@ -4,6 +4,9 @@
icon_state = "silo"
idle_power_usage = 30 WATTS
+ component_types = list(
+ /obj/item/stock_parts/matter_bin = 3
+ )
/// Total material capacity, measured in material units.
var/max_material_storage = 800000
@@ -24,12 +27,21 @@
/obj/structure/machinery/r_n_d/material_silo/upgrade_hints(mob/user, distance, is_adjacent)
. += ..()
+ . += "- Upgraded matter bins will increase the shared material storage capacity."
. += SPAN_NOTICE("\t- The shared storage capacity is [max_material_storage / SHEET_MATERIAL_AMOUNT] sheets.")
/obj/structure/machinery/r_n_d/material_silo/Initialize(mapload, d, populate_components, is_internal)
. = ..()
update_icon()
+/obj/structure/machinery/r_n_d/material_silo/RefreshParts()
+ ..()
+ var/matter_bin_rating = 0
+ for(var/obj/item/stock_parts/matter_bin/matter_bin in component_parts)
+ matter_bin_rating += matter_bin.rating
+ max_material_storage = initial(max_material_storage) * matter_bin_rating / 3
+ update_linked_uis()
+
/obj/structure/machinery/r_n_d/material_silo/update_icon()
. = ..()
ClearOverlays()
diff --git a/html/changelogs/MaterialUpgrade.yml b/html/changelogs/MaterialUpgrade.yml
new file mode 100644
index 00000000000..33084f7a1b3
--- /dev/null
+++ b/html/changelogs/MaterialUpgrade.yml
@@ -0,0 +1,6 @@
+author: TheGreyWolf
+
+delete-after: True
+
+changes:
+ - rscadd: "Material silos can now be upgraded. Each tier is equal to 400 sheets worth of storage."