If you have tried to connect an AI agent to a SaaS tool like Slack or GitHub, you have hit the OAuth wall. The agent needs a token, but getting one usually means a developer clicking through a browser flow. For headless agents running in production, that is a non-starter.
Zero-Touch OAuth for MCP solves this by letting an agent request and receive tokens automatically, without human intervention. It is part of the Model Context Protocol (MCP) specification, designed for enterprise deployments where agents must authenticate to multiple services at scale.
How It Works
Zero-Touch OAuth builds on the standard OAuth 2.0 device authorization grant (RFC 8628) but removes the need for a user to manually enter a code. Instead, the MCP host (the application running the agent) acts as an authorization server proxy.
Here is the flow:
- The agent sends a request to the MCP server for a resource (e.g., "list Slack channels").
- The MCP server returns an OAuth 2.0 device authorization response with a
verification_urianduser_code. - The MCP host automatically polls the token endpoint using the device code, without requiring a browser.
- The authorization server validates the request (e.g., via a pre-configured service principal) and returns an access token.
- The MCP server proxies the token back to the agent, which uses it to call the target API.
This works because the MCP host is trusted and has its own credentials (client ID and secret) registered with the authorization server. The host can also cache and refresh tokens.
Concrete Example: Slack Integration
Suppose you run a customer support agent that needs to read Slack messages. With Zero-Touch OAuth, you configure the MCP host with a Slack OAuth app client ID and secret. When the agent requests slack://conversations.list, the MCP server triggers the device flow. The host polls the token endpoint using its own credentials, and within seconds the agent gets a Slack token scoped to channels:history.
No developer clicks "Allow" in a browser. The token is short-lived (e.g., 1 hour) and automatically refreshed.