Faits: A. D._, née en 1952, travaillait en qualité d'employée d'exploitation pour le compte de la société X._ SA. Un faux mouvement survenu le 23 mai 2002 sur son lieu de travail a provoqué l'apparition de cervicalgies importantes qui l'ont contrainte à cesser définitivement son activité quelques jours plus tard. Le 3 octobre 2002, elle a subi une cure de hernie discale C5-C6. Le 10 juin 2003, D._ a déposé une demande de prestations de l'assurance-invalidité. Procédant à l'instruction de la cause, l'Office genevois de l'assurance-invalidité (ci-après: l'office AI) a recueilli des renseignements médicaux auprès des différents médecins consultés par l'assurée (rapports des docteurs M._ des 29 août 2003 et 25 mai 2005, S._ des 6 avril 2004 et 16 février 2005, P._ du 14 mai 2004, B._ du 11 avril 2005 et O._ des 21 novembre 2005, 29 avril et 5 juillet 2006). L'office AI a également mis l'assurée au bénéfice d'une mesure d'orientation professionnelle auprès du Centre Y._. Débuté le 13 mars pour durer initialement jusqu'au 11 juin 2006, le stage a été interrompu dès le 21 mars pour des raisons médicales. Par décision du 13 décembre 2006, l'office AI a alloué à l'assurée une demi-rente d'invalidité à compter du 1er mai 2003, fondée sur un degré d'invalidité de 55 % déterminé sur la base d'une capacité résiduelle de travail de 50 % dans une activité adaptée. B. Par jugement du 29 mai 2007, le Tribunal cantonal des assurances sociales de la République et canton de Genève a rejeté le recours formé par l'assurée contre la décision de l'office AI du 13 décembre 2006. C. D._ interjette un recours en matière de droit public contre ce jugement dont elle demande l'annulation. Sous suite de frais et dépens, elle conclut, à titre principal, à l'octroi d'une rente entière d'invalidité et, subsidiairement, au renvoi de la cause au Tribunal cantonal des assurances sociales pour instruction complémentaire et nouvelle décision. L'office AI conclut au rejet du recours, tandis que l'Office fédéral des assurances sociales a renoncé à se déterminer.