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.meinto 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) | |
|---|---|---|
| Install | npx @picora/mcp-server per machine | Nothing |
| Auth | Paste sk_live_... API Key | OAuth browser flow |
| Updates | Manual pnpm dlx upgrade | Always latest server |
| Enterprise IT | Easy (no firewall changes) | Requires outbound HTTPS to mcp.picora.me |
| Multiple devices | Configure each device separately | Same 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
- Open Claude Desktop → Settings → Developer → Edit Config.
- Add a
mcpServersentry:{"mcpServers": {"picora": {"url": "https://mcp.picora.me"}}} - Restart Claude Desktop. The first time you ask a Picora-related question, Claude pops your browser to
https://center.picora.me/oauth/consent?.... - Sign in (or create an account), review the permissions, click Allow access. Claude reconnects automatically.
Cursor
- Open Cursor → Settings → MCP.
- Click Add new MCP server and set the URL to
https://mcp.picora.me. - Cursor opens the consent page in your default browser. Approve and return to Cursor.
Claude.ai (web)
- Open Settings → Feature Preview → Connectors.
- Click Add custom connector and paste
https://mcp.picora.me. - The consent flow runs entirely in your existing browser tab.
What does the consent screen show?
When you authorize, the OAuth flow asks for these scopes (you can uncheck the dangerous ones):
| Scope | What it lets the AI do |
|---|---|
openid | Identify you to the AI client (required) |
media.read | Look up your images, videos, audio, usage |
media.write | Upload new media, update titles / tags |
media.delete | Permanently delete media (uncheck if unsure) |
usage.read | Show your storage and bandwidth quota |
account.read | Display 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_challengeyour 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.meverifies access tokens locally againsthttps://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.
Related
- AI Workflows overview — concepts, security, dual-mode comparison
- Claude Desktop setup — recommended integration walkthrough
- Tool catalog — full reference of 12 MCP tools
- Stdio MCP (
@picora/mcp-server) — the original v0.13 package, still supported - Moraya integration — Moraya can use either transport
- API Reference — direct REST API for non-MCP integrations