Connect Claude to your app in five minutes
We have written about how every scaffolded app is an MCP server. This post is the other side of that story: what it actually feels like to connect a chat app to your MVP, minute by minute. Spoiler: there is no client setup, no key copying for chat apps, and nothing to configure on a dashboard — because the OAuth machinery ships inside the scaffold.
Minute one: scaffold and deploy
pnpm new my-idea --type webapp --features example,mcp --json
pnpm install
cd apps/my-idea && npx convex dev --once && cd ../..
pnpm deploy my-idea
The mcp feature implies api-keys automatically. Once deployed, the in-app MCP page shows your endpoint — the Convex site URL with /mcp on the end — plus a copyable client config and a live list of the tools the server exposes.
Minute two: paste the endpoint
In Claude — or ChatGPT, Gemini, or Grok — you add a custom connector and paste that endpoint. That is the entire client-side setup. The chat app hits the endpoint, gets a 401 with a resource_metadata pointer, follows RFC 9728 discovery to the authorization server, and registers itself via RFC 7591 dynamic client registration. You never created a client ID anywhere.
Minute three: the consent screen
Your browser opens your own app — the consent page is a route in the scaffold, styled by your design and accent like every other screen. It names the client asking for access and asks you to approve. Click approve, and the PKCE code exchange happens behind your back: single-use hashed authorization codes, S256, rotating refresh tokens. The chat app is now authenticated as you, not as some service account.
Minute four: tools appear in chat
Back in the conversation, your app's tools are listed on the connector. Ask Claude to list your items or create a record and it calls tools/call against your deployment, scoped to your user — the OAuth bearer token resolves to the same principal a session would. If the client supports MCP Apps, tool results can even render as live interactive HTML instead of JSON.
Minute five: the Connections card
Every approval you grant shows up on the MCP page's Connections card inside your app. Each connected client is listed with a disconnect button that revokes it — one click and its tokens stop working. Your users get the same visibility over whatever assistants they connect. Nothing connected yet? The card says so.
The other door: API keys for dev tools
Chat apps want OAuth; dev tools want a header. For Claude Code and friends, mint a key on the API Keys page and use the .mcp.json the MCP page generates for you:
{
"mcpServers": {
"my-idea": {
"type": "http",
"url": "https://<your-deployment>.convex.site/mcp",
"headers": { "Authorization": "Bearer <your api key>" }
}
}
}
Or the one-liner: claude mcp add --transport http my-idea <endpoint>, then set the header. Both paths — OAuth token and API key — resolve to the same user, so authorization logic is written once.
Paste an endpoint, click approve, and your MVP is a tool your assistant can use.
Five minutes is not a marketing number here; it is mostly the deploy step. The connect part is under one.