Den 24-årige släpptes av Sadlers i maj efter 19 framträdanden i tre år och har nu gått med i deras League One rivaler.
"Mitt främsta mål är att rätta till vad som hände på Walsall," MacGillivray berättade Shrews officiella hemsida.
"Jag spelade inte så många gånger som jag ville och det är vad jag vill göra här, spela så många gånger jag kan."
MacGillivray, som också spelat för Stalybridge Celtic och Harrogate Town, är Paul Hursts sjunde signering av sommaren.
Defender Zak Jules, midfielders Jon Nolan och Ebou Adams, ytter Daniel James och framåt Arthur Gnahoua och Lenell John-Lewis har också lagts till i gruppen.
Hitta alla de senaste fotbollsöverföringarna på vår dedikerade sida.
Shrewsbury Town har undertecknat ett ettårigt avtal med före detta Walsalls målvakt Craig MacGillivray.