Fix auth session handling #135
Merged
+14
−5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
his pull request addresses a critical issue where the server would fail to establish a connection for new, unauthenticated users. Previously, an initial authentication failure would throw an unhandled error, preventing the FastMCPSession from being created and causing the connection to be rejected prematurely.
This fix makes the session creation process more robust and non-blocking, ensuring that a session is always established, which aligns with the expected behavior for servers that need to manage sessions dynamically.
Changes
Modified src/FastMCP.ts:
Wrapped the await this.#authenticate(request) call within the createServer function in a try...catch block.
This change gracefully handles initial authentication errors, allowing the session to be created successfully even if the user is not yet authenticated.
Adapted src/FastMCP.test.ts:
Updated the test case previously named blocks unauthorized requests.
The test now correctly asserts that a connection succeeds (the promise resolves) when an initial authentication error occurs, reflecting the new, correct behavior of the application. The test was renamed to allows connection even if initial auth fails to better describe its purpose.