Labsco
MCP SERVER

NocoDB MCP Server

by andrewlwn77

Drive a NocoDB base end to end from the agent: create tables and columns, read and write records, run filtered queries and aggregations, and push files into NocoDB storage and onto rows.

Relational SQL DatabasesVerified
Summary
It hands the agent schema authority, not just row access — create_table, add_column, delete_column and delete_table sit in the same list as the reads.

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.

What it is

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.

What you get
  • 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.
Requirements

A reachable NocoDB instance, whose address you supply in NOCODB_BASE_URL, and an API token for it in NOCODB_API_TOKEN.

Setup effort

One command plus a key — npx @andrewlwn77/nocodb-mcp, then supply credentials