DODO MCP
Provides Git operations as part of its software development toolset, allowing AI to run Git commands within the workspace.
Provides TypeScript/JavaScript intelligence and language server protocol (LSP) capabilities for analyzing and editing JavaScript files.
Provides TypeScript/JavaScript intelligence and language server protocol (LSP) capabilities for analyzing and editing TypeScript files.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DODO MCPread src/example.ts, add input validation, then run the tests"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DODO MCP
DODO MCP คือ MCP server แบบ local-first สำหรับให้ AI ช่วยพัฒนา software โดยทำงานกับ workspace ที่เจ้าของเลือก ค่าเริ่มต้นเป็นโหมดส่วนตัวแบบเพิ่มโปรเจกต์แล้วใช้ได้ทันที และยังมีโหมด managed สำหรับแยก workspace ACL/trust แบบละเอียด
เชื่อมต่อ AI ของคุณ
คู่มือเชื่อม ChatGPT, Claude, Claude Code, Codex, Gemini CLI, Cursor และ VS Code มีคำสั่งลงทะเบียน OAuth, ตารางกรอกฟอร์ม และตัวอย่าง STDIO สำหรับแต่ละ client
Config บนโดเมน: รัน dodo --web เพื่อเปิด session ใหม่ได้ทุกครั้ง แม้ Local Config
8 ชั่วโมงหมดอายุแล้ว ไม่ต้อง restart MCP เพื่อเปิดใหม่ แต่ละรอบเปิด 1 ชั่วโมงและใช้ pairing code ใหม่
Related MCP server: GPT Commander
จุดเด่น
MCP ผ่าน HTTP ที่
127.0.0.1:21730/mcpพร้อม OAuth และ PKCELocal Config แบบ loopback ที่
127.0.0.1:21731และ Remote Config ชั่วคราวผ่าน tunnel เมื่อเจ้าของสั่งdodo --webHTTP ใช้ Compact Tool Surface 20 tools เพื่อลดภาระการโหลด schema
STDIO ใช้ Full Tool Surface; มี capability definitions ทั้งหมด 162 รายการ แต่ค่าเริ่มต้นซ่อน Sub-agent 4 operations จาก MCP จึงเห็น 158 tools
Hybrid Surface 49 tools สำหรับ client ที่รับ catalog ขนาดกลาง
อ่าน ค้นหา สร้าง แก้ ย้าย ลบไฟล์ พร้อม expected hash, journal และ rollback
รันคำสั่ง งานแบบขนาน jobs, Git, TypeScript/JavaScript intelligence, LSP และ task assistance
รองรับภาพ เสียง วิดีโอ เบราว์เซอร์ เกม และ workflow ตาม dependency และ permission ที่เจ้าของเปิดใช้
ตรวจและควบคุมมือถือ Android ผ่าน ADB ได้ตั้งแต่ภาพหน้าจอ/UI/logcat ไปจนถึง input, apps, APK, file transfer และ device-side shell โดยจำกัดเฉพาะ serial ที่เจ้าของอนุญาต (คู่มือ)
มี Universal Resource Layer + CAS สำหรับ text/binary/image/audio/video/PDF/ZIP/WASM พร้อม SHA-256, dedup, bounded range/resume และ MCP image/audio blocks
มี Project Brain ที่ทำ incremental AST index สำหรับ symbols, references, imports, routes, tests และ dependencies พร้อม source-hash freshness
มี Context Engine สำหรับ goal-driven retrieval แบบมี budget, provenance, confidence, freshness และ L0–L6 dependency cache
มี owner-reviewed Memory สำหรับ fact/decision/fix/convention ที่ผูก source evidence, retention และ freshness พร้อม learning proposal ที่ไม่ติดตั้งหรือรันเอง
มี Runtime Intelligence สำหรับ task ที่ reconnect ได้, process/test/browser evidence แบบ bounded, snapshot freshness และ diagnosis ที่แยก fact/observation/inference
มี Advanced Agent Runtime สำหรับ immutable plan, parallel hypotheses, intent locks, guarded snapshots, evidence-backed completion, restart recovery และ owner-reviewed reusable guidance
มี AI Providers เจ็ด presets/Custom, profiles, model/tool loop และประวัติ private ผ่าน Local Config (คู่มือ)
เขียน/รันหลายโปรเจกต์พร้อมกันด้วย targetProjectId และคิว mutation แยกโปรเจกต์
มี DodoBench และ revision-bound release gate สำหรับ retrieval, safe edit, runtime, resource, recovery, security และ fresh package artifact
เปลี่ยน workspace จาก Local Config ได้จริง โดยรอ request/jobs และ rollback เมื่อเตรียม workspace ใหม่ไม่สำเร็จ
มี owner-only Project Registry พร้อม stable project ID และ readiness โดยไม่คัดลอก trust/ACL
อ่าน overview/list/files และค้นหาพร้อมกันได้สูงสุด 8 โปรเจกต์ที่เจ้าของลงทะเบียน โดย personal mode ไม่ต้องตั้ง ACL ซ้ำ
เปิด Cloudflare Tunnel พร้อม
dodo startด้วย token ชั่วคราวจาก terminal หรือ Local Config โดยไม่บันทึก token ลงเครื่องไม่ส่ง token, secret หรือ state DB ไปที่ repository และไม่ให้ repository config เพิ่มสิทธิ์
เริ่มใช้งาน
npm install -g dodo-mcp
dodo setup --check
dodo --cliAndroid / ADB และ Termux
DODO ไม่โหลด Sharp ตั้งแต่เริ่ม CLI จึงใช้คำสั่งพื้นฐานและ MCP สำหรับ text/code ได้แม้เครื่องไม่มี native Sharp build แพ็กเกจมี WebAssembly image backend เป็น optional dependency; หาก npm ข้าม optional dependency ให้ติดตั้งเพิ่มแล้วเปิด DODO ใหม่:
npm install -g dodo-mcp@latest @img/sharp-wasm32@0.35.4
dodo --versionหาก image backend ยังไม่พร้อม เฉพาะเครื่องมือภาพจะตอบ NOT_SUPPORTED โดย CLI และ
เครื่องมือ coding ส่วนอื่นยังเริ่มได้ Android/Termux ยังเป็นสถานะทดลองใช้: installer,
OS credential store, sandbox, desktop control และ browser automation ยังไม่ได้ผ่าน
Android acceptance ครบ ดูข้อจำกัดและวิธีตรวจรับที่ Android / Termux
ถ้าต้องการให้ AI ตรวจหรือควบคุมมือถือที่เชื่อมกับเครื่องนี้ ให้ติดตั้ง Platform-Tools, เปิด USB/Wireless debugging และยอมรับ RSA prompt บนมือถือ จากนั้นอนุญาต exact serial:
dodo setup --check --components adb
dodo android devices
dodo android allow --device SERIAL --mode control --persist --yesFull surface มี android_* 13 operations ส่วน HTTP Compact ใช้ dodo_mobile gateway
สิทธิ์นี้ไม่ปิด OAuth, project context, trust/approval, expected hash หรือ audit
เชื่อม ChatGPT ภายในไม่กี่นาที
ChatGPT ต้องเชื่อมผ่าน Public MCP URL ของ DODO ซึ่งลงท้ายด้วย /mcp ส่วน
https://chatgpt.com/connector_platform_oauth_redirect เป็น OAuth callback
สำหรับลงทะเบียน client เท่านั้น ไม่ใช่ MCP Server URL
ก่อนเริ่มให้อัปเดต CLI แล้วตั้ง Cloudflare Tunnel ของ DODO โดยแทน
https://dodo.example.com ด้วย public hostname ของคุณ Tunnel ต้อง route ทุก path
ไปที่ http://127.0.0.1:21730
npm install -g dodo-mcp@latest
dodo --version
dodo tunnel configure \
--tunnel \
--public-url https://dodo.example.com \
--os-credentialลงทะเบียน static OAuth client ด้วยคำสั่งด้านล่าง คัดลอกคำสั่งตรงจาก code block
โดยไม่เติม \ หน้า -- และไม่ครอบ URL ด้วยรูปแบบ Markdown [ข้อความ](URL):
dodo auth add-client \
--name "ChatGPT" \
--redirect-uri "https://chatgpt.com/connector_platform_oauth_redirect"คำสั่งจะแสดง client_id และ client_secret ครั้งเดียว ให้เก็บไว้ในหน้าตั้งค่า
ChatGPT เท่านั้น ห้ามส่งลงแชต, issue หรือ Git จากนั้นเปิด DODO ค้างไว้:
dodo startใน ChatGPT web ให้เปิด Settings → Security and login → Developer mode แล้วไปที่
ChatGPT Plugins กด + และกรอก:
MCP Server URL:
https://dodo.example.com/mcpAuthentication:
OAuthOAuth Client ID / Secret: ค่าที่ได้จาก
dodo auth add-client
เมื่อกด Connect/Create/Scan Tools และหน้า authorization กำลังรอ ให้เปิด terminal อีกหน้าต่างเพื่อตรวจ request แล้วอนุมัติ ID ที่ตรงกับหน้า browser:
dodo auth pending
dodo auth approve REQUEST_IDกลับไปที่ ChatGPT รอให้ scan เสร็จ เริ่มแชตใหม่ เลือก DODO ใน Developer mode แล้ว
ทดสอบด้วย ใช้ DODO เรียก project_overview HTTP จะแสดง Compact surface 20
tools และเข้าถึง operations ที่เหลือผ่าน dodo_discover กับ gateway ตามสิทธิ์เดิม
ดูขั้นตอนเต็มและวิธีแก้ OAuth/Tunnel ที่ เชื่อม Web clients
dodo --cli เปิดเมนู local owner สำหรับเลือก/เพิ่มโปรเจกต์ เปิด MCP + Local Config +
Tunnel, เปิด Remote Config ชั่วคราว 1 ชั่วโมง และรัน setup รวม cloudflared โดยไม่ต้อง
cd เข้าโปรเจกต์
ก่อน หากเรียก dodo หรือ dodo start จากโฟลเดอร์ใดก็ตาม ระบบจะเปิดโปรเจกต์ที่
เจ้าของเลือกล่าสุด หากยังไม่มีโปรเจกต์ใน registry จะเปิด control plane, OAuth และ
authenticated tool catalog ได้โดยไม่ใช้ CWD เป็น workspace เมื่อเจ้าของเพิ่มโปรเจกต์
จาก Local Config แล้ว OAuth client ที่เจ้าของอนุมัติจะใช้โปรเจกต์นั้นได้ทันทีตาม scopes
ของ token และ Agent Profile ที่เลือก โดยไม่ต้องตั้ง permission ซ้ำต่อ path
เปิดโปรเจกต์โดยตรงและจำไว้สำหรับครั้งถัดไปได้ด้วย:
dodo start --root /path/to/your/projectโหมดส่วนตัวใช้ effective trust แบบ trusted กับโปรเจกต์ที่เจ้าของลงทะเบียน คำสั่งจึงรัน ด้วยสิทธิ์ OS ของบัญชีเจ้าของและยังผ่าน command sandbox ที่ตั้งไว้, path/secret guards, expected hash, workspace context และ OAuth scopes หากต้องแยก client/profile/trust ต่อ โปรเจกต์ ให้เปลี่ยนเป็นโหมด managed ที่หน้า Settings
dodo setup --check และ dodo setup --plan เป็น read-only หากแผนมี dependency ที่ต้องติดตั้ง ให้ตรวจรายการก่อนแล้วจึงรัน dodo setup --yes --components <list> ระบบจะไม่เริ่ม installer หากไม่มี --yes และ --yes ไม่ข้าม sudo, OS permission หรือ owner consent
บน Windows ให้รัน DODO ด้วย account เดียวกับที่จะใช้งานประจำและเก็บ state บน local
NTFS หากพบ private Windows state ACL could not be established or verified ห้ามลด
ACL หรือลบ state เดิม ดูวิธีใช้ DODO_CONFIG_DIR เพื่อเริ่ม installation ใหม่อย่าง
ปลอดภัยและรายการ component ที่ต้องติดตั้งเองใน Windows Setup
โดยเฉพาะ cloudflared ซึ่ง Windows ต้องติดตั้ง signed package จาก Cloudflare ก่อน
เมื่อ DODO ตรวจพบ config เดิมในตำแหน่งมาตรฐาน สามารถใช้ dodo setup --import-state เพื่อนำเข้าเฉพาะ preference ที่ปลอดภัย เช่น port, search backend, retention และ tool surface ระบบจะสร้าง installation identity ใหม่เสมอและไม่คัดลอก OAuth keys/tokens, client grants, workspace ACL, trust, approvals, schedules, public origin, web/desktop permission, executable registration หรือฐานข้อมูลเดิม ต้นฉบับจะไม่ถูกแก้ไข
เปิด Local Config จาก URL ที่ dodo แสดงใน terminal ใช้สำหรับเพิ่มโปรเจกต์, AI
connections/profiles, public origin และเปลี่ยน access mode เจ้าของเท่านั้น โหมดส่วนตัว
พร้อมใช้โดยไม่ต้องตั้ง trust/client/profile permission รายโปรเจกต์
หน้าเว็บจัดเป็น dashboard 8 หน้า (ภาพรวม · โปรเจกต์ · Providers & Profiles ·
Chat & Tasks · Runs & Jobs · Approvals · Knowledge · Settings) หน้าภาพรวมแสดงสถานะ,
ขั้นตอนถัดไป และสิ่งที่ต้องตรวจสอบเท่านั้น คำอธิบายยาวถูกย้ายไป tooltip (ปุ่ม ?
เปิดด้วย hover/โฟกัสคีย์บอร์ด/แตะ ปิดด้วย Escape) และส่วน "รายละเอียดทางเทคนิค"
ที่พับได้ กล่องยืนยัน/แจ้งผลใช้ SweetAlert2 ที่ vendor มากับแพ็กเกจ (same-origin
ไม่มี CDN, CSP 'self' เท่าเดิม) การลบ/ยกเลิก/เปลี่ยนโหมดต้องยืนยันก่อนเสมอ
และงานที่มีค่าใช้จ่ายหรือผลไม่แน่นอนจะบอกชัดว่า "ไม่ retry อัตโนมัติ"
การสร้าง Agent ใช้หน้า Providers & Profiles: เลือกประเภท Coding/Review/Research, Provider connection และ Model ID แล้วกด สร้าง Agent รายชื่อโมเดลที่โหลดจาก Provider จะเข้าแบบฟอร์มให้อัตโนมัติ ส่วน permission, tool calling, token limits และราคา อยู่ในหัวข้อ ตั้งค่าขั้นสูง หาก endpoint ไม่รองรับการลิสต์โมเดลยังกรอก Model ID เองได้
หน้า Settings → Sub-agent tools ใน MCP มีสวิตช์เปิด/ปิดการ expose
subagent_spawn, subagent_status, subagent_result และ subagent_control ให้ AI
ภายนอก ค่าเริ่มต้นปิดเพื่อให้ catalog สำหรับงานทั่วไปกระชับขึ้น แต่หน้า Chat & Tasks
ยังสร้างและจัดการ agent ได้ตามเดิม เมื่อเปลี่ยนค่านี้ต้อง restart DODO แล้ว rescan หรือ
สร้าง MCP app ใหม่ตามพฤติกรรมของ client การตั้งค่านี้เปลี่ยนเฉพาะการมองเห็น tools
และไม่เพิ่ม OAuth scope, trust, approval หรือสิทธิ์ของ profile
หน้า Settings → Tools ที่ AI มองเห็น เลือกเปิด/ปิดแต่ละ operation ได้ พร้อมค้นหา
และเปิด/ปิดทั้งหมวด ค่าใช้กับ Compact/Hybrid: operation ที่ปิดจะหายจาก
dodo_discover, gateway enum และ direct duplicate ใน Hybrid หากปิดครบทั้งหมวด gateway
นั้นจะไม่ถูกส่งให้ client จึงลดทั้งจำนวน schema และ context ที่ AI ต้องอ่าน Full/STDIO
ยังคง definitions รายตัวครบตามเดิม เมื่อบันทึกต้อง restart DODO แล้ว rescan หรือสร้าง
MCP app ใหม่ การตั้งค่านี้เป็น visibility เท่านั้นและไม่ grant สิทธิ์ใด ๆ
เพิ่มโปรเจกต์ครั้งเดียว แล้วสั่งงานด้วยชื่อ
เพิ่มโปรเจกต์จากหน้า Projects (หรือ CLI) โดยกรอกแค่ ชื่อ, absolute path และ ระดับการเข้าถึง หนึ่งค่า:
ระดับ | AI ทำอะไรได้ |
อ่านอย่างเดียว | อ่าน ค้นหา วิเคราะห์ |
แก้ไข | อ่านและแก้ไฟล์ |
ทำงานเต็มรูปแบบ | อ่าน แก้ไฟล์ และรันคำสั่ง/ทดสอบ |
dodo project add "C:\Users\User\Desktop\auto-upload" --name "auto-upload" --access full
dodo project access "auto-upload" --mode edit
dodo project listในโหมดส่วนตัว (ค่าเริ่มต้น) เท่านี้ก็พร้อมใช้ — ไม่ต้องตั้ง Client ACL, Trust หรือ profile allowlist ซ้ำอีกหลายหน้า ระดับที่เลือกเป็น เพดาน สิทธิ์จริงคือส่วนที่ทับกับ OAuth scope ของ client นั้น (token ที่อ่านได้อย่างเดียวจะยังอ่านได้อย่างเดียวเสมอ)
จากนั้นสั่ง AI ด้วยชื่อโปรเจกต์ได้ตรง ๆ:
"ใช้ DODO แก้โปรเจกต์ auto-upload"
AI จะ resolve ชื่อเอง (project_overview ด้วย targetProject: "auto-upload") รับ
workspaceId/workspaceEpoch ของโปรเจกต์นั้น แล้วส่ง targetProject ไปกับทุกคำสั่งถัดไป
เจ้าของไม่ต้องรู้หรือพิมพ์ project ID เลย ดู docs/PROJECTS.md
ลงทะเบียนโปรเจกต์ที่ต้องการใช้งานบ่อยได้โดยไม่เริ่ม server:
dodo project add /absolute/path/to/project --name "Web application"
dodo project list
dodo project info prj_xxxxxxxxxxxx
dodo project remove prj_xxxxxxxxxxxx --yesProject Registry ใช้ project ID คงที่แยกจาก workspace authority และแสดง readiness ของ path ปัจจุบัน ดู contract ที่ Project Registry
อ่านหลายโปรเจกต์พร้อมกัน
เจ้าของต้องลงทะเบียนแต่ละโปรเจกต์ โหมดส่วนตัวใช้ OAuth scopes เดิมกับทุก project
ที่ลงทะเบียน ส่วนโหมด managed ต้องให้ dodo:read แก่ client ในแต่ละ workspace:
project_overview()
→ federation.projects แสดงเฉพาะโปรเจกต์ที่ client อ่านได้
dodo_read(operation="search_code", args={
projectIds: ["prj_2bcdefghjkmn", "prj_3cdefghjkmnp"],
query: "UserDto"
})project_overview, list_files และ read_files รับ projectId ได้ ส่วน
search_code รับ projectId หรือ projectIds สูงสุด 8 รายการ ผลแต่ละโปรเจกต์มี
project/workspace identity, federation epoch และ source hash เพื่อแยก evidence
ออกจากกัน ค่า workspaceId/workspaceEpoch ระดับบนของ MCP call ยังคงเป็นของ
active workspace เสมอ
Federation แบบ projectId/projectIds ยังคง read-only สำหรับการเขียน/รันหลายโปรเจกต์
ให้เรียก project_overview(targetProjectId="prj_…") แล้วใช้ targetProjectId และ
workspace ID/epoch ที่ได้รับกับทุก operation ต่อมา คนละโปรเจกต์ทำงานพร้อมกันได้
โดยไม่เปลี่ยน default; งาน mutation ในโปรเจกต์เดียวกันเข้าคิวร่วมกัน
ดู การตั้ง AI Providers, Profiles และ Sub-agents ผ่านเว็บ
Universal Resource Layer
ไฟล์ขนาดใหญ่และสื่อใช้ resource contract เดียวกัน โดยเริ่มจาก path ภายใน active
workspace หรือ assetId ที่ principal เดียวกันเป็นเจ้าของ:
resource_inspect(path="docs/spec.pdf")
→ resourceId + dodo-resource:// URI + MIME + bytes + SHA-256 + capabilities
resource_read_range(resourceId=..., offset=0, length=65536)
→ bounded Base64 chunk + chunk hash + principal-bound resumeToken
resource_preview(resourceId=...)
→ text / MCP image / MCP audio / metadata ตามชนิดและขนาดHTTP Compact/Hybrid เรียก operation เดียวกันผ่าน dodo_media หลังค้นด้วย
dodo_discover CAS เก็บ object แบบ immutable ตาม hash และ deduplicate ข้าม reference
ได้ แต่ resource ID/URI ไม่ใช่ capability ทุก call ยังตรวจ OAuth, live grant,
target authority, workspace ID/epoch และ principal ownership ซ้ำ ไม่ ingest .env,
private DODO state, traversal, symlink หรือ hardlink และไม่ inflate/execute archive
content ดูรายละเอียดที่ Resources
Project Brain
Project Brain สร้าง graph แบบ bounded จาก TypeScript/JavaScript AST และ
package.json โดยไม่รัน source, repository plugin หรือ command ใด ๆ ระบบ refresh
อัตโนมัติและ parse ใหม่เฉพาะไฟล์ที่เปลี่ยน พร้อมขยายผลไปยัง relation ที่ได้รับ
ผลกระทบ:
brain_status()
brain_query(query="UserService", nodeTypes=["symbol"])
brain_symbol(uri="symbol://...")
brain_rebuild(mode="incremental", waitMs=10000)ใน Compact/Hybrid ให้เรียกผ่าน dodo_assist_read หรือ dodo_assist_change
ตาม schema จาก dodo_discover ค่า symbol:// เป็น semantic identity ที่คงเดิม
เมื่อไฟล์ถูกย้ายแบบ exact-content แต่ URI/index row ไม่ใช่สิทธิ์ ทุก query จะตรวจ
OAuth, live grant, target authority, workspace ID/epoch, path/secret policy และ SHA-256
ของ source ปัจจุบันใหม่ก่อนคืนผล ดู Project Brain
Context Engine และ Evidence
ให้ AI ขอ context ตาม goal ได้โดยไม่ต้องเลือก search/brain/git ทีละตัว:
context_query(goal="Fix login callback", terms=["loginCallback", "OAuth"],
projects=["Frontend", "Backend"], budget=24000)Compact/Hybrid ใช้ dodo_assist_read(operation="context_query", args={...}) ผลลัพธ์
แยก FACT, OBSERVATION, MEMORY, INFERENCE, HYPOTHESIS และทุก evidence มี
project identity, source hash, line/commit, confidence, generated/verified time และ
freshness Cache L0–L6 ตรวจ ACL และ dependency hash ก่อนใช้ซ้ำ Source เปลี่ยนแล้ว
evidence เดิมจะเป็น stale และ derived cache ถูกสร้างใหม่
ผลค้นหา, README และ repository instruction เป็น untrusted content และไม่สามารถเพิ่ม
scope, ACL, trust หรือ approval ได้ Memory ที่เจ้าของอนุมัติจะแสดงเป็น evidence class
MEMORY; runtime evidence ที่ caller เดียวกันเก็บไว้จะแสดงเป็น OBSERVATION พร้อม
source hash และ freshness ดู contract ที่
Context Engine
Owner-reviewed Memory
AI สร้าง memory ถาวรเองไม่ได้ ขั้นแรกต้องใช้ current context_evidence เพื่อเสนอ:
dodo_assist_read(operation="context_query", args={goal:"Find session policy", ...})
dodo_assist_change(operation="memory_propose", args={
kind:"decision",
claim:"Keep session state scoped to one workspace.",
evidenceIds:["evidence_..."]
})จากนั้นเจ้าของตรวจ proposal และ digest ผ่าน private local CLI เท่านั้น:
dodo memory pending
dodo memory show memprop_xxxxxxxxxxxx
dodo memory approve memprop_xxxxxxxxxxxx --digest sha256:...Memory ทุกชิ้นเป็น evidence_only และ untrusted_content Source เปลี่ยนหรือ retention
หมดจะเป็น stale และไม่ถูกใช้เป็น current context การแชร์ข้าม project ต้องระบุ
--share-with ตอน owner approval และ client ยังต้องมี live ACL ใน project เป้าหมาย
รายละเอียดอยู่ที่ Memory and Reviewed Learning
Runtime Intelligence
งานทดสอบหรือ process ที่ต้องติดตามข้ามการ reconnect ใช้ runtime session โดยคำสั่ง ยังผ่าน exec approval, trusted executable resolver และ command sandbox เดิม:
dodo_assist_change(operation="runtime_session_open", args={label:"verify checkout"})
dodo_exec(operation="runtime_task_start", args={
sessionId:"runtime_...", kind:"test", program:"npm", args:["test"],
network:false, idempotencyKey:"client-generated-key"
})
dodo_assist_read(operation="runtime_task_observe", args={sessionId:"runtime_...", taskId:"rtask_..."})
dodo_assist_read(operation="runtime_diagnose", args={sessionId:"runtime_...", evidenceIds:["runtimeev_..."]})Runtime store เก็บเฉพาะ status, byte counts, aggregate test counts และ SHA-256 ไม่เก็บ
stdout/stderr, DOM, console หรือ header ดิบ Browser collector ใช้ได้เฉพาะ
browser_session ที่ caller เปิดและมีสิทธิ์อยู่แล้ว โดยส่ง bounded observation/image
ใน response ปัจจุบัน แต่ persist เฉพาะ safe URL, hashes และ counts Snapshot ไม่ copy
ไฟล์และไม่ rollback เอง; ต้องเรียก rollback_changes แยกต่างหาก ดู
Runtime Intelligence
Advanced Agent Runtime
งานแก้ปัญหาหลายขั้นสามารถเปิด durable agent run ที่จำกัด project, writable paths, programs, optional capabilities, quotas และเวลาทำงานเพิ่มจากสิทธิ์เดิม:
dodo_assist_change(operation="agent_run_open", args={goal, completionCriteria, capabilities})
dodo_assist_change(operation="agent_hypothesis_open", args={runId, ...})
dodo_assist_change(operation="agent_intent_acquire", args={runId, hypothesisId, kind:"path", resourceKey:"src"})
dodo_write(operation="agent_write", args={runId, hypothesisId, operation:"edit_file", args:{...}})
dodo_assist_read(operation="agent_snapshot_compare", args={...})Run/plan/hypothesis/intent/snapshot/skill ไม่ให้ permission เพิ่ม ทุก target ยังผ่าน
OAuth scope, live target authority/epoch, trust approval, path/secret guards, expected hash,
command sandbox, idempotency และ audit เดิม agent_exec ใช้ explicit argv/owned handles
เท่านั้น และ cancel/pause coordinator ไม่ kill job ดู
Advanced Agent Runtime
เชื่อม Remote MCP ผ่าน Cloudflare Tunnel
DODO เลือกวิธีเชื่อมต่อระดับ installation ได้หนึ่งแบบ: local (loopback เท่านั้น),
external (Cloudflare ที่เจ้าของติดตั้ง/รันเอง) หรือ tunnel (DODO ดูแล cloudflared)
ค่าที่เลือกมีผลกับทุก dodo start และไม่มี fallback อัตโนมัติ
เฉพาะเครื่อง:
dodo tunnel configure --loopback
dodo startCloudflare Local (ติดตั้งในเครื่อง) — ผู้ใช้ดูแล process/token เอง:
dodo tunnel configure --cloudflare-local --public-url https://mcp.example.com
# เริ่ม cloudflared ที่ติดตั้งในเครื่องด้วยวิธีของผู้ใช้
dodo startDODO Tunnel mode:
dodo setup --check --components cloudflared
dodo tunnel configure \
--tunnel \
--public-url https://mcp.example.com \
--os-credential
dodo startเจ้าของสร้าง remotely-managed Tunnel, public hostname และ DNS ใน Cloudflare และ route
ทุก path มาที่ http://127.0.0.1:21730 DODO ไม่จัดการ Cloudflare account/DNS
เฉพาะ DODO Tunnel เท่านั้นที่ใช้ token ซึ่งถูกบันทึกใน macOS Keychain, Windows
Credential Manager หรือ Linux Secret Service;
global config เก็บเพียง opaque reference ทุกครั้งที่เปิด DODO ระบบจะเริ่ม
cloudflared เป็น child และหยุด child พร้อม DODO Token ไม่อยู่ใน argv, config, log,
audit, browser storage, MCP response หรือ environment ของ MCP jobs
หากต้องตั้งค่าจากอุปกรณ์อื่น ให้เปิดหน้าเจ้าของแบบชั่วคราวผ่าน public listener เดียวกัน:
dodo --web # เริ่ม DODO/Tunnel หรือเปิด lease ใหม่ให้ process ที่รันอยู่
dodo web --status # ดูสถานะแบบไม่มี secret
dodo web --close # ปิดหน้า Remote Config แต่ MCP/Tunnel ยังทำงานคำสั่งจะแสดง https://mcp.example.com/config กับ pairing code แบบใช้ครั้งเดียวใน
terminal หลังจับคู่ browser จะใช้ cookie ที่เป็น Secure, HttpOnly,
SameSite=Strict และจำกัด path ที่ /config หน้า Remote Config ปิดอัตโนมัติภายใน
1 ชั่วโมง การเปิดใหม่ออก code/session ใหม่และไม่ต้อง restart MCP ไม่มี token หรือ
credential อยู่ใน URL ใช้ได้ทั้งโหมด Cloudflare Local ที่เจ้าของรัน
cloudflared เอง และ DODO Tunnel ที่ DODO ดูแล process; โหมดเฉพาะเครื่องไม่มี
public route จึงเปิด Remote Config ไม่ได้
หน้า Local Config ที่ 127.0.0.1:21731 แยกตัวเลือกชัดเจนเป็น
เฉพาะเครื่อง (Loopback), Cloudflare Local (ติดตั้งในเครื่อง) และ
DODO Tunnel ตั้ง public origin ได้ และรับ token แบบ write-only เฉพาะ DODO Tunnel
ค่าใหม่มีผลหลัง restart หน้าเว็บแสดง Active MCP URL จาก runtime จริงและไม่กล่าวว่า
Tunnel หรือ AI client เชื่อมแล้วหากไม่มีหลักฐาน ดูสถานะด้วย dodo tunnel status,
ตรวจ connectivity ด้วย dodo tunnel doctor และดู log ที่ redacted ด้วย
dodo tunnel logs (log/supervisor ใช้กับ DODO Tunnel เท่านั้น)
บน macOS dodo setup --yes เลือก component cloudflared อยู่ในชุด all แล้ว
Tunnel route ต้องชี้เฉพาะ MCP/OAuth listener 21730 ห้ามชี้ Local Config 21731
หรือ metrics 21732 ออก public
สำหรับ local MCP client เช่น Codex, Cursor หรือ Claude Desktop:
dodo stdio --root /path/to/your/projectSTDIO ใช้ full catalog เป็นค่าเริ่มต้น ถ้าต้องการลด catalog ชั่วคราว:
dodo stdio --root /path/to/your/project --tools compact
dodo stdio --root /path/to/your/project --tools hybridCompact Tool Surface
HTTP ใช้ Compact เป็นค่าเริ่มต้น ลำดับการใช้งานคือ:
project_overview
→ dodo_discover
→ gateway ที่ตรงกับ operationตัวอย่างให้ AI แก้ src/example.ts:
dodo_discover(query="edit TypeScript file")
dodo_read(operation="read_files", args={...})
dodo_write(operation="edit_file", args={...})
dodo_read(operation="read_files", args={...})dodo_discover คืน schema ของ operation ที่เลือกและ hash ที่ deterministic ส่วน gateway จะส่ง request ผ่าน policy pipeline เดียวกับ tool รายตัว จึงยังตรวจ scope, ACL, workspace ID/epoch, trust, approval, path guard, secret guard, hash และ audit ครบทุกชั้น
เจ้าของลดรายการที่ AI เห็นได้จาก Local Config → Settings → Tools ที่ AI มองเห็น โดยไม่แตะ permission เมื่อปิด operation แล้ว schema ของ Compact/Hybrid จะตัดรายการนั้น ออกจริงหลัง restart/rescan ส่วน Full surface ไม่เปลี่ยน
ชื่อ gateway dodo_* เป็นชื่อ MCP protocol ที่คงไว้เพื่อ compatibility กับ client ที่เชื่อมต่ออยู่ การเปลี่ยนชื่อ gateway ต้องทำเป็น protocol migration แยกต่างหาก
การเปลี่ยน workspace
เปิด Local Config จาก workspace ปัจจุบัน
ใส่ absolute path ของ project ใหม่
กดเปลี่ยนโปรเจกต์
ระบบตรวจ realpath, root policy, jobs และ request ที่กำลังทำงาน
ระบบเตรียม workspace ใหม่ก่อนสลับ และคืน workspace เดิมหากเตรียมไม่สำเร็จ
client ต้องเรียก
project_overviewใหม่เพื่อรับ workspace ID/epoch ใหม่
ระบบไม่ kill jobs เงียบ ๆ Managed mode ไม่คัดลอก trust หรือ client ACL ไปยัง workspace ใหม่
การเชื่อมต่อ
Local MCP:
http://127.0.0.1:21730/mcpสำหรับ process ในเครื่องPublic MCP: origin HTTPS ของ tunnel ที่เจ้าของสร้างและกำหนด route เอง; DODO อาจ supervise เฉพาะ
cloudflaredprocess ที่เจ้าของสั่งLocal Config:
127.0.0.1:21731เท่านั้น ใช้ owner capability token และ Host/Origin checksRemote Config: ปิดเป็น 404 โดยค่าเริ่มต้น; เจ้าของเปิด
/configบน public origin ได้ครั้งละไม่เกิน 1 ชั่วโมงด้วยdodo --web
DODO รายงาน connected เฉพาะเมื่อ managed cloudflared ตอบ readiness จริง และ doctor แยก local/public health ออกจากกัน สถานะนี้ไม่ใช่หลักฐานว่า ChatGPT หรือ AI client เชื่อมต่อแล้ว
สิทธิ์
ค่าเริ่มต้น personal ใช้ OAuth scope + Agent Profile เป็นเพดานและไม่ถามซ้ำต่อ โปรเจกต์ ส่วน managed ใช้ intersection ของ OAuth scope, workspace ACL และ local policy:
inspectอ่านและวิเคราะห์ได้editทำ file changes ที่ผ่าน approval/policy ได้trustedอนุญาต effectful work ตาม policy ที่เจ้าของยืนยัน
โหมด trusted และคำสั่งที่เจ้าของอนุมัติใช้สิทธิ์ OS ของผู้ใช้จริง ควรเปิดเฉพาะ workspace ที่เชื่อถือได้
dodo --bypass ปรับ policy เฉพาะรอบนั้นตามที่เจ้าของสั่ง และไม่ปิด OAuth, target authority, workspace context, path guards หรือ secret guards
Desktop/Chrome consent แบบ --persist เป็นระดับ installation อนุญาตครั้งเดียวจาก path
ใดก็ได้แล้วใช้กับทุกโปรเจกต์ ส่วน macOS Screen Recording/Accessibility ยังต้องกดให้
สิทธิ์ใน System Settings จริง:
dodo desktop allow --app com.google.Chrome --mode control --persist --yesความปลอดภัย
public MCP ใช้ OAuth เสมอ ไม่มี NoAuth fallback
Local Config bind loopback และมี capability token, expiration, Host/Origin checks และ rate limit; Remote Config ต้องจับคู่ด้วย code ใช้ครั้งเดียวและหมดอายุภายใน 1 ชั่วโมง
client secret/access token ไม่แสดงใน UI หรือ audit
path traversal, symlink/hardlink, secret paths และ stale hashes ถูกปฏิเสธ
command environment ใช้ allowlist และไม่ส่ง local auth state ให้ child process
repository instructions,
.dodo.json, project hints และ AGENTS.md ไม่มีอำนาจเพิ่มสิทธิ์gateway ไม่ grant สิทธิ์และไม่ข้าม approval หรือ target operation policy
CAS URI/hash ไม่ grant สิทธิ์; resource ทุก read/range/preview ตรวจ live target authority และ object hash ซ้ำ
ดูรายละเอียดที่ SECURITY, AUTH และ ARCHITECTURE
เอกสาร
Development
Platform CI ใช้ dedicated self-hosted runners ที่เจ้าของควบคุม: Linux X64 และ
Windows X64 รัน native candidate gate บนเครื่อง runner โดยตรง ไม่ใช้ Docker ส่วน
macOS ยังรัน release gate บนเครื่องพัฒนา Workflow รับเฉพาะ push ที่ main และ manual
dispatch ไม่รัน pull request จากภายนอกบน self-hosted runner
รัน regression benchmark และ macOS candidate gate ได้ด้วย:
npm run bench
npm run release:gateสั่ง Linux/Windows CI ผ่าน GitHub Actions → platform-gates → Run workflow →
เลือก all หรือใช้ gh workflow run platform-gates.yml --ref main -f platform=all
Linux รันเมื่อสั่ง workflow; Windows รันทั้งเมื่อ push ไป main และเมื่อสั่ง workflow
อ่าน การเตรียม runner และวิธีแก้ CI ก่อนรันครั้งแรก
GitHub workflow รัน Node 22 และ 24 ทั้ง Linux/Windows โดยไม่ publish npm Windows จะ ยังไม่ถูกประกาศเป็น supported platform จนกว่า automated native gate และ manual Windows 11 acceptance จะผ่านตามเอกสาร
Release gate สร้างหลักฐาน non-secret ใน ignored release-evidence/ และตรวจ fresh
exact-tarball ผ่าน STDIO Full กับ HTTP/OAuth Compact โดยไม่ publish npm ดูรายละเอียดที่
DodoBench และ Release Gate
เมื่อทั้งสอง report มาจาก clean Git revision, source fingerprint และ package-lock.json เดียวกัน ให้รวมหลักฐาน
บน macOS ด้วย node scripts/release-gate.mjs --release --platform-evidence /absolute/path/to/linux/gate-report.json
Linux report ต้องมาจาก native GitHub Actions; หลักฐาน Docker เก่าไม่แทน CI รอบใหม่
คำสั่งนี้ไม่ publish package
npm ci
npm run build
npm run typecheck
npm run lint
npm run test:all
npm packโปรเจกต์นี้ใช้ GitHub repository arthittakun/dodo-mcp และ package dodo-mcp
Recovery — สำรองและกู้คืนงาน
โปรเจกต์ที่ลงทะเบียนเปิด source backup เป็นค่าเริ่มต้น ก่อนแก้ไฟล์หรือรันคำสั่ง
หน้า Projects → Recovery ใช้ตรวจประวัติ เปรียบเทียบ และยืนยันแผนกู้คืนได้จริง
หรือใช้ dodo recovery --help ผ่าน terminal สำเนาอยู่ใน private state แยกจาก Git
ของโปรเจกต์ และไม่ push ขึ้น GitHub อัตโนมัติ
กู้คืน checkpoint หรือ session ที่เลือก พร้อม expected hashes, สำเนาก่อนกู้ และ receipt หลัง reconnect
ตรวจไฟล์ที่ถูกแก้จากภายนอก และแยก
SAVED,VERIFIED,FAILED,INCONCLUSIVE,STALEให้เห็นตามหลักฐานตั้งชื่อ/pin จุดกู้คืน และตรวจ retention ก่อนล้าง โดยรักษางานที่ไม่เกี่ยวข้อง
เพิ่ม Docker deployment target ได้โดยเจ้าของ: source ที่ตรวจแล้ว → image → health/stabilization → known-good พร้อม reviewed rollback
ตรวจ SQLite migration compatibility แบบอ่านอย่างเดียว และสำรอง private config แบบเข้ารหัสเมื่อเจ้าของเปิดแยก
Source restore ไม่ย้อนฐานข้อมูล, secrets, volumes หรือระบบภายนอก การสำรอง config ใช้กุญแจจาก OS credential store และไม่ส่งเนื้อหาให้ AI; ไม่มี generic database rollback หรือการ restart service อัตโนมัติ ดู คู่มือ Recovery, การเปลี่ยนแปลง 1.3.0 และ ผลตรวจรับจริง
จัดการพื้นที่สำรอง Recovery
ในหน้าเว็บเลือกโปรเจกต์ → Recovery → จัดการพื้นที่ Recovery เพื่อดูพื้นที่ source
ที่เก็บจริงแยกจาก Git copies, ลบ checkpoint เก่าหลังตรวจแผนและยืนยัน, ปรับโควตา
หรือยกเว้น models/ สำหรับสำเนาครั้งถัดไป สำเนาที่ใช้ร่วมกันตาม hash ไม่ได้กินพื้นที่
ซ้ำตามผลรวมขนาด checkpoint และจุดล่าสุด/ที่ถูกป้องกันจะลบไม่ได้
AI ตรวจพื้นที่และเสนอแผนผ่าน recovery_storage_status, recovery_cleanup_preview
และ recovery_settings_preview ได้; recovery_maintenance_apply ต้องได้รับอนุมัติ
จากเจ้าของ แม้ใช้ trusted mode ดู วิธีใช้และข้อจำกัด
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseBqualityDmaintenanceProduction-grade MCP server that gives AI agents safe access to your local dev environment: filesystem, databases, processes, and OpenAPI specs.1543 npm3MIT
- FlicenseCqualityCmaintenanceA security-first MCP server that provides LLMs with structured tools for filesystem, process, search, build/test/lint, IDE integration, and more.402-
- AlicenseNot gradedqualityAmaintenanceLocal-first MCP server that provides project context, verification gates, and structured tools for coding agents to discover knowledge, run diagnostics, and execute allowlisted commands within a repository.16 npmMIT
- AlicenseNot gradedqualityCmaintenanceA local-first MCP server providing guarded access to a workspace with file operations, search, commands, tests, Git helpers, checkpoints, and structured tool results. It supports multiple tool modes and emphasizes security with workspace restrictions and secret blocking.1MIT