Stores and refreshes OAuth credentials for streamable HTTP MCP servers.
Summary
Functions
Deletes stored OAuth tokens for the given MCP server name and URL.
Loads OAuth tokens for the given MCP server name and URL.
Refreshes OAuth tokens when they are near expiry.
Stores OAuth tokens for the given MCP server name and URL.
Types
@type store_mode() :: :auto | :file | :keyring
Where to store OAuth credentials.
@type tokens() :: %{ server_name: String.t(), url: String.t(), client_id: String.t(), access_token: String.t(), refresh_token: String.t() | nil, expires_at: non_neg_integer() | nil, scopes: [String.t()] }
Stored OAuth credentials for an MCP server.
Functions
@spec delete_tokens(String.t(), String.t(), store_mode() | nil) :: :ok | {:error, term()}
Deletes stored OAuth tokens for the given MCP server name and URL.
@spec load_tokens(String.t(), String.t(), store_mode() | nil) :: tokens() | nil
Loads OAuth tokens for the given MCP server name and URL.
Returns nil when no tokens are stored or the entry cannot be decoded.
@spec refresh_if_needed(tokens() | nil, String.t(), keyword()) :: {:ok, tokens() | nil} | {:error, term()}
Refreshes OAuth tokens when they are near expiry.
Returns the original tokens when refresh is not needed or not possible.
@spec save_tokens(tokens(), store_mode() | nil) :: :ok | {:error, term()}
Stores OAuth tokens for the given MCP server name and URL.