Sachverhalt:
A.
Die 1974 geborene A._ meldete sich im August 2001 bei der Invalidenversicherung zum Leistungsbezug an. Die IV-Stelle des Kantons St. Gallen sprach ihr Umschulung zu, welche sie laut Verfügung vom 12. September 2005erfolgreich abschloss. Im Januar 2006 beantragte die Versicherte eine Invalidenrente. Nach Abklärungen und Durchführung des Vorbescheidverfahrens ermittelte die IV-Stelle einen Invaliditätsgrad von 52 % und sprach ihr mit Verfügung vom 18. Dezember 2012 eine halbe Rente ab 1. Januar 2005 zu.
B.
Die dagegen erhobene Beschwerde wies das Versicherungsgericht des Kantons St. Gallen mit Entscheid vom 24. April 2015 (zugestellt am 5. Mai 2015) ab.
C.
A._ lässt mit Beschwerde in öffentlich-rechtlichen Angelegenheiten vom 4. Juni 2015 beantragen, unter Aufhebung der Verfügung vom 18. Dezember 2012 und des Entscheids vom 24. April 2015 sei die Sache zur Einholung eines medizinischen Obergutachtens und anschliessenden Neuentscheidung an die Vorinstanz zurückzuweisen; eventuell sei die IV-Stelle zu verpflichten, ihr eine ganze Invalidenrente ab 1. Januar 2005 auszurichten.
Am 9. Juli 2015 lässt sie durch ihren zwischenzeitlich neu bestellten Rechtsvertreter eine weitere Eingabe mit ergänzender Beschwerdebegründung einreichen.
Erwägungen:
1.
Die Beschwerde ist samt Begründung innert 30 Tagen nach Eröffnung des angefochtenen Entscheids beim Bundesgericht einzureichen (Art. 100 Abs. 1 in Verbindung mit Art. 42 Abs. 1 und 2 BGG); eine spätere Ergänzung der Beschwerdeschrift ist nur gemäss Art. 43 BGG, d.h. im Gebiet der internationalen Rechtshilfe in Strafsachen, möglich ( LAURENT MERZ, in: Basler Kommentar, Bundesgerichtsgesetz, 2. Aufl. 2011, N. 40 zu Art. 42 BGG).
Nachdem die Rechtsmittelfrist in concreto am 4. Juni 2015 abgelaufen ist, bleibt die Eingabe vom 9. Juli 2015 von vornherein unbeachtlich.
2.
Der Beschwerde vom 4. Juni 2015 liegt ein von der Versicherten persönlich verfasstes Schreiben an das Bundesgericht bei. Darin wirft sie die Frage nach dem Ausstand einer mit dem Fall befassten kantonalen Richterin auf, weil diese ihre Mutter kenne (vgl. Art. 30 Abs. 1 BV). Weitere Ausführungen zu diesem Punkt fehlen im genannten Schreiben, und in der Beschwerde selber wird mit keinem Wort darauf eingegangen. Im Licht der Begründungspflicht gemäss Art. 42 Abs. 1 und 2 sowie Art. 106 Abs. 2 BGG erübrigen sich diesbezügliche Weiterungen.
3.
Mit der Beschwerde in öffentlich-rechtlichen Angelegenheiten kann u.a. die Verletzung von Bundesrecht gerügt werden (Art. 95 lit. a BGG). Die Feststellung des Sachverhalts kann nur gerügt werden, wenn sie offensichtlich unrichtig ist oder auf einer Rechtsverletzung im Sinne von Artikel 95 beruht und wenn die Behebung des Mangels für den Ausgang des Verfahrens entscheidend sein kann (Art. 97 Abs. 1 BGG). Das Bundesgericht legt seinem Urteil den Sachverhalt zugrunde, den die Vorinstanz festgestellt hat (Art. 105 Abs. 1 BGG). Es kann die Sachverhaltsfeststellung der Vorinstanz von Amtes wegen berichtigen oder ergänzen, wenn sie offensichtlich unrichtig ist oder auf einer Rechtsverletzung im Sinne von Artikel 95 beruht (Art. 105 Abs. 2 BGG).
4.
Die Vorinstanz hat dem Gutachten der MEDAS vom 27. Januar 2012(Untersuchung vom 7. und 16. November 2011) Beweiskraft beigemessen und gestützt darauf eine Arbeitsfähigkeit von 80 % für leichte, wechselbelastende Tätigkeiten festgestellt. Für den Einkommensvergleich hat sie das Valideneinkommen auf Fr. 98'200.- und das Invalideneinkommen auf Fr. 42'803.- festgesetzt. Beim resultierenden Invaliditätsgrad von 56 % hat sie den Anspruch auf eine halbe Invalidenrente bestätigt.
5.
5.1. Bei der Beurteilung der Arbeits (un) fähigkeit stützt sich die Verwaltung und im Beschwerdefall das Gericht auf Unterlagen, die von ärztlichen und gegebenenfalls auch anderen Fachleuten zur Verfügung zu stellen sind. Ärztliche Aufgabe ist es, den Gesundheitszustand zu beurteilen und dazu Stellung zu nehmen, in welchem Umfang und bezüglich welcher Tätigkeiten die versicherte Person arbeitsunfähig ist. Hinsichtlich des Beweiswertes eines Arztberichtes ist entscheidend, ob dieser für die streitigen Belange umfassend ist, auf allseitigen Untersuchungen beruht, auch die geklagten Beschwerden berücksichtigt, in Kenntnis der Vorakten (Anamnese) abgegeben worden ist, in der Beurteilung der medizinischen Zusammenhänge sowie der medizinischen Situation einleuchtet und ob die Schlussfolgerungen der Experten begründet sind (BGE 134 V 231 E. 5.1 S. 232; 125 V 351 E. 3a S. 352 mit Hinweis).
5.2. Bei den vorinstanzlichen Feststellungen zum Gesundheitszustand und zur Arbeitsfähigkeit der versicherten Person handelt es sich grundsätzlich um Entscheidungen über eine Tatfrage (BGE 132 V 393 E. 3.2 S. 397 ff.), welche das Bundesgericht seiner Urteilsfindung zugrunde zu legen hat (E. 2). Die konkrete Beweiswürdigung stellt ebenfalls eine Tatfrage dar. Dagegen ist die Beachtung des Untersuchungsgrundsatzes und der Beweiswürdigungsregeln Rechtsfrage (BGE 132 V 393 E. 3.2 und 4 S. 397 ff.; Urteil I 865/06 vom 12. Oktober 2007 E. 4 mit Hinweisen), die das Bundesgericht im Rahmen der den Parteien obliegenden Begründungs- bzw. Rügepflicht (Art. 42 Abs. 2 BGG und Art. 106 Abs. 2 BGG; BGE 133 II 249 E. 1.4.1 und 1.4.2 S. 254) frei überprüfen kann (Art. 106 Abs. 1 BGG).
5.3. Was die Beschwerdeführerin gegen die Beweiskraft des MEDAS-Gutachtens vorbringt, hält nicht stand: Dieses wurde zwar nicht durch einen Neurologen erstellt, indessen durch Dr. med. B._, Facharzt u.a. für Neurologie, mitunterzeichnet. Ausserdem setzten sich die MEDAS-Experten Dr. med. C._ (Facharzt für Allgemeine Innere Medizin und für Rheumatologie) und Dr. med. D._ (Facharzt für Psychiatrie und Psychotherapie) nachvollziehbar mit den Einschätzungen der Klinik für Neurologie des Spitals E._ auseinander und stellten sich dazu nicht in Widerspruch. Damit wurde den neurologischen Aspekten genügend Rechnung getragen.
Daran ändert nichts, dass die Versicherte von verschiedenen behandelnden Ärzten (vgl. auch den ohnehin unzulässigen [Art. 99 Abs. 1 BGG; MEYER/DORMANN, in: Basler Kommentar, Bundesgerichtsgesetz, 2. Aufl. 2011, N. 43 zu Art. 99 BG G] Bericht des Dr. med. F._ vom 13. Mai 2015) in ihrer eigenen Einschätzung der Arbeitsfähigkeit bestätigt wurde. Einerseits ist der Unterschied zwischen Behandlungs- und Begutachtungsauftrag zu beachten (vgl. dazu Urteil 8C_260/2011 vom 25. Juli 2011 E. 5.2 und 8C_567/2010 vom 19. November 2010 E. 3.2.2). Anderseits kann die ärztliche Einschätzung der Arbeitsfähigkeit, abhängig von der Gutachterperson und von den Umständen der Begutachtung, eine grosse Varianz aufweisen und trägt die ärztliche Beurteilung von der Natur der Sache her unausweichlich Ermessenszüge (BGE 137 V 210 E. 3.4.2.3 S. 253; Urteil 8C_25/2013 vom 20. August 2013 E. 5.1; vgl. auch Urteil 9C_465/2013 vom 27. September 2013 E. 3.4), die es zu respektieren gilt. Auch unter diesem Aspekt genügt das MEDAS-Gutachten den Anforderungen an die Beweiskraft (E. 5.1).
5.4. Nach dem Gesagten können die vorinstanzliche Beweiswürdigung und die Feststellungen betreffend die Arbeitsfähigkeit (E. 4) nicht als willkürlich bezeichnet werden; sie bleiben verbindlich (E. 3). Ohnehin beschränkt sich die Beschwerdeführerin im Wesentlichen darauf, lediglich die medizinischen Unterlagen abweichend von der Vorinstanz zu würdigen und daraus andere Schlüsse zu ziehen, was nicht ausreicht (Urteile 9C_688/2007 vom 22. Januar 2008 E. 2.3 und 4A_28/2007 vom 30. Mai 2007 E. 1.3 [in BGE 133 III 421 nicht publiziert]). Die Beschwerde ist offensichtlich unbegründet (Art. 109 Abs. 2 lit. a BGG).
6.
Dem Ausgang des Verfahrens entsprechend hat die Beschwerdeführerin die Gerichtskosten zu tragen (Art. 66 Abs. 1 BGG).
Demnach erkennt das Bundesgericht:
1.
Die Beschwerde wird abgewiesen.
2.
Die Gerichtskosten von Fr. 800.- werden der Beschwerdeführerin auferlegt.
3.
Dieses Urteil wird den Parteien, dem Versicherungsgericht des Kantons St. Gallen und dem Bundesamt für Sozialversicherungen schriftlich mitgeteilt.
Luzern, 6. August 2015
Im Namen der II. sozialrechtlichen Abteilung
des Schweizerischen Bundesgerichts
Das präsidierende Mitglied: Meyer
Die Gerichtsschreiberin: Dormann