Yes, MSDeploy supports this quite easily.
When you create a deployment package you want to use the -declareParm option to create a replaceable parameter in your deployment package. You'd use something like:
-declareParam:name=UseCache,kind=XmlFile,scope=web.config,match="/configuration/myGroup/data/@useCache"
Then when deploying your package, you'd use the -setParm command to replace the parameter during deployment. Something like:
-setParam:name=UseCache,value="false"
This example would replace the UseCache parameter, which points to the useCache attribute in the web.config file with "false".
You can declare any number of parameters to be replaced and MSDeploy supports using files to hold the parameters. Files are simple Xml files you would then use the -setParamFile:<filename> and -declareParamFile:<filename> syntax.