NextCRM
MIT Next.js CRM with projects, invoicing, documents and a built-in 127-tool MCP server.
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
- 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
- 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
- Clone
git clone https://github.com/pdovhomilja/nextcrm-app - ImageContainer
- HostedOpen the hosted app
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_URLBETTER_AUTH_SECRETBETTER_AUTH_URLADMIN_EMAILRESEND_API_KEYRESEND_FROM_EMAILSMTP_HOSTSMTP_USERSMTP_PASSWORDMINIO_ENDPOINTMINIO_ACCESS_KEYMINIO_SECRET_KEYMINIO_BUCKETOPENAI_API_KEYFIRECRAWL_API_KEYGOOGLE_IDGOOGLE_SECRETGOOGLE_CALENDAR_CLIENT_IDEMAIL_ENCRYPTION_KEYCRON_SECRETMAILTRAP_API_KEY- Config files
.env.example.env.dockerdocker-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
- github.com/pdovhomilja/nextcrm-app
- MIT license
- Last commit Sep 2, 2026
- 688 stars
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.
| Job | Through the interface | Evidence |
|---|---|---|
| Manage accounts, contacts, leads and opportunities | Reachable | README MCP table: 6 tools each (list, get, search, create, update, delete) |
| Log activities (notes, calls, meetings, tasks) | Reachable | Activities module: 5 tools |
| Manage projects, boards and tasks | Reachable | Projects module: 18 tools |
| Store and link documents | Reachable | Documents module: 8 tools incl. upload, download, link |
| Run email campaigns | Reachable | Campaigns module: 18 tools (CRUD, send, pause, templates, stats) |
| Enrich targets and contacts | Reachable | Enrichment module: 4 tools; needs E2B and model keys |
| Run reports | Reachable | Reports module: list, run |
| Create and send invoices | Not reachable | Invoices 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 client | Not reachable | Email Accounts module exposes list only |
| Manage users, roles and LLM keys | Not reachable | Admin 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_KEYFIRECRAWL_API_KEYE2B_API_KEYANTHROPIC_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
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | README: Next.js 16 app, Docker Compose | 95% |
| executionModel | README: E2B sandboxed Claude agent for enrichment, pgvector embeddings from OpenAI; CRM core deterministic | 90% |
| operability | README MCP Server section: 127 tools across 15 modules, /api/mcp/mcp streamable HTTP, Bearer tokens | 90% |
| effort | README Docker Installation: .env.docker lists every variable; 3-tier key system | 90% |
| editions | README License: MIT; no paid edition | 90% |
| active | GitHub pushedAt 2026-09-02 | – |
| reach | 90% |
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
- github.com/pdovhomilja/nextcrm-app sourcing:smb-ops-crm:community
- demo.nextcrm.io sourcing:smb-ops-crm:community