NocoDB MCP Server

by andrewlwn77

Not rated
GitHub

About

An MCP server for NocoDB, the open-source Airtable alternative. It allows interaction with your NocoDB instance via API.

Details

Author
andrewlwn77
Categories
Database, Other, API, Automation, Project Management

Setup

Install NocoDB MCP Server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/andrewlwn77/nocodb-mcp

Follow the installation instructions in the repository README, then restart your MCP client.

A Model Context Protocol (MCP) server that provides a comprehensive interface to NocoDB - the open source Airtable alternative. This server enables AI agents to interact with NocoDB databases, making it perfect for storing and managing operational data across multiple AI teams.

- Database Operations: List and manage NocoDB bases/projects
- Table Management: Create, list, and delete tables with custom schemas
- Column Management: Add columns to existing tables with full type support
- Record CRUD: Full create, read, update, delete operations on records
- Advanced Queries: Filter, sort, search, and aggregate data
- View Management: Create and use different views (Grid, Gallery, Form, etc.)
- Bulk Operations: Insert multiple records at once
- File Attachments: Upload files locally or from URLs, attach to records

Create a.envfile in your project root:

# Required NOCODB_BASE_URL=http://localhost:8080 NOCODB_API_TOKEN=your_api_token_here # Optional NOCODB_DEFAULT_BASE=your_default_base_id

- Log into your NocoDB instance
- Click on your profile icon
- Select "API Tokens"
- Create a new token with appropriate permissions

Add to your Claude Desktop configuration file:

macOS:~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:%APPDATA%\Claude\claude_desktop_config.json

{ "mcpServers": { "nocodb": { "command": "npx", "args": ["@andrewlwn77/nocodb-mcp"], "env": { "NOCODB_BASE_URL": "http://localhost:8080", "NOCODB_API_TOKEN": "your_api_token_here" } } } }
{ "mcpServers": { "nocodb": { "command": "nocodb-mcp", "env": { "NOCODB_BASE_URL": "http://localhost:8080", "NOCODB_API_TOKEN": "your_api_token_here" } } } }

- list_bases- List all available databases/projects
- get_base_info- Get detailed information about a specific base

- list_tables- List all tables in a base
- get_table_info- Get table schema and column information
- create_table- Create a new table with custom schema
- delete_table- Delete a table
- add_column- Add a new column to an existing table
- delete_column- Delete a column from a table

- insert_record- Insert a single record
- bulk_insert- Insert multiple records at once
- get_record- Retrieve a specific record by ID
- list_records- List records with filtering and pagination
- update_record- Update an existing record
- delete_record- Delete a record
- search_records- Full-text search across records

- query- Advanced filtering with multiple conditions
- aggregate- Perform SUM, COUNT, AVG, MIN, MAX operations
- group_by- Group records by a column

- list_views- List all views for a table
- create_view- Create a new view
- get_view_data- Get records from a specific view

- upload_attachment- Upload a local file to NocoDB storage
- upload_attachment_by_url- Upload files from URLs
- attach_file_to_record- Upload and attach a file to a record
- get_attachment_info- Get attachment information from a record

{ "tool": "create_table", "arguments": { "base_id": "p_abc123", "table_name": "customers", "columns": [ { "title": "Name", "uidt": "SingleLineText", "rqd": true }, { "title": "Email", "uidt": "Email", "unique": true }, { "title": "Revenue", "uidt": "Number", "dt": "decimal" }, { "title": "Status", "uidt": "SingleSelect", "dtxp": "'active','inactive','pending'" } ] } }

Theadd_columntool allows you to dynamically add columns to existing tables. Here are some examples:

{ "tool": "add_column", "arguments": { "table_id": "table_id_here", "title": "Description", "uidt": "LongText" } }
{ "tool": "add_column", "arguments": { "table_id": "table_id_here", "title": "Product Code", "uidt": "SingleLineText", "unique": true, "rqd": true } }
{ "tool": "add_column", "arguments": { "table_id": "table_id_here", "title": "Priority", "uidt": "SingleSelect", "meta": { "options": [ {"title": "Low", "color": "#059669"}, {"title": "Medium", "color": "#d97706"}, {"title": "High", "color": "#dc2626"}, {"title": "Critical", "color": "#7c3aed"} ] } } }
{ "tool": "add_column", "arguments": { "table_id": "table_id_here", "title": "Price", "uidt": "Currency", "meta": { "currency_code": "USD" } } }

For more column type examples, seeColumn Types Examples.

Thedelete_columntool allows you to remove columns from existing tables. You can identify the column to delete by either its ID or name.

{ "tool": "delete_column", "arguments": { "table_id": "table_id_here", "column_id": "column_id_to_delete" } }
{ "tool": "delete_column", "arguments": { "table_id": "table_id_here", "column_name": "ColumnToDelete" } }

Note: The tool will search for columns matching either thecolumn_nameortitlefield, making it flexible for different naming conventions.

{ "tool": "insert_record", "arguments": { "base_id": "p_abc123", "table_name": "customers", "data": { "Name": "Acme Corp", "Email": "contact@acme.com", "Revenue": 50000, "Status": "active" } } }
{ "tool": "query", "arguments": { "base_id": "p_abc123", "table_name": "customers", "where": "(Status,eq,active)~and(Revenue,gt,10000)", "sort": ["-Revenue", "Name"], "fields": ["Name", "Email", "Revenue"], "limit": 10 } }
{ "tool": "aggregate", "arguments": { "base_id": "p_abc123", "table_name": "customers", "column_name": "Revenue", "function": "sum", "where": "(Status,eq,active)" } }
{ "tool": "upload_attachment", "arguments": { "file_path": "/path/to/document.pdf", "storage_path": "documents/2024" } }
{ "tool": "upload_attachment_by_url", "arguments": { "urls": [ "https://example.com/image1.png", "https://example.com/image2.jpg" ], "storage_path": "images" } }
{ "tool": "attach_file_to_record", "arguments": { "base_id": "p_abc123", "table_name": "products", "record_id": "42", "attachment_field": "ProductImages", "file_path": "/path/to/product-photo.jpg" } }
{ "tool": "get_attachment_info", "arguments": { "base_id": "p_abc123", "table_name": "products", "record_id": "42", "attachment_field": "ProductImages" } }

Supported UI data types (uidt) for columns:

- SingleLineText- Short text field
- LongText- Multi-line text
- Number- Integer numeric values
- Decimal- Decimal numbers with precision
- Checkbox- Boolean true/false

- Date- Date without time
- DateTime- Date with time
- Time- Time only
- Duration- Time duration

- Email- Email addresses with validation
- URL- Web links
- PhoneNumber- Phone numbers (note: use "PhoneNumber" not "Phone")

- Currency- Money values (requiresmeta.currency_code)
- Percent- Percentage values
- Rating- Star rating

- SingleSelect- Dropdown with single selection (requiresmeta.options)
- MultiSelect- Multiple selections (requiresmeta.options)

- Attachment- File uploads
- JSON- JSON data storage

- Formula- Calculated fields
- Rollup- Aggregate related records
- Lookup- Lookup values from related records
- QrCode- Generate QR codes (requiresmeta.fk_qr_value_column_id)
- Barcode- Generate barcodes (requiresmeta.fk_barcode_value_column_id)

- LinkToAnotherRecord- Relationships between tables
- Links- Many-to-many relationships

Some column types require additional parameters in themetafield:

- SingleSelect/MultiSelect:meta.optionsarray with{title, color}objects
- Currency:meta.currency_code(e.g., "USD", "EUR")
- QrCode:meta.fk_qr_value_column_id- ID of column to encode
- Barcode:meta.fk_barcode_value_column_id- ID of column to encode, optionalmeta.barcode_format

NocoDB uses a specific syntax for filtering:

- (field,operator,value)- Basic condition
- ~and- AND operator
- ~or- OR operator
- ~not- NOT operator

- eq- Equal to
- neq- Not equal to
- gt- Greater than
- ge- Greater than or equal
- lt- Less than
- le- Less than or equal
- like- Contains (use % for wildcards)
- nlike- Does not contain
- null- Is null
- notnull- Is not null

- (Status,eq,active)- Status equals "active"
- (Revenue,gt,1000)~and(Status,eq,active)- Revenue > 1000 AND Status = "active"
- (Name,like,%Corp%)- Name contains "Corp"

# Clone the repository git clone https://github.com/your-org/nocodb-mcp.git cd nocodb-mcp # Install dependencies npm install # Build the project npm run build # Run in development mode npm run dev

The server provides detailed error messages for common issues:

- Invalid API token
- Base/table not found
- Invalid column types
- Network connectivity issues
- Rate limiting
- Use Views: Create views for commonly accessed data subsets
- Batch Operations: Usebulk_insertfor multiple records
- Field Selection: Specify only needed fields to reduce payload size
- Pagination: Use limit/offset for large datasets
- Caching: Consider caching frequently accessed data on the client side

- Some advanced NocoDB features may not be exposed through this interface
- Rate limits depend on your NocoDB instance configuration

Contributions are welcome! Please feel free to submit a Pull Request.

For issues and feature requests, please create an issue on the GitHub repository.

Official Airtable MCP server and skills for working with bases, records, workflows, and business operations from AI agents.

Read and write access to your Baserow tables.

Provides read and write access to AITable.ai, a collaborative database and spreadsheet platform.

An MCP server for Quickbase, enabling seamless integration with AI assistants like Claude Desktop.

A comprehensive Model Context Protocol (MCP) server for SeaTable that exposes end‑to‑end database capabilities (schema introspection, CRUD, querying, linking, select option management, and file attachment stubs) through 18+ rigorously defined tools.

Perform queries and entity operations in your Fibery workspace.

Hosted MCP server and coordination layer for AI coding agents — live API contracts, database schema, frontend/backend mismatch detection, and shared handoff tickets for Claude Code, Cursor, Codex, and Lovable.

This server enables AI assistants and other MCP clients to interact with Directus instances programmatically.

MCP Server for Kingdee K3Cloud (金蝶云星空) — one of the most widely used ERP systems in China. Connects AI assistants (Claude Desktop, Cursor, Cline, Cherry Studio, etc.) to Kingdee ERP via natural language.

Integrate Odoo with Large Language Models (LLMs) for enhanced business process automation.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.