SeaTable
This MCP server connects AI agents to https://cloud.seatable.io.
Community: Submitted by a user or imported; check the owner before granting accessOnlineAPI key requiredGlobalFreeCan modify data
What it can do
- List Tables: List tables in the SeaTable base
- List Rows: List rows from a table with pagination (defaults: page=1, page_size=100). Use find_rows for filtering/sorting or query_sql for SQL queries.
- Get Row: Get a row by ID from a table
What data it sees
Do you need an account
An API key from the service settings is required
This MCP server connects AI agents to https://cloud.seatable.io. Read, write, search, and link rows, run SQL queries, batch upsert data, and manage file attachments and select options. Generate an API token in your base settings to get started.
For self-hosted SeaTable servers, use the npm package — see https://github.com/seatable/seatable-mcp for setup instructions.
Server tool list (18)
Raw names from tools/list. Only developers need these.
| list_tables | List tables in the SeaTable base |
| list_rows | List rows from a table with pagination (defaults: page=1, page_size=100). Use find_rows for filtering/sorting or query_sql for SQL queries. |
| get_row | Get a row by ID from a table |
| add_row | Add a new row to a table. Link and file/image columns cannot be set here — use link_rows and upload_file instead. |
| append_rows | Batch insert rows. Rejects unknown columns. Link and file/image columns cannot be set here — use link_rows and upload_file instead. |
| update_rows | Batch update rows. Rejects unknown columns. Link and file/image columns cannot be modified here — use link_rows/unlink_rows and upload_file instead. |
| delete_rows | Delete one or more rows from a table by their IDs. |
| find_rows | Find rows using a predicate DSL. Filtering is performed client-side. where format: {"eq":{"field":"Name","value":"foo"}} or shorthand {"Name":"foo"}. Operators: eq, ne, in, gt, gte, lt, lte, contains, starts_with, ends_with, is_null. Combine with {"and":[...]} or {"or":[...]}. Negate with {"not":{...}}. |
| search_rows | Search rows with a filter object |
| upsert_rows | Batch upsert rows by matching on one or more key columns. If a match exists, update it; otherwise insert a new row. Rejects unknown columns. Link and file/image columns cannot be set here — use link_rows/unlink_rows and upload_file instead. |
| link_rows | Create links between rows via the dedicated links endpoint. This is the ONLY way to create links — link columns cannot be written via add_row or update_rows. |
| unlink_rows | Remove links between rows via the dedicated links endpoint. This is the ONLY way to remove links — link columns cannot be modified via update_rows. |
| get_schema | Returns the normalized schema for the base |
| query_sql | Execute raw SQL queries against SeaTable. Supports SELECT, INSERT, UPDATE, DELETE. Use ? placeholders for parameters to prevent SQL injection. |
| list_collaborators | List users who have access to this base. Returns email (internal user ID) and display name. Use the email values when writing to collaborator columns. |
| upload_file | Upload a file or image to a row. Accepts base64-encoded file data and attaches it to the specified file or image column. By default appends to existing files; set replace=true to overwrite. |
| add_select_options | Add new options to a single-select or multi-select column. Use this before writing rows with option values that do not exist yet. |
| ping_seatable | Health check that verifies connectivity and auth to SeaTable |