diff --git a/config.yaml.sample b/config.yaml.sample
index 0ec5701dd0ea40c10f194f720f069e448cea9857..c4ee562f13f66c1dfc7a6f0ecdf52997f44fc08e 100644
--- a/config.yaml.sample
+++ b/config.yaml.sample
@@ -7,4 +7,7 @@ certDir: cert
 certFile: server.crt
 certKey: server.key
 vereignCertFile: vereign_ca.cer
-vereignCertKey: vereign_ca.key
\ No newline at end of file
+vereignCertKey: vereign_ca.key
+
+# Maximum Message Size (in megabytes)
+maxMessageSize: 32
\ No newline at end of file
diff --git a/handler/generate_keypair.go b/handler/generate_keypair.go
index 19f658283c8ab9b10d05a56bfa9d87d535efbbc2..6281655cf8e23126240140493032110167735fe4 100644
--- a/handler/generate_keypair.go
+++ b/handler/generate_keypair.go
@@ -39,7 +39,7 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context,
 	auth := s.CreateAuthentication(ctx)
 
 	client := &client.DataStorageClientImpl{}
-	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath)
+	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.MaxMessageSize)
 	defer client.CloseClient()
 
 	generateKeyPairResponse := &api.GenerateKeyPairResponse{}
diff --git a/handler/handler.go b/handler/handler.go
index ab527483a014f32cb929b0f099b92b511705ac75..0f55be7d3340d4a8926d9bd92bef39e5457f1aab 100644
--- a/handler/handler.go
+++ b/handler/handler.go
@@ -38,6 +38,7 @@ type KeyStorageServerImpl struct {
 	CertFilePath              string
 	VereignCertFilePath       string
 	VereignPrivateKeyFilePath string
+	MaxMessageSize			  int
 }
 
 func (s *KeyStorageServerImpl) CreateAuthentication(ctx context.Context) *authentication.Authentication {
@@ -60,7 +61,7 @@ func (s *KeyStorageServerImpl) GetKey(ctx context.Context, in *api.GetKeyRequest
 	auth := s.CreateAuthentication(ctx)
 
 	client := &client.DataStorageClientImpl{}
-	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath)
+	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.MaxMessageSize)
 	defer client.CloseClient()
 
 	getKeyResponse := &api.GetKeyResponse{}
@@ -107,7 +108,7 @@ func (s *KeyStorageServerImpl) SetKey(ctx context.Context, in *api.SetKeyRequest
 	auth := s.CreateAuthentication(ctx)
 
 	client := &client.DataStorageClientImpl{}
-	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath)
+	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.MaxMessageSize)
 	defer client.CloseClient()
 
 	setKeyResponse := &api.SetKeyResponse{}
@@ -155,7 +156,7 @@ func (s *KeyStorageServerImpl) ReserveKeyUUID(ctx context.Context, in *api.Reser
 	auth := s.CreateAuthentication(ctx)
 
 	client := &client.DataStorageClientImpl{}
-	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath)
+	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.MaxMessageSize)
 	defer client.CloseClient()
 
 	reserveKeyUUIDResponse := &api.ReserveKeyUUIDResponse{}
diff --git a/handler/revoke.go b/handler/revoke.go
index 8f757b298b6d750587f54e312a3bb8388e8038a7..17709aa8f7b07c0e6f716e2f3a16f0304ce8d88a 100644
--- a/handler/revoke.go
+++ b/handler/revoke.go
@@ -29,7 +29,7 @@ func (s *KeyStorageServerImpl) Revoke(ctx context.Context, in *api.RevokeRequest
 	auth := s.CreateAuthentication(ctx)
 
 	client := &client.DataStorageClientImpl{}
-	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath)
+	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.MaxMessageSize)
 	defer client.CloseClient()
 
 	revokeResponse := &api.RevokeResponse{}
diff --git a/main.go b/main.go
index 076a8b7ac919e1f026a07659d6ca1176b3386b80..decdcd84ec2ba1a5a510dcb3e95763b82730c2fe 100644
--- a/main.go
+++ b/main.go
@@ -44,10 +44,12 @@ func main() {
 	vereignCertFilePath := certDir + "/" + viper.GetString("vereignCertFile")
 	vereignPrivateKeyFilePath := certDir + "/" + viper.GetString("vereignCertKey")
 
+	maxMessageSize := viper.GetInt("maxMessageSize")
+
 	// fire the gRPC server in a goroutine
 	go func() {
 		err := server.StartGRPCServer(grpcAddress, certFilePath, privateKeyFilePath, vereignCertFilePath,
-			vereignPrivateKeyFilePath, dataStorageAddress)
+			vereignPrivateKeyFilePath, dataStorageAddress, maxMessageSize)
 		if err != nil {
 			log.Fatalf("failed to start gRPC server: %s", err)
 		}
diff --git a/server/configs.go b/server/configs.go
index 635427583f2eeae2fd99fb4263581bd7628bf8b5..e747732c96154e7c1606b5a102d7d99c68ddca64 100644
--- a/server/configs.go
+++ b/server/configs.go
@@ -20,6 +20,8 @@ func SetConfigValues() {
 	viper.SetDefault("vereignCertFile", "vereign_ca.cer")
 	viper.SetDefault("vereignCertKey", "vereign_ca.key")
 
+	viper.SetDefault("maxMessageSize", "32")
+
 	// Read Config File
 	viper.SetConfigName("config")
 	viper.AddConfigPath(".")
diff --git a/server/server.go b/server/server.go
index 8a58bd72c851ee9f855224963509fbb48c2366f7..9183c2d94485d1439b1adf6fc501931795f2d9f0 100644
--- a/server/server.go
+++ b/server/server.go
@@ -70,7 +70,7 @@ func authenticateClient(ctx context.Context, s *handler.KeyStorageServerImpl, in
 		}
 
 		sessionClient := &client.DataStorageClientImpl{}
-		sessionClient.SetUpClient(viamAuth, viper.GetString("dataStorageClientUrl"), pkgCertFile)
+		sessionClient.SetUpClient(viamAuth, viper.GetString("dataStorageClientUrl"), pkgCertFile, viper.GetInt("maxMessageSize"))
 		defer sessionClient.CloseClient()
 
 		if clientAuth.Uuid == viamAuth.Uuid {
@@ -107,7 +107,7 @@ func unaryInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServ
 	return handler1(ctx, req)
 }
 
-func StartGRPCServer(address, certFilePath, privateKeyFilePath, vereignCertFilePath, vereignPrivateKeyFilePath, dataStorageAddress string) error {
+func StartGRPCServer(address, certFilePath, privateKeyFilePath, vereignCertFilePath, vereignPrivateKeyFilePath, dataStorageAddress string, maxMessageSize int) error {
 	pkgCertFile = certFilePath
 
 	// create a listener on TCP port
@@ -122,6 +122,7 @@ func StartGRPCServer(address, certFilePath, privateKeyFilePath, vereignCertFileP
 		CertFilePath:              certFilePath,
 		VereignCertFilePath:       vereignCertFilePath,
 		VereignPrivateKeyFilePath: vereignPrivateKeyFilePath,
+		MaxMessageSize:			   maxMessageSize,
 	}
 
 	// Create the TLS credentials
@@ -131,8 +132,11 @@ func StartGRPCServer(address, certFilePath, privateKeyFilePath, vereignCertFileP
 	}
 
 	// Create an array of gRPC options with the credentials
-	opts := []grpc.ServerOption{grpc.Creds(creds),
-		grpc.UnaryInterceptor(unaryInterceptor)}
+	opts := []grpc.ServerOption{
+		grpc.Creds(creds),
+		grpc.UnaryInterceptor(unaryInterceptor), 
+		grpc.MaxRecvMsgSize(viper.GetInt("maxMessageSize")*1024*1024),
+	}
 
 	// create a gRPC server object
 	grpcServer := grpc.NewServer(opts...)