
Research
/Security News
10 npm Typosquatted Packages Deploy Multi-Stage Credential Harvester
Socket researchers found 10 typosquatted npm packages that auto-run on install, show fake CAPTCHAs, fingerprint by IP, and deploy a credential stealer.
@aspereo/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 dat```javascript // Connect to your deployed Worker instance const mcpClient = new MCPClient('https://your-worker-name.your-account.workers.dev/mcp');se access through 18+ powerful tools. Deploy anywhere: traditional CLI, local SSE server, or scalable Cloudflare Workers.
NOTE: As of v1.0.3 the Cloudflare Worker deployment exposes all tools without authentication. Do NOT deploy to a public URL containing sensitive data until OAuth + scoped permissions (planned) are enabled. You can mitigate risk by keeping the Worker URL private or restricting via Cloudflare Access.
Deploy your own scalable MCP server on Cloudflare Workers with session persistence and dual transport support:
# Clone and deploy
git clone https://github.com/brianmoney/mcp-seatable
cd mcp-seatable
npm install
npx wrangler deploy
# After deployment, use your worker URL
npx mcp-remote https://your-worker-name.your-account.workers.dev/sse
Features:
/sse) and Streamable HTTP (/mcp) transportsRun a local HTTP server with SSE transport for network-accessible MCP:
# Install and run locally
npm install -g @aspereo/mcp-seatable
PORT=3001 MCP_SEATABLE_TRANSPORT=sse mcp-seatable
# Or with npx
PORT=3001 npx -y @aspereo/mcp-seatable --sse
# Test endpoints
curl http://localhost:3001/health
curl -H "Accept: text/event-stream" http://localhost:3001/mcp
Features:
Direct integration with MCP clients like Claude Desktop, Cursor, and VS Code:
{
"mcpServers": {
"seatable": {
"command": "npx",
"args": ["-y", "@aspereo/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 claude_desktop_config.json:
{
"mcpServers": {
"seatable": {
"command": "npx",
"args": ["-y", "@aspereo/mcp-seatable@1.0.3"],
"env": {
"SEATABLE_SERVER_URL": "https://cloud.seatable.io",
"SEATABLE_API_TOKEN": "your-api-token",
"SEATABLE_BASE_UUID": "your-base-uuid"
}
}
}
}
// Connect to your deployed Worker instance
const mcpClient = new MCPClient('https://your-worker-name.your-account.workers.dev/mcp')
await mcpClient.initialize()
const tables = await mcpClient.callTool('list_tables', {})
# Terminal 1: Start server
PORT=3001 npx -y @aspereo/mcp-seatable --sse
# Terminal 2: Test with MCP Inspector
npx @modelcontextprotocol/inspector@latest
# Connect to: http://localhost:3001/mcp
All deployment methods need these environment variables:
SEATABLE_SERVER_URL - Your SeaTable server (e.g., https://cloud.seatable.io)SEATABLE_API_TOKEN - Your SeaTable API tokenSEATABLE_BASE_UUID - Your SeaTable base UUIDOptional:
SEATABLE_TABLE_NAME - Default table nameSEATABLE_MOCK=true - Enable mock mode for testing| Issue | Solution |
|---|---|
command not found: npx | Install Node.js 18+ |
Invalid API token | Check SEATABLE_API_TOKEN in environment |
Base not found | Verify SEATABLE_BASE_UUID is correct |
Connection timeout | Check SEATABLE_SERVER_URL and network access |
Permission denied | Ensure API token has required base permissions |
# Test basic connectivity
node scripts/test-client.mjs
# Test specific tool
node scripts/mcp-call.cjs list_tables
# Test with mock data
SEATABLE_MOCK=true node scripts/test-client.mjs
Enable verbose logging:
# For CLI mode
DEBUG=mcp-seatable:* npx -y @aspereo/mcp-seatable
# For SSE mode
DEBUG=mcp-seatable:* PORT=3001 npx -y @aspereo/mcp-seatable --sse
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 -y @aspereo/mcp-seatable.
Alternatively, you can install globally:
npm install -g @aspereo/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": ["-y", "@aspereo/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": ["-y", "@aspereo/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": ["-y", "@aspereo/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 neededYou can also use mcp-seatable as a library in your Node.js applications:
npm install @aspereo/mcp-seatable
import { createMcpServer } from '@aspereo/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.
| Feature | Cloudflare Worker | Local SSE Server | Traditional CLI |
|---|---|---|---|
| Scalability | β Auto-scaling, global | π Single instance | π Per-client process |
| Session Management | β Durable Objects (persistent) | β οΈ In-memory (may timeout) | β Direct stdio |
| Network Access | β HTTPS endpoints | β HTTP endpoints | β Local only |
| Cold Starts | β Eliminated with Durable Objects | β Always warm | β Process startup |
| Transport Support | β Both SSE + Streamable HTTP | β SSE only | β stdio only |
| Use Cases | Production, multi-user, web apps | Development, testing, demos | IDE integration, personal use |
SSE Transport (Recommended for compatibility):
# Connection flow
GET /sse # Establish SSE connection
POST /sse/message?sessionId=xxx # Send MCP messages
Streamable HTTP Transport (Modern, single-endpoint):
# All communication through one endpoint
POST /mcp # Initialize + all subsequent messages
# Session managed via Mcp-Session-Id headers
GET /mcp # SSE connection (different path!)
POST /messages?sessionId=xxx # Message handling
GET /health # Health probe
# Direct stdin/stdout communication
node dist/index.js # Starts MCP server on stdio
./bin/seatable-mcp.cjs # Binary wrapper
# Local development
npm run dev # TypeScript watch mode
PORT=3001 npm start -- --sse # Local SSE server
npm run cf:dev # Local Worker with Wrangler
# Deployment
npx wrangler deploy # Deploy to Cloudflare Workers
npm run cf:secrets:sync # Sync environment to Worker
# Testing
./scripts/test-worker.sh # Test deployed Worker
node scripts/test-client.mjs # Interactive testing
To avoid unexpected changes when new versions are released, pin the package version in your MCP client configuration. Replace 1.0.2 with the version you want to lock to.
{
"mcpServers": {
"seatable": {
"command": "npx",
"args": ["-y", "@aspereo/mcp-seatable@1.0.3"],
"env": {
"SEATABLE_SERVER_URL": "https://your-seatable-server.com",
"SEATABLE_API_TOKEN": "your-api-token",
"SEATABLE_BASE_UUID": "your-base-uuid"
}
}
}
}
{
"mcp.servers": {
"seatable": {
"command": "npx",
"args": ["-y", "@aspereo/mcp-seatable@1.0.3"],
"env": {
"SEATABLE_SERVER_URL": "https://your-seatable-server.com",
"SEATABLE_API_TOKEN": "your-api-token",
"SEATABLE_BASE_UUID": "your-base-uuid"
}
}
}
}
{
"mcp.servers": {
"seatable": {
"command": "npx",
"args": ["-y", "@aspereo/mcp-seatable@1.0.3"],
"env": {
"SEATABLE_SERVER_URL": "https://your-seatable-server.com",
"SEATABLE_API_TOKEN": "your-api-token",
"SEATABLE_BASE_UUID": "your-base-uuid"
}
}
}
}
Our server provides 18+ comprehensive tools for complete SeaTable database management:
ping_seatable - Health check with connection status and latency monitoringlist_tables - Get all tables with metadataget_schema - Get complete database structure and metadatalist_rows - Paginated row listing with filtering and sortingfind_rows - Advanced client-side filtering with powerful DSLsearch_rows - Full-text search across table dataget_row - Retrieve specific row by IDadd_row - Add single new rowappend_rows - Add multiple rows (bulk operations)update_row - Update single rowupsert_rows - Insert or update rows (bulk operations)delete_row - Remove single row by IDlink_rows - Create relationships between rowsunlink_rows - Remove relationships between rowsmanage_tables - Create, rename, and delete tablesmanage_columns - Add, modify, and delete table columnsbulk_set_select_options - Bulk manage dropdown/multi-select optionsattach_file_to_row - Upload and attach files to table rowsAll tools support comprehensive input validation with Zod schemas, structured JSON responses, and detailed error handling.
All 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": {} }
Test specific MCP tools using the included test script:
# Test basic operations
node scripts/mcp-call.cjs ping_seatable '{}'
node scripts/mcp-call.cjs list_tables '{}'
node scripts/mcp-call.cjs list_rows '{"table": "Tasks", "page_size": 5}'
# Test data operations
node scripts/mcp-call.cjs add_row '{"table": "Tasks", "row": {"Title": "Test Task"}}'
node scripts/mcp-call.cjs find_rows '{"table": "Tasks", "filter": {"Status": {"eq": "Todo"}}}'
node scripts/mcp-call.cjs search_rows '{"table": "Tasks", "query": "urgent"}'
# Test schema operations
node scripts/mcp-call.cjs get_schema '{}'
node scripts/mcp-call.cjs manage_tables '{"operation": "create", "table_name": "TestTable"}'
Comprehensive test suite for Worker deployment:
# Run full automated test suite
./scripts/test-worker.sh
# Interactive testing with step-by-step validation
./scripts/test-worker.sh --interactive
# Interactive MCP client for live Worker testing
node scripts/test-client.mjs
Set up complete development environment with VS Code configs and MCP Inspector:
# Install MCP Inspector, mcp-remote, and create dev configs
./scripts/setup-test-env.sh
scripts/mcp-call.cjs - Test individual MCP tools directlyscripts/test-worker.sh - Comprehensive Worker testing suitescripts/test-client.mjs - Interactive MCP client for live testingscripts/setup-test-env.sh - Complete development environment setupscripts/sync-wrangler-secrets.ts - Sync environment variables to Worker secretsscripts/probe-token.ts - SeaTable API token validation utility.env values are correct and the API token has access to the baseSEATABLE_SERVER_URLping_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_msnode 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 @aspereo/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.

Research
/Security News
Socket researchers found 10 typosquatted npm packages that auto-run on install, show fake CAPTCHAs, fingerprint by IP, and deploy a credential stealer.

Product
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.

Security News
Open source dashboard CNAPulse tracks CVE Numbering Authoritiesβ publishing activity, highlighting trends and transparency across the CVE ecosystem.