Busabase

Self-hosted shared workspace of tables, docs and skills that agents read and change through reviewed proposals

Official · busabase TypeScript Local · Streamable HTTP DatabasesKnowledge and memoryProductivity

63 popularity score ★ 724 ↓ 363/wk

Connect your client

Local (once it is running)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add --transport http busabase http://localhost:15419/api/mcp
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "busabase": {
      "url": "http://localhost:15419/api/mcp"
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "busabase": {
      "type": "http",
      "url": "http://localhost:15419/api/mcp"
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.busabase]
url = "http://localhost:15419/api/mcp"
Gemini CLITerminal
gemini mcp add --scope user --transport http busabase http://localhost:15419/api/mcp

Settings 3

BUSABASE_DATA_DIR Optional: Folder for the embedded database and files; defaults to ~/.busabase/data.
PG_DATABASE_URL Optional: Use an external Postgres database instead of embedded PGlite.
STORAGE_URL Optional: Use S3-compatible storage instead of local file storage.

What it does

Busabase is a local-first workspace that several coding agents and people share. It holds Bases (typed tables with fields, views and records), Docs, Files, Drives, Skills, AirApps (small apps that run on workspace data) and other node types in one tree. You start the server on your own machine and agents reach it over MCP at `/api/mcp`, over a REST API, or through the `busabase-cli` client.

The point is that agent writes are not applied blindly. Tools such as `record_change_request`, `node_create` or `base_field_change_request` file a Change Request with a message, a field-level diff and an author; the permission level of the credential decides whether it merges at once or waits in an Inbox for a person. Read tools cover listing nodes and Bases, paging records, exact-field lookups, pattern search (`grep`) and relevance search (`search`), and reading files inside Skills and Drives. A playbook catalog (`playbooks_search`, `playbooks_get`) lets an agent look up a stored SKILL.md or prompt before it acts.

The MCP tool catalog is not a hand-written list: in v0.95.1 it is generated from the server's whole REST contract, with about 60 read-only GET tools alone, plus 19 task-level tools and a `busabase_guide` tool; endpoint tools that a task tool replaces, the dump/export session tools and `guides_list`/`guides_read` are withheld (apps/busabase/src/app/api/mcp/handler.ts and packages/busabase-contract/src/tasks/index.ts at v0.95.1). Tool annotations mark DELETE endpoints and `change_requests_close`, `webhooks_test_fire`, `forms_submit` and `onboarding_complete_bootstrap` as destructive.

By default it runs with an embedded PGlite database and local file storage under `~/.busabase/data/`, and needs no account. The same engine runs Busabase Cloud, a paid hosted service reached through a separate plugin.

What it needs

Node.js with npx to run `npx busabase server` (or Docker for the busabase/busabase image, or the Desktop app for macOS, Windows or Linux). The server must be running before a client connects; it listens on http://localhost:15419 and serves MCP at `/api/mcp`. An MCP client that can connect to an HTTP endpoint. Optional: an external Postgres database or S3-compatible storage.

Limits

There is no stdio command: the MCP endpoint lives inside the running web server, so a client connects by URL. Only one process can open the same embedded PGlite database at a time. `record_query` returns at most 100 records per call and pages with a cursor. Archiving through `node_archive` or `record_change_request` delete is reversible, but `nodes_purge` permanently removes an already-archived node. The catalog is large (well over 60 tools), which some clients that cap or truncate tool lists handle poorly; the server lists `auth_verify`, `playbooks_search` and `playbooks_get` first for that reason. The open-source server holds a single workspace.

Who it suits

Suits a person or team running several coding agents (Claude Code, Codex, Cursor, Gemini CLI) who want them to share structured records, docs and skills on their own machine, with a human able to review what agents change. It writes, so it fits when you want an audit trail and review queue rather than direct edits. Pick something lighter if you only need an assistant to remember a few notes, since this is a whole web app with its own database. For a workspace hosted on Busabase Cloud, use the Busabase Claude Code plugin from busabase/skills, which connects to https://busabase.com/api/mcp with browser OAuth instead of a local server.

Tools 36

playbooks_search
Find a stored skill or prompt that matches the task
playbooks_get
Read one playbook found by search
busabase_guide
Read a built-in guide on workspace or AirApp conventions
nodes_list
List folders, Bases, Docs, Skills and other nodes
bases_list
List the tables in the workspace
bases_get
Read one table's fields and settings
record_query
Page through records of a table, up to 100 per call
record_find_by_field
Find records where one named field matches a text value
grep
Pattern search over nodes, records, files and prompts
search
Relevance search across the workspace
nodes_read_lines
Read chosen lines of a document
node_list_files_trees
List the file trees of Skill, Drive or AirApp nodes
node_get_file_tree
Read one node's file tree
node_files_list
List files inside a Skill, Drive or AirApp
node_file_read
Read one file from such a node
node_files_change_request
Propose file changes inside a Skill, Drive or AirApp
bases_create_change_request
Propose one new record
bases_create_bulk_change_request
Propose many new records as one review
record_change_request
Propose updating, deleting or restoring a record
record_bulk_update_change_request
Propose partial updates to many records at once
base_field_change_request
Propose a table schema change
view_change_request
Propose creating or changing a table view
node_create
Propose one new node of any type with its content
nodes_create_change_request
Propose a whole subtree of nodes in one review
node_archive
Move a node to Trash, reversibly
nodes_purge
Permanently delete an already-archived node
list_archived
List archived nodes, tables, fields, views or records
change_request_query
List pending and past change requests
change_requests_get
Read one change request
change_request_review
Approve or request changes on a change request
change_request_merge
Merge approved change requests
change_requests_close
Close a change request
node_permission
List, grant or revoke access to a node
node_share
Read, turn on or revoke a node's public share link
forms_create
Set up a form on an existing node
forms_submit
Submit a form entry

Similar servers