$L = \{ x \in \left \{ a,b,c \right \}^* | \ \text{x is a palindrome} \}$
we can consider two languages,
$L_1 = \{ WW^R | \ W \in \left \{ a,b,c \right \}^* \}$
$L_2 = \{ WQW^R | \ W \in \left \{ a,b,c \right \}^* \text { and } Q \in \{ a, b, c \} \}$
$L_1 \cup L_2 = L$
$L_1$ is language consisting all even length palindromes
$L_2$ is a language consisting of all odd length palindromes
$CFL's$ are closed under union, so we need to show $L_1$ and $L_2$ are $CFL's.$
How to build PDA for $L_1$ and $L_2$?
for $L_1$ push a on seeing a, push b on seeing b and push c on seeing c, then when you reached half length of string then change the state and start popping the symbols.
But how to know when we reached half of the string?
Our NPDA will guess non-deterministically when we've read half of the symbols.
for $L_2$ we are gonna do same with just one small trick, when we've reached half of the string length we will encounter $Q$ which will be just one of the $\Sigma$, so on seeing $Q$ we need to change the state and with no change in stack. Then we've to pop symbols on seeing a pop a and so on.
This shows that $L$ is $CFL$.