Na realidade tem como você enganar a glht() para usar a cld() mesmo sem passar para o argumento linfct= algo produzido pela mcp(). Foi preciso abrir a função para encontrar como fazer. Essa é a maravilha do software livre código aberto! Você pode visitar essa análise e ver como fiz, basicamente criei elementos não nulos na lista retornada pela glht().

http://www.leg.ufpr.br/~walmes/analises/GBTognon/ivg_tridentata.html

A parte que destaco da análise é essa
Xc <- apc(Xm, lev=lev)
g0 <- summary(glht(m2, linfct=Xc), test=adjusted(type="fdr"))

source("/home/walmes/Dropbox/Public/mycld.R")

## g0

g0$focus <- "Tratamentos"
g0$Type <- "Tukey"
grid$cld <- my.cld(g0)$mcletters$Letters

Se não me falhe a memória, essa função my.cld eu refiz e renomeei para cld2. Está disponível em https://github.com/walmes/wzRfun/blob/master/R/cld2.R. Alguma adaptação será necessária.
Esse outro script http://www.leg.ufpr.br/~walmes/cursoR/geneticaEsalq/script20.html usa a cld2().

À disposição.
Walmes.