We consider the design of convolutional codes and low-density parity-check (LDPC) codes with minimum-shift keying (MSK) when the receiver employs iterative decoding and demodulation. The main idea proposed is the design of coded schemes that are well matched to the iterative decoding algorithm being used rather than to hypothetical maximum-likelihood decoding. We first show that the design is crucially dependent on whether the continuous phase encoder (CPE) is realized in recursive form or in nonrecursive form. We then consider the design of convolutionally coded systems and low density parity check codes with MSK to obtain near-capacity performance. With convolutional codes, we show that it is possible to significantly improve the performance by using a mixture of recursive and nonrecursive realizations for the CPE. For low density parity check codes, we show that codes designed for binary phase shift keying are optimal for MSK only if the nonrecursive realization is used; for the recursive realization, we design new LDPC codes based on the concept of density evolution. We show that these codes outperform the best known codes for MSK and have lower decoding complexity.