OAuth for MCP
Secure AI access to your vibe
Last updated: September 2026
Why OAuth?
When an AI client like Claude connects to your vibe's MCP tools, it needs permission to read and write your data. OAuth 2.1 provides a secure way to grant that access without sharing passwords.
A public or unlisted vibe whose interaction policy is “Anyone can read; only invited people can edit” or “Anyone” allows MCP access without an account, read-only — no OAuth needed. Every other vibe, including a public one on the default policy, needs AI clients to authenticate through OAuth to use its tools. See Sharing & Access.
How it works
vibe-coded.ai runs an OAuth 2.1 authorization server at oauth.vibe-coded.ai. When an AI client first connects to your vibe, the flow looks like this:
- Client registration — The AI client registers itself automatically, through Dynamic Client Registration (DCR) or a Client ID Metadata Document. This happens in the background.
- Authorization request — The client opens a browser window asking you to approve access. You'll see which vibe is being accessed and what scopes are requested.
- You approve — After logging in, you grant the requested permissions.
- Token exchange — The client receives an access token using PKCE (Proof Key for Code Exchange), preventing token interception.
- Tool access — The client includes the token in all MCP requests. The platform verifies it and applies your role on the vibe.
For most users: This flow happens automatically. claude.ai, Claude Desktop and Claude Code handle registration, open the approval page, and store the token. You just click "Approve" once.
Scopes and permissions
The consent screen lists the scopes the client requested (mcp:read, mcp:write, and so on), but scopes don't gate tools. Authorization is role-only: any caller allowed onto the vibe sees every tool. Viewers — and callers with no account on public vibes set to “Anyone can read; only invited people can edit” or “Anyone” — run tools read-only; Writers, Admins and the Owner can write. To limit what an AI client can do, change that user's role under Sharing & Access.
What users see
When an AI client requests access, users see a consent screen showing:
- Which vibe is being accessed
- The name of the AI client requesting access
- Which permissions (scopes) are being requested
- An "Approve" or "Deny" button
After approving, the token is stored by the AI client and reused for future sessions until it expires.
Common issues
Token expired
Access tokens expire after a set period. Most AI clients will automatically request a new token. If you're prompted to re-approve, that's normal.
Redirect URI error
This usually means the AI client's redirect URI isn't registered. For Claude Desktop and Claude Code, this is handled automatically. Third-party clients may need to register their redirect URI during DCR.
Public vs authenticated vibes
If your vibe is public and its interaction policy is “Anyone can read; only invited people can edit” or “Anyone”, MCP access works without OAuth. If you later add access controls, existing unauthenticated connections will stop working until clients authenticate via OAuth.