So first lets separate two different actions that are performed in FIDO2/Webauthn.
User Verification - is an action of verifying user genuineness. Is it really Richie or someone else? This is where the "biometrics" occur, but it could be pin code for example. Fingerprint biometrics is just one of the user verification methods. The user verification is performed on the device by the device. Server will NEVER, and must NEVER receive any user verification information as this would be a huge breach of privacy and security.
Authentication - is an action of proving your authenticity. In case of FIDO2/Webauthn this is done by performing cryptographic signature over the challenge.
The authentication is being done to someone. The same way you go to the bank and authenticate yourself to the bank by showing them your passport, the exactly the same way you go the FIDO server and authenticate to it with your device.
You can't authenticate without FIDO server for the same reason that you can't authenticate yourself to the bank, and take 100,000$ loan without banks approval.
From more in-depth technical view: the FIDO authenticator has a private key, while the server has a public key and a credential id. The server generates a random, per session challenge, and the corresponding signature by the device contains this challenge. The server guarantees that the challenge was not modified, because, well, servers do these things. If you would try to attempt to implement client(browser) side verification, it would be like to implement password verification on the browser side, not safe at all.
If you are struggling with your implementation, I would suggest either taking one of the many existing open source servers: https://github.com/herrjemand/awesome-webauthn, or here is a good article on how to verify assertions https://medium.com/webauthnworks/verifying-fido2-responses-4691288c8770 (P.S. you do not need attestation)