Seatable
概要
作者による説明(英語の原文)
MCP server for SeaTable — read, write, search, link, and query data in your bases
PopNx MCPの3つの柱
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
- 利用者の声iレビューはまだありませんレビューは今後のステップで、アカウント機能と一緒に始まります
- 私たちの基本チェックi1項目中1項目に合格公開情報からチェック。コードはまだスキャンしていません
- 利用状況i成長中↓ 2295/週 · ★ –
できること
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
- 接続方法: パソコンで動く
- トランスポート: stdio
- カテゴリ: 検索・AIの記憶
インストール
使っているAIアプリを選んで、設定をコピーしてください。
インストールの前に
- 基本チェック:1項目中1項目に合格
- あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
- 自分で入力するもの:
SEATABLE_SERVER_URL,SEATABLE_API_TOKEN
必要なもの
- npmNode.jsのインストール(npxコマンドに必要)
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"seatable": {
"command": "npx",
"args": [
"-y",
"@seatable/mcp-seatable"
],
"env": {
"SEATABLE_SERVER_URL": "your-value",
"SEATABLE_API_TOKEN": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add seatable --env SEATABLE_SERVER_URL=your-value --env SEATABLE_API_TOKEN=your-value -- npx -y @seatable/mcp-seatable動かす前に、空欄の値を入力してください。
または、設定を自分でコピーする
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"seatable": {
"command": "npx",
"args": [
"-y",
"@seatable/mcp-seatable"
],
"env": {
"SEATABLE_SERVER_URL": "your-value",
"SEATABLE_API_TOKEN": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
または、設定を自分でコピーする
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"seatable": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@seatable/mcp-seatable"
],
"env": {
"SEATABLE_SERVER_URL": "your-value",
"SEATABLE_API_TOKEN": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
自分で入力する値
SEATABLE_SERVER_URLenvURL of your SeaTable server (e.g. https://cloud.seatable.io)SEATABLE_API_TOKENenvAPI token for a single SeaTable base
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
できること
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月9日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント seatable で確認済みです
- … 未チェック
今もメンテナンスされている
このリポジトリはまだGitHubから読み取っていません
- … 未チェック
ライセンスがある
このリポジトリはまだGitHubから読み取っていません
- – 対象外
エンドポイントが応答する
これはパソコンで動くため、インターネット上のエンドポイントはありません
- – 対象外
OAuthでサインイン
パソコンで動き、代わりにローカルの設定を使います
- … 未チェック
ツールの説明に隠れた指示がない
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
検索・AIの記憶のほかのサーバーとの比較i
- このカテゴリのほかの5746件のうち0%よりスターが多い
- このカテゴリのほかの5746件のうち93%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの5746件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Seatableは安全ですか?
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
パソコンで動きますか、それともクラウドですか?
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は–、最新バージョン(1.9.5)がレジストリに届いたのは一昨日です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
代わりに使えるものは?
同じカテゴリには:Context7, Codebase Memory, Exa
代わりの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Codebase Memory
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Exa
Connect AI agents to Exa for web search, content fetching, and multi-step research.
作者のREADME
READMEを開く
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
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:
{
"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:
| Callback | Behaviour |
|---|---|
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_HOSTS | allowed, no extra step |
https on any other host | allowed 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):
| Endpoint | Path |
|---|---|
| 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/appis owned by root and read-only for that user. - Node permission model: the default
CMDstartsnode --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, includingdownload_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,ncandsu. The health check usesnode. There are no setuid binaries. Only apk's package list in/lib/apk/dbstays, so that vulnerability scanners can see the OS packages. Without/sbin/apkit 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 argumentNODE_IMAGE), withapk upgradeat 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 HTTP | Managed HTTP | |
|---|---|---|---|
| Network exposure | None (local process) | TCP port, no auth | TCP port, Bearer auth |
| Authentication | Not needed (local) | None | Bearer token or OAuth 2.0, validated against SeaTable |
| Rate limiting | None | None | Per-token, per-IP, global |
| Connection limits | N/A | None | 20 concurrent sessions per token |
| Data scope | All configured bases | All configured bases | One 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
冒頭だけを表示しています。続きはリポジトリで読めます