Try using "Get" instead of "Needs". Also, add a backtick to the end of the filename, or use the .m extension explicitly.
As the messages suggests, Needs expects the package file to do a little more than just contain code. Needs expects the package file to contain a BeginPackage/EndPackage construct that adds a context like MyPackage`
to the context path. Apparently the package file you downloaded doesn't do that.
Get will just expect to find syntactically-correct Wolfram Language code and evaluate it and return the last expression, nothing more.
The advantage of having a package add to the context path is that multiple calls to Needs will result in the file being loaded only once. It does that by checking whether the requested context has been added to the context path.