Enterprise document intelligence platform. Upload docs, PDFs, manuals, and notes — DocDeploy converts them to indexed Markdown and serves them via per-tenant MCP servers so AI agents can query your knowledge base.
Upload → Convert to Markdown → Inject Section Markers → Index → Serve via MCP
- Upload any document (PDF, DOCX, PPTX, XLSX, HTML, TXT, CSV, JSON, XML)
- Convert to clean, structured Markdown with images preserved
- Index sections with navigational markers and full-text search
- Connect AI agents via MCP — they can search, browse, and read your docs
┌─────────────────────────────────────────┐
│ apps/app Next.js dashboard │ ← Vercel
│ apps/web Marketing site │ ← Vercel
├─────────────────────────────────────────┤
│ packages/lib Converter pipeline│
│ packages/db Drizzle + Neon │
│ packages/workers Background jobs │ ← Render
│ packages/mcp-server MCP per tenant │ ← Render
└─────────────────────────────────────────┘
| Layer | Technology |
|---|---|
| Frontend | Next.js 16, Tailwind CSS, Clerk Auth |
| Database | PostgreSQL (Neon), Drizzle ORM |
| Storage | Cloudflare R2 |
| Queue | pg-boss |
| MCP | @modelcontextprotocol/sdk (Streamable HTTP) |
| Hosting | Vercel (frontend), Render (workers + MCP) |
Each tenant's MCP server exposes 5 tools:
| Tool | Description |
|---|---|
get_manifest |
Full document index — start here |
search_documents |
Full-text search across all docs and sections |
get_document |
Load a full document with section markers |
get_section |
Load a specific section by marker |
list_documents |
List all available documents |
- PDF — pdf-parse v2 with structure inference (chapters, numbered sections, all-caps headings)
- DOCX — mammoth with image extraction to R2
- PPTX — adm-zip XML parsing with slide image extraction
- XLSX — SheetJS with multi-sheet markdown table output
- HTML — Turndown with table preservation and nav/footer stripping
- CSV/TSV — SheetJS for robust quoted field handling
- TXT — Structure inference for unstructured text
- JSON/XML — Formatted code block wrapping
docdeploy/
├── apps/
│ ├── app/ # Dashboard (Next.js)
│ └── web/ # Marketing site (Next.js)
├── packages/
│ ├── db/ # Schema + Drizzle config
│ ├── lib/ # Converter, markers, R2, token counter
│ ├── mcp-server/ # MCP server (stdio + HTTP)
│ └── workers/ # Background document processor
├── render.yaml # Render blueprint
├── turbo.json # Turborepo config
└── package.json # Workspace root
# Install dependencies
npm install
# Run the dashboard locally
npm run dev:app
# Run the marketing site
npm run dev:webSee .env.example for the full list. Required:
DATABASE_URL— Neon PostgreSQL connection stringNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY/CLERK_SECRET_KEY— Clerk authR2_ACCOUNT_ID/R2_ACCESS_KEY_ID/R2_SECRET_ACCESS_KEY— Cloudflare R2R2_BUCKET_NAME/R2_PUBLIC_URL— R2 bucket configMCP_API_KEY— Per-tenant MCP server auth (Render only)
Proprietary — Copyright (c) 2026 MR Dula Enterprise, LLC. All rights reserved.
Contact: [email protected]