Connect AI assistants (MCP): Claude, ChatGPT, Cursor and VS Code
Add https://api.sovaria.in/mcp to your AI assistant and sign in: it works on the organization and project you pick, with your role, read-only or read and write, and asks before it changes anything.
Sovaria runs a hosted MCP server (Model Context Protocol) at https://api.sovaria.in/mcp. Add it to Claude, ChatGPT, Cursor, VS Code or any MCP client and the assistant can read your schema, query data, change tables, deploy functions, check access rules and read logs — the same 240 tools Sovariq uses. There is nothing to install and no key to paste: the assistant signs you in with OAuth, and you choose in the Sovaria console what it may touch.
Connect
Claude (web, desktop): Settings › Connectors › Add custom connector
Name: Sovaria
URL: https://api.sovaria.in/mcp
Then press Connect and sign in to Sovaria.Sovariq › Settings › Use Sovaria in other AI apps shows the same snippets with your project filled in.
Approve the connection
The first time, the assistant opens Sovaria in your browser. Sign in if you need to, then choose:
- Organization: one of yours. The assistant can never see or act on another one.
- Project: one project (the default), or Every project in the organization; then add
?project=<project id>to the URL to pick one per assistant setup. - Access: Read and write (the assistant asks you before anything that writes, deletes or runs code) or Read only (it only gets tools that read, and the API refuses changes).
The page shows the app's name and where it returns (claude.ai, chatgpt.com, an app on your computer). An app registers itself, so it can pick any name: approve only if you just started connecting it and the return address looks right. When an app calls itself Claude, ChatGPT, Cursor or VS Code but doesn't return to that app's own address, the page says it may be pretending and asks you to confirm before Allow works. You get an email when an assistant is connected, and it appears in Account › Security › AI assistants and in your security activity.
URL options
| Option | Example | What it does |
|---|---|---|
project | ?project=5f2c… | The project to work on, for a connection you allowed on every project. It must be in the connected organization and open to you; a connection approved for one project always uses that one. |
read_only | ?read_only=true | Only read tools, whatever the connection allows. Asked for before you connect, it is also preselected (and locked) on the approval page. |
features | ?features=database,storage | Load fewer tools. Categories: database, vectors, documents, storage, auth, policies, functions, simulation, versions, environments, realtime, observability, settings, api, billing, mobile, messaging, builds (context is always there). |
What an assistant can do
Everything goes through Sovaria's API as you: your team role in the organization, Guard policies, row-level security, plan limits and the audit log apply exactly as in the console, and so does your organization's AI policy (Organization › Roles), which can narrow what any AI may do. On top of that, an assistant's token is held to the connection:
| Allowed | Never | |
|---|---|---|
| Where | The connected organization; the pinned project | Other organizations, other projects, listing your organizations |
| Read only | Reads, read-only SQL and GraphQL, searches, simulations, dry runs | Anything that writes (MCP_READ_ONLY) |
| Account | Your name and email (who you are) | Password, email, two-factor, passkeys, sessions, CLI or assistant connections, social and SSO links |
| Money | Reading plan, usage and spend | Changing plans, subscriptions, spend caps or compute sizes |
| Organization | Syncing connected integrations | Members, invites, roles, the AI policy, SSO, encryption keys, creating or deleting organizations and projects |
Calls outside these lines are refused with 403 and a code: MCP_SCOPE (another organization or project), MCP_READ_ONLY (a change on a read-only connection) or MCP_NOT_ALLOWED (account, money or organization administration). Tools that change something are marked as such in MCP, so your assistant asks before it runs them.
See and disconnect assistants
- Account › Security › AI assistants: each assistant with its organization, project, access and when it was last used. Disconnect ends it at once: its tokens stop working within seconds.
- Organization settings › Security › AI assistants (owners and admins): members' connections, disconnect any, and turn connecting off for the organization — that ends every member's connection.
- CLI:
sov mcp connections,sov mcp disconnect <id>,sov mcp org --deny/--allow. - SDKs:
sov.api.mcp.listConnections(),disconnect(id),orgSettings(),setOrgAllowed(false)(JavaScript);client.api.mcp.list_connections()(Python); Dart the same.
Losing access ends a connection too: removed from the organization or the project, or a deactivated account.
For MCP client developers
The server follows the MCP authorization spec (OAuth 2.1). Clients that support remote MCP servers with OAuth need no Sovaria-specific code.
| Value | |
|---|---|
| MCP endpoint | https://api.sovaria.in/mcp (streamable HTTP, stateless, JSON responses) |
| Protected resource metadata | https://api.sovaria.in/.well-known/oauth-protected-resource/mcp (also at the root path); a 401 names it in WWW-Authenticate |
| Authorization server | Issuer https://api.sovaria.in, metadata at /.well-known/oauth-authorization-server |
| Client registration | Dynamic (POST /oauth/register, RFC 7591; public clients or client_secret_post/client_secret_basic) or a client ID metadata document (an https client_id serving its own JSON) |
| Redirect URIs | https; http://127.0.0.1, localhost or [::1] on any port; or an app's own scheme (cursor://…) |
| Authorization | Code flow with PKCE S256 only; send resource=https://api.sovaria.in/mcp |
| Scopes | mcp (what the member approves) or mcp:read (read only) |
| Tokens | Opaque access token (sov_mcp_…, 1 hour) and refresh token (sov_mcpr_…, 30 days, rotated on every use; reusing an old one ends the connection). Revoke with POST /oauth/revoke (RFC 7009) |
curl -X POST https://api.sovaria.in/oauth/token \
-d grant_type=authorization_code -d code="$CODE" \
-d redirect_uri=http://127.0.0.1:53682/callback \
-d client_id="$CLIENT_ID" -d code_verifier="$VERIFIER" \
-d resource=https://api.sovaria.in/mcpErrors use OAuth's format ({"error": "invalid_grant", "error_description": "…"}); invalid_grant on refresh means the connection ended — start the authorization again.
Run it locally instead
sov mcp serve runs the same tools over stdio with your CLI login and the project you selected with sov scope use; sov mcp config prints the entry for Claude Desktop, Claude Code or Cursor. Use it for offline work or a self-hosted gateway (CLI: Logs, crashes, vectors and AI tools).
Troubleshooting
| You see | Why | Fix |
|---|---|---|
| The assistant asks you to sign in again | The connection ended (you or an admin disconnected it, the organization turned assistants off, or you lost access) | Connect again |
MCP_SCOPE … connected at organization level | The connection allows every project, and the URL names none | Add ?project=<project id> to the URL |
MCP_READ_ONLY | A read-only connection tried to change something | Disconnect and connect again with Read and write |
ORG_PERMISSION_REQUIRED or a Sovariq AI policy message | Your role, or the organization's AI policy, doesn't allow it | Ask an owner or admin |
| "This organization doesn't allow connecting AI assistants" | An owner or admin turned it off | Ask them to allow it in Organization settings › Security |
Plans
Every plan, including Free. Calls count like any other API request toward your plan's rate limits and quotas.
Coming from Firebase or Supabase?
| Platform | What this is called there |
|---|---|
| Firebase | Firebase MCP server |
| Supabase | Supabase MCP server |
| Sovaria | Connect AI assistants (MCP): Claude, ChatGPT, Cursor and VS Code |
Moving an existing app? Migrate from Supabase or Firebase imports users (with their passwords), data, files and rules.