Run without installing with uvx:
uvx mathesar-cli --helpInstall as an isolated CLI with uv tool:
uv tool install mathesar-cliOr with pipx:
pipx install mathesar-cliThen log in and start using it:
mathesar-cli --url http://localhost login --username USER
mathesar-cli db listFor the optional MCP server, install the MCP extra from a checkout or package source that supports extras:
uv tool install 'mathesar-cli[mcp]'
mathesar-mcpmathesar-cli is a local CLI and optional MCP server for Mathesar's JSON-RPC API.
It provides three access layers:
- Friendly CLI groups for common database work:
db,schema,table,column, andrecord. - Universal CLI access for every exposed Mathesar RPC method:
api,call, andrpc. - Optional MCP tools for agent runtimes that support structured tool calls.
- Python 3.10+
- A reachable Mathesar instance
uv,pipx, orpipfor installation
Set up the project from a checkout:
uv sync --extra dev --extra mcp --extra publishRun tests:
uv run --extra dev pytestRun the CLI locally:
uv run mathesar-cli --helpBuild distribution artifacts:
uv buildmathesar-cli --url http://localhost login --username USEROmit --password for an interactive prompt. For non-interactive use:
mathesar-cli --url http://localhost login --username USER --password PASSThe CLI saves only the Mathesar URL and session cookies:
~/.config/mathesar-cli/config.json
It does not save the username or password. Override the config location with MATHESAR_CLI_CONFIG_DIR.
mathesar-cli methods list
mathesar-cli methods help records.list
mathesar-cli methods signature records.listList configured databases:
mathesar-cli db list
mathesar-cli db get -d 1Manage schemas:
mathesar-cli schema list -d 1
mathesar-cli schema create -d 1 reporting
mathesar-cli schema delete -d 1 17505Manage tables:
mathesar-cli table list -d 1 -s 2200
mathesar-cli table get -d 1 -t 17500 --metadata
mathesar-cli table create -d 1 -s 2200 contacts --columns '[{"name":"name","type":"text"}]'
mathesar-cli table patch -d 1 -t 17500 --name contacts_archive --description "Archived contacts"
mathesar-cli table delete -d 1 -t 17507Manage columns:
mathesar-cli column list -d 1 -t 17500
mathesar-cli column add -d 1 -t 17500 --columns '[{"name":"email","type":"text"}]'
mathesar-cli column patch -d 1 -t 17500 --columns '[{"id":2,"name":"full_name"}]'
mathesar-cli column delete -d 1 -t 17500 3Manage records:
mathesar-cli record list -d 1 -t 17500 --limit 20
mathesar-cli record get -d 1 -t 17500 1
mathesar-cli record add -d 1 -t 17500 --data '{"2":"Alice"}'
mathesar-cli record patch -d 1 -t 17500 1 --data '{"2":"Bob"}'
mathesar-cli record delete -d 1 -t 17500 1Mathesar records are keyed by column attnum, not column name. Use mathesar-cli column list -d DATABASE_ID -t TABLE_OID to find attnums.
Use api for readable path-style access to every RPC method:
mathesar-cli api records list -p database_id=1 -p table_oid=22031 -p limit=20
mathesar-cli api databases configured list
mathesar-cli api schemas privileges list-direct -p database_id=1 -p schema_oid=2200Hyphens in path segments become underscores, so list-direct calls list_direct.
Use call when you prefer method names:
mathesar-cli call records.list -p database_id=1 -p table_oid=22031
mathesar-cli call records list --params-json '{"database_id": 1, "table_oid": 22031}'Use rpc for exact JSON-RPC terminology:
mathesar-cli rpc users.listValues passed with -p are parsed as JSON when possible, so numbers, booleans, arrays, objects, and null work naturally.
export MATHESAR_URL=http://localhost
export MATHESAR_SESSIONID=...
export MATHESAR_CSRFTOKEN=...Install MCP support:
uv sync --extra mcpStart the server over stdio:
mathesar-mcpUseful MCP tools include:
mathesar_loginmathesar_list_methodsmathesar_method_helpmathesar_method_signaturemathesar_callmathesar_list_databasesmathesar_list_schemasmathesar_create_schemamathesar_delete_schemasmathesar_list_tablesmathesar_create_tablemathesar_patch_tablemathesar_delete_tablemathesar_list_columnsmathesar_add_columnsmathesar_patch_columnsmathesar_delete_columnsmathesar_list_recordsmathesar_add_recordmathesar_patch_recordmathesar_delete_records
Use MCP tools when an agent runtime supports MCP. Use CLI commands for manual shell work, transcripts, and environments without MCP.
Build:
uv buildValidate the distribution metadata with Twine:
uv run --extra publish twine check dist/*Publish to TestPyPI:
TWINE_USERNAME="__token__" TWINE_PASSWORD="$TEST_PYPI_TOKEN" \
uv run --extra publish twine upload --repository-url https://test.pypi.org/legacy/ dist/*Publish to PyPI:
TWINE_USERNAME="__token__" TWINE_PASSWORD="$PYPI_TOKEN" \
uv run --extra publish twine upload dist/*Before publishing, confirm the package name is available and set final project URLs in pyproject.toml.
GNU General Public License v3.0 or later. See LICENSE.
Mathesar's upstream JSON-RPC API is not guaranteed to be stable yet, so method names, parameters, signatures, and response shapes may break between Mathesar releases. Run mathesar-cli methods list, mathesar-cli methods help METHOD, and mathesar-cli methods signature METHOD against your target instance when building automation.
This client was tested against a local Mathesar instance on 2026-05-28 reporting:
last_confirmed_sql_version:0.10.1system.listMethods: 106 exposed RPC methods
See docs/METHODS.md for the method list observed from that instance during development.