https://mcp.morphic.io/v2/mcp
There is nothing to put in a config file — no header, no key, no account ID.
Connecting
1
Add the connect URL
Add
https://mcp.morphic.io/v2/mcp to your client. Clients that support OAuth discovery need no further configuration.2
Sign in to Morphic
The first time the client needs Morphic it opens app.morphic.io and you sign in as yourself.
3
Approve
Morphic shows which client is asking, which of your workspaces it may reach, and what it may do. Choose, then approve.
4
Done
The client holds a token valid for one hour and renews it silently. Nothing long-lived is written to your machine.
You will never be asked for a Morphic password anywhere except
app.morphic.io. If another page asks for your Morphic credentials, it is not us — close it.error=access_denied to your client as OAuth requires, and nothing is stored.
Your connection, your workspaces
A connection identifies you, not a workspace — but it only reaches the workspaces you ticked on the approval screen. Which one a request acts in is resolved in this order:- A
workspaceargument on the tool call itself — every tool accepts one. ?workspace=<slug>on the connect URL:https://mcp.morphic.io/v2/mcp?workspace=acme- If the grant reaches exactly one workspace, it is used automatically.
- Otherwise the server asks which one. Call
list_workspacesfor the slugs, then retry withworkspaceset.
?workspace= when you want a standing default rather than a per-call choice. To work in two approved workspaces at once without naming one each time, add a second server entry with a different ?workspace=. The advertised tool list stays the same size either way.
Every request re-checks that you are still a member of the workspace being addressed. Losing access to a workspace stops that connection reaching it, without affecting your others.
Permission levels
The approval screen offers three levels. A client can never be granted more than it asked for, and one that asks for nothing gets Read only.Managing and revoking connections
Each approved connection is separate. Revoke one athttps://app.morphic.io/home/{workspace}/settings/developers → Connected apps. Revoking the connection you gave Cursor leaves the one you gave Claude working. Revocation takes effect within two minutes.
Redirect URI validation
The server only redirects back to aredirect_uri it trusts: one registered by the client during dynamic client registration (POST /v2/mcp/register, which issues an mc1_ client id), or one under a hard allowlist — https://claude.ai, https://claude.com, https://cursor.com, https://chatgpt.com, https://chat.openai.com, and loopback addresses (localhost, 127.0.0.1, [::1], any port) for local clients. Self-hosted deployments can extend the allowlist with REDIRECT_URI_ALLOWLIST.
Token details
Access tokens are signed, audience-bound envelopes prefixedmo_at_, valid one hour, paired with a rotating refresh token (mo_rt_). They are bound to https://mcp.morphic.io/v2/mcp per RFC 8707, so a token issued for any other resource is rejected. Tokens carry no API key and no account id — the workspace is decided per request and membership-checked.
Environment variables (self-hosted)
SUPABASE_URL and SUPABASE_ANON_KEY are not used. Earlier documentation listed them as required; the Supabase auth path was removed and the variables are ignored.