Labsco
MCP SERVER

MCP Remote with Okta/Adobe IMS Authentication

by adobe-rnd

Wraps mcp-remote so a protected MCP server just works: it runs the Adobe IMS or Okta login in a browser once, stores the token, and refreshes it before it expires.

MCP Plumbing: Proxies, Registries & Inspectors
Summary
Solves a problem you only have once, but have permanently.

An internal MCP server behind corporate SSO is unreachable from most clients, and the usual workaround is pasting a token that expires by lunchtime. Doing the browser flow once and then refreshing ahead of expiry is the whole value here — after setup there is nothing to maintain. The diagnostics matter more than they look: when an enterprise OAuth flow fails it usually fails silently, and having status, token and clear as explicit commands is what turns that into a five-minute fix.

What it is

An authentication wrapper rather than a server with its own tools. It sits in front of `mcp-remote`, performs the OAuth implicit flow against Adobe IMS or Okta, and launches the underlying connection with an Authorization bearer header already attached — so a client that cannot do enterprise SSO can still reach a server that requires it.

What you get
  • One command in your client config in place of a login flow: it builds the OAuth URL, opens the browser, catches the callback on a local HTTP server, extracts the tokens, stores them, and starts the connection with the header set
  • Two providers behind one switch — `AUTH_PROVIDER` selects Adobe or Okta, and only that provider's variables are required
  • Token lifecycle handled without you: storage in your home directory, expiry tracking, and automatic refresh controlled by `AUTO_REFRESH` and a `REFRESH_THRESHOLD` in minutes
  • An optional JWT exchange for servers that want a JWT rather than the access token, selected with `AUTH_METHOD`
  • CLI subcommands for when it misbehaves: authenticate, check token status, print the current token, and clear stored tokens
  • A debug mode that reports configuration validation, token expiry and validity, each step of the OAuth flow, refresh timer scheduling, network requests and stack traces
  • Multiple Adobe IMS environments through `ADOBE_IMS_ENV` — production, stage or development — while Okta is targeted directly by domain
Requirements

A client ID from whichever identity provider fronts your server: `ADOBE_CLIENT_ID` for Adobe, or `OKTA_CLIENT_ID` together with `OKTA_DOMAIN` for Okta. The scope defaults sensibly per provider and can be overridden with `ADOBE_SCOPE` or `OKTA_SCOPE`. The redirect URI defaults to a localhost callback and is configurable through `REDIRECT_URI`. Node.js — the documented launch is `npx mcp-remote-with-okta` with the target MCP URL as its argument, or a global npm install. The package is `mcp-remote-with-okta` (1.3.0 in package.json). It runs on macOS, Windows and Linux.

Setup effort

One command plus a key — npm install -g mcp-remote-with-okta, then supply credentials