MCP bridge to the Tabellum database client: schema, reads, SQL drafts; writes approved in the app.
Let your AI assistant work with your databases through Tabellum, a desktop database client for PostgreSQL, MySQL/MariaDB, SQL Server and BigQuery. The MCP server is hosted by the running app on your machine; this package is a small stdio shim that forwards to it. Queries the assistant writes appear live in the editor, and nothing that changes data runs without your click in the app.
tabellum@dudko.dev/tabellum-mcp — Node.js 24+~/.tabellum/mcp.json.With the Tabellum app open, the assistant can:
| Tool | What it does |
|---|---|
list_connections | Connection names, drivers, read-only flags. |
describe_schema | Object names per schema. |
describe_object | Columns, indexes, constraints, DDL. |
list_users | Database users and roles. |
sample_rows | Up to N rows — only where the connection allows sharing rows. |
run_read | Execute a statement the engine classifies as a read. |
propose_write | Submit a write/DDL for your approval in the app (10-minute timeout). |
explain | EXPLAIN in the connection's dialect. |
draft_to_editor | Stream SQL live into an editor tab. |
open_editor_tab | Open a tab bound to a connection. |
/plugin marketplace add dudko-dev/tabellum-mcp-setup
/plugin install tabellum@tabellum
/reload-plugins
Start the Tabellum app first (macOS, Windows or Linux). The shim reads the
app's local port and token from ~/.tabellum/mcp.json, written while the app
runs; with the app closed every call answers "Tabellum is not running".
Prefer not to use the marketplace? Add the server directly:
claude mcp add tabellum -- npx -y @dudko.dev/tabellum-mcp
claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"tabellum": {
"command": "npx",
"args": [
"-y",
"@dudko.dev/tabellum-mcp"
]
}
}
}
~/.cursor/mcp.json or .cursor/mcp.json:
{
"mcpServers": {
"tabellum": {
"command": "npx",
"args": [
"-y",
"@dudko.dev/tabellum-mcp"
]
}
}
}
{
"servers": {
"tabellum": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@dudko.dev/tabellum-mcp"
]
}
}
}
propose_write and
waits for your click. A label claimed by the model never overrides it.127.0.0.1 with a per-install bearer
token (Settings → Agents shows it and can regenerate it).sample_rows returns rows only where
you enabled sharing for that connection.~/.tabellum/mcp.json.declined: timeout.Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @dudko.dev/tabellum-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"dev-dudko-tabellum": {
"command": "npx",
"args": [
"-y",
"@dudko.dev/tabellum-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceTabellum works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.