MCP Overview
The Model Context Protocol is an open standard for connecting AI assistants to tools and data. Sovrium speaks it in both directions, and the two directions are unrelated pieces of configuration that happen to share a name.
| Direction | What happens | Configured by | Needs an LLM on Sovrium? |
|---|---|---|---|
| Server mode | External clients connect to your app and call generated tools over your own data. | Operator (env) | No — the model lives at the client |
| Client mode | Your agents call tools hosted on someone else's MCP server. | Schema author | Yes — AI_PROVIDER must be set |
Server mode is the one most people mean. It turns a Sovrium app into something Claude Desktop, Claude Code, Cursor or ChatGPT Dev Mode can operate: tables become CRUD tools, manual automations become invocable, action templates become callable.
Server mode needs no AI provider at all. When Sovrium is the MCP server it exposes tools and executes them; the reasoning happens at whichever client connected. You do not need an API key, a model, or an AI_PROVIDER to run it. That requirement belongs to the rest of the AI layer, including client mode.
Server Mode
The MCP server is off by default and the route only mounts when the operator says so. Nothing you write in the schema turns it on — aiAccess declares eligibility, MCP_ENABLED grants it.
| Variable | Default | Purpose |
|---|---|---|
MCP_ENABLED |
false |
Master switch. The /mcp route exists only when true. |
MCP_TRANSPORT |
streamable-http |
streamable-http for remote clients, stdio for a local IDE. |
MCP_MOUNT_PATH |
/mcp |
Route prefix under streamable-http. |
MCP_AUTH_STRATEGY |
oauth2 if app.auth, else token |
How clients authenticate. |
MCP_RATE_LIMIT_PER_MINUTE |
60 |
Requests per minute, per credential. |
MCP_RATE_LIMIT_PER_DAY |
5000 |
Requests per day, per credential. |
MCP_AUDIT_ENABLED |
true |
Record every tool call. |
MCP_EXPOSE_INTERNALS |
true |
Give admins read-only tools over auth and system tables. |
MCP_CONFIRM_DESTRUCTIVE |
true |
Mark deletes and non-idempotent calls as needing confirmation. |
MCP_ENABLED=true
MCP_TRANSPORT=streamable-http
MCP_AUTH_STRATEGY=token
MCP_TOKEN_ADMIN=$(openssl rand -hex 32)
MCP_TOKEN_VIEWER=$(openssl rand -hex 32)That is the whole enablement story. What gets exposed, and to whom, is three further pages:
- Server Mode — the four surfaces that become tools, and how you mark an entity eligible.
- Connecting a Client — Claude Desktop, Claude Code, and the generic
mcpServersblock. - Auth, RBAC & Rate Limiting — tokens, OAuth, roles, audit, limits.
Startup validation catches the two ways this can be inconsistent: MCP_AUTH_STRATEGY=token with no MCP_TOKEN_* set, and oauth2 without app.auth. Both fail the boot rather than mounting an unreachable or unguarded route.
Client Mode
Moved to Client Mode — letting an agent call tools on an external MCP server.
Which One Do You Want
The question that separates them is where the model runs.
If you want to ask Claude about your data, or have it file a record for you, you want server mode — your app publishes tools and someone else's assistant calls them. If you want an agent inside your app to search the web or fetch a document as part of its own work, you want client mode — your app is the caller and the tools are elsewhere.
They compose. An app can serve tools to Claude Desktop while its own agents consume tools from a search provider; neither configuration knows about the other.
Related Pages
- Server Mode — exposed surfaces and
aiAccess. - Connecting a Client — client setup and verification.
- Auth, RBAC & Rate Limiting — the security model.
- Client Mode — agents as MCP clients.
- AI Overview — the wider AI layer.
- Environment Variables: Services — the full
MCP_*reference.
Last updated August 11, 2026
This documentation was written with AI, so errors or outdated content are possible. Sovrium is in beta. Contributions and corrections are welcome.