Doco
Doco
📖 中文版
人間とAIエージェントが一緒に書くドキュメントスペース。 オープンソースのリッチテキスト コラボレーションエディタで、あなたのデータを自分の手に取り戻します。そしてAIエージェントにも 同じ配慮をします。ブロックレベルの安定アドレッシング、楽観的同時実行制御、29ツールの MCPサーバーにより、エージェントは慎重な人間の編集者のように安全にナレッジベースを読み書きできます。
ホステッド版: doco.page — ベータ期間中は無料
エージェントを接続:
claude mcp add doco -- npx -y --package doco-agent-cli doco mcpCLI:
npm i -g doco-agent-cli && doco loginnpm: doco-agent-cli · APIドキュメント: doco.page/api-docs

なぜエージェントはここで安全か
機能 | 意味 |
ブロックレベルの安定アドレッシング | すべての段落は |
楽観的同時実行制御 | 読み取りは |
Markdownラウンドトリップ |
|
人間とエージェントの共同編集 | エージェントの書き込みは同じYjsドキュメントを通過するため、変更はブラウザでライブに表示されます |
トランザクションと冪等性 | バッチ操作は原子的にコミットされます。 |
Related MCP server: session-coord-mcp
機能
編集体験
リッチテキスト編集: 見出し、リスト、引用、タスクリスト、コードブロック(構文ハイライト)、表、画像、リンク、テキストスタイルなど
/スラッシュコマンド:/を入力するとファジー検索のコマンドパレットが開きます — 中国語ユーザー向けに拼音の省略形に対応フローティングツールバー: テキスト選択時に自動表示され、すべての書式操作がカーソルから2センチ以内で完結
ブロックのドラッグ&ドロップ: 任意の段落の左端にホバーするとドラッグハンドルが表示され、コンテンツをブロックのように並べ替えられます
折りたたみセクション: 編集中でないセクションを折りたためます。折りたたみ状態はセッションをまたいで保持されます
見出し自動番号: ワンタッチで切り替え — H1~H4見出しが階層番号(
1.1.11.1.1)の維持して表示されますキーボードショートカット:
⌥↑/↓でブロック移動、⌘Dでブロック複製、⌘⌥1/2/3/0で見出しレベル切り替え
Text-to-Diagram 図の自動生成
MermaidまたはPlantUMLのソースコードをドキュメントに直接記述します。図はその場でレンダリングされます。ダブルクリックで編集、全画面表示、ピンチズームにも対応します — draw.ioのようなエクスポート取り込み置換サイクルはもう不要です。
Mermaid: フローチャート、シーケンス図、クラス図、ガントチャート、状態図など
PlantUML: シーケンス図、クラス図、ユースケース図、コンポーネント図など
スプレッドシート
ドキュメントに組み込まれたフル機能のスプレットシートエンジン:
数式計算、セル書式
ウィンドウ枠の固定、並べ替えとフィルタ
セル結合 / 分割
CSVのインポート / エクスポート
内容ブロックとしてインラインで使うことも、単体の全画面スプレッドシートとして取り出すこともできます。
ナレッジベース
ナレッジベース → フォルダ(入れ子可)→ ドキュメント — 3階層構造
サイドバーでのドラッグ&ドロップによる並べ替え、名前変更、移動
フォルダ階層を保持したKB全体のZIPエクスポート。画像も同梱
ドキュメント・フォルダ・ナレッジベース全体を無劣化で移行できる専用
.doco.zip形式
リアルタイムコラボレーション
Yjs CRDTアルゴリズムに基づいています:
保存ボタンは不要です。変更は自動的に同期されます
オフラインファースト: ブラウザのIndexedDBがプライマリストレージ。サーバーはスナップショットを保持します。ネットワークなしでも編集でき、再接続時に自動的に調整されます。
シームレスなデバイス切り替え: ノートPCを閉じて、スマホを手に取り、そのまま書き続けられます
インポート / エクスポート
形式 | インポート | エクスポート |
Docoネイティブパッケージ | ✅ ドキュメント / フォルダ / KB | ✅ ドキュメント / フォルダ / KBを無劣化で取り扱い |
Markdown | ✅ ペースト / ファイルアップロード | ✅ 単一ドキュメントおよびKBバンドル |
Word (DOCX) | ✅ | ✅ |
✅ | ✅ | |
HTML | ✅ | — |
微信公式アカウント(WeChat) | — | ✅ (テーマのプレビュー付き) |
ドキュメント内画像 | ✅ (ペースト/ドラッグ&ドロップ) | ✅ (ZIPに同梱) |
API · MCP · CLI
3つのチャネル、1つの取り決め:
REST API: OpenAPI 3.1仕様、Bearer Token認証、ETagバージョン管理、カーソルページネーション、冪等キーを適用
MCPサーバー:
doco mcp(doco-agent-cliに同梱) — 29個のツールとdoco://リソースを提供doco CLI:
login/whoami/docs/blocks/edit/mcp、グローバルな--jsonオプション、書き込みによりETag/If-Matchを内面化
ドキュメントをプログラム可能なアセットに変身させましょう。自分だけのバックアップをスクリプト化し、エージェントにナレッジベースを整理させ、公開ワークフローのドキュメントをブログへ送り込むことも。組込みのAPIドキュメントページをすぐに利用できます。
技術スタック
層 | 技術 |
フロントエンドフレームワーク | React 18 + Vite + TypeScript |
CSS | Tailwind CSS v4 |
エディタ | Tiptap v3 (ProseMirror) |
コラボレーション | Yjs (CRDT) + Hocuspocus |
図表 | Mermaid + PlantUML |
バックエンド | Node.js + Express + Hocuspocus Server |
データベース | better-sqlite3 (SQLite, WALモード) |
UIコンポーネント | Radix UI, Lucide React, Tippy.js |
クイックスタート
前提条件
Node.js 16以上 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 devhttp://localhost:5173 を開いてください。バックエンドのWebSocketサービスに自動接続します。
Docker本番 (推奨)
完全なセルフホストパッケージには、Caddyフロントエンド、Node.jsコラボレーションwバックエンド、永続的SQLiteストレージ、ヘルスチェック、同一オリジンWebSocketプロキシが含まれます。公開イメージはlinux/amd64とlinux/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 --buildDockerデプロイガイド で、すべての構成オプション、HTTPS、ログ、バックアップ、復元、アップグレードを確認できます。データベースと添付ファイルを削除する意図がない限り、docker compose down -v を実行しないでください。
手動ビルドとデプロイ
# Frontend build
pnpm run build # output → dist/
pnpm run deploy # deploy to Cloudflare Pages
# Backend (production)
cd backend
npm startプロジェクト構造
doco/
├── src/
│ ├── main.tsx # App entry point
│ ├── App.tsx # Root component, routing, import/export
│ ├── components/
│ │ └── Sidebar.tsx # KB sidebar (document tree)
│ └── editor/ # Editor module
│ ├── index.ts # Entry, exports DocoEditor component
│ ├── DocoEditor.tsx # Editor core (Yjs/Hocuspocus init, extension registration)
│ ├── types.ts # DocoEditor Props/Ref type definitions
│ └── components/
│ ├── BubbleMenu.tsx # Selection floating toolbar
│ ├── BlockHandle.tsx # Block drag handle
│ ├── SlashCommand.ts # / command palette
│ ├── CommandList.tsx # Command palette UI
│ ├── suggestions.ts # Command menu data
│ ├── CollapseExtension.ts # Block collapse extension
│ ├── DocSettings.tsx # Document settings (heading numbering, background)
│ ├── MermaidBlock.ts # Mermaid node definition
│ ├── MermaidComponent.tsx # Mermaid renderer
│ ├── PlantUMLBlock.ts # PlantUML node definition
│ ├── PlantUMLComponent.tsx # PlantUML renderer
│ ├── CalloutBlock.ts # Callout block definition
│ ├── CalloutComponent.tsx # Callout renderer
│ ├── SpreadsheetBlock.ts # Spreadsheet node definition
│ ├── SpreadsheetComponent.tsx # Spreadsheet renderer
│ ├── spreadsheetEngine.ts # Spreadsheet calculation engine
│ ├── WeChatExportDialog.tsx # WeChat Official Account export
│ ├── KeyboardShortcuts.ts # Keyboard shortcuts
│ ├── TableOfContents.tsx # Table of contents
│ ├── CodeBlockComponent.tsx # Code block (highlight + copy)
│ └── ImageComponent.tsx # Image renderer
├── backend/
│ ├── server.js # Entry: Express + Hocuspocus + export routes
│ ├── database.js # better-sqlite3 init & schema
│ ├── api.js # KB / folder / document REST API
│ ├── auth.js # Auth (OAuth + Email + API Token)
│ ├── markdown.js # YDoc → Markdown server-side export
│ ├── permissions.js # Permission management
│ ├── quota.js # Quota management
│ ├── openapi.js # OpenAPI spec definition
│ └── tests/ # Backend tests
└── docs/ # Design docs & proposalsスタンドアロンのフロントエンドコンポーネント
エディタコアは doco-text-editor としても公開しています。これはDocoの完全な編集体験と組み込みスタイルを含みますが、Docoの認証・REST API・コラボレーションサービス・IndexedDBには一切依存しません。ホストアプリケーションが、コンテンツをメモリ、ブラウザストレージ、自分で管理するバックエンド、ClickUpなどの外部システムのどこに置くかを決定します。
npm install doco-text-editorimport { 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描画、組み込みスプレッドシートが含まれます。完全なAPIと統合の注意点は 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、Calloutなど)は、backend/markdown.js にそれぞれシリアライズルールがあります。新しいカスタムノードを追加するときは、サーバー側のシリアライザも更新してください。
ロスのないDoco転送
ドキュメント、フォルダー、またはナレッジベースのメニューで「Docoファイルをエクスポート」を使います。生成される.doco.zipには、元のYjs状態、階層、ドキュメント設定、スタンドアロンスプレッドシート、添付ファイルが含まれます。インポートすると常に新しいリソースIDと添付IDでコピーが作成されるため、独立したDocoインストール間で安全に移動でき、既存データに衝突しません。
ナレッジベースド庁の見出しの横にあるアップロードボタンを使用して、ナレッジベース全体をインポートします。ドキュメントまたはフォルダのパッケージをインポートするには、転送先のナレッジベースまたはフォルダのメニューから「Docoファイルをインポート」を選択します。
ライセンス
MIT
This server cannot be installed
Maintenance
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
- AlicenseAqualityBmaintenanceMCP 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.1515Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA local-first MCP server for coordinating parallel AI coding sessions with tools like Claude Code and Codex in a single repository.2MIT

Writespaceofficial
AlicenseNot gradedqualityBmaintenancePersistent 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- AlicenseNot gradedqualityFmaintenanceMCP server for collaborative markdown editing, allowing agents to write documents and humans to comment, with comments fed back as agent input.300,650MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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