
Seatable
Connects Claude to SeaTable bases with read, write, search, and query tools. Handles rows and data operations but intentionally skips schema management (no creating tables or columns), keeping the surface area safe for agent use. SeaTable Cloud users get a hosted endpoint at mcp.seatable.com with no local install. Self-hosted instances run via npx with stdio transport. Also ships managed mode for multi-tenant deployments with OAuth 2.0 support and per-token rate limiting. All writes validate against table schemas and strip read-only columns like formulas and auto-numbers. Responses include system fields like _id and timestamps. Reach for this when you need Claude to query, filter, and manipulate structured data in SeaTable without giving it the keys to alter your database structure.
- GitHub stars
- 10
- tools
- 18
- transport
- STDIO
- env vars
- 2
- last updated
- Nov 11, 2026
Tools
18 toolsPublic tool metadata for what this MCP can expose to an agent.
list_tablesList tables in the SeaTable base
List tables in the SeaTable base
No parameter schema in public metadata yet.
list_rowsList rows from a table with pagination (defaults: page=1, page_size=100). Use find_rows for filtering/sorting or query_sql for SQL queries.4 params
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.
pageintegerpage_sizeintegertablestringviewstringget_rowGet a row by ID from a table2 params
Get a row by ID from a table
row_idstringtablestringadd_rowAdd a new row to a table. Link and file/image columns cannot be set here — use link_rows and upload_file instead.2 params
Add a new row to a table. Link and file/image columns cannot be set here — use link_rows and upload_file instead.
rowobjecttablestringappend_rowsBatch insert rows. Rejects unknown columns. Link and file/image columns cannot be set here — use link_rows and upload_file instead.2 params
Batch insert rows. Rejects unknown columns. Link and file/image columns cannot be set here — use link_rows and upload_file instead.
rowsarraytablestringupdate_rowsBatch update rows. Rejects unknown columns. Link and file/image columns cannot be modified here — use link_rows/unlink_rows and upload_file instead.2 params
Batch update rows. Rejects unknown columns. Link and file/image columns cannot be modified here — use link_rows/unlink_rows and upload_file instead.
tablestringupdatesarraydelete_rowsDelete one or more rows from a table by their IDs.2 params
Delete one or more rows from a table by their IDs.
row_idsarraytablestringfind_rowsFind 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":[...]}....6 params
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":[...]}....
directionstringasc · descdefault: ascorder_bystringpageintegerpage_sizeintegertablestringwherevaluesearch_rowsSearch rows with a filter object2 params
Search rows with a filter object
queryobjecttablestringupsert_rowsBatch 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.3 params
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.
key_columnsarrayrowsarraytablestringlink_rowsCreate 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.3 params
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.
link_columnstringpairsarraytablestringunlink_rowsRemove links between rows via the dedicated links endpoint. This is the ONLY way to remove links — link columns cannot be modified via update_rows.3 params
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.
link_columnstringpairsarraytablestringget_schemaReturns the normalized schema for the base
Returns the normalized schema for the base
No parameter schema in public metadata yet.
query_sqlExecute raw SQL queries against SeaTable. Supports SELECT, INSERT, UPDATE, DELETE. Use ? placeholders for parameters to prevent SQL injection.2 params
Execute raw SQL queries against SeaTable. Supports SELECT, INSERT, UPDATE, DELETE. Use ? placeholders for parameters to prevent SQL injection.
parametersarraysqlstringlist_collaboratorsList users who have access to this base. Returns email (internal user ID) and display name. Use the email values when writing to collaborator columns.
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.
No parameter schema in public metadata yet.
upload_fileUpload 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.6 params
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.
columnstringfile_datastringfile_namestringreplacebooleanrow_idstringtablestringadd_select_optionsAdd new options to a single-select or multi-select column. Use this before writing rows with option values that do not exist yet.3 params
Add new options to a single-select or multi-select column. Use this before writing rows with option values that do not exist yet.
columnstringoptionsarraytablestringping_seatableHealth check that verifies connectivity and auth to SeaTable
Health check that verifies connectivity and auth to SeaTable
No parameter schema in public metadata yet.
Sponsors
Configuration
SEATABLE_SERVER_URLURL of your SeaTable server (e.g. https://cloud.seatable.io)
SEATABLE_API_TOKENAPI token for a single SeaTable base
Readme
SeaTable MCP
The official Model Context Protocol (MCP) server for SeaTable, built and maintained by SeaTable GmbH. It lets AI agents interact with data in your bases — reading, writing, searching, linking, and querying rows through a focused set of tools. The server intentionally focuses on data operations, not schema management (creating/deleting tables or columns), keeping the tool set lean and safe for autonomous agent use.
Quick Start
The fastest way to get started depends on your setup:
- SeaTable Cloud — Use the hosted MCP server at
mcp.seatable.com, no installation needed - Self-hosted SeaTable — Run the MCP server locally via
npxin your IDE
SeaTable Cloud (hosted MCP server)
If you use SeaTable Cloud, there is a hosted MCP server ready to use — no installation required. Configure your MCP client with the Streamable HTTP endpoint:
Claude Desktop — add to claude_desktop_config.json:
Details
- Repository
- github.com/seatable/seatable-mcp
- Categories
- Search & Web Crawling, Data & Analytics
- Package
@seatable/mcp-seatable- Transport
- STDIO
- Registry
- MCP registry, active