Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Seatable

by seatableversion 1.9.4i★ –iRuns on your computer
Registry nameio.github.seatable/seatable

Install

Overview

Description from the maker (original English)

MCP server for SeaTable — read, write, search, link, and query data in your bases

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Search & AI memory

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • You fill in yourself: SEATABLE_SERVER_URL, SEATABLE_API_TOKEN

You need

  • npmNode.js installed (for the npx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "seatable": {
      "command": "npx",
      "args": [
        "-y",
        "@seatable/mcp-seatable"
      ],
      "env": {
        "SEATABLE_SERVER_URL": "your-value",
        "SEATABLE_API_TOKEN": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add seatable --env SEATABLE_SERVER_URL=your-value --env SEATABLE_API_TOKEN=your-value -- npx -y @seatable/mcp-seatable

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "seatable": {
      "command": "npx",
      "args": [
        "-y",
        "@seatable/mcp-seatable"
      ],
      "env": {
        "SEATABLE_SERVER_URL": "your-value",
        "SEATABLE_API_TOKEN": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "seatable": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@seatable/mcp-seatable"
      ],
      "env": {
        "SEATABLE_SERVER_URL": "your-value",
        "SEATABLE_API_TOKEN": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • SEATABLE_SERVER_URL env
    URL of your SeaTable server (e.g. https://cloud.seatable.io)
  • SEATABLE_API_TOKEN env
    API token for a single SeaTable base

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account seatable, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Search & AI memoryi

  • More stars than 0% of the other 7211 servers in this category
  • Published to the registry more recently than 95% of the other 7211 servers in this category
  • Basic checks equal to or better than 100% of the other 7211 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Seatable safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (1.9.4) reached the registry yesterday.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.

What can I use instead?

In the same category: Context7, Codebase Memory, Exa

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Context7

by upstash

Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.

Computer or cloud★ 64,224MITUpdated 3 days ago
Install

Codebase Memory

by DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

Runs on your computer★ 48,148MITUpdated 20 days ago
Install

Exa

by exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

Runs in the cloud★ 5,213MITUpdated 44 days ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

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 npx in 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:

{

"mcpServers": { "seatable": { "type": "streamable-http", "url": "https://mcp.seatable.com/mcp", "headers": { "Authorization": "Bearer your-api-token" } } } }

Cursor / VSCode — add to your MCP settings (JSON):

{

"mcp.servers": { "seatable": { "type": "streamable-http", "url": "https://mcp.seatable.com/mcp", "headers": { "Authorization": "Bearer your-api-token" } } } }

ChatGPT and other OAuth-compatible clients — use the built-in OAuth flow. In ChatGPT's developer mode, configure:

  • Server URL: https://mcp.seatable.com/mcp
  • Auth type: OAuth
  • Authorization URL: https://mcp.seatable.com/authorize
  • Token URL: https://mcp.seatable.com/token

You will be prompted to enter your SeaTable API token during the authorization step.

Self-hosted SeaTable

For self-hosted SeaTable instances, run the MCP server locally via npx. Your IDE starts and manages the process automatically.

Claude Desktop — add to claude_desktop_config.json:

{

"mcpServers": { "seatable": { "command": "npx", "args": ["-y", "@seatable/mcp-seatable"], "env": { "SEATABLE_SERVER_URL": "https://your-seatable-server.com", "SEATABLE_API_TOKEN": "your-api-token" } } } }

Cursor / VSCode — add to your MCP settings (JSON):

{

"mcp.servers": { "seatable": { "command": "npx", "args": ["-y", "@seatable/mcp-seatable"], "env": { "SEATABLE_SERVER_URL": "https://your-seatable-server.com", "SEATABLE_API_TOKEN": "your-api-token" } } } }

Deployment Options

If you need to run your own server instance — for example on your own infrastructure, with multi-base support, or in multi-tenant mode — use one of the options below.

HTTP Server (Network Access)

Run a local HTTP server with Streamable HTTP transport:

PORT=3001 npx -y @seatable/mcp-seatable --sse

Health check

curl http://localhost:3001/health

MCP endpoint: POST/GET/DELETE http://localhost:3001/mcp

Multi-Base (Selfhosted)

Serve multiple bases from a single process:

SEATABLE_SERVER_URL=https://your-seatable-server.com \

SEATABLE_BASES='[{"base_name":"CRM","api_token":"token_abc"},{"base_name":"Projects","api_token":"token_def"}]' \ npx -y @seatable/mcp-seatable

Each tool automatically gets a base parameter. Use list_bases to see available bases.

Managed Mode (Multi-Tenant HTTP)

For hosting an MCP endpoint where each client authenticates with their own SeaTable API token:

SEATABLE_MODE=managed \

SEATABLE_SERVER_URL=https://your-seatable-server.com \ SEATABLE_TOKEN_SECRET=$(openssl rand -hex 32) \ PORT=3000 npx -y @seatable/mcp-seatable --sse

SEATABLE_TOKEN_SECRET is required in managed mode. It seals the OAuth tokens the server issues, so the underlying SeaTable API token never has to be handed to a client. Keep it stable across restarts — changing it invalidates every issued access and refresh token and forces all clients to re-authorize.

Clients pass their credential via Authorization: Bearer — on session initialization and on every subsequent request, including GET and DELETE. The mcp-session-id header is a routing value only; it is never accepted on its own. Each request is re-validated and must resolve to the same identity that created the session, otherwise the server answers 401 (missing/invalid credential) or 403 (valid credential, wrong session). Rate limits apply as before (60 req/min per token, 120/min per IP, 20 concurrent connections per token).

OAuth support: Managed mode also exposes OAuth 2.0 endpoints (/authorize and /token), enabling OAuth-compatible clients like ChatGPT to connect — no external OAuth provider required. During the flow the user enters their SeaTable API token; the server seals it into its own short-lived access token (1 h) and a rotating refresh token (14 d). The raw SeaTable API token is never returned to a client.

Clients must register at /register first: the returned client_id carries the client's name and its redirect_uris, and the server accepts a callback only if it is one the client registered (loopback callbacks may vary the port, per RFC 8252). PKCE with S256 is mandatory, and every authorization code is bound to the client, the exact callback and the challenge.

Where a code may be delivered. With open dynamic registration, "registered client" is not a trust statement — anyone can register. What matters is whether the code leaves the user's machine:

CallbackBehaviour
Loopback (http://127.0.0.1:…, localhost, [::1])allowed, no extra step — the code stays on the user's machine
Private-use scheme (cursor://, vscode://, com.example.app:/…)allowed, no extra step — handed to a local application
https on a host in SEATABLE_OAUTH_TRUSTED_REDIRECT_HOSTSallowed, no extra step
https on any other hostallowed after the user confirms the destination on a separate page
Remote plaintext http, javascript:, data:, file:, blob:rejected

The confirmation cannot be skipped from the entry link: it is read from the form body only, and a POST auto-submitted by a foreign page is refused via Sec-Fetch-Site. The trusted-host list therefore removes friction — it is not a gate, and leaving it unset breaks nothing.

The consent screen leads with the destination the authorization will be sent to. The application's name is shown as self-reported, because with open registration it is chosen by whoever registered the client and cannot be verified.

The OAuth endpoints are rate limited per IP (30/min overall, 10/min for token submissions), so /authorize cannot be used as an unthrottled oracle for testing SeaTable API tokens.

OAuth endpoints follow the MCP specification (RFC 8414 metadata discovery, PKCE, dynamic client registration):

EndpointPath
Metadata Discovery/.well-known/oauth-authorization-server
Authorization/authorize
Token/token
Client Registration/register

Client ID and secret are not validated — dynamic client registration generates one automatically.

Docker
docker run -d --name seatable-mcp \

-p 3000:3000 \ -e SEATABLE_SERVER_URL=https://your-seatable-server.com \ -e SEATABLE_API_TOKEN=your-api-token \ seatable/seatable-mcp:latest

Health check

curl http://localhost:3000/health

Container hardening

The image is built so that code running inside the server process — for example through a vulnerable dependency — can't change the filesystem, start other programs or escalate privileges:

  • Non-root: the server runs as node (uid 1000). The code in /app is owned by root and read-only for that user.
  • Node permission model: the default CMD starts node --permission --allow-fs-read=/app. The process may read its own code and nothing else; writing files, child processes (no shell), worker threads and native addons are denied. Outbound network access is not affected. The server needs none of the denied operations, including download_file, which extracts PDF text in memory.
  • No tools for an attacker: npm, npx, yarn, corepack and apk are removed, and so are busybox wget, nc and su. The health check uses node. There are no setuid binaries. Only apk's package list in /lib/apk/db stays, so that vulnerability scanners can see the OS packages. Without /sbin/apk it can't install anything, and the permission model denies the server read access to it.
  • Pinned base image: node:22.23.4-alpine3.24 (build argument NODE_IMAGE), with apk upgrade at build time.

At runtime, add the restrictions the image can't set itself. docker-compose.yml contains all of them:

docker run -d --name seatable-mcp \

-p 3000:3000 \ --read-only --tmpfs /tmp:size=16m,noexec,nosuid,nodev \ --cap-drop ALL --security-opt no-new-privileges:true \ --pids-limit 128 --memory 512m \ -e SEATABLE_SERVER_URL=https://your-seatable-server.com \ -e SEATABLE_API_TOKEN=your-api-token \ seatable/seatable-mcp:latest

If you override the command (e.g. docker run … seatable/seatable-mcp node dist/index.js --sse), keep --permission --allow-fs-read=/app, otherwise the permission model is off.

OpenAI Secure MCP Tunnel

To use the server from ChatGPT without exposing it to the internet, run it next to OpenAI's tunnel-client. Setup and limitations: docs/openai-tunnel.md.

Security Model

The security characteristics differ significantly between transport modes:

stdio (default)Selfhosted HTTPManaged HTTP
Network exposureNone (local process)TCP port, no authTCP port, Bearer auth
AuthenticationNot needed (local)NoneBearer token or OAuth 2.0, validated against SeaTable
Rate limitingNoneNonePer-token, per-IP, global
Connection limitsN/ANone20 concurrent sessions per token
Data scopeAll configured basesAll configured basesOne base per client token

⚠️ Warning: Selfhosted HTTP mode (--sse / --http) has no authentication. Anyone who can reach the port gets full access to all configured bases, including write and delete operations. Only run it in trusted networks (localhost, Docker-internal) or behind a reverse proxy that handles authentication. For untrusted networks, use managed mode instead.

Rate Limiting

SeaTable's own API gateway enforces rate limits per base (default: 500 requests/minute per base_uuid) and per organization (monthly quota). These limits apply regardless of whether requests come from the MCP server, the web UI, or direct API calls. The MCP server does not duplicate these limits — instead, it retries automatically with exponential backoff when SeaTable returns 429 Too Many Requests.

In managed mode, the MCP server adds its own rate limits to protect the server process itself (not the SeaTable backend): 60 req/min per token, 120/min per IP, 30/min for new session creation, and 20 concurrent connections per token.

Input Validation

All tool inputs are validated with Zod schemas before execution. Write tools (add_row, append_rows, update_rows, upsert_rows) additionally validate row data against the table schema — unknown columns are rejected, and read-only columns (formula, auto-number, creator, etc.) are stripped with a note in the response.

Tool schemas are published with additionalProperties: true to remain compatible with MCP clients that may attach internal fields (e.g. _meta). Unexpected fields are ignored by the server — they do not cause errors but are not processed either. This is a deliberate trade-off: stricter validation would improve error messages for typo

Only the beginning is shown; read the rest in the repo

Ask PopNx