{"_id":"@andrewlwn77/nocodb-mcp","_rev":"5-2031623747b275f7bf5b94403c9f8baa","name":"@andrewlwn77/nocodb-mcp","dist-tags":{"latest":"0.2.2"},"versions":{"0.1.0":{"name":"@andrewlwn77/nocodb-mcp","version":"0.1.0","keywords":["mcp","nocodb","database","airtable","model-context-protocol"],"author":{"name":"MCP Servers Contributors"},"license":"MIT","_id":"@andrewlwn77/nocodb-mcp@0.1.0","maintainers":[{"name":"andrewlwn77","email":"andrewlwn@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/servers/tree/main/src/nocodb","bugs":{"url":"https://github.com/modelcontextprotocol/servers/issues"},"dist":{"shasum":"f88174dd5d4599899513ed4d191fb810037c1258","tarball":"https://registry.npmjs.org/@andrewlwn77/nocodb-mcp/-/nocodb-mcp-0.1.0.tgz","fileCount":40,"integrity":"sha512-i+fomA5yfdf4Dxa2iLfej9N/KOsA2C0+s023ZxR872jRHEuz9mtJLmfcLcQKoPSOplxNeLGW0L0N0EglVCuNbw==","signatures":[{"sig":"MEQCIAO6Z3t6zfnX+HYmCSxpIjGti69xiGD46ddXmrhWiIXGAiBKnf/i8qB4mAG1/Na93nafXEjRfX0uEOv4hCIfUU7cdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117132},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"122badd3a128604306dc5f84e7c4077d18d19099","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\""},"_npmUser":{"name":"andrewlwn77","actor":{"name":"andrewlwn77","type":"user","email":"andrewlwn@gmail.com"},"email":"andrewlwn@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/servers.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP server for NocoDB - Open source Airtable alternative","directories":{},"_nodeVersion":"22.13.1","dependencies":{"zod":"^3.22.4","axios":"^1.7.2","dotenv":"^16.4.5","form-data":"^4.0.0","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.3.0","typescript":"^5.5.0","@types/node":"^20.14.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nocodb-mcp_0.1.0_1750877994379_0.48192598468082615","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@andrewlwn77/nocodb-mcp","version":"0.1.1","keywords":["mcp","nocodb","database","airtable","model-context-protocol"],"author":{"name":"MCP Servers Contributors"},"license":"MIT","_id":"@andrewlwn77/nocodb-mcp@0.1.1","maintainers":[{"name":"andrewlwn77","email":"andrewlwn@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/servers/tree/main/src/nocodb","bugs":{"url":"https://github.com/modelcontextprotocol/servers/issues"},"bin":{"nocodb-mcp":"dist/index.js"},"dist":{"shasum":"59f3d42621bc0218f08ed193976030250ef5e518","tarball":"https://registry.npmjs.org/@andrewlwn77/nocodb-mcp/-/nocodb-mcp-0.1.1.tgz","fileCount":41,"integrity":"sha512-pFhOBYt5sDXqITqckEBOcWUDXDwSzmR7wgRVdhYa91F6n5AqQuQXxp/zdyITbfWmmYzL1W5ckMy2/VXNQig3+A==","signatures":[{"sig":"MEUCIQCMQxd0A/pJ+g5vTrWeTj74Y/QHBFeTZ0RUOz/ej7qcVgIgHnf/eAgGeDgEi45c6joISs/ZvjibCkysE6SkixRA+wE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119602},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"122badd3a128604306dc5f84e7c4077d18d19099","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\""},"_npmUser":{"name":"andrewlwn77","actor":{"name":"andrewlwn77","type":"user","email":"andrewlwn@gmail.com"},"email":"andrewlwn@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/servers.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP server for NocoDB - Open source Airtable alternative","directories":{},"_nodeVersion":"22.13.1","dependencies":{"zod":"^3.22.4","axios":"^1.7.2","dotenv":"^16.4.5","form-data":"^4.0.0","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.3.0","typescript":"^5.5.0","@types/node":"^20.14.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nocodb-mcp_0.1.1_1751403688789_0.9971084822307124","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@andrewlwn77/nocodb-mcp","version":"0.2.0","keywords":["mcp","nocodb","database","airtable","model-context-protocol"],"author":{"name":"MCP Servers Contributors"},"license":"MIT","_id":"@andrewlwn77/nocodb-mcp@0.2.0","maintainers":[{"name":"andrewlwn77","email":"andrewlwn@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/servers/tree/main/src/nocodb","bugs":{"url":"https://github.com/modelcontextprotocol/servers/issues"},"bin":{"nocodb-mcp":"dist/index.js"},"dist":{"shasum":"65890e9faefc3007638894c0ef0a657101bf0201","tarball":"https://registry.npmjs.org/@andrewlwn77/nocodb-mcp/-/nocodb-mcp-0.2.0.tgz","fileCount":42,"integrity":"sha512-kpBo62faOL/guhqXX40wAqBXQkdmDeF8qUj5V2/Nsf174u+xprhwNfbaik93RLIFaNKAQa6DeI9gkR7n0OkxdQ==","signatures":[{"sig":"MEUCIHDLaGo57UODOEZPmIpuJMNw765SHntSjF219VSpdYOFAiEArMHULD0d30HP0H9RLVJUf1YYruz3mBl7tly3DD8wzLs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137065},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d29b7525d1920965913c40cd6489162fe7fc728e","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\""},"_npmUser":{"name":"andrewlwn77","actor":{"name":"andrewlwn77","type":"user","email":"andrewlwn@gmail.com"},"email":"andrewlwn@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/servers.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP server for NocoDB - Open source Airtable alternative","directories":{},"_nodeVersion":"22.13.1","dependencies":{"zod":"^3.22.4","axios":"^1.7.2","dotenv":"^16.4.5","form-data":"^4.0.0","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.3.0","typescript":"^5.5.0","@types/node":"^20.14.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nocodb-mcp_0.2.0_1751492003674_0.4708233884166517","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@andrewlwn77/nocodb-mcp","version":"0.2.1","keywords":["mcp","nocodb","database","airtable","model-context-protocol"],"author":{"name":"MCP Servers Contributors"},"license":"MIT","_id":"@andrewlwn77/nocodb-mcp@0.2.1","maintainers":[{"name":"andrewlwn77","email":"andrewlwn@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/servers/tree/main/src/nocodb","bugs":{"url":"https://github.com/modelcontextprotocol/servers/issues"},"bin":{"nocodb-mcp":"dist/index.js"},"dist":{"shasum":"cddecccb58c10c6f7308aa01aab2e8a26464fec2","tarball":"https://registry.npmjs.org/@andrewlwn77/nocodb-mcp/-/nocodb-mcp-0.2.1.tgz","fileCount":42,"integrity":"sha512-hzIJ4AjgxZTmQDiEKtOQof5CyKlJI9C0gxOu7ISIJAXBkDm6aHwPqpUBIPJ6QX3i696W1N9jBy1JvtKpjGDvjQ==","signatures":[{"sig":"MEYCIQDeDEEMhhtqDkolrmy/q6IpO3x4JhxzkVJqcNdT6mvv7AIhANYwe6dOWWt847BK+Nr7Zj6Hra0psD1A4XegqgDv/G5A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142485},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"962b49fb4fb04fa8a0179ff45f71be5a521e2951","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\""},"_npmUser":{"name":"andrewlwn77","actor":{"name":"andrewlwn77","type":"user","email":"andrewlwn@gmail.com"},"email":"andrewlwn@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/servers.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP server for NocoDB - Open source Airtable alternative","directories":{},"_nodeVersion":"22.13.1","dependencies":{"zod":"^3.22.4","axios":"^1.7.2","dotenv":"^16.4.5","form-data":"^4.0.0","@modelcontextprotocol/sdk":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","eslint":"^8.57.0","prettier":"^3.3.0","typescript":"^5.5.0","@types/node":"^20.14.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nocodb-mcp_0.2.1_1751515930597_0.6327434515579855","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@andrewlwn77/nocodb-mcp","version":"0.2.2","description":"MCP server for NocoDB - Open source Airtable alternative","main":"dist/index.js","types":"dist/index.d.ts","bin":{"nocodb-mcp":"dist/index.js"},"scripts":{"build":"tsc","dev":"tsx src/index.ts","start":"node dist/index.js","test":"jest","lint":"eslint src --ext .ts","format":"prettier --write \"src/**/*.ts\""},"keywords":["mcp","nocodb","database","airtable","model-context-protocol"],"author":{"name":"MCP Servers Contributors"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/modelcontextprotocol/servers.git"},"homepage":"https://github.com/modelcontextprotocol/servers/tree/main/src/nocodb","bugs":{"url":"https://github.com/modelcontextprotocol/servers/issues"},"dependencies":{"@modelcontextprotocol/sdk":"^0.6.0","axios":"^1.7.2","dotenv":"^16.4.5","form-data":"^4.0.0","zod":"^3.22.4"},"devDependencies":{"@types/node":"^20.14.0","@typescript-eslint/eslint-plugin":"^8.0.0","@typescript-eslint/parser":"^8.0.0","eslint":"^8.57.0","jest":"^29.7.0","prettier":"^3.3.0","tsx":"^4.7.0","typescript":"^5.5.0"},"engines":{"node":">=18.0.0"},"_id":"@andrewlwn77/nocodb-mcp@0.2.2","gitHead":"962b49fb4fb04fa8a0179ff45f71be5a521e2951","_nodeVersion":"22.13.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-vfZkHUddtbW5pIxo4wD9hm1+wpWJ9EpujSQggt/kq0GOMISdlKamMUd6NIahGv9OxNjeFrZMap0AMcagJJb8mA==","shasum":"38ec9f6643b422175ba256c7b85d1ad97ea3cdab","tarball":"https://registry.npmjs.org/@andrewlwn77/nocodb-mcp/-/nocodb-mcp-0.2.2.tgz","fileCount":42,"unpackedSize":143344,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCxzlV45FbsIxDLs7P0S2PQNFHMsi93uoZw0WTIegeP2gIgRg78ObiNVoT0s+v1cTGmDJTC3cmDKOTLSEaecJovY54="}]},"_npmUser":{"name":"andrewlwn77","email":"andrewlwn@gmail.com","actor":{"name":"andrewlwn77","email":"andrewlwn@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"andrewlwn77","email":"andrewlwn@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nocodb-mcp_0.2.2_1751927228256_0.8360561877946551"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-25T18:59:54.306Z","modified":"2025-07-07T22:27:08.631Z","0.1.0":"2025-06-25T18:59:54.603Z","0.1.1":"2025-07-01T21:01:28.945Z","0.2.0":"2025-07-02T21:33:23.848Z","0.2.1":"2025-07-03T04:12:10.771Z","0.2.2":"2025-07-07T22:27:08.455Z"},"bugs":{"url":"https://github.com/modelcontextprotocol/servers/issues"},"author":{"name":"MCP Servers Contributors"},"license":"MIT","homepage":"https://github.com/modelcontextprotocol/servers/tree/main/src/nocodb","keywords":["mcp","nocodb","database","airtable","model-context-protocol"],"repository":{"type":"git","url":"git+https://github.com/modelcontextprotocol/servers.git"},"description":"MCP server for NocoDB - Open source Airtable alternative","maintainers":[{"name":"andrewlwn77","email":"andrewlwn@gmail.com"}],"readme":"# NocoDB MCP Server\n\nA 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.\n\n## Features\n\n- **Database Operations**: List and manage NocoDB bases/projects\n- **Table Management**: Create, list, and delete tables with custom schemas\n- **Column Management**: Add columns to existing tables with full type support\n- **Record CRUD**: Full create, read, update, delete operations on records\n- **Advanced Queries**: Filter, sort, search, and aggregate data\n- **View Management**: Create and use different views (Grid, Gallery, Form, etc.)\n- **Bulk Operations**: Insert multiple records at once\n- **File Attachments**: Upload files locally or from URLs, attach to records\n\n## Installation\n\n### Via NPM (Global)\n\n```bash\nnpm install -g @andrewlwn77/nocodb-mcp\n```\n\n### Via NPX (No installation)\n\n```bash\nnpx @andrewlwn77/nocodb-mcp\n```\n\n## Configuration\n\n### Environment Variables\n\nCreate a `.env` file in your project root:\n\n```env\n# Required\nNOCODB_BASE_URL=http://localhost:8080\nNOCODB_API_TOKEN=your_api_token_here\n\n# Optional\nNOCODB_DEFAULT_BASE=your_default_base_id\n```\n\n### Getting Your API Token\n\n1. Log into your NocoDB instance\n2. Click on your profile icon\n3. Select \"API Tokens\"\n4. Create a new token with appropriate permissions\n\n### MCP Configuration\n\nAdd to your Claude Desktop configuration file:\n\n**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n**Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"nocodb\": {\n      \"command\": \"npx\",\n      \"args\": [\"@andrewlwn77/nocodb-mcp\"],\n      \"env\": {\n        \"NOCODB_BASE_URL\": \"http://localhost:8080\",\n        \"NOCODB_API_TOKEN\": \"your_api_token_here\"\n      }\n    }\n  }\n}\n```\n\nOr if installed globally:\n\n```json\n{\n  \"mcpServers\": {\n    \"nocodb\": {\n      \"command\": \"nocodb-mcp\",\n      \"env\": {\n        \"NOCODB_BASE_URL\": \"http://localhost:8080\",\n        \"NOCODB_API_TOKEN\": \"your_api_token_here\"\n      }\n    }\n  }\n}\n```\n\n## Available Tools\n\n### Database Operations\n\n- `list_bases` - List all available databases/projects\n- `get_base_info` - Get detailed information about a specific base\n\n### Table Management\n\n- `list_tables` - List all tables in a base\n- `get_table_info` - Get table schema and column information\n- `create_table` - Create a new table with custom schema\n- `delete_table` - Delete a table\n- `add_column` - Add a new column to an existing table\n- `delete_column` - Delete a column from a table\n\n### Record Operations\n\n- `insert_record` - Insert a single record\n- `bulk_insert` - Insert multiple records at once\n- `get_record` - Retrieve a specific record by ID\n- `list_records` - List records with filtering and pagination\n- `update_record` - Update an existing record\n- `delete_record` - Delete a record\n- `search_records` - Full-text search across records\n\n### Query Operations\n\n- `query` - Advanced filtering with multiple conditions\n- `aggregate` - Perform SUM, COUNT, AVG, MIN, MAX operations\n- `group_by` - Group records by a column\n\n### View Management\n\n- `list_views` - List all views for a table\n- `create_view` - Create a new view\n- `get_view_data` - Get records from a specific view\n\n### File Attachments\n\n- `upload_attachment` - Upload a local file to NocoDB storage\n- `upload_attachment_by_url` - Upload files from URLs\n- `attach_file_to_record` - Upload and attach a file to a record\n- `get_attachment_info` - Get attachment information from a record\n\n## Usage Examples\n\n### Creating a Table\n\n```json\n{\n  \"tool\": \"create_table\",\n  \"arguments\": {\n    \"base_id\": \"p_abc123\",\n    \"table_name\": \"customers\",\n    \"columns\": [\n      {\n        \"title\": \"Name\",\n        \"uidt\": \"SingleLineText\",\n        \"rqd\": true\n      },\n      {\n        \"title\": \"Email\",\n        \"uidt\": \"Email\",\n        \"unique\": true\n      },\n      {\n        \"title\": \"Revenue\",\n        \"uidt\": \"Number\",\n        \"dt\": \"decimal\"\n      },\n      {\n        \"title\": \"Status\",\n        \"uidt\": \"SingleSelect\",\n        \"dtxp\": \"'active','inactive','pending'\"\n      }\n    ]\n  }\n}\n```\n\n### Adding Columns to Existing Tables\n\nThe `add_column` tool allows you to dynamically add columns to existing tables. Here are some examples:\n\n#### Basic Column Types\n\n```json\n{\n  \"tool\": \"add_column\",\n  \"arguments\": {\n    \"table_id\": \"table_id_here\",\n    \"title\": \"Description\",\n    \"uidt\": \"LongText\"\n  }\n}\n```\n\n#### Column with Constraints\n\n```json\n{\n  \"tool\": \"add_column\",\n  \"arguments\": {\n    \"table_id\": \"table_id_here\",\n    \"title\": \"Product Code\",\n    \"uidt\": \"SingleLineText\",\n    \"unique\": true,\n    \"rqd\": true\n  }\n}\n```\n\n#### Select Column with Options\n\n```json\n{\n  \"tool\": \"add_column\",\n  \"arguments\": {\n    \"table_id\": \"table_id_here\",\n    \"title\": \"Priority\",\n    \"uidt\": \"SingleSelect\",\n    \"meta\": {\n      \"options\": [\n        {\"title\": \"Low\", \"color\": \"#059669\"},\n        {\"title\": \"Medium\", \"color\": \"#d97706\"},\n        {\"title\": \"High\", \"color\": \"#dc2626\"},\n        {\"title\": \"Critical\", \"color\": \"#7c3aed\"}\n      ]\n    }\n  }\n}\n```\n\n#### Currency Column\n\n```json\n{\n  \"tool\": \"add_column\",\n  \"arguments\": {\n    \"table_id\": \"table_id_here\",\n    \"title\": \"Price\",\n    \"uidt\": \"Currency\",\n    \"meta\": {\n      \"currency_code\": \"USD\"\n    }\n  }\n}\n```\n\nFor more column type examples, see [Column Types Examples](examples/column-types-example.md).\n\n### Deleting Columns\n\nThe `delete_column` tool allows you to remove columns from existing tables. You can identify the column to delete by either its ID or name.\n\n#### Delete by Column ID\n\n```json\n{\n  \"tool\": \"delete_column\",\n  \"arguments\": {\n    \"table_id\": \"table_id_here\",\n    \"column_id\": \"column_id_to_delete\"\n  }\n}\n```\n\n#### Delete by Column Name\n\n```json\n{\n  \"tool\": \"delete_column\",\n  \"arguments\": {\n    \"table_id\": \"table_id_here\",\n    \"column_name\": \"ColumnToDelete\"\n  }\n}\n```\n\nNote: The tool will search for columns matching either the `column_name` or `title` field, making it flexible for different naming conventions.\n\n### Inserting Records\n\n```json\n{\n  \"tool\": \"insert_record\",\n  \"arguments\": {\n    \"base_id\": \"p_abc123\",\n    \"table_name\": \"customers\",\n    \"data\": {\n      \"Name\": \"Acme Corp\",\n      \"Email\": \"contact@acme.com\",\n      \"Revenue\": 50000,\n      \"Status\": \"active\"\n    }\n  }\n}\n```\n\n### Querying with Filters\n\n```json\n{\n  \"tool\": \"query\",\n  \"arguments\": {\n    \"base_id\": \"p_abc123\",\n    \"table_name\": \"customers\",\n    \"where\": \"(Status,eq,active)~and(Revenue,gt,10000)\",\n    \"sort\": [\"-Revenue\", \"Name\"],\n    \"fields\": [\"Name\", \"Email\", \"Revenue\"],\n    \"limit\": 10\n  }\n}\n```\n\n### Aggregating Data\n\n```json\n{\n  \"tool\": \"aggregate\",\n  \"arguments\": {\n    \"base_id\": \"p_abc123\",\n    \"table_name\": \"customers\",\n    \"column_name\": \"Revenue\",\n    \"function\": \"sum\",\n    \"where\": \"(Status,eq,active)\"\n  }\n}\n```\n\n### File Upload Examples\n\n#### Upload a Local File\n\n```json\n{\n  \"tool\": \"upload_attachment\",\n  \"arguments\": {\n    \"file_path\": \"/path/to/document.pdf\",\n    \"storage_path\": \"documents/2024\"\n  }\n}\n```\n\n#### Upload from URL\n\n```json\n{\n  \"tool\": \"upload_attachment_by_url\",\n  \"arguments\": {\n    \"urls\": [\n      \"https://example.com/image1.png\",\n      \"https://example.com/image2.jpg\"\n    ],\n    \"storage_path\": \"images\"\n  }\n}\n```\n\n#### Attach File to Record\n\n```json\n{\n  \"tool\": \"attach_file_to_record\",\n  \"arguments\": {\n    \"base_id\": \"p_abc123\",\n    \"table_name\": \"products\",\n    \"record_id\": \"42\",\n    \"attachment_field\": \"ProductImages\",\n    \"file_path\": \"/path/to/product-photo.jpg\"\n  }\n}\n```\n\n#### Get Attachment Information\n\n```json\n{\n  \"tool\": \"get_attachment_info\",\n  \"arguments\": {\n    \"base_id\": \"p_abc123\",\n    \"table_name\": \"products\",\n    \"record_id\": \"42\",\n    \"attachment_field\": \"ProductImages\"\n  }\n}\n```\n\n## NocoDB Field Types\n\nSupported UI data types (uidt) for columns:\n\n### Basic Types\n- `SingleLineText` - Short text field\n- `LongText` - Multi-line text\n- `Number` - Integer numeric values\n- `Decimal` - Decimal numbers with precision\n- `Checkbox` - Boolean true/false\n\n### Date & Time\n- `Date` - Date without time\n- `DateTime` - Date with time\n- `Time` - Time only\n- `Duration` - Time duration\n\n### Specialized Text\n- `Email` - Email addresses with validation\n- `URL` - Web links\n- `PhoneNumber` - Phone numbers (note: use \"PhoneNumber\" not \"Phone\")\n\n### Numeric Types\n- `Currency` - Money values (requires `meta.currency_code`)\n- `Percent` - Percentage values\n- `Rating` - Star rating\n\n### Selection Types\n- `SingleSelect` - Dropdown with single selection (requires `meta.options`)\n- `MultiSelect` - Multiple selections (requires `meta.options`)\n\n### Advanced Types\n- `Attachment` - File uploads\n- `JSON` - JSON data storage\n\n### Virtual/Computed Columns\n- `Formula` - Calculated fields\n- `Rollup` - Aggregate related records\n- `Lookup` - Lookup values from related records\n- `QrCode` - Generate QR codes (requires `meta.fk_qr_value_column_id`)\n- `Barcode` - Generate barcodes (requires `meta.fk_barcode_value_column_id`)\n\n### Relational\n- `LinkToAnotherRecord` - Relationships between tables\n- `Links` - Many-to-many relationships\n\n### Special Parameters for Column Types\n\nSome column types require additional parameters in the `meta` field:\n\n- **SingleSelect/MultiSelect**: `meta.options` array with `{title, color}` objects\n- **Currency**: `meta.currency_code` (e.g., \"USD\", \"EUR\")\n- **QrCode**: `meta.fk_qr_value_column_id` - ID of column to encode\n- **Barcode**: `meta.fk_barcode_value_column_id` - ID of column to encode, optional `meta.barcode_format`\n\n## Filter Syntax\n\nNocoDB uses a specific syntax for filtering:\n\n- `(field,operator,value)` - Basic condition\n- `~and` - AND operator\n- `~or` - OR operator\n- `~not` - NOT operator\n\n### Operators\n\n- `eq` - Equal to\n- `neq` - Not equal to\n- `gt` - Greater than\n- `ge` - Greater than or equal\n- `lt` - Less than\n- `le` - Less than or equal\n- `like` - Contains (use % for wildcards)\n- `nlike` - Does not contain\n- `null` - Is null\n- `notnull` - Is not null\n\n### Examples\n\n- `(Status,eq,active)` - Status equals \"active\"\n- `(Revenue,gt,1000)~and(Status,eq,active)` - Revenue > 1000 AND Status = \"active\"\n- `(Name,like,%Corp%)` - Name contains \"Corp\"\n\n## Development\n\n### Building from Source\n\n```bash\n# Clone the repository\ngit clone https://github.com/your-org/nocodb-mcp.git\ncd nocodb-mcp\n\n# Install dependencies\nnpm install\n\n# Build the project\nnpm run build\n\n# Run in development mode\nnpm run dev\n```\n\n### Running Tests\n\n```bash\nnpm test\n```\n\n## Error Handling\n\nThe server provides detailed error messages for common issues:\n\n- Invalid API token\n- Base/table not found\n- Invalid column types\n- Network connectivity issues\n- Rate limiting\n\n## Best Practices\n\n1. **Use Views**: Create views for commonly accessed data subsets\n2. **Batch Operations**: Use `bulk_insert` for multiple records\n3. **Field Selection**: Specify only needed fields to reduce payload size\n4. **Pagination**: Use limit/offset for large datasets\n5. **Caching**: Consider caching frequently accessed data on the client side\n\n## Limitations\n\n- Some advanced NocoDB features may not be exposed through this interface\n- Rate limits depend on your NocoDB instance configuration\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nMIT\n\n## Support\n\nFor issues and feature requests, please create an issue on the GitHub repository.","readmeFilename":"README.md"}