Everyone connects with their own credential or OAuth grant — sharing never hands over the owner’s login. A custom MCP server is invisible to everyone but its owner until shared.
Probe before registering
initialize handshake.
supports_dcr: false means you’ll need to supply your own OAuth client ID and secret. A server wanting a bearer token reports "auth_type": "bearer".
Register the connector
Repeat
--header "Key: Value" for extra static headers the server requires.
Connect your credential
Registering connects nobody. Each person connects with their own credential:none, bearer, basic, and url_param this connects immediately. For oauth2 it starts the OAuth flow below.
credential status reports only whether a value is stored, and no response ever echoes a credential.
OAuth 2.1
REST — begin the flow
GET /api/mcp/oauth/callback, is public and state-verified rather than JWT-gated — a browser redirect can’t carry your session. It validates the signed PKCE state before exchanging the code and storing encrypted tokens.
Share it
A connector is private until shared. Share with a user, publicly, or with a specific agent:Revoking a share also removes the grantee’s stored credential, so a re-grant starts from a clean reconnect.
Related
- MCP overview — the gateway, delegation token, and request flow
- Deploy your own server — build from source instead
- Per-agent tool permissions — restricting tools, team sharing
- Access control overview
