MCP server: SovrGPT in Cursor, Claude Desktop and Zed
SovrGPT MCP servers for Cursor, Claude Desktop, Zed and Windsurf: docs search without a key, plus chat, web search, images and the Decision Engine.
The Model Context Protocol (spec) lets you connect SovrGPT to Cursor, Claude Desktop, Zed or Windsurf. There are two servers:
| Endpoint | Auth | Purpose |
|---|---|---|
https://sovrgpt.com/mcp/docs/mcp | none | Documentation: any MCP client can search the SovrGPT docs live. |
https://sovrgpt.com/mcp/mcp | Authorization: Bearer sov_… | Platform tools: chat, web search, image generation, video generation, Decision Engine. |
Both speak Streamable HTTP (MCP 2025-03-26). Older clients can use SSE at /mcp/docs/sse
and /mcp/sse respectively.
Documentation MCP (public)
Tools:
sovrgpt_docs_list_pages: list all documentation pagessovrgpt_docs_search: full-text search across all documentation pagessovrgpt_docs_get_page: read a page as Markdown
No API key required. The server is meant for editor models that connect your code to SovrGPT, for example during a migration or to look up new model IDs.
Language: every tool takes an optional language parameter (de or en, default de).
Pages without an English version come back in German marked translated: false, so a model can
say so instead of silently switching language.
Platform MCP (with API key)
| Tool | What it does |
|---|---|
sovrgpt_list_models | Active models with tier, capability ratings, licence and cold-start hint, plus the embedding, rerank and speech models. |
sovrgpt_chat | Chat with a SovrGPT model in EU data centres. Without model it uses the default tier. |
sovrgpt_web_search | Web search via Brave Search (a US provider), up to 6 results. Your program's search query goes to Brave. |
sovrgpt_generate_image | Z-Image-Turbo / Qwen-Image 2512 / FLUX.2 klein. Waits up to about 80 s for the image, otherwise pending with a poll URL. |
sovrgpt_edit_image | Edits 1–3 of your own images on instruction (Qwen-Image-Edit 2511). Sources are the image_id of one of your image results or the id of one of your image attachments outside a chat, never a URL; attachments inside chats cannot be reached with a key. Put the main image last. Waits up to about 80 s, otherwise pending with a poll URL. |
sovrgpt_generate_video | LTX-Video 0.9.8 13B distilled, 3–8 s at 768×512 without sound (Models). At most one source: image_id turns one of your image results or one of your image attachments outside a chat into the start image, video_id continues one of your finished videos from its end (the new clip starts with its last frames and is a separate clip); attachments inside chats cannot be reached with a key. Always answers pending with a poll URL and terms_url. The video generation terms of use apply. |
sovrgpt_list_decision_presets | The server-side question packs of the Decision Engine: id, version, audience, example state and questions. Free, no extra scope. |
sovrgpt_decide | One decision: a state (text, JSON or a conversation) and questions with fixed options (your own or a preset) in, probabilities over exactly those options out. No text is generated. Requires the decisions scope in addition. Same contract as POST /v1/decisions. |
Authentication: create a sov_… key with scope mcp under Settings → API keys and send it
as a bearer token. Without that scope the server rejects the connection itself with 401.
Scope rule for sovrgpt_decide: the mcp scope opens the connection; a decision also needs
decisions (the same permission as POST /v1/decisions). Without it the tool answers
{ "status": "failed", "code": "missing_scope" }, and the other tools keep working with the same
key. So tick Decision Engine when you create the key.
Every answer carries a recommendation recommendation ("act" or "review") and its warning
signals in reasons. The legacy fields abstain and abstain_reasons remain; abstain is
true exactly when the recommendation is "review". The default is
policy.mode = "threshold" (threshold 0.85, double check of choice questions on): "review" only
appears with warning signals. Until 23 Sep 2026 every answer carried abstain: true.
policy.mode = "review_only": every recommendation is"review". Use it if an editor model must not act on anything unreviewed.policy = { "mode": "review_only", "stability_check": false }: exactly the old behaviour at the old cost, without the double check.policy.mode = "autonomous": every recommendation is"act"; the warning signals are still listed inreasons.
Probabilities are not calibrated (calibration.status = "uncalibrated"). Details:
Automatic or human.
Setup per client
Cursor
Cursor Settings → MCP → Add new global MCP server:
{
"mcpServers": {
"sovrgpt-docs": {
"url": "https://sovrgpt.com/mcp/docs/mcp"
},
"sovrgpt": {
"url": "https://sovrgpt.com/mcp/mcp",
"headers": {
"Authorization": "Bearer sov_xxxxxxxxxxxxxxxx"
}
}
}
}Save, restart Cursor, then type @ in the chat and check the tool list. The sovrgpt_* tools
show up right away.
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"sovrgpt-docs": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://sovrgpt.com/mcp/docs/mcp"]
},
"sovrgpt": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://sovrgpt.com/mcp/mcp",
"--header",
"Authorization:Bearer sov_xxxxxxxxxxxxxxxx"
]
}
}
}mcp-remote (npm) bridges Claude's stdio transport to
Streamable HTTP. Restart Claude Desktop afterwards.
Zed
~/.config/zed/settings.json:
{
"context_servers": {
"sovrgpt-docs": {
"command": {
"path": "npx",
"args": ["-y", "mcp-remote", "https://sovrgpt.com/mcp/docs/mcp"]
}
},
"sovrgpt": {
"command": {
"path": "npx",
"args": [
"-y", "mcp-remote",
"https://sovrgpt.com/mcp/mcp",
"--header", "Authorization:Bearer sov_xxxxxxxxxxxxxxxx"
]
}
}
}
}Windsurf
Settings → Cascade → MCP servers → Add server → Streamable HTTP. URL and header as for Cursor.
Notes
- No streaming:
sovrgpt_chatreturns the answer as a single tool result. For live streaming use the REST API (/api/v1/chat/completionswithstream:true). - Image/video polling: in the
pendingcase the tool result contains apoll_urlfield (/api/image/<id>or/api/video/job/<id>). Query it withGETand the same key:Authorization: Bearer sov_…, scopemcp, no cookie. Every answer is a200with astatusfield.pendingmeans keep polling (images about every 5 s, video about every 10 s).succeeded(image) ordone(video) returns the result insignedUrl; the URL is valid for an hour, and polling again issues a fresh one.failedgives the reason inerror. Note: the tool result reports success ascomplete, the poll response assucceededordone, so do not wait forcompletewhen polling. - Cold starts: on the first call to a cold, self-operated model,
sovrgpt_chatwaits up to 13 minutes. The default tier, which the tool uses withoutmodel, has a cold start too. Usesovrgpt_list_modelsto find a model whosecold_start_hintsays "kein Kaltstart" (no cold start) and pass its ID asmodel. - Decision Engine:
sovrgpt_decideexpects exactly one ofstateandmessages;presetandquestionsare mutually exclusive. Presets whoseexample_stateis a JSON string (antrag-vollstaendigkeit-v1,grounding-check-v1,agent-step-risk-v1) expect a JSON object asstate. A decision typically takes well under a second, and there is no cold start. If it fails, you get{ "status": "failed", "code": … }with a code from the error table.upstream_rate_limitedmeans the runtime is throttling right now: wait briefly and retry. If only the second pass of the double check fails, that is not an error; the answer arrives withstability: nulland the warning signalstability_unavailable. More: Decision Engine; contract:POST /v1/decisions. - Billing: every tool call counts against your organisation's monthly budget, as with the
REST API. As the source (
usage_events.source), chat is recorded asmcp, images and video asimageorvideo.sovrgpt_decideis recorded asdecisions-mcp, billed by the runtime's input tokens as withPOST /v1/decisions. Web search creates no cost row.
Security
Keys in the Authorization: Bearer header are verified server-side only and stored only as a
SHA-256 hash. You can revoke a key at any time under Settings → API keys; the next call then
fails immediately with 401. We recommend a separate key per client.