The record calls are addressed by table_name rather than by opaque id, which keeps prompts readable, and the aggregate and group_by pair means a count or a sum comes back as a number instead of as rows the model has to add up. The price of that authority is that the destructive calls take the same shape as the safe ones: delete_table needs a table_id and nothing more. add_column is the one place the abstraction drops away and expects NocoDB's own column vocabulary — uidt, dt, dtx, cdf — rather than a plain type name.
A full NocoDB client covering base and table discovery, schema changes, record CRUD, view and query access and attachment handling, all against the instance named in NOCODB_BASE_URL.
- Discovery: list_bases enumerates the bases on the instance, get_base_info and list_tables descend into one, and get_table_info returns a table's schema.
- Schema changes at run time: create_table takes a columns definition and supports SingleSelect with options, PhoneNumber, QrCode and Barcode; add_column exposes NocoDB's own column fields — uidt, dt, dtx, cdf, rqd, pk, ai, un, unique, np, ns and meta; delete_column and delete_table remove them.
- Record writes addressed by table_name: insert_record writes one, bulk_insert writes a records array, update_record changes a row by record_id and delete_record removes it.
- Reads with filtering: list_records and query each take where, sort, fields, limit and offset; search_records takes a free-text query across a table; get_record fetches a single row by record_id; get_view_data reads through a saved view_id.
- Answers without paging rows into context: aggregate applies a function to one column_name under a where clause, and group_by returns counts per distinct value of a column.
- Views: list_views enumerates a table's views and create_view adds one from a title and a type.
- Attachments: upload_attachment sends a local file_path into a storage_path and upload_attachment_by_url pulls the same from urls, attach_file_to_record binds an uploaded file to a row's attachment_field, and get_attachment_info reads back what is attached to a record.
A reachable NocoDB instance, whose address you supply in NOCODB_BASE_URL, and an API token for it in NOCODB_API_TOKEN.
One command plus a key — npx @andrewlwn77/nocodb-mcp, then supply credentials
