cloudflare-cua-mcp-server
v0.1.0
Published
Turn a computer-use daemon into an MCP server. The library behind the Cloudflare computer-use MCP server.
Maintainers
Readme
cloudflare-cua-mcp-server
Turn a computer-use daemon into an MCP server. This is the library behind the Cloudflare computer-use MCP server.
The desktop tools are screenshot, click, type, key, and bash; the
browser tools drive Chrome by accessibility role and name. The library is
host-agnostic: it runs on any fetch runtime, and you point it at any daemon that
speaks the desktop protocol.
Install
npm install cloudflare-cua-mcp-serverUse
Build a Computer over a transport to your daemon, then serve it. httpTransport
reaches a daemon by URL; on Cloudflare you supply a transport backed by
containerFetch.
import { Computer, httpTransport, computerUseMcpFetch, Unauthorized } from 'cloudflare-cua-mcp-server';
export default {
fetch(request: Request): Promise<Response> {
return computerUseMcpFetch(
request,
(req) => new Computer(httpTransport(daemonUrlFor(req))),
{
authorize(req) {
if (!isAllowed(req)) throw new Unauthorized();
},
},
);
},
};resolveComputer(request)maps a request to the desktop it drives, so one server isolates many sessions or shares one desktop.authorize(request)runs first; throwUnauthorizedfor a 401. This is where identity and per-session ownership go.
Responsibilities
The library is the mechanism: drive a desktop and serve it as MCP tools. The policy is yours.
| The library | Your backend |
| --- | --- |
| the Computer client and the MCP server | who is allowed (authorize) |
| the tool contract over streamable HTTP | what a session is, and its lifetime |
| a transport-agnostic seam (resolveComputer) | provisioning, teardown, warm pools, quotas |
The desktop itself (a Linux container running the daemon and a browser) ships
separately. The parent repository is a ready-to-deploy Cloudflare desktop that
also exposes DELETE /session to tear one down.
