Document hosting and encrypted agent memory with multi-tenant persistence.
One address for any MCP client. No sign-in needed on this server.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Odel could not list its tools without signing in.
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
┌─────────────────────────────────────────┐
│ 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 |
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:web
See .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: matt@mrdula.solutions