diff --git a/src/core/channel/http_server_filter.c b/src/core/channel/http_server_filter.c
index 0955ae319aad18046e96b4b6906b0ac7683eaa65..2f061946a1f8d920becc19a315662b805398c91b 100644
--- a/src/core/channel/http_server_filter.c
+++ b/src/core/channel/http_server_filter.c
@@ -46,6 +46,7 @@ typedef struct call_data {
   gpr_uint8 seen_te_trailers;
   gpr_uint8 seen_authority;
   grpc_linked_mdelem status;
+  grpc_linked_mdelem content_type;
 
   grpc_stream_op_buffer *recv_ops;
   /** Closure to call when finished with the hs_on_recv hook */
@@ -202,6 +203,8 @@ static void hs_mutate_op(grpc_call_element *elem,
       calld->sent_status = 1;
       grpc_metadata_batch_add_head(&op->data.metadata, &calld->status,
                                    GRPC_MDELEM_REF(channeld->status_ok));
+      grpc_metadata_batch_add_tail(&op->data.metadata, &calld->content_type,
+                                   GRPC_MDELEM_REF(channeld->content_type));
       break;
     }
   }