@seatable/mcp-seatable 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -45,6 +45,15 @@ If you use [SeaTable Cloud](https://cloud.seatable.io), there is a hosted MCP se
45
45
  }
46
46
  ```
47
47
 
48
+ **ChatGPT and other OAuth-compatible clients** — use the built-in OAuth flow. In ChatGPT's developer mode, configure:
49
+
50
+ - **Server URL:** `https://mcp.seatable.com/mcp`
51
+ - **Auth type:** OAuth
52
+ - **Authorization URL:** `https://mcp.seatable.com/oauth/authorize`
53
+ - **Token URL:** `https://mcp.seatable.com/oauth/token`
54
+
55
+ You will be prompted to enter your SeaTable API token during the authorization step.
56
+
48
57
  ### Self-hosted SeaTable
49
58
 
50
59
  For self-hosted SeaTable instances, run the MCP server locally via `npx`. Your IDE starts and manages the process automatically.
@@ -124,6 +133,14 @@ PORT=3000 npx -y @seatable/mcp-seatable --sse
124
133
 
125
134
  Clients pass their API token via `Authorization: Bearer <token>` on session initialization. The server validates the token against SeaTable and applies rate limits (60 req/min per token, 120/min per IP, 5 concurrent connections per token).
126
135
 
136
+ **OAuth support:** Managed mode also exposes OAuth 2.0 endpoints (`/oauth/authorize` and `/oauth/token`), enabling OAuth-compatible clients like ChatGPT to connect. During the OAuth flow, the user enters their SeaTable API token, which is then used as the access token — no external OAuth provider required.
137
+
138
+ | Setting | Value |
139
+ |---|---|
140
+ | Authorization URL | `https://your-server.com/oauth/authorize` |
141
+ | Token URL | `https://your-server.com/oauth/token` |
142
+ | Client ID / Secret | Any value (not validated) |
143
+
127
144
  ### Docker
128
145
 
129
146
  ```bash
@@ -144,7 +161,7 @@ The security characteristics differ significantly between transport modes:
144
161
  | | stdio (default) | Selfhosted HTTP | Managed HTTP |
145
162
  |---|---|---|---|
146
163
  | **Network exposure** | None (local process) | TCP port, **no auth** | TCP port, Bearer auth |
147
- | **Authentication** | Not needed (local) | None | Per-session token validated against SeaTable |
164
+ | **Authentication** | Not needed (local) | None | Bearer token or OAuth 2.0, validated against SeaTable |
148
165
  | **Rate limiting** | None | None | Per-token, per-IP, global |
149
166
  | **Connection limits** | N/A | None | 5 concurrent sessions per token |
150
167
  | **Data scope** | All configured bases | All configured bases | One base per client token |
@@ -0,0 +1,21 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ export declare class OAuthProvider {
3
+ private readonly codes;
4
+ private readonly cleanupInterval;
5
+ constructor();
6
+ /**
7
+ * GET /oauth/authorize — renders the authorization form
8
+ * POST /oauth/authorize — processes the form submission
9
+ */
10
+ handleAuthorize(req: IncomingMessage, res: ServerResponse, url: URL): Promise<void>;
11
+ /**
12
+ * POST /oauth/token — exchanges authorization code for access token
13
+ */
14
+ handleToken(req: IncomingMessage, res: ServerResponse): Promise<void>;
15
+ destroy(): void;
16
+ private cleanup;
17
+ private parseFormBody;
18
+ private renderAuthorizePage;
19
+ private escapeHtml;
20
+ }
21
+ //# sourceMappingURL=oauthProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthProvider.d.ts","sourceRoot":"","sources":["../../src/auth/oauthProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAahE,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuC;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;;IAShE;;;OAGG;IACG,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAuDzF;;OAEG;IACG,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA8E3E,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,OAAO;YASD,aAAa;IA6B3B,OAAO,CAAC,mBAAmB;IA4E3B,OAAO,CAAC,UAAU;CAGrB"}
@@ -0,0 +1,251 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ import { logger } from '../logger.js';
3
+ const CODE_TTL_MS = 5 * 60 * 1000; // 5 minutes
4
+ const CLEANUP_INTERVAL_MS = 60 * 1000;
5
+ export class OAuthProvider {
6
+ codes = new Map();
7
+ cleanupInterval;
8
+ constructor() {
9
+ this.cleanupInterval = setInterval(() => this.cleanup(), CLEANUP_INTERVAL_MS);
10
+ if (this.cleanupInterval.unref) {
11
+ this.cleanupInterval.unref();
12
+ }
13
+ }
14
+ /**
15
+ * GET /oauth/authorize — renders the authorization form
16
+ * POST /oauth/authorize — processes the form submission
17
+ */
18
+ async handleAuthorize(req, res, url) {
19
+ const clientId = url.searchParams.get('client_id') ?? '';
20
+ const redirectUri = url.searchParams.get('redirect_uri') ?? '';
21
+ const state = url.searchParams.get('state') ?? '';
22
+ const responseType = url.searchParams.get('response_type') ?? '';
23
+ if (req.method === 'GET') {
24
+ // Render the authorization form
25
+ res.writeHead(200, { 'content-type': 'text/html; charset=utf-8' });
26
+ res.end(this.renderAuthorizePage(clientId, redirectUri, state, responseType));
27
+ return;
28
+ }
29
+ if (req.method === 'POST') {
30
+ const body = await this.parseFormBody(req);
31
+ const apiToken = body.get('api_token') ?? '';
32
+ const formRedirectUri = body.get('redirect_uri') ?? redirectUri;
33
+ const formState = body.get('state') ?? state;
34
+ if (!apiToken) {
35
+ res.writeHead(400, { 'content-type': 'text/html; charset=utf-8' });
36
+ res.end(this.renderAuthorizePage(clientId, formRedirectUri, formState, responseType, 'Please enter your API token.'));
37
+ return;
38
+ }
39
+ if (!formRedirectUri) {
40
+ res.writeHead(400, { 'content-type': 'text/plain' }).end('Missing redirect_uri');
41
+ return;
42
+ }
43
+ // Generate authorization code and store with the API token
44
+ const code = randomBytes(32).toString('hex');
45
+ this.codes.set(code, {
46
+ apiToken,
47
+ redirectUri: formRedirectUri,
48
+ expiresAt: Date.now() + CODE_TTL_MS,
49
+ });
50
+ logger.info('OAuth authorization code issued');
51
+ // Redirect back to the client with the code
52
+ const redirect = new URL(formRedirectUri);
53
+ redirect.searchParams.set('code', code);
54
+ if (formState) {
55
+ redirect.searchParams.set('state', formState);
56
+ }
57
+ res.writeHead(302, { location: redirect.toString() });
58
+ res.end();
59
+ return;
60
+ }
61
+ res.writeHead(405, { 'content-type': 'text/plain' }).end('Method not allowed');
62
+ }
63
+ /**
64
+ * POST /oauth/token — exchanges authorization code for access token
65
+ */
66
+ async handleToken(req, res) {
67
+ if (req.method !== 'POST') {
68
+ res.writeHead(405, { 'content-type': 'text/plain' }).end('Method not allowed');
69
+ return;
70
+ }
71
+ const body = await this.parseFormBody(req);
72
+ const grantType = body.get('grant_type');
73
+ const code = body.get('code');
74
+ const redirectUri = body.get('redirect_uri');
75
+ // Support both authorization_code and refresh_token grant types
76
+ if (grantType === 'refresh_token') {
77
+ const refreshToken = body.get('refresh_token') ?? '';
78
+ // The refresh token IS the API token — just return it again
79
+ if (!refreshToken) {
80
+ res.writeHead(400, { 'content-type': 'application/json' })
81
+ .end(JSON.stringify({ error: 'invalid_request', error_description: 'Missing refresh_token' }));
82
+ return;
83
+ }
84
+ res.writeHead(200, { 'content-type': 'application/json' });
85
+ res.end(JSON.stringify({
86
+ access_token: refreshToken,
87
+ token_type: 'Bearer',
88
+ refresh_token: refreshToken,
89
+ }));
90
+ return;
91
+ }
92
+ if (grantType !== 'authorization_code') {
93
+ res.writeHead(400, { 'content-type': 'application/json' })
94
+ .end(JSON.stringify({ error: 'unsupported_grant_type' }));
95
+ return;
96
+ }
97
+ if (!code) {
98
+ res.writeHead(400, { 'content-type': 'application/json' })
99
+ .end(JSON.stringify({ error: 'invalid_request', error_description: 'Missing code' }));
100
+ return;
101
+ }
102
+ const stored = this.codes.get(code);
103
+ if (!stored) {
104
+ logger.warn('OAuth token exchange with invalid/expired code');
105
+ res.writeHead(400, { 'content-type': 'application/json' })
106
+ .end(JSON.stringify({ error: 'invalid_grant', error_description: 'Invalid or expired authorization code' }));
107
+ return;
108
+ }
109
+ // Single-use: delete immediately
110
+ this.codes.delete(code);
111
+ // Check expiry
112
+ if (Date.now() > stored.expiresAt) {
113
+ res.writeHead(400, { 'content-type': 'application/json' })
114
+ .end(JSON.stringify({ error: 'invalid_grant', error_description: 'Authorization code expired' }));
115
+ return;
116
+ }
117
+ // Validate redirect_uri matches
118
+ if (redirectUri && redirectUri !== stored.redirectUri) {
119
+ res.writeHead(400, { 'content-type': 'application/json' })
120
+ .end(JSON.stringify({ error: 'invalid_grant', error_description: 'redirect_uri mismatch' }));
121
+ return;
122
+ }
123
+ logger.info('OAuth token exchange successful');
124
+ // Return the API token as the OAuth access token
125
+ res.writeHead(200, { 'content-type': 'application/json' });
126
+ res.end(JSON.stringify({
127
+ access_token: stored.apiToken,
128
+ token_type: 'Bearer',
129
+ // Include refresh_token so clients can refresh without re-auth
130
+ refresh_token: stored.apiToken,
131
+ }));
132
+ }
133
+ destroy() {
134
+ clearInterval(this.cleanupInterval);
135
+ this.codes.clear();
136
+ }
137
+ cleanup() {
138
+ const now = Date.now();
139
+ for (const [code, entry] of this.codes) {
140
+ if (now >= entry.expiresAt) {
141
+ this.codes.delete(code);
142
+ }
143
+ }
144
+ }
145
+ async parseFormBody(req) {
146
+ const raw = await new Promise((resolve, reject) => {
147
+ const chunks = [];
148
+ req.on('data', (chunk) => chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk));
149
+ req.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
150
+ req.on('error', reject);
151
+ });
152
+ const result = new Map();
153
+ const contentType = req.headers['content-type'] ?? '';
154
+ if (contentType.includes('application/json')) {
155
+ try {
156
+ const json = JSON.parse(raw);
157
+ for (const [key, value] of Object.entries(json)) {
158
+ if (typeof value === 'string')
159
+ result.set(key, value);
160
+ }
161
+ }
162
+ catch { /* ignore */ }
163
+ }
164
+ else {
165
+ // application/x-www-form-urlencoded
166
+ const params = new URLSearchParams(raw);
167
+ for (const [key, value] of params) {
168
+ result.set(key, value);
169
+ }
170
+ }
171
+ return result;
172
+ }
173
+ renderAuthorizePage(clientId, redirectUri, state, responseType, error) {
174
+ const errorHtml = error ? `<div class="error">${this.escapeHtml(error)}</div>` : '';
175
+ return `<!DOCTYPE html>
176
+ <html lang="en">
177
+ <head>
178
+ <meta charset="utf-8">
179
+ <meta name="viewport" content="width=device-width, initial-scale=1">
180
+ <title>SeaTable MCP — Authorize</title>
181
+ <style>
182
+ * { box-sizing: border-box; margin: 0; padding: 0; }
183
+ body {
184
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
185
+ background: #f5f5f5;
186
+ display: flex;
187
+ justify-content: center;
188
+ align-items: center;
189
+ min-height: 100vh;
190
+ padding: 20px;
191
+ }
192
+ .card {
193
+ background: white;
194
+ border-radius: 12px;
195
+ box-shadow: 0 2px 12px rgba(0,0,0,0.1);
196
+ padding: 40px;
197
+ max-width: 440px;
198
+ width: 100%;
199
+ }
200
+ h1 { font-size: 1.4em; margin-bottom: 8px; color: #333; }
201
+ .subtitle { color: #666; margin-bottom: 24px; font-size: 0.95em; line-height: 1.5; }
202
+ label { display: block; font-weight: 600; margin-bottom: 6px; color: #444; font-size: 0.9em; }
203
+ input[type="password"] {
204
+ width: 100%;
205
+ padding: 10px 12px;
206
+ border: 1px solid #ddd;
207
+ border-radius: 6px;
208
+ font-size: 1em;
209
+ margin-bottom: 20px;
210
+ }
211
+ input[type="password"]:focus { outline: none; border-color: #ff8c00; box-shadow: 0 0 0 3px rgba(255,140,0,0.15); }
212
+ button {
213
+ width: 100%;
214
+ padding: 12px;
215
+ background: #ff8c00;
216
+ color: white;
217
+ border: none;
218
+ border-radius: 6px;
219
+ font-size: 1em;
220
+ font-weight: 600;
221
+ cursor: pointer;
222
+ }
223
+ button:hover { background: #e07b00; }
224
+ .error { background: #fee; color: #c00; padding: 10px 12px; border-radius: 6px; margin-bottom: 16px; font-size: 0.9em; }
225
+ .hint { margin-top: 16px; font-size: 0.8em; color: #999; line-height: 1.4; }
226
+ </style>
227
+ </head>
228
+ <body>
229
+ <div class="card">
230
+ <h1>SeaTable MCP</h1>
231
+ <p class="subtitle">Enter your SeaTable API token to authorize access to your base.</p>
232
+ ${errorHtml}
233
+ <form method="POST" action="/oauth/authorize">
234
+ <input type="hidden" name="redirect_uri" value="${this.escapeHtml(redirectUri)}">
235
+ <input type="hidden" name="state" value="${this.escapeHtml(state)}">
236
+ <input type="hidden" name="client_id" value="${this.escapeHtml(clientId)}">
237
+ <input type="hidden" name="response_type" value="${this.escapeHtml(responseType)}">
238
+ <label for="api_token">API Token</label>
239
+ <input type="password" id="api_token" name="api_token" placeholder="Enter your SeaTable API token" required autofocus>
240
+ <button type="submit">Authorize</button>
241
+ <p class="hint">Your API token will be used as your access credential. Use a read-only token for minimal permissions.</p>
242
+ </form>
243
+ </div>
244
+ </body>
245
+ </html>`;
246
+ }
247
+ escapeHtml(str) {
248
+ return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
249
+ }
250
+ }
251
+ //# sourceMappingURL=oauthProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthProvider.js","sourceRoot":"","sources":["../../src/auth/oauthProvider.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"httpServer.d.ts","sourceRoot":"","sources":["../../src/http/httpServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAA;AAYnF,MAAM,WAAW,sBAAsB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,sEAAsE;IACtE,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAClC;AAyCD,wBAAsB,eAAe,CAAC,OAAO,GAAE,sBAA2B,iFA0OzE"}
1
+ {"version":3,"file":"httpServer.d.ts","sourceRoot":"","sources":["../../src/http/httpServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAA;AAanF,MAAM,WAAW,sBAAsB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,sEAAsE;IACtE,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAClC;AAyCD,wBAAsB,eAAe,CAAC,OAAO,GAAE,sBAA2B,iFAwQzE"}
@@ -1,6 +1,7 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { createServer } from 'node:http';
3
3
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
4
+ import { OAuthProvider } from '../auth/oauthProvider.js';
4
5
  import { TokenValidator } from '../auth/tokenValidator.js';
5
6
  import { getEnv, VERSION } from '../config/env.js';
6
7
  import { logger } from '../logger.js';
@@ -46,6 +47,7 @@ export async function startHttpServer(options = {}) {
46
47
  const mode = env.SEATABLE_MODE;
47
48
  const tokenValidator = mode === 'managed' ? new TokenValidator(env.SEATABLE_SERVER_URL) : undefined;
48
49
  const rateLimiter = mode === 'managed' ? new RateLimitManager() : undefined;
50
+ const oauthProvider = mode === 'managed' ? new OAuthProvider() : undefined;
49
51
  const toolDefinitions = getStaticToolDefinitions();
50
52
  const sessions = new Map();
51
53
  function extractBearerToken(req) {
@@ -198,13 +200,40 @@ export async function startHttpServer(options = {}) {
198
200
  if (req.method === 'GET' && url.pathname === '/.well-known/mcp/server-card.json') {
199
201
  const card = {
200
202
  serverInfo: { name: '@seatable/mcp-seatable', version: VERSION },
201
- authentication: { required: true, schemes: ['bearer'] },
203
+ authentication: mode === 'managed'
204
+ ? { required: true, schemes: ['oauth', 'bearer'] }
205
+ : { required: false },
202
206
  capabilities: { tools: true, resources: false, prompts: false },
203
207
  tools: toolDefinitions,
204
208
  };
205
209
  res.writeHead(200, { 'content-type': 'application/json' }).end(JSON.stringify(card));
206
210
  return;
207
211
  }
212
+ // OAuth endpoints (managed mode only)
213
+ if (oauthProvider && url.pathname === '/oauth/authorize' && (req.method === 'GET' || req.method === 'POST')) {
214
+ try {
215
+ await oauthProvider.handleAuthorize(req, res, url);
216
+ }
217
+ catch (error) {
218
+ logger.error({ err: error }, 'Error handling OAuth authorize');
219
+ if (!res.headersSent) {
220
+ res.writeHead(500, { 'content-type': 'text/plain' }).end('Internal server error');
221
+ }
222
+ }
223
+ return;
224
+ }
225
+ if (oauthProvider && url.pathname === '/oauth/token' && req.method === 'POST') {
226
+ try {
227
+ await oauthProvider.handleToken(req, res);
228
+ }
229
+ catch (error) {
230
+ logger.error({ err: error }, 'Error handling OAuth token exchange');
231
+ if (!res.headersSent) {
232
+ res.writeHead(500, { 'content-type': 'text/plain' }).end('Internal server error');
233
+ }
234
+ }
235
+ return;
236
+ }
208
237
  res.writeHead(404, { 'content-type': 'application/json' }).end(JSON.stringify({ error: 'Not found' }));
209
238
  });
210
239
  await new Promise((resolve, reject) => {
@@ -231,6 +260,7 @@ export async function startHttpServer(options = {}) {
231
260
  clearInterval(idleCheckInterval);
232
261
  tokenValidator?.destroy();
233
262
  rateLimiter?.destroy();
263
+ oauthProvider?.destroy();
234
264
  const sessionCount = sessions.size;
235
265
  for (const [sessionId, session] of sessions.entries()) {
236
266
  logger.debug({ sessionId }, 'Closing session during shutdown');
@@ -1 +1 @@
1
- {"version":3,"file":"httpServer.js","sourceRoot":"","sources":["../../src/http/httpServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpServer.js","sourceRoot":"","sources":["../../src/http/httpServer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seatable/mcp-seatable",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "mcpName": "io.github.seatable/seatable",