{ "name": "@mcp-examples/oauth", "private": true, "type": "module", "scripts": { "server": "tsx server.ts", "client": "tsx client.ts", "client:browser": "tsx simpleOAuthClient.ts" }, "dependencies": { "@mcp-examples/shared": "workspace:*", "@modelcontextprotocol/client": "workspace:*", "@modelcontextprotocol/express": "workspace:*", "@modelcontextprotocol/node": "workspace:*", "@modelcontextprotocol/server": "workspace:*", "cors": "catalog:runtimeServerOnly", "open": "^11.0.0", "zod": "catalog:runtimeShared" }, "devDependencies": { "@types/cors": "catalog:devTools", "tsx": "catalog:devTools" }, "example": { "transports": [ "http" ], "era": "dual", "path": "/mcp", "env": { "OAUTH_DEMO_AUTO_CONSENT": "1" }, "//": "client.ts drives the full authorization-code flow headlessly because OAUTH_DEMO_AUTO_CONSENT=1 makes the demo AS auto-sign-in + auto-approve, collapsing the browser dance into a 302 chain. simpleOAuthClient.ts is the manual real-browser flow — run via `pnpm client:browser`." } }