This connects Claude to a multi-tenant document intelligence platform that converts PDFs, DOCX, PPTX, XLSX, and other formats into indexed Markdown with section markers. You get five tools: get_manifest for the full document index, search_documents for full-text queries, get_document to load complete files, get_section to fetch specific chunks, and list_documents for inventory. The pipeline preserves images via Cloudflare R2 and infers structure from PDFs using headings and numbering patterns. Each tenant gets an isolated MCP server over streamable HTTP. Reach for this when you need Claude to search and retrieve from an enterprise knowledge base without manually copying docs into context windows.
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
io.github.ericm1018/skillfm-llm-cost-optimizer-openai-anthropic-usage
io.github.mikerawsonnz/llm-orchestration-agent
io.github.mikerawsonnz/authenticated-llm-agent
labforgedev/copilot-memory-mcp
csoai-org/agent-prompt-injection-firewall-mcp
io.github.mikerawsonnz/authenticated-multi-llm-agent