Skip to main content
Glama
adityaparab

tabella

by adityaparab

Tabella

A tabella was ancient Rome's wax writing tablet โ€” the original real-time, rewritable record.

Tabella is an open-source, AI-native mini-CRM: a flexible data model, a 100k-row table that feels instant, live multi-client sync, and an MCP server that lets AI agents like Claude operate on the data โ€” with agent edits visible in the UI in real time.

Status: ๐Ÿšง Cycle 2 of 7 complete โ€” 100k correlated records behind a real query engine. See docs/PRD.md and the CHANGELOG for where things stand.

Quickstart (local)

pnpm install
docker compose up -d db   # local Postgres 16 on :5433
pnpm migrate              # apply migrations (node-pg-migrate)
pnpm dev                  # boots the API server (apps/server) and web app (apps/web)

Requires Node >= 22, pnpm >= 10, and Docker (for the database).

Repository layout

apps/server   Fastify API + WebSocket hub (Node, TypeScript)
apps/web      React web app (Vite, TanStack Query/Virtual)
apps/mcp      MCP server (stdio) โ€” agents operate via the same REST API
packages/shared  Zod schemas + WS message types shared by all three

AI agents via MCP

Tabella ships an MCP server (apps/mcp, stdio transport) with five tools that are thin wrappers over the same REST API the web app uses: list_objects (schema discovery), query_records (filter/sort/cursor, with total for counting questions), get_record, create_record, update_record. Agent mutations go through the exact same validation and (from Cycle 5) fan out over the same WebSocket as human edits.

Point any MCP host โ€” Claude Desktop, Claude Code, Cursor โ€” at the deployed API:

// claude_desktop_config.json  (~/Library/Application Support/Claude/ on macOS)
{
  "mcpServers": {
    "tabella": {
      "command": "node",
      "args": ["/absolute/path/to/tabella/apps/mcp/dist/index.js"],
      "env": {
        "TABELLA_API_URL": "https://server-production-686b5.up.railway.app"
      }
    }
  }
}

(Requires a one-time git clone + pnpm install && pnpm build for dist/; the absolute node path matters if you use nvm โ€” hosts don't inherit your shell PATH.)

Then ask Claude things like:

  • "How many deals are in Negotiation?" โ†’ list_objects โ†’ query_records โ†’ answers from total

  • "Create a deal at Northwind, stage Proposal, value 40k" โ†’ a real record, validated against the attribute catalog, visible immediately in the web app

License

MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/adityaparab/tabella'

If you have feedback or need assistance with the MCP directory API, please join our Discord server