diff --git a/config.yaml.sample b/config.yaml.sample
index 246f7b61a69df770e0bf38f4adf7fd91338622b9..1ee2d92b8a78a1c7cab3001a72a679b71314c503 100644
--- a/config.yaml.sample
+++ b/config.yaml.sample
@@ -20,6 +20,9 @@ vereignCertFile: vereign_ca.cer
 vereignCertKey: vereign_ca.key
 caCertFile: ca.crt
 
+# Maximum Message Size (in megabytes)
+maxMessageSize: 32
+
 # Read Certificates From Vault Server
 vaultAddress: http://10.6.10.119:8200
 vaultToken: 00000000-0000-0000-0000-000000000000
diff --git a/handler/generate_keypair.go b/handler/generate_keypair.go
index 89fa5a0e27e15b88eb5236ee6ec4c1c861ab1b2d..1a7e20ed3133d461eaaf3be201756b3ffed96382 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, s.KeyFilePath, s.CaCertFilePath)
+	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath, s.MaxMessageSize)
 	defer client.CloseClient()
 
 	generateKeyPairResponse := &api.GenerateKeyPairResponse{}
diff --git a/handler/handler.go b/handler/handler.go
index cd29dbdf20db89c79d9b1ec65daca34eb5fdae8a..fac6e94d1b167a93fabceb2c157b913340ed6448 100644
--- a/handler/handler.go
+++ b/handler/handler.go
@@ -40,6 +40,7 @@ type KeyStorageServerImpl struct {
 	CaCertFilePath			  string
 	VereignCertFilePath       string
 	VereignPrivateKeyFilePath string
+	MaxMessageSize			  int
 }
 
 func (s *KeyStorageServerImpl) CreateAuthentication(ctx context.Context) *authentication.Authentication {
@@ -62,7 +63,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, s.KeyFilePath, s.CaCertFilePath)
+	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath, s.MaxMessageSize)
 	defer client.CloseClient()
 
 	getKeyResponse := &api.GetKeyResponse{}
@@ -109,7 +110,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, s.KeyFilePath, s.CaCertFilePath)
+	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath, s.MaxMessageSize)
 	defer client.CloseClient()
 
 	setKeyResponse := &api.SetKeyResponse{}
@@ -157,7 +158,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, s.KeyFilePath, s.CaCertFilePath)
+	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath, s.MaxMessageSize)
 	defer client.CloseClient()
 
 	reserveKeyUUIDResponse := &api.ReserveKeyUUIDResponse{}
diff --git a/handler/revoke.go b/handler/revoke.go
index 79994ea4abfb16d9b81531f3104683875bd1ed4b..4522d3585bd5ede0e9326e78941afb7c5f39238e 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, s.KeyFilePath, s.CaCertFilePath)
+	client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath, s.MaxMessageSize)
 	defer client.CloseClient()
 
 	revokeResponse := &api.RevokeResponse{}
diff --git a/main.go b/main.go
index c6595c4d5b13a22486977b38778e134378a772c4..b49b48d44fc6fcdbe16ff6d77f136c7927e1beee 100644
--- a/main.go
+++ b/main.go
@@ -45,10 +45,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, caCertFilePath, 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 6a95ea49be11eaf734bb0785fdb2e385779c0167..d66e379e5d9d5bf3f19626119ee638ac9268b2fb 100644
--- a/server/configs.go
+++ b/server/configs.go
@@ -21,6 +21,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 89fb106a28310a92bd0071f62e44f868e1d676e0..8ff5003e77c2e2349cac8a51ccec3d39ea9e0017 100644
--- a/server/server.go
+++ b/server/server.go
@@ -72,7 +72,7 @@ func authenticateClient(ctx context.Context, s *handler.KeyStorageServerImpl, in
 		}
 
 		sessionClient := &client.DataStorageClientImpl{}
-		sessionClient.SetUpClient(viamAuth, viper.GetString("dataStorageUrl"), pkgCertFile, pkgKeyFile, pkgCaCertFile)
+		sessionClient.SetUpClient(viamAuth, viper.GetString("dataStorageUrl"), pkgCertFile, pkgKeyFile, pkgCaCertFile, viper.GetInt("maxMessageSize"))
 		defer sessionClient.CloseClient()
 
 		if clientAuth.Uuid == viamAuth.Uuid {
@@ -109,7 +109,7 @@ func unaryInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServ
 	return handler1(ctx, req)
 }
 
-func StartGRPCServer(address, certFilePath, privateKeyFilePath, caCertFilePath, vereignCertFilePath, vereignPrivateKeyFilePath, dataStorageAddress string) error {
+func StartGRPCServer(address, certFilePath, privateKeyFilePath, caCertFilePath, vereignCertFilePath, vereignPrivateKeyFilePath, dataStorageAddress string, maxMessageSize int) error {
 	pkgCertFile = certFilePath
 	pkgKeyFile = privateKeyFilePath
 	pkgCaCertFile = caCertFilePath
@@ -128,6 +128,7 @@ func StartGRPCServer(address, certFilePath, privateKeyFilePath, caCertFilePath,
 		CaCertFilePath:			   caCertFilePath,
 		VereignCertFilePath:       vereignCertFilePath,
 		VereignPrivateKeyFilePath: vereignPrivateKeyFilePath,
+		MaxMessageSize:			   maxMessageSize,
 	}
 
 	// Create the TLS credentials
@@ -137,8 +138,11 @@ func StartGRPCServer(address, certFilePath, privateKeyFilePath, caCertFilePath,
 	}
 
 	// 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...)