I think I’ve answered my own question with some simple experimentation. I can do, e.g.:
with pm.Model() as model:
var = pm.MvNormal('var', mu=[0., 5.], cov=np.array(([1., 0.5], [0.5, 1.0])), shape=2)
m = var[0]
c = var[1]
model = pm.Normal('model', mu=m*x + c, sd=1., observed=data)
trace = pm.sample()
and trace['var']
contains an array sampled over both variables.