If you only want to sign messages but not encrypt them you would need to set this option:
From the mutt manual:
9.1. OpenPGP Configuration
The two most important settings are $pgp_default_key and $pgp_sign_as.
To perform encryption, you must set the first variable. If you have a
separate signing key, or only have a signing key, then set the second.
Most people will only need to set $pgp_default_key.
Also note this remark regarding version of GnuPG:
Starting with version 2.1.0, GnuPG automatically uses an agent to
prompt for your passphrase. If you are using a version older than
that, you'll need to ensure an agent is running (alternatively, you
can unset $pgp_use_gpg_agent and Mutt will prompt you for your
passphrase). The agent in turn uses a pinentry program to display the
prompt. There are many different kinds of pinentry programs that can
be used: qt, gtk2, gnome3, fltk, and curses. However, Mutt does not
work properly with the tty pinentry program. Please ensure you have
one of the GUI or curses pinentry programs installed and configured to
be the default for your system.
The repeated prompt for passphrase makes me thing GPG agent is lacking.
In your case, I'd check the version of Gnupg and preferably use Gnupg2.
It's possible both are already installed on your system but v1 is still default, check with