Include AuthInfo from Bearer Validation in Server Request Handler #166
+22
−10
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.
Includes the
req.auth
AuthInfo that's set by the MCP Server bearer auth middleware in the server request handler via SSE Transport, allowing for distinguishing of users in requests (eg. tool use).Motivation and Context
When an MCP Server makes a tool call it may need to validate that a particular user has the authorization necessary to access a particular resource. For instance, the MCP Client could give any email it would like to the MCP Server, say to fetch audit logs of a project, but the Server should verify that the user has access to that particular project, which has to happen at the tool call level in the server.
This PR allows the developer to access the auth info not only in the initial
/sse
or/message
route handlers but in the server request handler (eg. tool call) itself.How Has This Been Tested?
Running an authenticated MCP Client session with a Server and validating that the
extra
param appears in the tool call with auth info.Breaking Changes
None.
Types of changes
Checklist
Additional context
This allows for simpler access of auth data than simply including the session id in the transport since you'd have to handle mapping in that case: #158