LabscoMCP early access ↗
andrewlwn77MCP SERVER

NocoDB MCP Server

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.

by andrewlwn77 ↗Relational SQL DatabasesCommunity

LABSCO 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