Codex.MCP.OAuth (Codex SDK v0.7.2)

Copy Markdown View Source

Stores and refreshes OAuth credentials for streamable HTTP MCP servers.

Summary

Types

Where to store OAuth credentials.

Stored OAuth credentials for an MCP server.

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

store_mode()

@type store_mode() :: :auto | :file | :keyring

Where to store OAuth credentials.

tokens()

@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

delete_tokens(server_name, url, store_mode \\ nil)

@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.

load_tokens(server_name, url, store_mode \\ nil)

@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.

refresh_if_needed(tokens, url, opts)

@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.

save_tokens(tokens, store_mode \\ nil)

@spec save_tokens(tokens(), store_mode() | nil) :: :ok | {:error, term()}

Stores OAuth tokens for the given MCP server name and URL.