@rashidazarang/airtable-mcp 1.6.0 → 2.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.
Files changed (116) hide show
  1. package/.github/ISSUE_TEMPLATE/bug-report.yml +173 -0
  2. package/.github/ISSUE_TEMPLATE/feature-request.yml +209 -0
  3. package/.github/ISSUE_TEMPLATE/security-report.yml +216 -0
  4. package/.github/pull_request_template.md +245 -0
  5. package/.github/workflows/ci-cd.yml +408 -0
  6. package/.github/workflows/security-audit.yml +316 -0
  7. package/API_DOCUMENTATION.md +897 -0
  8. package/CODE_OF_CONDUCT.md +181 -0
  9. package/Dockerfile.production +127 -0
  10. package/README.md +1 -0
  11. package/airtable-clipper/CHANGELOG.md +198 -0
  12. package/airtable-clipper/CHROME_STORE_SUBMISSION.md +343 -0
  13. package/airtable-clipper/LAUNCH_STRATEGY.md +495 -0
  14. package/airtable-clipper/LICENSE +21 -0
  15. package/airtable-clipper/OAUTH_SETUP.md +51 -0
  16. package/airtable-clipper/PRIVACY_POLICY.md +187 -0
  17. package/airtable-clipper/README.md +575 -0
  18. package/airtable-clipper/SUBMIT_TO_CHROME_STORE.md +273 -0
  19. package/airtable-clipper/build.sh +85 -0
  20. package/airtable-clipper/docs/QUICK_START.md +99 -0
  21. package/airtable-clipper/docs/SETUP.md +291 -0
  22. package/airtable-clipper/extension/background.js +337 -0
  23. package/airtable-clipper/extension/base-setup.html +324 -0
  24. package/airtable-clipper/extension/base-setup.js +471 -0
  25. package/airtable-clipper/extension/content.js +771 -0
  26. package/airtable-clipper/extension/icons/README.md +69 -0
  27. package/airtable-clipper/extension/icons/icon-16.png +3 -0
  28. package/airtable-clipper/extension/manifest.json +73 -0
  29. package/airtable-clipper/extension/popup.html +144 -0
  30. package/airtable-clipper/extension/popup.js +475 -0
  31. package/airtable-clipper/extension/styles/content.css +229 -0
  32. package/airtable-clipper/extension/styles/popup.css +477 -0
  33. package/airtable-clipper/privacy-policy.md +63 -0
  34. package/airtable-clipper/releases/v1.0.0/background.js +337 -0
  35. package/airtable-clipper/releases/v1.0.0/base-setup.html +324 -0
  36. package/airtable-clipper/releases/v1.0.0/base-setup.js +471 -0
  37. package/airtable-clipper/releases/v1.0.0/content.js +771 -0
  38. package/airtable-clipper/releases/v1.0.0/icons/README.md +69 -0
  39. package/airtable-clipper/releases/v1.0.0/icons/icon-128.png +2 -0
  40. package/airtable-clipper/releases/v1.0.0/icons/icon-16.png +3 -0
  41. package/airtable-clipper/releases/v1.0.0/icons/icon-32.png +2 -0
  42. package/airtable-clipper/releases/v1.0.0/icons/icon-48.png +2 -0
  43. package/airtable-clipper/releases/v1.0.0/manifest.json +73 -0
  44. package/airtable-clipper/releases/v1.0.0/popup.html +144 -0
  45. package/airtable-clipper/releases/v1.0.0/popup.js +475 -0
  46. package/airtable-clipper/releases/v1.0.0/sidepanel.html +25 -0
  47. package/airtable-clipper/releases/v1.0.0/styles/content.css +229 -0
  48. package/airtable-clipper/releases/v1.0.0/styles/popup.css +477 -0
  49. package/airtable-clipper/releases/v1.0.1/background.js +337 -0
  50. package/airtable-clipper/releases/v1.0.1/base-setup.html +324 -0
  51. package/airtable-clipper/releases/v1.0.1/base-setup.js +471 -0
  52. package/airtable-clipper/releases/v1.0.1/content.js +771 -0
  53. package/airtable-clipper/releases/v1.0.1/icons/README.md +69 -0
  54. package/airtable-clipper/releases/v1.0.1/icons/icon-128.png +2 -0
  55. package/airtable-clipper/releases/v1.0.1/icons/icon-16.png +3 -0
  56. package/airtable-clipper/releases/v1.0.1/icons/icon-32.png +2 -0
  57. package/airtable-clipper/releases/v1.0.1/icons/icon-48.png +2 -0
  58. package/airtable-clipper/releases/v1.0.1/manifest.json +70 -0
  59. package/airtable-clipper/releases/v1.0.1/popup.html +157 -0
  60. package/airtable-clipper/releases/v1.0.1/popup.js +562 -0
  61. package/airtable-clipper/releases/v1.0.1/sidepanel.html +25 -0
  62. package/airtable-clipper/releases/v1.0.1/styles/content.css +229 -0
  63. package/airtable-clipper/releases/v1.0.1/styles/popup.css +647 -0
  64. package/airtable-clipper/releases/v1.0.2/background.js +337 -0
  65. package/airtable-clipper/releases/v1.0.2/base-setup.html +324 -0
  66. package/airtable-clipper/releases/v1.0.2/base-setup.js +471 -0
  67. package/airtable-clipper/releases/v1.0.2/content.js +771 -0
  68. package/airtable-clipper/releases/v1.0.2/icons/README.md +69 -0
  69. package/airtable-clipper/releases/v1.0.2/icons/icon-128.png +2 -0
  70. package/airtable-clipper/releases/v1.0.2/icons/icon-16.png +3 -0
  71. package/airtable-clipper/releases/v1.0.2/icons/icon-32.png +2 -0
  72. package/airtable-clipper/releases/v1.0.2/icons/icon-48.png +2 -0
  73. package/airtable-clipper/releases/v1.0.2/manifest.json +62 -0
  74. package/airtable-clipper/releases/v1.0.2/popup.html +157 -0
  75. package/airtable-clipper/releases/v1.0.2/popup.js +567 -0
  76. package/airtable-clipper/releases/v1.0.2/sidepanel.html +25 -0
  77. package/airtable-clipper/releases/v1.0.2/styles/content.css +229 -0
  78. package/airtable-clipper/releases/v1.0.2/styles/popup.css +647 -0
  79. package/airtable-clipper/terms-of-service.md +124 -0
  80. package/airtable-clipper/test-credentials.md +61 -0
  81. package/airtable-clipper/test-extension/background.js +337 -0
  82. package/airtable-clipper/test-extension/base-setup.html +324 -0
  83. package/airtable-clipper/test-extension/base-setup.js +471 -0
  84. package/airtable-clipper/test-extension/content.js +873 -0
  85. package/airtable-clipper/test-extension/icons/README.md +69 -0
  86. package/airtable-clipper/test-extension/icons/icon-128.png +2 -0
  87. package/airtable-clipper/test-extension/icons/icon-16.png +3 -0
  88. package/airtable-clipper/test-extension/icons/icon-32.png +2 -0
  89. package/airtable-clipper/test-extension/icons/icon-48.png +2 -0
  90. package/airtable-clipper/test-extension/manifest.json +72 -0
  91. package/airtable-clipper/test-extension/popup.html +274 -0
  92. package/airtable-clipper/test-extension/popup.js +729 -0
  93. package/airtable-clipper/test-extension/sidepanel.html +25 -0
  94. package/airtable-clipper/test-extension/styles/content.css +229 -0
  95. package/airtable-clipper/test-extension/styles/popup.css +794 -0
  96. package/airtable_mcp_v2.js +1505 -0
  97. package/airtable_mcp_v2_oauth.js +1048 -0
  98. package/airtable_mcp_v3_advanced.js +1161 -0
  99. package/airtable_simple_production.js +532 -0
  100. package/docker-compose.production.yml +366 -0
  101. package/helm/airtable-mcp/Chart.yaml +122 -0
  102. package/helm/airtable-mcp/values.yaml +538 -0
  103. package/k8s/deployment.yaml +402 -0
  104. package/k8s/namespace.yaml +108 -0
  105. package/k8s/service.yaml +194 -0
  106. package/monitoring/alerts.yml +289 -0
  107. package/monitoring/prometheus.yml +224 -0
  108. package/package.json +6 -6
  109. package/.claude/settings.local.json +0 -12
  110. package/airtable-mcp-1.1.0.tgz +0 -0
  111. package/airtable_enhanced.js +0 -499
  112. package/airtable_simple_v1.2.4_backup.js +0 -277
  113. package/airtable_v1.4.0.js +0 -654
  114. package/rashidazarang-airtable-mcp-1.1.0.tgz +0 -0
  115. package/rashidazarang-airtable-mcp-1.2.0.tgz +0 -0
  116. package/rashidazarang-airtable-mcp-1.2.1.tgz +0 -0
@@ -0,0 +1,69 @@
1
+ # Extension Icons
2
+
3
+ This directory contains the required icon files for the Chrome extension.
4
+
5
+ ## Required Sizes
6
+
7
+ - **icon-16.png** (16x16) - Extension management page
8
+ - **icon-32.png** (32x32) - Extension management page & Windows
9
+ - **icon-48.png** (48x48) - Extensions page
10
+ - **icon-128.png** (128x128) - Chrome Web Store & install dialog
11
+
12
+ ## Design Guidelines
13
+
14
+ ### Visual Style
15
+ - **Symbol**: Simple paperclip or clipboard icon
16
+ - **Colors**: Airtable brand colors (blue #667eea to purple #764ba2 gradient)
17
+ - **Style**: Modern, clean, professional
18
+ - **Background**: Transparent PNG
19
+
20
+ ### Technical Requirements
21
+ - **Format**: PNG with transparent background
22
+ - **Quality**: High resolution, crisp at all sizes
23
+ - **Colors**: Web-safe colors that work on light and dark themes
24
+ - **Consistency**: Same design scaled to different sizes
25
+
26
+ ### Design Inspiration
27
+ The icon should represent:
28
+ - 📎 **Clipping/Saving**: Paperclip, clipboard, or save symbol
29
+ - 🔗 **Connection**: Link between web and Airtable
30
+ - ⚡ **Speed**: Quick, efficient data capture
31
+ - 🎯 **Precision**: Accurate data extraction
32
+
33
+ ## Creating Icons
34
+
35
+ ### Tools
36
+ - **Figma**: For vector-based design
37
+ - **Sketch**: Professional icon design
38
+ - **Adobe Illustrator**: Vector graphics
39
+ - **GIMP/Photoshop**: Raster editing
40
+
41
+ ### Process
42
+ 1. Design at highest resolution (128x128)
43
+ 2. Use vector graphics for scalability
44
+ 3. Export as PNG with transparent background
45
+ 4. Test visibility on Chrome toolbar
46
+ 5. Ensure clarity at 16x16 size
47
+
48
+ ## Placeholder Status
49
+
50
+ ⚠️ **Current files are placeholders**
51
+
52
+ The current icon files are text placeholders. For production deployment, replace with actual PNG icons following the design guidelines above.
53
+
54
+ ## Quick Icon Generation
55
+
56
+ For rapid prototyping, you can generate simple icons using:
57
+
58
+ ```bash
59
+ # Create simple colored squares as placeholders
60
+ convert -size 16x16 xc:'#667eea' extension/icons/icon-16.png
61
+ convert -size 32x32 xc:'#667eea' extension/icons/icon-32.png
62
+ convert -size 48x48 xc:'#667eea' extension/icons/icon-48.png
63
+ convert -size 128x128 xc:'#667eea' extension/icons/icon-128.png
64
+ ```
65
+
66
+ Or use online icon generators:
67
+ - [Favicon.io](https://favicon.io/)
68
+ - [RealFaviconGenerator](https://realfavicongenerator.net/)
69
+ - [Canva Icon Maker](https://canva.com)
@@ -0,0 +1,2 @@
1
+ # Placeholder icon - 128x128 pixels
2
+ # For production, replace with actual PNG file
@@ -0,0 +1,3 @@
1
+ # Placeholder icon - 16x16 pixels
2
+ # In a real deployment, this would be an actual PNG file
3
+ # For now, creating a text placeholder
@@ -0,0 +1,2 @@
1
+ # Placeholder icon - 32x32 pixels
2
+ # For production, replace with actual PNG file
@@ -0,0 +1,2 @@
1
+ # Placeholder icon - 48x48 pixels
2
+ # For production, replace with actual PNG file
@@ -0,0 +1,73 @@
1
+ {
2
+ "manifest_version": 3,
3
+ "name": "Airtable Clipper",
4
+ "version": "1.0.0",
5
+ "description": "Save anything from the web to Airtable with one click. Perfect for CRM, research, and data collection.",
6
+ "author": "Rashid Azarang",
7
+
8
+ "permissions": [
9
+ "activeTab",
10
+ "storage",
11
+ "contextMenus",
12
+ "notifications",
13
+ "alarms"
14
+ ],
15
+
16
+ "host_permissions": [
17
+ "https://*.linkedin.com/*",
18
+ "https://api.airtable.com/*",
19
+ "https://*/"
20
+ ],
21
+
22
+ "background": {
23
+ "service_worker": "background.js",
24
+ "type": "module"
25
+ },
26
+
27
+ "action": {
28
+ "default_popup": "popup.html",
29
+ "default_icon": {
30
+ "16": "icons/icon-16.png",
31
+ "32": "icons/icon-32.png",
32
+ "48": "icons/icon-48.png",
33
+ "128": "icons/icon-128.png"
34
+ }
35
+ },
36
+
37
+ "side_panel": {
38
+ "default_path": "sidepanel.html"
39
+ },
40
+
41
+ "content_scripts": [
42
+ {
43
+ "matches": ["<all_urls>"],
44
+ "js": ["content.js"],
45
+ "css": ["styles/content.css"],
46
+ "run_at": "document_idle"
47
+ }
48
+ ],
49
+
50
+ "web_accessible_resources": [
51
+ {
52
+ "resources": [
53
+ "lib/*.js",
54
+ "styles/*.css",
55
+ "icons/*.png",
56
+ "base-setup.html",
57
+ "base-setup.js"
58
+ ],
59
+ "matches": ["<all_urls>"]
60
+ }
61
+ ],
62
+
63
+ "icons": {
64
+ "16": "icons/icon-16.png",
65
+ "32": "icons/icon-32.png",
66
+ "48": "icons/icon-48.png",
67
+ "128": "icons/icon-128.png"
68
+ },
69
+
70
+ "content_security_policy": {
71
+ "extension_pages": "script-src 'self'; object-src 'self';"
72
+ }
73
+ }
@@ -0,0 +1,144 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Airtable Clipper</title>
7
+ <link rel="stylesheet" href="styles/popup.css">
8
+ </head>
9
+ <body>
10
+ <!-- Header -->
11
+ <div class="header">
12
+ <div class="logo">
13
+ <img src="icons/icon-32.png" alt="Airtable Clipper" class="logo-icon">
14
+ <h1>Airtable Clipper</h1>
15
+ </div>
16
+ <div class="connection-status" id="connectionStatus">
17
+ <span class="status-dot disconnected"></span>
18
+ <span class="status-text">Not Connected</span>
19
+ </div>
20
+ </div>
21
+
22
+ <!-- Quick Actions (shown when connected and on supported sites) -->
23
+ <div class="quick-actions" id="quickActions" style="display: none;">
24
+ <button class="action-btn primary" id="quickSaveBtn">
25
+ <span class="btn-icon">📎</span>
26
+ <div class="btn-content">
27
+ <span class="btn-text">Quick Save</span>
28
+ <span class="btn-subtext" id="quickSaveSubtext">Save this page</span>
29
+ </div>
30
+ </button>
31
+
32
+ <div class="action-row">
33
+ <button class="action-btn secondary" id="linkedinSaveBtn" style="display: none;">
34
+ <span class="btn-icon">👤</span>
35
+ <span class="btn-text">Save Profile</span>
36
+ </button>
37
+
38
+ <button class="action-btn secondary" id="bulkModeBtn">
39
+ <span class="btn-icon">📋</span>
40
+ <span class="btn-text">Bulk Mode</span>
41
+ </button>
42
+ </div>
43
+ </div>
44
+
45
+ <!-- Configuration (shown when not connected) -->
46
+ <div class="configuration" id="configuration">
47
+ <div class="config-section">
48
+ <h3>Get Started</h3>
49
+ <p class="help-text">Connect your Airtable to start saving web content</p>
50
+
51
+ <div class="form-group">
52
+ <label for="airtableToken">Personal Access Token</label>
53
+ <input type="password" id="airtableToken" placeholder="pat...">
54
+ <a href="https://airtable.com/create/tokens" target="_blank" class="help-link">
55
+ Get your token →
56
+ </a>
57
+ </div>
58
+
59
+ <div class="form-group">
60
+ <label for="baseId">Base ID</label>
61
+ <input type="text" id="baseId" placeholder="app...">
62
+ <span class="help-text">Found in your Airtable URL</span>
63
+ </div>
64
+
65
+ <button class="btn primary full-width" id="connectBtn">
66
+ <span class="btn-loading" id="connectLoading" style="display: none;">⏳</span>
67
+ <span class="btn-text" id="connectText">Connect to Airtable</span>
68
+ </button>
69
+
70
+ <div class="form-group" style="text-align: center; margin-top: 16px;">
71
+ <p class="help-text">Don't have the right Airtable structure yet?</p>
72
+ <button class="btn secondary full-width" id="setupDatabaseBtn">
73
+ 🚀 Create Optimized Database
74
+ </button>
75
+ </div>
76
+ </div>
77
+ </div>
78
+
79
+ <!-- Settings (shown when connected) -->
80
+ <div class="settings" id="settings" style="display: none;">
81
+ <div class="setting-item">
82
+ <label for="defaultTable">Default Table</label>
83
+ <select id="defaultTable">
84
+ <option value="Clips">Clips</option>
85
+ </select>
86
+ </div>
87
+
88
+ <div class="setting-item">
89
+ <label for="linkedinTable">LinkedIn Table</label>
90
+ <select id="linkedinTable">
91
+ <option value="Contacts">Contacts</option>
92
+ </select>
93
+ </div>
94
+
95
+ <div class="setting-item">
96
+ <label class="checkbox-label">
97
+ <input type="checkbox" id="autoSave">
98
+ <span class="checkmark"></span>
99
+ Auto-save LinkedIn profiles
100
+ </label>
101
+ </div>
102
+
103
+ <div class="setting-item">
104
+ <label class="checkbox-label">
105
+ <input type="checkbox" id="notifications" checked>
106
+ <span class="checkmark"></span>
107
+ Show notifications
108
+ </label>
109
+ </div>
110
+ </div>
111
+
112
+ <!-- Status Messages -->
113
+ <div class="status-message" id="statusMessage" style="display: none;">
114
+ <div class="status-content">
115
+ <span class="status-icon" id="statusIcon">✅</span>
116
+ <span class="status-text" id="statusText">Success!</span>
117
+ </div>
118
+ <button class="status-close" id="statusClose">×</button>
119
+ </div>
120
+
121
+ <!-- Footer -->
122
+ <div class="footer">
123
+ <div class="footer-links">
124
+ <button class="footer-link" id="settingsToggle">Settings</button>
125
+ <button class="footer-link" id="helpBtn">Help</button>
126
+ <button class="footer-link" id="sidePanelBtn">Dashboard</button>
127
+ </div>
128
+
129
+ <div class="usage-info" id="usageInfo" style="display: none;">
130
+ <span class="usage-text">
131
+ <span id="weeklyClips">0</span> clips this week
132
+ </span>
133
+ </div>
134
+ </div>
135
+
136
+ <!-- Loading Overlay -->
137
+ <div class="loading-overlay" id="loadingOverlay" style="display: none;">
138
+ <div class="loading-spinner"></div>
139
+ <div class="loading-text" id="loadingText">Processing...</div>
140
+ </div>
141
+
142
+ <script src="popup.js" type="module"></script>
143
+ </body>
144
+ </html>