Skip to content

Remote MCP via mcp.picora.me (OAuth)

mcp.picora.me is Picora’s remote Model Context Protocol endpoint. Unlike the stdio package (@picora/mcp-server), there’s nothing to install — your AI client just needs the URL, and the OAuth handshake happens in your browser.

TL;DR: paste https://mcp.picora.me into your client’s MCP server settings, click “Connect”, approve in the popup, done.

Why use the remote endpoint

Stdio (@picora/mcp-server)Remote (mcp.picora.me)
Installnpx @picora/mcp-server per machineNothing
AuthPaste sk_live_... API KeyOAuth browser flow
UpdatesManual pnpm dlx upgradeAlways latest server
Enterprise ITEasy (no firewall changes)Requires outbound HTTPS to mcp.picora.me
Multiple devicesConfigure each device separatelySame OAuth grant works everywhere you sign in

Supported clients

v0.14 launches with whitelisted access for these clients (others see “pending approval” until our review queue completes):

  • Claude Desktop ≥ 0.10 (macOS / Windows)
  • Claude.ai web (Settings → Connectors)
  • Cursor ≥ 0.42
  • Continue.dev ≥ 0.9

Need access for another client? Email support@picora.me with the client name and a brief description.

Setup walkthrough

Claude Desktop

  1. Open Claude Desktop → Settings → Developer → Edit Config.
  2. Add a mcpServers entry:
    {
    "mcpServers": {
    "picora": {
    "url": "https://mcp.picora.me"
    }
    }
    }
  3. Restart Claude Desktop. The first time you ask a Picora-related question, Claude pops your browser to https://center.picora.me/oauth/consent?....
  4. Sign in (or create an account), review the permissions, click Allow access. Claude reconnects automatically.

Cursor

  1. Open Cursor → Settings → MCP.
  2. Click Add new MCP server and set the URL to https://mcp.picora.me.
  3. Cursor opens the consent page in your default browser. Approve and return to Cursor.

Claude.ai (web)

  1. Open Settings → Feature Preview → Connectors.
  2. Click Add custom connector and paste https://mcp.picora.me.
  3. The consent flow runs entirely in your existing browser tab.

When you authorize, the OAuth flow asks for these scopes (you can uncheck the dangerous ones):

ScopeWhat it lets the AI do
openidIdentify you to the AI client (required)
media.readLook up your images, videos, audio, usage
media.writeUpload new media, update titles / tags
media.deletePermanently delete media (uncheck if unsure)
usage.readShow your storage and bandwidth quota
account.readDisplay your name / email / avatar in the AI UI

You can change your mind any time at center.picora.me/account/connections — revoking takes effect immediately.

Security model

  • PKCE-protected: every authorization is bound to a code_challenge your AI client generates. Stolen authorization codes can’t be redeemed elsewhere.
  • Short-lived access tokens: access tokens last 1 hour. Long-lived refresh tokens (90 days) rotate every time they’re used — if a leaked refresh token is replayed, Picora detects it and revokes every token for that client immediately.
  • No raw API Key on disk: the only credential your AI client stores is an OAuth refresh token, scoped to the permissions you approved. No sk_live_... ever leaves Picora.
  • Independent JWT verification: mcp.picora.me verifies access tokens locally against https://api.picora.me/.well-known/jwks.json (cached 10 min). KV-based revocation list propagates within seconds when you revoke.
  • External audit: v0.14 ships only after a third-party OAuth security audit (PKCE / state / redirect_uri / refresh rotation).

Rate limits

OAuth tokens follow the same per-user tiered rate limits as API Keys:

  • read (GET list/detail/usage): 600 / minute
  • upload (POST media): 60 / minute
  • mutation (PATCH / DELETE): 120 / minute
  • global ceiling: 5,000 requests / hour per user

When the AI client hits a 429, it backs off automatically using the Retry-After header. Pro and Pro+ accounts get a ×10 multiplier — usually enough to avoid throttling on legitimate workflows.

Troubleshooting

“Token verification failed: Token has been revoked” — you (or someone with access to your account) revoked the connection at /account/connections. Reauthorize from your AI client.

“Unknown kid” — Picora rotated its JWT signing key faster than your local cache. Clients usually recover within 10 minutes; if not, restart your AI client.

“This client is awaiting whitelist approval” — your AI client isn’t on the v0.14 whitelist (Claude Desktop / Claude.ai / Cursor / Continue.dev). Use the stdio package as a workaround, or email support@picora.me.

Browser doesn’t open during OAuth — make sure your AI client has system-level browser launch permission. As a fallback, copy the auth URL from the AI client’s logs and paste it into your browser.