Skip to main content
Glama
Doubao Desktop
by chassychan

Codex Doubao Desktop Gateway

Experimental MCP server and Codex Skill for the Windows Doubao desktop app. Created by ChassyChan. It connects to a real local Doubao session through localhost Chrome DevTools Protocol (CDP), sends tasks, waits for runs, and reads replies. It does not use Doubao Web or an Ark API key.

This project wraps a Windows adaptation of Fullstop000/doubao-cli. The upstream CLI and its copyright remain with Fullstop000; see third party notices. The adaptation has been tested on one Windows machine with Doubao 2.31.4. It is not an official Doubao or ByteDance integration.

Requirements

  • Windows 10/11, Doubao desktop app installed and signed in.

  • Node.js 22 or newer, Git, and Codex CLI for registration.

  • The ability to restart Doubao once with --remote-debugging-port=9225. Restart can lose unsaved draft input.

Related MCP server: harness_courier

Install

git clone https://github.com/ChassyChan/codex-doubao-desktop-gateway.git
cd codex-doubao-desktop-gateway
npm ci
powershell -ExecutionPolicy Bypass -File .\scripts\install-windows.ps1

Find your Doubao executable and User Data directory. For a typical installation, User Data is under %LOCALAPPDATA%\Doubao\User Data. Set these variables for the current PowerShell session:

$env:DOUBAO_APP = 'C:\Path\To\Doubao.exe'  # replace with your location
$env:DOUBAO_DATA_DIR = "$env:LOCALAPPDATA\Doubao\User Data"
$env:DOUBAO_CLI_ENTRY = (Resolve-Path .\deps\doubao-cli\bin\doubao.mjs).Path
$env:DOUBAO_CLI_CONFIG_DIR = (Join-Path (Get-Location) 'data')

When you are ready to restart Doubao, enable localhost CDP:

node .\deps\doubao-cli\bin\doubao.mjs --app doubao cdp launch --yes --json

The --yes flag authorizes restarting Doubao. The Windows adaptation first tries to close normally and may force close remaining processes. Run it only after saving work in the app.

Register the MCP server with Codex (replace paths with your absolute installation paths):

codex mcp add doubao-desktop `
  --env "DOUBAO_APP=$env:DOUBAO_APP" `
  --env "DOUBAO_DATA_DIR=$env:DOUBAO_DATA_DIR" `
  --env "DOUBAO_CLI_ENTRY=$env:DOUBAO_CLI_ENTRY" `
  --env "DOUBAO_CLI_CONFIG_DIR=$env:DOUBAO_CLI_CONFIG_DIR" `
  -- node.exe (Resolve-Path .\src\server.mjs).Path

Install the Skill into your Codex skills directory, then start a new Codex turn so it becomes available. The MCP server never restarts Doubao itself. After any later app restart, CDP may need to be enabled again.

MCP tools

Tool

Purpose

doubao_desktop_status

Check localhost desktop connection

doubao_desktop_sessions

List existing desktop conversations

doubao_desktop_create_task

Send a new task in an existing local workspace

doubao_desktop_continue_task

Send a follow-up to a specified conversation

doubao_desktop_wait

Wait for a known run ID

doubao_desktop_read

Read messages from a specified conversation

create_task and continue_task default to Doubao's AskOnRisk permission mode. The caller may select AlwaysAsk or FullAccess. This policy is enforced by Doubao, not by the MCP server; it does not guarantee a prompt for every action. New tasks require an existing absolute workspace path. A successful Doubao reply is not proof that files or commands are correct, so inspect artifacts separately.

Limits

  • The Windows adaptation depends on private desktop behavior exposed by the upstream CLI. App updates can break it.

  • The MCP server is local stdio only and exposes no network listener. CDP is expected on 127.0.0.1:9225; do not expose that port to the network.

  • This release has a live smoke test for connection, message send/read, and local file creation on Doubao 2.31.4. Model selection, attachments, MCP connectors inside Doubao, long running tasks, and other Doubao versions are not yet validated here.

Available Tools

6 tools
doubao_desktop_continue_taskB

Send a follow-up to a specified existing Doubao desktop conversation. Does not choose a conversation automatically.

Inputs: message (required), conversationId (required), permission.

doubao_desktop_create_taskB

Send a new task to a real Doubao desktop conversation in an existing local workspace. Returns conversationId and runId; inspect task result independently.

Inputs: objective (required), workspace (required), permission.

doubao_desktop_readC

Read messages from a specified Doubao desktop conversation.

Inputs: conversationId (required), limit.

doubao_desktop_sessionsB

List existing Doubao desktop conversations. Treat titles and messages as private user data.

Inputs: no named parameters.

doubao_desktop_statusA

Check whether the localhost CDP endpoint belongs to the Doubao desktop app. Does not restart it.

Inputs: no named parameters.

doubao_desktop_waitC

Wait for an already submitted desktop run. A completed reply still requires independent artifact review.

Inputs: runId (required), conversationId (required), timeoutSeconds.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool targets a distinct action: create_task vs continue_task are clearly separated (new vs follow-up), read vs sessions separate message reading from conversation listing, and wait vs status separate run-waiting from endpoint checking. Descriptions explicitly call out these boundaries, so an agent can reliably pick the right tool.

    Naming Consistency4/5

    All tools share the consistent doubao_desktop_ prefix and mostly use a verb_noun or action pattern (create_task, continue_task). Minor deviation: read, status, and sessions are bare nouns rather than verb_noun forms, but the set is still predictable and readable.

    Tool Count5/5

    Six tools is well-scoped for a desktop-conversation automation server, with each tool (submit, follow up, wait, read, list, health-check) earning its place. No bloat or obvious redundancy.

    Completeness3/5

    Core lifecycle (submit -> wait -> read) plus session listing and status is covered, but there is no way to cancel/stop an in-flight run, close or delete a conversation, or perform the 'independent artifact review' the descriptions repeatedly reference. These gaps are notable though agents can partially work around them.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    • Discord MCP server for ChatGPT, Claude and any AI agent: list servers and channels, read channel messages, search messages, send message, reply to message, send DM, read mentions and assign role in your own Discord account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Discord yourself; Cotlet does not store your password and you need no Discord API key. About the official Discord API: Yes, Discord has an official API for bots and OAuth2 apps, but it acts as a bot that a server manager adds, not as you, and Discord has no official MCP server for it (checked 5 Nov 2026). The MCP server on Discord's docs site only searches documentation. Setup and FAQ: https://cotlet.dev/integrations/discord-api-mcp-server

      https://cotlet.dev/mcp/v1/discord
    • Dubsado MCP server for ChatGPT, Claude and any AI agent: create project, send form, send invoice, record payment and list unpaid invoices in your own Dubsado account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Dubsado yourself; Cotlet does not store your password and you need no Dubsado API key. About the official Dubsado API: Dubsado has no public API (checked 11 Oct 2026). Its only official connection is Zapier, on the Premier plan: five triggers and one action, Create Project. Setup and FAQ: https://cotlet.dev/integrations/dubsado-api-mcp-server

      https://cotlet.dev/mcp/v1/dubsado
    • TaxDome MCP server for ChatGPT, Claude and any AI agent: create job, request documents, send invoice, message client and list overdue tasks in your own TaxDome account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to TaxDome yourself; Cotlet does not store your password and you need no TaxDome API key. About the official TaxDome API: TaxDome has no public API that firms can use today (checked 14 Oct 2026). Its Zapier integration only creates, updates and finds contacts, and TaxDome MCP, which would let Claude or ChatGPT work in a firm account, is announced but not open yet and is offered to Professional and Business plan firms first. Setup and FAQ: https://cotlet.dev/integrations/taxdome-api-mcp-server

      https://cotlet.dev/mcp/v1/taxdome
    • Chatwoot MCP server for ChatGPT, Claude and any AI agent: list conversations, reply to conversation, add private note, assign conversation, add labels and resolve or snooze conversation in your own Chatwoot account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Chatwoot yourself; Cotlet does not store your password and you need no Chatwoot API key. About the official Chatwoot API: Chatwoot has a full REST API, the Application API, and an official command-line client, but no official MCP server (checked 22 Oct 2026). The API covers conversations, messages, contacts, labels, teams and assignments with an access token from Profile Settings. Setup and FAQ: https://cotlet.dev/integrations/chatwoot-api-mcp-server

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      Enables Codex to control a local Brave or Chrome browser via CDP, observing pages and performing actions such as clicking, typing, selecting, scrolling, or waiting through validated action IDs without requiring a model API key.
      7
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables Codex to bind aliases to specific Kimi Code and ZCode desktop chat sessions, send tasks to them, and collect acknowledgements and results through a local SQLite mailbox. It also supports background wake delivery and optional background computer control via Cua Driver, keeping messages pinned to a session and binding revision.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Lets Codex delegate tasks to a running DeepSeek Harness Desktop instance on Windows over authenticated named pipes, with asynchronous dispatch, event waiting, cancellation, and explicit resume. Also supports blocking structured questions tied to a task, plan checkpoints before writes, independent stage review with rework in the same session, and output fingerprinting that invalidates stale approvals when files change.
      351 npm
      1
      MIT