Skip to main content
The React SDK provides a provider and hooks that handle OAuth via popup windows. Your users authenticate and connect integrations without leaving your app.

Install

Complete example

KontextProvider

Wrap your app with KontextProvider to manage the OAuth popup lifecycle. The provider internally uses the useKontext hook and passes its state to all child components via React Context.
Props:
  • popupFeatures — A string passed to window.open() to control popup size and position. Defaults to "width=600,height=700".
  • onAuthComplete — Called when the auth popup closes.
The provider opens a popup for the OAuth flow automatically when the MCP server requires authentication. No redirect handling or callback routes are needed in your app.

useKontext hook

The low-level hook for popup handling. Use it directly when you want to wire MCP updates yourself (for example with useAgent from agents/react).
Returns:
  • authenticatingtrue while the OAuth popup is open and the user is signing in. Use this to show a loading state.
  • onMcpUpdate — A callback function that receives MCP state updates. Pass this to your agent framework to keep tool state in sync.
  • handleElicitationUrl — A function that opens a popup for integration-specific OAuth. Call this when a user needs to connect a new integration (GitHub, Slack, etc.).

OAuth popup flow

The SDK handles OAuth entirely through popups:
  1. KontextProvider detects the user needs to authenticate.
  2. A popup opens to the Kontext authorization page.
  3. The user signs in and grants consent.
  4. The popup redirects to the backend’s OAuth callback handler, the authorization code is exchanged for tokens, and the popup closes.
  5. authenticating flips to false and your app has a valid session.
No route handlers or callback pages are needed in your frontend. The backend handles the OAuth callback; the React SDK detects when the popup closes and resumes the session.

Integration with Cloudflare useAgent

Pass onMcpUpdate to the useAgent hook to sync MCP tool state between your Cloudflare Agent and the React frontend:
When the agent’s MCP state changes (tools added, integrations connected or disconnected), onMcpUpdate keeps the frontend in sync. If you’re already using KontextProvider, you can skip this manual wiring and use useKontextAgent() from @kontext-dev/js-sdk/react/cloudflare.

Integration connection popups

When a user needs to connect an integration they haven’t authorized yet, call handleElicitationUrl with the connection URL:
This opens a popup for the integration’s OAuth flow, the same pattern as the initial Kontext sign-in. The popup closes when the connection completes.

useKontextContext

Access the raw provider state if you need lower-level control:
This returns the full internal state of the KontextProvider. If you’re integrating with Cloudflare Agents, prefer useKontextAgent for most cases.

Next steps