mothermachine

Browse / SMB ops and CRM

NextCRM

MIT Next.js CRM with projects, invoicing, documents and a built-in 127-tool MCP server.

AdaptableOperable Business appWeb app Hybrid TypeScript MCP server License: MIT

Accounts, contacts, leads, opportunities, contracts, activities, projects, invoices, documents and an email client in one Next.js 16 app on PostgreSQL. The MCP server is built in at /api/mcp/mcp with Bearer tokens generated from your profile; enrichment runs a Claude-driven browser agent in an E2B sandbox. Single-maintainer project with a Docker Compose stack.

Alternative to HubSpot, Pipedrive

Use it when
  • I want one app for CRM, projects and invoices that our agent can drive through MCP, and I am fine with a small project
  • I want a permissive-license CRM I can rebrand for a client
Gotchas
  • Login is passwordless email OTP: without an email provider you read the code from the database
  • Roadmap still lists 'fix all TypeScript any types' and testing expansion; single maintainer
  • Invoices are not reachable over MCP yet
  • Bundled Postgres and MinIO ship with placeholder passwords

Last activity Sep 2, 2026. Fit: adaptable 3, operable 3.

Editions

Free · Free open source

For agents: JSON · Markdown

Adaptable: what is yours to change

Make it yours

Config only24 things to edit

Copy .env.docker to .env, set ADMIN_EMAIL and RESEND_API_KEY (login is email OTP), and strong POSTGRES_PASSWORD and MINIO_ROOT_PASSWORD. Model and enrichment keys follow a three-tier rule, ENV then admin panel then user profile, so the app runs with none in .env and admins can add OpenAI, Anthropic, Groq and Firecrawl keys at /admin/llm-keys. Tax rates, invoice series and currencies are admin settings. Rebranding means editing the Next.js UI.

Env vars
DATABASE_URL BETTER_AUTH_SECRET BETTER_AUTH_URL ADMIN_EMAIL RESEND_API_KEY RESEND_FROM_EMAIL SMTP_HOST SMTP_USER SMTP_PASSWORD MINIO_ENDPOINT MINIO_ACCESS_KEY MINIO_SECRET_KEY MINIO_BUCKET OPENAI_API_KEY FIRECRAWL_API_KEY GOOGLE_ID GOOGLE_SECRET GOOGLE_CALENDAR_CLIENT_ID EMAIL_ENCRYPTION_KEY CRON_SECRET MAILTRAP_API_KEY
Config files
.env.example .env.docker docker-compose.yml
Prompt files
none
Accounts you need
Resend or SMTP (required for OTP login)OpenAI (optional)E2B and Anthropic (enrichment, optional)Firecrawl (optional)Google Cloud OAuth (optional)

Source

Operable: what an agent can drive

Interface

OfficialMCP serverpublished by the builderlocal

How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.

Docs
github.com/pdovhomilja/nextcrm-app#-mcp-server--ai-agent-access-to-crm-data-new
Tools
accounts (6) contacts (6) leads (6) opportunities (6) targets (6) products (5) contracts (5) activities (5) documents (8) target lists (7) enrichment (4) email accounts (1) campaigns (18) projects (18) reports (2)

Reach

Partial coverage. 7 of 10 jobs reachable through the stated interface.

JobThrough the interfaceEvidence
Manage accounts, contacts, leads and opportunitiesReachableREADME MCP table: 6 tools each (list, get, search, create, update, delete)
Log activities (notes, calls, meetings, tasks)ReachableActivities module: 5 tools
Manage projects, boards and tasksReachableProjects module: 18 tools
Store and link documentsReachableDocuments module: 8 tools incl. upload, download, link
Run email campaignsReachableCampaigns module: 18 tools (CRUD, send, pause, templates, stats)
Enrich targets and contactsReachableEnrichment module: 4 tools; needs E2B and model keys
Run reportsReachableReports module: list, run
Create and send invoicesNot reachableInvoices module is not among the 15 MCP modules; it uses server actions and /api/invoices/[id]/pdf
Read and send email from the built-in clientNot reachableEmail Accounts module exposes list only
Manage users, roles and LLM keysNot reachableAdmin panel pages (/admin/llm-keys, /admin/invoices); no MCP tools

Code stack

Languages
TypeScript
Frameworks
Next.js 16React 19Prisma 7shadcn/uiTailwind CSS v4InngestBetter Authnext-intl
Package manager
pnpm
Database
PostgreSQL 17 with pgvectorMinIO/S3
Hosting target
Docker ComposeCoolifyPortainerVercel
Built
Unknown (recorded, never ranked)

Model stack

Providers
OpenAIAnthropicGroqE2BFirecrawl
Models
Claude Sonnet 4.6 (enrichment)
Keys you need
OPENAI_API_KEY FIRECRAWL_API_KEY E2B_API_KEY ANTHROPIC_API_KEY
Prompts live in
none

Skills

A single published SKILL.md teaching an agent to use the app's MCP server against CRM data.

Kind
bundled
Paths
public/SKILL.md

Evidence and confidence

FieldWhere it was seenConfidence
formFactorREADME: Next.js 16 app, Docker Compose95%
executionModelREADME: E2B sandboxed Claude agent for enrichment, pgvector embeddings from OpenAI; CRM core deterministic90%
operabilityREADME MCP Server section: 127 tools across 15 modules, /api/mcp/mcp streamable HTTP, Bearer tokens90%
effortREADME Docker Installation: .env.docker lists every variable; 3-tier key system90%
editionsREADME License: MIT; no paid edition90%
activeGitHub pushedAt 2026-09-02–
reach90%

Open questions

  • Roadmap line 10 says 25 MCP tools while the feature section says 127; which is current?
  • Is the codebase vibe-coded? AGENTS.md exists but no statement

Sources