after Series VII, 1920A wheel of colours turning above a quiet, divided horizon.

04Connect your agents

Connect Codex, Cursor and any other MCP client

myartefacts is a remote MCP server. Any agent that can reach a server over streamable HTTP and send one header can publish into your library, whichever app it lives in. Below is the exact setup for Codex, Cursor, Windsurf, VS Code and Claude Desktop, and the shortcut where the agent does it all itself.

What every client needs

Each client asks for the same three things, only in a different file.

Once connected, the agent sees seven tools: create_upload_url, publish_artifact, update_artifact, list_projects, list_artifacts, search_artifacts and get_artifact. The server also hands it instructions on when to publish and where to file things, so you do not have to explain.

Get a token, or let the agent get one

The easiest route skips the config entirely. Open Settings, Agents, press Copy setup brief and paste it into your agent. Or point the agent at https://myartefacts.com/agents.md. Either way it connects itself with your email address and its own name:

curl -s -X POST https://myartefacts.com/api/agent/connect \
  -H "Accept: application/json" \
  -d email=you@example.com \
  -d agent="Codex" \
  -d device="$(hostname)"

The token comes back straight away in data.token, shown once. If the address had no account, one is opened and the agent has full access at once. If you already have an account, data.status says awaiting_approval: the agent can publish into its own tray, up to 20 artefacts and 10 MB, until you approve it from the email you receive. The same token then gets full access, with nothing to reconfigure.

If you would rather hand the token over yourself, use Or create a token yourself on the same page. Name it after the agent, copy it once, and the snippets further down that page fill it in for you. Wherever you see YOUR_TOKEN below, use that value.

Codex Cursor Windsurf VS Code Claude Desktop mcp-remote /mcp library
Five clients, one address. Claude Desktop reaches it through the mcp-remote bridge; everything lands in the same library.

Codex

Codex reads the token from an environment variable, so the token never sits in its config file. Add the server once:

codex mcp add myartefacts --url https://myartefacts.com/mcp \
  --bearer-token-env-var MYARTEFACTS_TOKEN

That writes this to ~/.codex/config.toml, which you can also type by hand:

[mcp_servers.myartefacts]
url = "https://myartefacts.com/mcp"
bearer_token_env_var = "MYARTEFACTS_TOKEN"

Then put the token in your shell profile (~/.zshrc or ~/.bashrc) so every new Codex session can see it, and open a fresh terminal:

export MYARTEFACTS_TOKEN="YOUR_TOKEN"

codex mcp list should now show myartefacts as enabled, with bearer-token auth.

Cursor

Cursor reads ~/.cursor/mcp.json for every project, or .cursor/mcp.json inside one. Use the global file: a project file with a token in it is one careless commit away from being public.

{
  "mcpServers": {
    "myartefacts": {
      "url": "https://myartefacts.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Save it and the server appears under Cursor's MCP settings, where you can switch it on and see the tools.

Windsurf

Windsurf takes the same block in ~/.codeium/windsurf/mcp_config.json. Windsurf's own documentation names the address key serverUrl, so if your version does not pick the server up, rename url to serverUrl and refresh the MCP list in Cascade.

VS Code

VS Code uses its own shape: a top-level servers key and an explicit "type": "http". Put this in .vscode/mcp.json for one workspace, or run MCP: Open User Configuration from the Command Palette for all of them. The inputs block makes VS Code ask for the token once and store it securely, so it never lands in the file:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "myartefacts-token",
      "description": "myartefacts token",
      "password": true
    }
  ],
  "servers": {
    "myartefacts": {
      "type": "http",
      "url": "https://myartefacts.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:myartefacts-token}"
      }
    }
  }
}

Claude Desktop

Claude Desktop runs local servers from its config file, so a small bridge, mcp-remote, carries the connection to the remote server. Open Settings, Developer, Edit Config to reach claude_desktop_config.json, and add:

{
  "mcpServers": {
    "myartefacts": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://myartefacts.com/mcp",
        "--header",
        "Authorization:${MYARTEFACTS_AUTH}"
      ],
      "env": {
        "MYARTEFACTS_AUTH": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Two details matter. The header is written without a space after the colon, and the token sits in env: that keeps the space in Bearer YOUR_TOKEN from being split into a separate argument. And npx needs Node.js installed. Quit Claude Desktop fully and reopen it to load the change.

Any other client

If an app can add a remote MCP server with a custom header, give it the address and the header from the top of this page and it will work the same way. If it cannot speak MCP but can run shell commands, it can use the HTTP API at https://myartefacts.com/api with the same token instead. The agent instructions at https://myartefacts.com/agents.md cover both, so an agent can pick for itself.

Using Claude Code? It has its own one-line command: see Connect Claude Code to myartefacts in one command.

Check that it works

From a terminal, ask who the token belongs to:

curl -s https://myartefacts.com/api/me \
  -H "Authorization: Bearer YOUR_TOKEN"

It returns your name, the agent name and its status. A 401 means the token was revoked, or nobody approved the agent within seven days: connect again. Inside the client, ask the agent to call list_artifacts with limit: 1; an answer, even an empty one, means you are connected.

One token per agent. Give Codex, Cursor and Claude Desktop a token each. Every artefact then says which one made it, and revoking one token in Settings cuts off just that agent, while its artefacts stay in your library.

Next, make sure your agents send finished files the efficient way: Publish a file that is already on disk.

Give your agents a home

Everything they make lands in one private library: every page, deck and doc, each at its own link.

Sign up