
Security News
PEP 810 Proposes Explicit Lazy Imports for Python 3.15
An opt-in lazy import keyword aims to speed up Python startups, especially CLIs, without the ecosystem-wide risks that sank PEP 690.
mcp-seatable
Advanced tools
A comprehensive MCP (Model Context Protocol) server that provides full SeaTable database access through 11 powerful tools
A comprehensive MCP (Model Context Protocol) server that provides full SeaTable database access through 11 powerful tools.
Configure your MCP client (Claude, Cursor, or VSCode) to use:
command: npx
args: ["mcp-seatable"]
Set your environment variables:
SEATABLE_SERVER_URL
: Your SeaTable server URLSEATABLE_API_TOKEN
: Your SeaTable API tokenSEATABLE_BASE_UUID
: Your SeaTable base UUIDRestart your MCP client and start using SeaTable tools!## What is this?
This project implements a production-ready MCP server using the @modelcontextprotocol/sdk
that integrates with SeaTable's REST API. It provides a complete toolkit for database operations including CRUD operations, advanced querying, schema management, and raw SQL execution. All tools use Zod validation and return structured JSON responses.
Built with a modern, proven architecture pattern:
handleListTools
/handleCallTool
patternNo installation required! This MCP server can be used directly with npx mcp-seatable
.
Alternatively, you can install globally:
npm install -g mcp-seatable
To use with Claude Desktop, add the server config:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"seatable": {
"command": "npx",
"args": ["mcp-seatable"],
"env": {
"SEATABLE_SERVER_URL": "https://your-seatable-server.com",
"SEATABLE_API_TOKEN": "your-api-token",
"SEATABLE_BASE_UUID": "your-base-uuid"
}
}
}
}
Add to your Cursor settings by opening the command palette (Cmd/Ctrl+Shift+P
) and selecting "Preferences: Open Settings (JSON)":
{
"mcp.servers": {
"seatable": {
"command": "npx",
"args": ["mcp-seatable"],
"env": {
"SEATABLE_SERVER_URL": "https://your-seatable-server.com",
"SEATABLE_API_TOKEN": "your-api-token",
"SEATABLE_BASE_UUID": "your-base-uuid"
}
}
}
}
Install the MCP extension for VSCode, then add to your VSCode settings.json:
{
"mcp.servers": {
"seatable": {
"command": "npx",
"args": ["mcp-seatable"],
"env": {
"SEATABLE_SERVER_URL": "https://your-seatable-server.com",
"SEATABLE_API_TOKEN": "your-api-token",
"SEATABLE_BASE_UUID": "your-base-uuid"
}
}
}
}
All configuration is done through environment variables:
SEATABLE_SERVER_URL
- Your SeaTable server URLSEATABLE_API_TOKEN
- Your SeaTable API tokenSEATABLE_BASE_UUID
- Your SeaTable base UUIDSEATABLE_TABLE_NAME
- Optional default table nameSEATABLE_MOCK
- Set to true
for offline testing with mock dataSEATABLE_ACCESS_TOKEN_EXP
- Token expiry (default: 1h
)SEATABLE_TOKEN_ENDPOINT_PATH
- Custom token endpoint path if needed## Programmatic UsageYou can also use mcp-seatable as a library in your Node.js applications:
npm install mcp-seatable
import { createMcpServer } from 'mcp-seatable'
// Create and start the MCP server
const server = await createMcpServer({
serverUrl: 'https://your-seatable-server.com',
apiToken: 'your-api-token',
baseUuid: 'your-base-uuid',
})
// The server will handle MCP protocol communications
Enable a fast, offline mock:
SEATABLE_MOCK=true npm run dev
The mock implements in-memory tables and rows and returns synthetic metadata. Useful for demos and tests without a live SeaTable.
Our server provides 11 comprehensive tools for complete SeaTable database management:
list_tables
- Get all tables with metadatalist_rows
- Paginated row listing with filtering and sortingget_row
- Retrieve specific row by IDappend_rows
- Add new rows (supports bulk operations)update_rows
- Modify existing rows (supports bulk operations)delete_rows
- Remove rows by ID (supports bulk operations)find_rows
- Client-side filtering with powerful DSL (supports and/or/not, eq, ne, in, gt/gte/lt/lte, contains, starts_with, ends_with, is_null)query_sql
- Execute raw SQL queries (SELECT, INSERT, UPDATE, DELETE) with parameterization
get_schema
- Get complete database structure and metadatamanage_tables
- Create, rename, and delete tablesping_seatable
- Health check with connection status and latency monitoringAll tools include comprehensive input validation with Zod schemas and return structured JSON responses.
// List all tables
{ "tool": "list_tables", "args": {} }
// Get rows with pagination and filtering
{ "tool": "list_rows", "args": { "table": "Tasks", "page_size": 10, "order_by": "_ctime", "direction": "desc" } }
// Add new rows
{ "tool": "append_rows", "args": { "table": "Tasks", "rows": [{ "Title": "New Task", "Status": "Todo" }] } }
// Update existing rows
{ "tool": "update_rows", "args": { "table": "Tasks", "rows": [{ "row_id": "abc123", "row": { "Status": "Done" } }] } }
// Find rows with complex filters
{
"tool": "find_rows",
"args": {
"table": "Tasks",
"filter": {
"and": [
{ "Status": { "eq": "Todo" } },
{ "Priority": { "in": ["High", "Medium"] } },
{ "Title": { "contains": "urgent" } }
]
},
"limit": 20
}
}
// Execute raw SQL queries
{ "tool": "query_sql", "args": { "sql": "SELECT Status, COUNT(*) as count FROM Tasks WHERE Created > ? GROUP BY Status", "parameters": ["2025-01-01"] } }
// Create new table
{ "tool": "manage_tables", "args": { "operation": "create", "table_name": "Projects" } }
// Get complete schema
{ "tool": "get_schema", "args": {} }
// Health check
{ "tool": "ping_seatable", "args": {} }
You can test individual tools using the included test script:
# Test basic operations
node scripts/mcp-call.cjs list_tables '{}'
node scripts/mcp-call.cjs list_rows '{"table": "Tasks", "page_size": 5}'
node scripts/mcp-call.cjs ping_seatable '{}'
# Test advanced queries
node scripts/mcp-call.cjs find_rows '{"table": "Tasks", "filter": {"Status": "Todo"}}'
node scripts/mcp-call.cjs query_sql '{"sql": "SELECT * FROM Tasks LIMIT 3"}'
# Test schema operations
node scripts/mcp-call.cjs get_schema '{}'
node scripts/mcp-call.cjs manage_tables '{"operation": "create", "table_name": "TestTable"}'
.env
values are correct and the API token has access to the baseSEATABLE_SERVER_URL
ping_seatable
tool to verify connection and measure latencySEATABLE_TOKEN_ENDPOINT_PATH
to your deployment's path?
placeholders) to avoid SQL injectionSEATABLE_MOCK=true
for offline development and testingop
, method
, url
, status
, request_id
, and duration_ms
node scripts/mcp-call.cjs <tool_name> '<args_json>'
npm install
.env.example
to .env
and configure your SeaTable settingsnpm run dev
npm run dev
– Start server in watch mode (tsx)npm run build
– Compile TypeScriptnpm run start
– Run compiled servernpm run test
– Run tests (vitest)npm run test:watch
– Watch testsnpm run lint
– Lint codenpm run lint:fix
– Lint and fix issuesnpm run format
– Check formattingnpm run typecheck
– TypeScript type check# Development
npm run dev
# Production build
npm run build
npm run start
# Direct execution
npx tsx src/index.ts
MIT
FAQs
A comprehensive MCP (Model Context Protocol) server that provides full SeaTable database access through 11 powerful tools
We found that mcp-seatable demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
An opt-in lazy import keyword aims to speed up Python startups, especially CLIs, without the ecosystem-wide risks that sank PEP 690.
Security News
Socket CEO Feross Aboukhadijeh discusses the recent npm supply chain attacks on PodRocket, covering novel attack vectors and how developers can protect themselves.
Security News
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.