| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| Expand Up | @@ -70,6 +70,41 @@ If you already hold a connected `ClientSession` (`Client.session` is one), hand | |||||
|
|
||||||
| `ClientSessionGroup` is built on `ClientSession`, not on `Client`. Each `connect_to_server` runs the classic `initialize` handshake. It never sends the `server/discover` probe described in **[Protocol versions](../protocol-versions.md)**. Every MCP server understands that handshake, so this costs you compatibility with nothing; it only means a group takes the older, slower path to a server that could do better. | ||||||
|
|
||||||
| ## Authentication | ||||||
|
|
||||||
| When connecting to HTTP servers using `StreamableHttpParameters` or `SseServerParameters`, you can configure an authentication provider (such as an OAuth 2.0 `OAuthClientProvider` or custom `httpx2.Auth` handler) via the `auth=` parameter: | ||||||
|
|
||||||
| ```python | ||||||
| import asyncio | ||||||
|
|
||||||
| from mcp.client.auth import OAuthClientProvider | ||||||
| from mcp.client.session_group import ClientSessionGroup, StreamableHttpParameters | ||||||
|
|
||||||
|
|
||||||
| async def main() -> None: | ||||||
| server_auth = OAuthClientProvider( | ||||||
| server_url="https://api.example.com", | ||||||
| client_metadata=client_metadata, | ||||||
| storage=token_storage, | ||||||
| redirect_handler=redirect_handler, | ||||||
| callback_handler=callback_handler, | ||||||
| ) | ||||||
|
|
||||||
| server_params = StreamableHttpParameters( | ||||||
| url="https://api.example.com/mcp", | ||||||
| auth=server_auth, | ||||||
| ) | ||||||
|
|
||||||
| async with ClientSessionGroup() as group: | ||||||
| await group.connect_to_server(server_params) | ||||||
|
|
||||||
|
|
||||||
| if __name__ == "__main__": | ||||||
| asyncio.run(main()) | ||||||
| ``` | ||||||
|
|
||||||
| Because `auth` is configured per `ServerParameters` instance, each server in the session group maintains independent authentication context, scopes, and token-refresh lifecycle. Custom headers can still be supplied alongside `auth` via `headers=`. | ||||||
|
Comment thread
Copy link
Copy Markdown
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low QualityP2: When the same auth object is assigned to two parameter instances, ClientSessionGroup shares its mutable OAuth context and tokens. Tell users to construct a distinct auth instance per server before claiming these lifecycles are independent. Prompt for AI agentsCheck if this issue is valid — if so, understand the root cause and fix it. At docs/client/session-groups.md, line 98:
<comment>When the same auth object is assigned to two parameter instances, `ClientSessionGroup` shares its mutable OAuth context and tokens. Tell users to construct a distinct auth instance per server before claiming these lifecycles are independent.</comment>
<file context>
@@ -70,6 +70,33 @@ If you already hold a connected `ClientSession` (`Client.session` is one), hand
+ await group.connect_to_server(server_params)
+```
+
+Because `auth` is configured per `ServerParameters` instance, each server in the session group maintains independent authentication context, scopes, and token-refresh lifecycle. Custom headers can still be supplied alongside `auth` via `headers=`.
+
## Recap
</file context>
Suggested change
Sorry, something went wrong.
All reactions
|
||||||
|
|
||||||
| ## Recap | ||||||
|
|
||||||
| * `ClientSessionGroup` holds many server connections and merges their tools, resources, and prompts into one `dict` each. | ||||||
| Expand Down | ||||||
| Back | FazBrowse Home | New Git URL |
Uh oh!
There was an error while loading. Please reload this page.