wellworn

Install in any client

The endpoint, the three config shapes agents use for a remote MCP server, and the field name each client expects.

There is one thing to install, and it is a URL:

https://mcp.wellworn.dev/mcp

No package, no local process, no account. The read tools answer without a key at 60 calls a day per IP, so you can point a client at the endpoint and ask a question before deciding whether Wellworn is worth an account.

Pick your client

ClientWhere the config livesField for the URL
Claude Codeclaude mcp add, or .mcp.json"type": "http" + url
Cursor.cursor/mcp.jsonurl
VS Code (Copilot).vscode/mcp.json"type": "http" + url
Windsurf~/.codeium/windsurf/mcp_config.jsonserverUrl
Codex CLI~/.codex/config.tomlurl
Gemini CLI~/.gemini/settings.jsonhttpUrl
Cline~/.cline/mcp.json"type": "streamableHttp" + url
Zedsettings.jsonurl
opencodeopencode.json"type": "remote" + url
Claude appsclaude.ai connectors, or claude_desktop_config.jsonURL field, or a bridge
Copilot CLI~/.copilot/mcp-config.jsoncopilot mcp add --transport http
JetBrains AI AssistantSettings, Tools, AI Assistant, MCPurl
WarpSettings, Agents, MCP serversurl
Roo Code.roo/mcp.json"type": "streamable-http" + url
Amp~/.config/amp/settings.jsonurl
Goosegoose configure promptStreaming HTTP endpoint URI
Anything elseyour client's MCP configPOST to the URL

Each page has the exact file, the entry with and without a key, where the client shows its tool list, and what breaks, checked against that client's own documentation on the date the page shows.

The three shapes

Almost every config above is one of three.

A URL and nothing else. Cursor, Zed, JetBrains, Warp and Amp infer the transport from the presence of a url.

.cursor/mcp.json
{
  "mcpServers": {
    "wellworn": {
      "url": "https://mcp.wellworn.dev/mcp"
    }
  }
}

A URL plus a transport field. The field name and its value change from client to client, and a value copied from the wrong client is the most common reason a server never connects. Claude Code and VS Code want "type": "http", Cline wants "streamableHttp", Roo Code wants "streamable-http", opencode wants "remote". Gemini CLI encodes it in the field name instead, httpUrl for Streamable HTTP against url for SSE, and Windsurf uses serverUrl.

.vscode/mcp.json
{
  "servers": {
    "wellworn": {
      "type": "http",
      "url": "https://mcp.wellworn.dev/mcp"
    }
  }
}

A command that launches a bridge. Clients that only start local programs run mcp-remote, which speaks stdio to the client and Streamable HTTP to the endpoint.

stdio client config
{
  "mcpServers": {
    "wellworn": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.wellworn.dev/mcp"]
    }
  }
}

That form needs Node.js installed for npx to resolve, and it adds a local process to every session. Prefer a direct URL wherever the client accepts one.

Verified 2026-09-08 against github.com

Adding a key

A key is one header on every request, and it is the same header everywhere:

authorization: Bearer ww_your_key

Clients that expand environment variables inside header values are worth using for it: Claude Code takes ${WELLWORN_KEY}, Cursor takes ${env:WELLWORN_KEY}, VS Code prompts once with a promptString input and keeps the value in secret storage, and Codex reads the variable named by bearer_token_env_var. Where none of those exist, keep the file out of version control. Keys covers where a key comes from and how to rotate one.

Next

Make your first call checks the connection and reads a verdict end to end. Any MCP client has the raw protocol contract and a curl you can run right now.