Skip to main content
Glama

Docu

📖 중국어판

인간과 AI 에이전트가 함께 쓰는 문서 공간입니다. 오픈소스 리치 텍스트 협업 편집기로서, 데이터를 다시 여러분의 손에 돌려 드리고 — AI 에이전트에게도 동일한 배려를 아끼지 않습니다: 블록 수준의 안정적인 주소 지정, 낙관적 동시성 제어, 그리고 29개 도구로 구성된 MCP 서버가 에이전트가 세심한 인간 편집자처럼 안전하게 지식 베이스를 읽고 쓸 수 있게 합니다.

  • 호스팅: doco.page — 베타 기간 동안 무료

  • 에이전트 연결: claude mcp add doco -- npx -y --package doco-agent-cli doco mcp

  • CLI: npm i -g doco-agent-cli && doco login

  • npm: doco-agent-cli · API 문서: doco.page/api-docs

에이전트가 여기서 안전한 이유

기능

의미

블록 수준의 안정적인 주소 지정

모든 문단은 block_<ULID> id를 가집니다 — 위치와 독립적이며 드래그나 접어도 유지됩니다

낙관적 동시성 제어

읽기는 sha256 버전을 반환하고; 쓰기는 If-Match가 필요합니다. 409가 나오면 에이전트가 다시 확인하고, 병합하고, 재시도합니다 — 맹목적인 덮어쓰기는 불가능합니다.

Markdown 왕복 호환

?annotate=anchors로 내보내고, 문서 전체를 다시 쓰면 블록 id가 보존됩니다.

인간-에이전트 공동 편집

에이전트의 쓰기 작업은 동일한 Yjs 문서를 통해 전달됩니다. 변경 사항은 브라우저에서 실시간으로 나타납니다.

트랜잭션과 멱등성

배치 작업은 원자적으로 커밋됩니다. Idempotency-Key는 재시도를 side-effect-free로 만듭니다.

Related MCP server: session-coord-mcp

특징

편집 환경

  • 리치 텍스트 편집: 제목, 목록, 따옴표, 체크 목록, 코드 블록(구문 강조), 표, 이미지, 링크, 텍스트 스타일 등

  • / 슬래시 명령: /를 입력하면 퍼지 검색이 있는 명령 팔레트가 열립니다 — 중국 사용자를 위해는 병음 약어도 지원합니다.

  • 플로팅 툴바: 텍스트 선택 시 자동으로 나타나며, 수많은 서식 작업이 커서에서 2cm 같은 요량에 표시됩니다.

  • 블록 드래그 앤 드롭: 단락의 왼쪽 가장자리에 마우스를 올리면 드래그 핸들이 나타납니다 — 내용을 레고 블록처럼 재배열할 수 있습니다.

  • 접이식 섹션: 작업 중이 아닌 섹션은 접을 수 있습니다. 접힌 상태는 세션이 바뀌어도 유지됩니다.

  • 자동 제목 번호: 한 번의 클릭으로 활성화/비활성화 — H1-H4 제목은 계층 번호(1. 1.1 1.1.1)를 자동으로 유지합니다.

  • 키보드 단축키: ⌥↑/←→으로 구역 이동, ⌘D로 블록 복제, ⌘⌥1/2/3/0으로 제목 레벨 전환.

텍스트-다이어그램

문서에 Mermaid나 PlantUML 소스 코드를 기술하세요. 다이그램이 제자리에 렌더됩니다. 더블클으로 편집, 전체 화면 보기, 손가락으로 확대/축소 — 더 이상 draw.io 이용해 분리-import-replace-있는 작업 프로세스를 도는 일이 없습니다.

  • ** Mermaid: flow-awareness, 시퀀스 다이어그램, 클래스 다이어그램, 간트 차트, 상태 다이어그램 등

  • PlantUML: 시퀀스 다이어그램, 클래스 다이어그램, 유스케이스 다이어그램, 컴포넌트 다이어그램 등

스프레드시트

문서에 완전한 스프레드시트 엔진을 내장:

  • 수식 자동 계산, 셀 서식

  • 행 고정 정렬 및 필터

  • 셀 통합 / 분할

  • CSV 가져오기 / 내보내기

문서 내용으로, 확장형 블록으로 사용하거나, 독립형 프로그램 창으로 열어 볼 수도 있습니다.

지식 베이스

  • 지식 베이스 → 폴더 (중첩 가능) → 문서의 3단계 구조

  • 사이드바에서 드래그 앤 드롭 재배치, 이름, 이동

  • 폴더 트리와 이미지를 묶은 전체 KB ZIP 내보내기

  • 문서 낱개, 폴더, 또는 지식 베이스 전체를 위한 무손실 .doco.zip 전송

실시간 협업

Yjs CRDT 알고리즘 기반:

  • 저장 버튼이 필요 없습니다 — 변경이 자동으로 동기화.

  • 오프라인 우선: 브라우저 IndexedDB가 기본 저장소, 서버 스냅샷은 보조. 네트워크 없이도 편집을 이어가고, 다시 연결되면 자동으로 병합합니다.

  • 다중 기기 무인프라 전환: 노트북을 닫고 손에 든 귀하의 폰으로 계속 작성.

가져오기 / 내보내기

형식

가져오기

내보내기

Doc 네이티브 패키지

✅ 전부 문서 / 폴더 / KB

✅ 무손실 문서 / 폴더 / KB

Markdown

Word (DOCX)

PDF

HTML

위칭 공공 계정

✅ (테마 미리 보여 주며)

문서 내 이미지

✅ (붙여넣기 / 드래그)

✅ (Zip에 묶어서)

API · MCP · CLI

세 개의 채널, 하나의 규약:

  • REST API: OpenAPI 3.1 스펙, Bearer Token 인증, ETag 버전 관리, 커서 페이지네이션, 멱등 대상.

  • MCP server: doco mcp (dodo-agent-cli에 포함) — 29개 도구 + doco:// 리소스.

  • dodo CLI: login / whoami / docs / blocks / edit / mcp, 전역 --json, 쓰기는 내부에서 ETag/If-Match 처리.

문서를 프로그램 가능한 자산으로 바꾸세요. 자신만의 백업을 스크립트로, 에이전트가 지식 베이스를 정리하고, 작성 워크플로의 문서를 마이 부드로 파이핑할 수 있습니다. API 문서 페이지가 내장되어 있어 박스 열고 바로 쓸 수 이.

기술 스택

계층

기술

FEnd Framework

React 18 + Vite + TypeScript

CSS

Tailwind CSS v4

Editor

Tiptap v3 (ProseMirror)

Collaboration

Yjs (CRDTO, CRDT + Hocuspocus)

Diagrams

Mermaid + PlantUML

Backend

Node.js + Express + Hocuspocus Server

Database

better audio-sqlite3 (SQLite, WAL mode)

UI 자산

Radix UI, Lucide React, Tippy.js

빠른 시작

필수 요구 사항

  • Node.js >= 18

  • pnpm

설치 및 실행

# Install frontend dependencies
pnpm install

# Install backend dependencies
cd backend && npm install && cd ..

# Start the frontend dev server (Vite, default :5173)
pnpm run dev

# In another terminal, start the backend (Express + WebSocket, default :8000)
cd backend
npm run dev

http://localhost:5173을 열면 백엔드 WebSocket 서비스에 자동으로 연결됩니다.

Docker 배포 (권장)

완전한 자체 호스팅 패키지는 Caddy 프런트에, Node.js 협업 백엔드, 영속적 SQLite 저장, 상태 점검, 동일 출처 WebSocket 프록시를 포함합니다. 공용 이미지는 linux/arm64linux/arm64 아키텍처를 지원합니다.

git clone https://github.com/songofhawk/doco.git
cd doco
cp .env.docker.example .env.docker

# Review .env.docker first, then start with prebuilt Docker Hub images
docker compose --env-file .env.docker up -d

# Verify the deployment
docker compose --env-file .env.docker ps
curl --fail http://localhost:8080/healthz

기본적으로 http://localhost:8080을 엽니다. 위 환경에 맞게 .env.docker에서 ALLOWED_ORIGINS, COOKIE_SECURE, Google OAuth, SMTP 값을 적절히 설정하세요. 이 값들은 컨테이너 시작 시 주입되고 이미지에 포함되지 않습니다. 애플리케이션 데이터는 doco-data 명시 볼륨에 보관됩니다.

Docker Hub: songofhawkg/doco-frontend · songofhawkg/doco-backend

소스로부터 같은 이미지로 빌드하려면 대신:

docker compose --env-file .env.docker up -d --build

모든 구성 옵션옵션, HTTPS, 로그, 백업, 복원 및 업그레이드 방법은 Docker 배포 가이드를 참조하세요. database와 첨부 얻을 삭제할 의도가 없는 한 docker compose down -v을 실행하지 마세요.

Manual Build & Deployment

# Frontend build
pnpm run build          # output → dist/
pnpm run deploy         # deploy to Cloudflare Pages

# Backend (production)
cd backend
npm start

Project Structure

GXP5 DocDist[image]

독립형 Frontend Component

편집기 핵심은 doco-text-editor`으로도 배포됩니다. Doco의 완전한 편집 기능과 기본 스타일을 포함하지만, Doc의 인증, REST API, 협업 서비스, IndexedDB에 의존하지 않습니다. 호스트 애플리케이션이 콘텐츠를 메모리, 브라우저 저장, 해당 백엔드 또는 ClickUp 같은 외부시스템 어디에 저장할지 결정합니다.

npm install doco-text-editor
import { useRef } from 'react'
import {
  DocoTextEditor,
  type DocoTextEditorRef,
} from 'doco-text-editor'
import 'doco-text-editor/style.css'

const editorRef = useRef<DocoTextEditorRef>(null)

<DocoTextEditor
  ref={editorRef}
  defaultValue="# Browser-only draft"
  format="markdown"
  onChange={({ steps }) => {
    // Only the ProseMirror steps changed by this transaction.
    queueIncrementalChanges(steps)
  }}
/>

// Read the complete document only when needed.
const json = editorRef.current?.getContent('tiptap-json')
const markdown = editorRef.current?.getContent('markdown')
const html = editorRef.current?.getContent('html')
const text = editorRef.current?.getContent('text')

이 패키지에는 제목, 흐루형 서식, 단락 인용, 번호/비상과/노예할 목록, 코드 블록, 이미지, 표, 콜, Mermaid 선택적 PlantUML 렌더링, 내장 스프레드시트가 포함되어 있습니다. 전체 구현 및 연동 방법은 src/editor/README.md를 참조하세요.

Doco 편집기 컴포넌트 사용 전체

import { DocoEditor } from './editor'
import type { DocoEditorRef } from './editor/types'

const editorRef = useRef<DocoEditorRef>(null)

<DocoEditor
  ref={editorRef}
  docId="doc-001"
  userId="user-001"
  collaboration={{
    websocketUrl: 'ws://localhost:8000',
  }}
  onTitleChange={(docId, title) => console.log('Title changed:', title)}
  placeholder="Start writing…"
/>

{/* Call export methods via ref */}
<button onClick={() => editorRef.current?.exportMarkdown()}>Export MD</button>

협업 : 협업 규모

Browser IndexedDB (y-indexeddb)  ← local primary store
       ↕
Browser Y.Doc  ← @hocuspocus/provider (WebSocket)
       ↕  Yjs binary delta messages
Server @hocuspocus/server  →  SQLite ydoc_state (one merged snapshot per doc)
  • 브라우저 IndexedDB가 원저장소이며, 서버 스냅샷은 보조입니다. 서버 스냅샷이 소실되면 브라우저에서 문서를 열면 자동으로 다시 채워집니다.

  • 오프라인 편집은 원활하게 작동하며, 네트워크가 돌아오면 변경 사항이 자동으로 동기화됩니다.

  • 협업 커서: 지원 프레임워크가 지원하지만 기본으로는 비활성화되어 있습니다.

Markdown 내보내기

단일 문서와 KB 번들 모두 Markdown 내보내기를 지원하며, 서버에서 YDoc으로부터 실시간으로 생성합니다:

# Single document export
curl http://localhost:8000/api/docs/{id}/export.md

# KB ZIP bundle
curl http://localhost:8000/api/kb/{id}/export.zip

커스텀 노드(Mermaid, PlantUML, 콜아웃 등)는 backend/markdown.js에 직렬화 규칙이 있습니다. 새 커스텀 노드를 추가할 때는 서버 측 직렬화기를 함께 업데이트해 주세요.

무손실 Doc 이동

문서, 폴더, 또는 지식 베이스 메뉴에서 Export Doc File를 사용하세요. 결과 .doco.zip에는 원본 Yjs 상태, 계층, 문서 설정, 독립된 스프레드시트, 첨부 파일이 모두 들어 있습니다. 가져올 때는 항상 새 번호를 부여받아 복사본이 열리는’ hence a completely new copy unattached. thereby can be moved freely between independent deployments without collision.

지식 베이스 전체를 내보낼 때는 지식 베이스 머리글 옆의 업로드 버튼을 사용합니다. 문서나 폴더 패키지를 가져오려면 도착 KB와 폴더 메뉴에서 Import Doc File을 선택하세요.

Licenses

MIT Tool

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    MCP server that gives AI coding agents on-demand access to private project docs via BM25 ranked search. One setup for Claude Code, Cursor, Codex, Gemini CLI, and more. Docs stay private, never in public repos.
    15
    15
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Persistent docs and memory for AI agents. Writespace is a collaborative markdown editor with a built-in MCP server — your model reads, writes, organizes, and searches a shared workspace while humans edit the same docs live. Drop the ranked full-text search straight in as RAG retrieval.
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server for collaborative markdown editing, allowing agents to write documents and humans to comment, with comments fed back as agent input.
    300,650
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP-native collaborative markdown editor with real-time AI document editing

  • Persistent docs and memory for AI agents — read, write, organize & search a shared workspace.

  • Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/songofhawk/doco'

If you have feedback or need assistance with the MCP directory API, please join our Discord server