See the Oruch HaShulchan in סימן תיט - דין סעודת ראש חודש who mentions various reasons why Rosh Chodesh is considered festive:
Rosh Chodesh is mentioned in the Torah (Bemidbar 10:10) as one of times we festively blow the Shofar when bringing Korbanot: וּבְיוֹם שִׂמְחַתְכֶם וּבְמוֹעֲדֵיכֶם, וּבְרָאשֵׁי חָדְשֵׁיכֶם--וּתְקַעְתֶּם בַּחֲצֹצְרֹת עַל עֹלֹתֵיכֶם, וְעַל זִבְחֵי שַׁלְמֵיכֶם
It's mentioned in Nach also bundled with Shabbat and/or Chag.
In Navi we see that they made festive meals on Rosh Chodesh.
The festivities are in honour of the atonement that Rosh Chodesh brings.
Possibly also in commemoration of the festive meals served to the new-moon-sighting witnesses to ensure they came back monthly.
א כתב הטור:
''מצוה להרבות בסעודת ראש חודש. דגרסינן במגילה פרק ראשון (בירושלמי) במשנה דמקדימין ולא מאחרין: אבל סעודת פורים וסעודת ראש חודש – מאחרין ולא מקדימין. כלומר: כשנפל ראש חודש בשבת, דבלאו הכי יש סעודת שבת – עושין סעודת ראש חודש ביום ראשון, כפורים שחל בשבת. ומדמדמה לפורים – שמע מינה שהוא חיוב.
ועוד: דאיתקש ל''מועד'' בקרא ד''וביום שמחתכם''. וכתיב גבי דוד: ''כי זבח משפחה לנו'', וראש חודש היה, דכתיב ''ויהי ממחרת החדש השני''. ובפסיקתא איתא: כל מזונותיו של אדם קצובים לו מראש השנה, לבד מה שמוציא בהוצאות שבתות, וימים טובים, וראש חודש, וחולו של מועד, ומה שהתנוקות מוליכין לבית רבן. אם מוסיף – מוסיפין לו וכו''', עד כאן לשון הטור.
ב וגם ברוקח (סימן רכח) כתב כן. והביא עוד מקרא ד''והיה מדי חדש בחדשו, ומדי שבת בשבתו'', ומקרא ד''מדוע את הולכת אליו היום, לא חדש ולא שבת'', עיין שם.
וכן הכלבו כתב דהסעודה היא מפני כבוד היום, שהוא כפרה לישראל וכו', זכר לסעודה שעושין לעידי הלבנה בזמן המקדש וכו'. עד כאן לשונו. ונראה דכונתו לסעודה שהיו עושין בעיבור החודש, כדאיתא בירושלמי. וכן נראה מש''ס דילן בסנהדרין, לענין בן סורר ומורה, דאם אכל בעיבור החודש – אינו נעשה בן סורר ומורה (ע א).