thelastsaas
An open-source MCP server, API, and CLI for records, files, permissions, and reminders. Single binary, self-hosted.
Install / Use
claude mcp add mkly -- npx -y github:mkly/thelastsaasIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Data & AnalyticsSupported Platforms
Skill content
View source on GitHubThe Last SaaS
The assistant is the interface. The Last SaaS is a server that holds records and files, tracks who is on the team and what each person can see, sends notifications, and logs the changes. It does not provide a user interface on its own; an assistant — Claude, ChatGPT, or any MCP client — connects over MCP and operates it.
https://github.com/user-attachments/assets/3a401024-d3c0-417c-93e2-5d3867048989
Most SaaS is built from the same parts: data, files, users, permissions, and notifications, with a user interface on top. That interface is a large part of what the subscription pays for, and it is work a model does well, so this server keeps the parts underneath. The assistant handles setup from a description of what's needed — gear tracking today, a client base tomorrow — and later changes, like a new field or a different rule, the same way.
What's in the box
- Records. Structured lists of anything from gear to invoices. Organizations own collections with dynamic schemas, and every record is validated against them.
- Files. Receipts and contracts, attached to the records they belong to (S3-compatible backends supported).
- People. Teammates join by invitation and work from the same records, each with their own assistant or none at all.
- Permissions. Rules apply down to the row and the field. The bookkeeper reads every invoice and cannot open payroll.
- Notifications. Due-date reminders and weekly digests, recurring or one-off, delivered by email.
- Audit logs. Changes are recorded with who made them and when, whether it was a person or an assistant.
- Agent access. An MCP endpoint with OAuth, plus a typed CLI that embeds an operator guide for agents.
Single TypeScript monorepo running on Bun. SQLite by default, PostgreSQL supported. The server compiles to one self-contained binary that also serves the CLI binaries for download.
Requirements
- Bun 1.2+
Quick start
bun install
cd packages/server
cp .env.example .env
DATABASE_URL=file:../data/lastsaas.db bunx prisma migrate deploy
bun run prisma:generate
bun run dev
The server listens on http://localhost:8787. Sign up at /auth/signup.
Connect an assistant
Assistants connect through the MCP endpoint at /v1/mcp, authorized
via OAuth.
Claude (claude.ai or the desktop app): Settings → Connectors →
Add custom connector. Paste your server's MCP address
(https://your-server/v1/mcp), click Add, and approve the sign-in when
Claude asks. New chats can use it right away; if you don't see it, enable
it in the tools menu under the message box.
Claude Code:
claude mcp add --transport http lastsaas https://your-server/v1/mcp
Cursor and other MCP clients: add the same address wherever the client takes an MCP server URL, and approve the sign-in.
ChatGPT: in the desktop app, add a custom connector with the same address and approve the sign-in. On the web, custom MCP connectors currently require a Business, Enterprise, or Edu workspace, where an admin adds the connector under workspace settings. A listing in the ChatGPT apps directory is planned.
From there, setup is a conversation:
"Set up gear tracking for the studio. Anyone on the team can check equipment out, but purchase prices stay between us."
The CLI embeds an operator guide for agents (saas skills).
CLI
bun run build:client # produces dist/saas
dist/saas login --server http://localhost:8787
dist/saas orgs create "My Org"
dist/saas collections create tasks --schema '{"title": {"type": "string"}}'
dist/saas records insert tasks --data '{"title": "First task"}'
A running server also serves prebuilt CLI binaries and an installer at
/auth/install. See agent_docs/lastsaas-cli-commands.md
for the full command reference.
Configuration
Everything is configured through environment variables; see agent_docs/config.md. Notable options: SMTP for email notifications, Google OAuth, S3-compatible file storage, and rate limiting.
PostgreSQL
Point DATABASE_URL at a postgres:// URL, apply the schema with
bun run --cwd packages/server prisma:push:postgres, and build with
bun run build:server:postgres. Details in
agent_docs/config.md.
Production build
bun run build:server # dist/saas-server, a single self-contained binary
The binary embeds the CLI builds for all supported platforms. Copy it to a server, set the environment variables, and run it.
Development
bun test # all packages
bun run typecheck
bun run lint
Implementation notes live in agent_docs/.
Related Skills
claude-mem
93.8kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Agent-Reach
80.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
ruflo
72.4k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
headroom
72.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
