@rashidazarang/airtable-mcp 2.2.1 → 2.2.2

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
@@ -3,13 +3,21 @@
3
3
  [![Trust Score](https://archestra.ai/mcp-catalog/api/badge/quality/rashidazarang/airtable-mcp)](https://archestra.ai/mcp-catalog/rashidazarang__airtable-mcp)
4
4
  [![smithery badge](https://smithery.ai/badge/@rashidazarang/airtable-mcp)](https://smithery.ai/server/@rashidazarang/airtable-mcp)
5
5
  ![Airtable](https://img.shields.io/badge/Airtable-18BFFF?style=for-the-badge&logo=Airtable&logoColor=white)
6
- [![MCP](https://img.shields.io/badge/MCP-1.6.0-green)](https://github.com/rashidazarang/airtable-mcp)
6
+ [![MCP](https://img.shields.io/badge/MCP-2.2.1-blue)](https://github.com/rashidazarang/airtable-mcp)
7
+ [![Security](https://img.shields.io/badge/Security-Enhanced-green)](https://github.com/rashidazarang/airtable-mcp)
8
+ [![Protocol](https://img.shields.io/badge/Protocol-2024--11--05-success)](https://modelcontextprotocol.io/)
7
9
 
8
- A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with your Airtable bases. Query, create, update, and delete records using natural language through a secure, standardized interface.
10
+ 🏆 **Complete MCP 2024-11-05 Implementation** - A production-ready Model Context Protocol server that enables AI assistants like Claude to interact with your Airtable bases through a secure, feature-complete interface.
9
11
 
10
- ## 🔒 Security Notice
12
+ ## 🚀 Latest: Enhanced v2.2.1
11
13
 
12
- **Important**: Version 1.6.0 adds batch operations and attachment management with 33 total tools. Complete Airtable API coverage with advanced features.
14
+ **Complete MCP Protocol Support** with enterprise security:
15
+ - ✅ **Prompts** - 4 AI-powered templates for data analysis
16
+ - ✅ **Sampling** - LLM integration for intelligent operations
17
+ - ✅ **Roots** - Filesystem boundary management
18
+ - ✅ **Logging** - Dynamic structured logging
19
+ - ✅ **OAuth2** - PKCE authentication flow
20
+ - ✅ **Security** - XSS protection, input validation, CSP headers
13
21
 
14
22
  ## ✨ Features
15
23
 
@@ -26,6 +34,8 @@ A Model Context Protocol (MCP) server that enables AI assistants like Claude to
26
34
  - 📎 **Attachment Management** - Upload files via URLs to attachment fields
27
35
  - ⚡ **Batch Operations** - Create, update, delete up to 10 records at once
28
36
  - 👥 **Collaboration Tools** - Manage base collaborators and shared views
37
+ - 🤖 **AI Integration** - Prompts and sampling for intelligent data operations
38
+ - 🔐 **Enterprise Security** - OAuth2, rate limiting, comprehensive validation
29
39
 
30
40
  ## 📋 Prerequisites
31
41
 
@@ -238,6 +248,14 @@ Once configured, you can interact with your Airtable data naturally:
238
248
  | `list_collaborators` | View base collaborators and their permission levels |
239
249
  | `list_shares` | List shared views and their public configurations |
240
250
 
251
+ ### 🤖 AI Integration (4 prompts) - **New in v2.2.0**
252
+ | Prompt | Description |
253
+ |--------|-------------|
254
+ | `analyze_data` | AI-powered data analysis with trends and insights |
255
+ | `create_report` | Generate comprehensive reports with AI assistance |
256
+ | `data_insights` | Discover hidden correlations and patterns |
257
+ | `optimize_workflow` | Get AI recommendations for workflow improvements |
258
+
241
259
  ## 🔧 Advanced Configuration
242
260
 
243
261
  ### Using with Smithery Cloud
@@ -346,6 +364,8 @@ lsof -ti:8010 | xargs kill -9
346
364
 
347
365
  ## 📦 Version History
348
366
 
367
+ - **v2.2.1** (2025-08-16) - 🔒 **Security release**: Fixed XSS and format string vulnerabilities
368
+ - **v2.2.0** (2025-08-16) - 🏆 **Major release**: Complete MCP 2024-11-05 protocol implementation
349
369
  - **v1.6.0** (2025-08-15) - 🎆 **Major release**: Added batch operations & attachment management (33 total tools)
350
370
  - **v1.5.0** (2025-08-15) - Added comprehensive schema management (23 total tools)
351
371
  - **v1.4.0** (2025-08-14) - Added webhook support and enhanced CRUD operations (12 tools)
@@ -374,4 +394,4 @@ MIT License - see [LICENSE](./LICENSE) file for details
374
394
 
375
395
  ---
376
396
 
377
- **Version**: 1.2.4 | **Status**: ✅ Production Ready | **Last Updated**: August 14, 2025
397
+ **Version**: 2.2.1 | **Status**: ✅ Production Ready | **MCP Protocol**: 2024-11-05 Complete | **Last Updated**: August 16, 2025
@@ -379,7 +379,7 @@ const server = http.createServer(async (req, res) => {
379
379
  res.writeHead(200, { 'Content-Type': 'application/json' });
380
380
  res.end(JSON.stringify({
381
381
  status: 'healthy',
382
- version: '2.2.1',
382
+ version: '2.2.2',
383
383
  timestamp: new Date().toISOString(),
384
384
  uptime: process.uptime()
385
385
  }));
@@ -422,9 +422,11 @@ const server = http.createServer(async (req, res) => {
422
422
 
423
423
  res.writeHead(200, {
424
424
  'Content-Type': 'text/html',
425
- 'Content-Security-Policy': "default-src 'self'; script-src 'unsafe-inline'; style-src 'unsafe-inline'",
425
+ 'Content-Security-Policy': "default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; connect-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none';",
426
426
  'X-Content-Type-Options': 'nosniff',
427
- 'X-Frame-Options': 'DENY'
427
+ 'X-Frame-Options': 'DENY',
428
+ 'X-XSS-Protection': '1; mode=block',
429
+ 'Referrer-Policy': 'no-referrer'
428
430
  });
429
431
 
430
432
  res.end(`<!DOCTYPE html>
@@ -447,19 +449,42 @@ const server = http.createServer(async (req, res) => {
447
449
  </button>
448
450
  </div>
449
451
  <script>
450
- function authorize() {
451
- const baseUrl = ${JSON.stringify(redirectUri)};
452
+ // Use validated and sanitized values to prevent XSS
453
+ (function() {
454
+ const baseUrl = ${JSON.stringify(redirectUri.slice(0, 2000))};
452
455
  const code = ${JSON.stringify(authCode)};
453
- const state = ${JSON.stringify(state || '')};
454
- const url = baseUrl + '?code=' + encodeURIComponent(code) + '&state=' + encodeURIComponent(state);
455
- window.location.href = url;
456
- }
457
- function deny() {
458
- const baseUrl = ${JSON.stringify(redirectUri)};
459
- const state = ${JSON.stringify(state || '')};
460
- const url = baseUrl + '?error=access_denied&state=' + encodeURIComponent(state);
461
- window.location.href = url;
462
- }
456
+ const state = ${JSON.stringify((state || '').slice(0, 200))};
457
+
458
+ window.authorize = function() {
459
+ try {
460
+ // Additional validation in JavaScript
461
+ const url = new URL(baseUrl);
462
+ if (!['http:', 'https:'].includes(url.protocol)) {
463
+ throw new Error('Invalid protocol');
464
+ }
465
+ const finalUrl = baseUrl + '?code=' + encodeURIComponent(code) + '&state=' + encodeURIComponent(state);
466
+ window.location.href = finalUrl;
467
+ } catch (e) {
468
+ console.error('Authorization failed:', e);
469
+ alert('Invalid redirect URL');
470
+ }
471
+ };
472
+
473
+ window.deny = function() {
474
+ try {
475
+ // Additional validation in JavaScript
476
+ const url = new URL(baseUrl);
477
+ if (!['http:', 'https:'].includes(url.protocol)) {
478
+ throw new Error('Invalid protocol');
479
+ }
480
+ const finalUrl = baseUrl + '?error=access_denied&state=' + encodeURIComponent(state);
481
+ window.location.href = finalUrl;
482
+ } catch (e) {
483
+ console.error('Denial failed:', e);
484
+ alert('Invalid redirect URL');
485
+ }
486
+ };
487
+ })();
463
488
  </script>
464
489
  </body>
465
490
  </html>`);
@@ -588,7 +613,7 @@ const server = http.createServer(async (req, res) => {
588
613
  },
589
614
  serverInfo: {
590
615
  name: 'Airtable MCP Server Enhanced',
591
- version: '2.2.1',
616
+ version: '2.2.2',
592
617
  description: 'Complete MCP 2024-11-05 server with Prompts, Sampling, Roots, Logging, and OAuth2'
593
618
  }
594
619
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rashidazarang/airtable-mcp",
3
- "version": "2.2.1",
3
+ "version": "2.2.2",
4
4
  "description": "Airtable MCP server for Claude Desktop - Connect directly to Airtable using natural language",
5
5
  "main": "airtable_simple_production.js",
6
6
  "bin": {