{
  "markdown": "# @vibelogin/mcp\n\nAdd authentication to your app without leaving your IDE. MCP server for Cursor, Claude Code, Windsurf, and Cline.\n\nJust say **\"add authentication to my app\"** — the agent creates your project, configures auth methods, wires up Google OAuth, and scaffolds a working sign-in flow into your codebase. All from your editor's chat.\n\n---\n\n## Install\n\nNo global install needed. Wire it into your MCP client config once and it runs on demand via `bunx`.\n\n---\n\n## Client configuration\n\n> **One snippet works in every client.** Paste this into your MCP settings and you're done.\n\n```json\n{\n  \"mcpServers\": {\n    \"vibelogin\": {\n      \"command\": \"bunx\",\n      \"args\": [\"@vibelogin/mcp\"]\n    }\n  }\n}\n```\n\nThe first tool call opens a browser for one-click consent. After that, tokens are cached under `~/.vibelogin/credentials.json` — you won't be asked to log in again for 30 days.\n\n### Claude Desktop / Claude Code\n\n`~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):\n\n```json\n{\n  \"mcpServers\": {\n    \"vibelogin\": {\n      \"command\": \"bunx\",\n      \"args\": [\"@vibelogin/mcp\"]\n    }\n  }\n}\n```\n\n### Cursor\n\n`~/.cursor/mcp.json` (or per-project `.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"vibelogin\": {\n      \"command\": \"bunx\",\n      \"args\": [\"@vibelogin/mcp\"]\n    }\n  }\n}\n```\n\n### Windsurf / Cline / Zed\n\nSame shape — every MCP client accepts a `command` + `args` block. The one-liner above works in all of them.\n\nThat's it — no environment variables needed. Defaults point to production automatically.\n\n---\n\n## Authentication\n\nOn first use, a browser window opens for one-click consent. After that, you're authenticated for 30 days — no further prompts.\n\n---\n\n## Tools\n\nThe agent picks the right tools automatically based on your conversation. Just say what you need.\n\n### `create_project`\n\nCreates a new VibeLogin project in your org. Returns the project's id, slug, oauthSlug, environment, publishable key, and **secret key (shown once)**.\n\n| Param | Type | Required | Description |\n| --- | --- | --- | --- |\n| `name` | string | yes | Human-readable project name. |\n| `slug` | string | no | URL-safe slug; auto-generated from `name` if omitted. |\n| `environment` | enum | no | `production` \\| `development` \\| `staging` (default `production`). |\n\n### `list_projects`\n\nLists every project in your org. Use this when the agent needs to discover what already exists before creating something new.\n\nNo parameters.\n\n### `get_project`\n\nLook up a single project by id, slug, or oauthSlug.\n\n| Param | Type | Required | Description |\n| --- | --- | --- | --- |\n| `idOrSlug` | string | yes | Project id, slug, or oauthSlug. |\n\n### `configure_auth`\n\nToggle auth methods, set redirect URLs, and/or wire up Google OAuth. Field-level updates — anything you don't set is left untouched.\n\n| Param | Type | Required | Description |\n| --- | --- | --- | --- |\n| `projectId` | string | yes | The project's id. |\n| `methods.emailPassword` | boolean | no | Enable email + password sign-in. |\n| `methods.magicLink` | boolean | no | Enable magic link emails. |\n| `methods.emailOtp` | boolean | no | Enable 6-digit email OTP codes. |\n| `methods.passwordReset` | boolean | no | Enable password reset emails. |\n| `methods.emailVerification` | boolean | no | Require email verification on signup. |\n| `google.clientId` | string | with `google` | Google OAuth client ID (from Google Cloud Console). |\n| `google.clientSecret` | string | with `google` | Google OAuth client secret. |\n| `google.enabled` | boolean | no | Default `true`. |\n| `redirectUrls` | string[] | no | **Overwrites** the project's allowed redirect URL list. |\n\nIf you call this without `google`, the response includes the exact Google Cloud Console URL + redirect URI you need to set up the credentials.\n\n### `add_auth_to_project`\n\nScaffold a working sign-in flow into your codebase. Detects the framework from `package.json` and writes non-destructive files (existing files are skipped, never clobbered).\n\n**Supported frameworks today:** Next.js (App Router), Vite + React.\n**Refused with guidance:** Remix, Astro, Express, unknown.\n\n| Param | Type | Required | Description |\n| --- | --- | --- | --- |\n| `projectDir` | string | yes | Absolute path to the project root. |\n| `slug` | string | yes | The project's `oauthSlug` (from `create_project`). |\n| `publishableKey` | string | yes | The project's publishable key. |\n| `appUrl` | string | yes | Your app's origin (e.g. `https://myapp.com`). |\n\n#### Files written for **Next.js**\n\n```\nmiddleware.ts                       # hostedAuthMiddleware\napp/auth/callback/route.ts          # createCallbackHandler\napp/login/page.tsx                  # <VibeLogin />\n.env.local.example                  # publishable key + secret placeholder\n```\n\nNext steps printed by the tool:\n1. `pnpm add @vibelogin/nextjs`\n2. Copy `.env.local.example` → `.env.local`, fill `VIBELOGIN_SECRET_KEY`\n3. `pnpm dev` → open `/login`\n\n#### Files written for **Vite + React**\n\n```\nsrc/auth/VibeLoginProvider.tsx      # context + useVibeLogin() hook\nsrc/auth/Login.tsx                  # /login redirect to hosted UI\nsrc/auth/Callback.tsx               # /auth/callback handler\n.env.example                        # VITE_-prefixed publishable key\n```\n\nNext steps printed by the tool:\n1. `pnpm add @vibelogin/react react-router-dom`\n2. Wrap `<App/>` in `<VibeLoginProvider/>`\n3. Add routes `/login` and `/auth/callback`\n4. Copy `.env.example` → `.env.local`\n5. `pnpm dev` → open `/login`\n\n---\n\n## Example conversations\n\n> **You:** \"Add VibeLogin to this Next.js app. Email + password and Google sign-in.\"\n>\n> **Agent:** *(calls `create_project { name: \"myapp\", environment: \"production\" }`)*\n> Created `myapp` (`pk_live_…`).\n> *(calls `configure_auth { projectId, methods: { emailPassword: true } }`)*\n> Email + password enabled. To turn on Google, I need a Client ID and Secret from Google Cloud Console — here's the redirect URI to authorize: `https://api.vibelogin.com/oauth/myapp-xyz/google/callback`.\n> *(after you paste creds:)*\n> *(calls `configure_auth { google: { clientId, clientSecret } }`)*\n> *(calls `add_auth_to_project { projectDir: \".\", slug: \"myapp-xyz\", publishableKey: \"pk_live_…\", appUrl: \"https://myapp.com\" }`)*\n> Scaffold complete (next). Wrote `middleware.ts`, `app/auth/callback/route.ts`, `app/login/page.tsx`, `.env.local.example`. Run `pnpm add @vibelogin/nextjs && pnpm dev` and open `/login`.\n\n> **You:** \"What projects do I have already?\"\n>\n> **Agent:** *(calls `list_projects`)*\n> You have 3: `myapp` (production), `myapp-staging` (staging), `internal-tools` (development).\n\n---\n\n## Security\n\n- **No secrets in the agent** — authentication uses loopback OAuth + PKCE (RFC 8252)\n- **Single-use authorization codes** with 2-minute TTL\n- **Rotated refresh tokens** — every refresh invalidates the previous one\n- **Credentials stored securely** — `chmod 600` on `~/.vibelogin/credentials.json`\n\n---\n\n## Supported frameworks\n\n| Framework | Status |\n| --- | --- |\n| Next.js (App Router) | Fully supported |\n| Vite + React | Fully supported |\n| Remix, Astro, Express | Coming soon |\n\n---\n\n## License\n\nApache-2.0\n",
  "bytes": 7133,
  "sha": "23e6e5fe4298f6d8f876968f63710516be9c0619280986c27f4c805b0b8d9470",
  "repo_slug": "vibelogin/mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_snrniranjan_vibelogin_mcp_f07ea313/readme"
}