# MCP server

Run Atlas tasks from Claude and other MCP clients by signing in, with no API key.

World Labs hosts a [Model Context Protocol](https://modelcontextprotocol.io)
server, so an assistant can run Atlas tasks for you from a chat. You sign in
with your World Labs account; there is no API key to create or paste.

```text
https://api.atlas.worldlabs.ai/mcp
```

Tasks run in a project you choose and use that project's Developer API
credits, at the same prices as the API. See [Billing](/billing).

## Connect

Add the URL above as a remote MCP server in your client, then sign in when it
opens World Labs in your browser.

- **Claude on the web or desktop:** open **Settings > Connectors**, add a
  custom connector, and paste the URL.
- **Claude Code:** run
  `claude mcp add --transport http worldlabs https://api.atlas.worldlabs.ai/mcp`,
  then run `/mcp` and sign in.
- **Other clients:** any client that supports remote MCP servers with OAuth
  sign-in connects with the same URL.

## Tools

| Tool                  | What it does                                                                                                                                      |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `list_projects`       | Lists the projects you can use and the task tools each can run.                                                                                   |
| `import_image`        | Copies an image at an HTTPS URL into a project: a public image, or a file you attached where the client can pass it.                              |
| `create_image_upload` | Returns a signed upload URL for a local JPEG, PNG, or WebP file of up to 50 MiB.                                                                  |
| A tool per task       | Starts the task of the same name: `atlasTextToImage`, `images2PosedRGBD`, `atlasGenerate`, `atlasChisel`, `posedImages2Splats`, or `splats2Mesh`. |
| `get_operation`       | Reads an operation, waiting up to 20 seconds for it to finish.                                                                                    |
| `get_asset`           | Returns a fresh download link for an asset.                                                                                                       |

A task tool takes `project_id`, `idempotency_key`, and `request`. `request` is
the task's request body, as its page in the [API reference](/api-reference)
describes it, and the tool's schema carries the same fields. Calling a tool
again with the same `idempotency_key` and request returns the original
operation and does not start or bill a second run.

## Media

A request names media as `{"assetId": "..."}` for an asset in the project, or
as `{"url": "..."}` for a public HTTPS file. A task's outputs are assets too,
so one task's output is the next task's input by its `assetId`.

Uploads through these tools are images only. An assistant in a chat usually
cannot send the bytes of a file you attached, so give it a public image URL to
import. An assistant with a shell, such as Claude Code, can upload a local
file with `create_image_upload` and an HTTP `PUT`.

## Results

A task tool returns an operation at once. The assistant polls `get_operation`
until `done` is true, then reads the outputs and their download links from
`response`. Links expire; `get_asset` returns a new one. See
[Operations](/operations) for the operation fields and how long results are
kept.