A GLM isn't a semi-parametric model, but the output from typical use of GLMs can be justified with only semi-parametric assumptions.
If one only assumes that the observations $Y_1, Y_2, ... Y_n$ are independent and that
$$
g(\mathbb{E}[\,Y_i|X_i=x_i\,]) = x_i^T\beta
$$
then, under mild regularity conditions, solving the equations
$$
\sum_i\frac{\partial g^{-1}(x_i^T\beta)}{\partial \beta}w(g^{-1}(x_i^T\beta))(Y_i - g^{-1}(x_i^T\beta)) = \mathbf{0}
$$
provides consistent estimates for parameter $\beta$. The weighting term $w$ is arbitrary, but it determines the efficiency of this approach, and the best option is to use weights inversely proportional to the variance of $Y_i$, if you know this.
How does this connect to GLMs? Well, the estimating equation above is just the score equation (i.e. the one that determines the MLE), under the assumption of a GLM. A particularly simple case of thise is when we use the "canonical" link function, chose so that part of the derivative term cancels with the inverse-variance weights, and we get
$$
\sum_i x_i(Y_i - g^{-1}(x_i^T\beta)) = \mathbf{0},
$$
which should look familiar to anyone who's studied linear regression, or logistic regression, or Poisson regression.
In general, we can view the point estimates from GLMs as MLEs under a particular fully parametric model for $Y$, or as consistent & efficient estimates resulting from assumptions on only the first and second moments of $Y$ - i.e. a semi-parametric model.
Similar arguments apply to the confidence intervals these methods provide; see e.g. McCullagh and Nelder's book for the details.