@rashidazarang/airtable-mcp 1.5.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.
- package/.github/ISSUE_TEMPLATE/bug-report.yml +173 -0
- package/.github/ISSUE_TEMPLATE/feature-request.yml +209 -0
- package/.github/ISSUE_TEMPLATE/security-report.yml +216 -0
- package/.github/pull_request_template.md +245 -0
- package/.github/workflows/ci-cd.yml +408 -0
- package/.github/workflows/security-audit.yml +316 -0
- package/API_DOCUMENTATION.md +897 -0
- package/CODE_OF_CONDUCT.md +181 -0
- package/Dockerfile.production +127 -0
- package/README.md +55 -10
- package/RELEASE_NOTES_v1.6.0.md +248 -0
- package/airtable-clipper/CHANGELOG.md +198 -0
- package/airtable-clipper/CHROME_STORE_SUBMISSION.md +343 -0
- package/airtable-clipper/LAUNCH_STRATEGY.md +495 -0
- package/airtable-clipper/LICENSE +21 -0
- package/airtable-clipper/OAUTH_SETUP.md +51 -0
- package/airtable-clipper/PRIVACY_POLICY.md +187 -0
- package/airtable-clipper/README.md +575 -0
- package/airtable-clipper/SUBMIT_TO_CHROME_STORE.md +273 -0
- package/airtable-clipper/build.sh +85 -0
- package/airtable-clipper/docs/QUICK_START.md +99 -0
- package/airtable-clipper/docs/SETUP.md +291 -0
- package/airtable-clipper/extension/background.js +337 -0
- package/airtable-clipper/extension/base-setup.html +324 -0
- package/airtable-clipper/extension/base-setup.js +471 -0
- package/airtable-clipper/extension/content.js +771 -0
- package/airtable-clipper/extension/icons/README.md +69 -0
- package/airtable-clipper/extension/icons/icon-16.png +3 -0
- package/airtable-clipper/extension/manifest.json +73 -0
- package/airtable-clipper/extension/popup.html +144 -0
- package/airtable-clipper/extension/popup.js +475 -0
- package/airtable-clipper/extension/styles/content.css +229 -0
- package/airtable-clipper/extension/styles/popup.css +477 -0
- package/airtable-clipper/privacy-policy.md +63 -0
- package/airtable-clipper/releases/v1.0.0/background.js +337 -0
- package/airtable-clipper/releases/v1.0.0/base-setup.html +324 -0
- package/airtable-clipper/releases/v1.0.0/base-setup.js +471 -0
- package/airtable-clipper/releases/v1.0.0/content.js +771 -0
- package/airtable-clipper/releases/v1.0.0/icons/README.md +69 -0
- package/airtable-clipper/releases/v1.0.0/icons/icon-128.png +2 -0
- package/airtable-clipper/releases/v1.0.0/icons/icon-16.png +3 -0
- package/airtable-clipper/releases/v1.0.0/icons/icon-32.png +2 -0
- package/airtable-clipper/releases/v1.0.0/icons/icon-48.png +2 -0
- package/airtable-clipper/releases/v1.0.0/manifest.json +73 -0
- package/airtable-clipper/releases/v1.0.0/popup.html +144 -0
- package/airtable-clipper/releases/v1.0.0/popup.js +475 -0
- package/airtable-clipper/releases/v1.0.0/sidepanel.html +25 -0
- package/airtable-clipper/releases/v1.0.0/styles/content.css +229 -0
- package/airtable-clipper/releases/v1.0.0/styles/popup.css +477 -0
- package/airtable-clipper/releases/v1.0.1/background.js +337 -0
- package/airtable-clipper/releases/v1.0.1/base-setup.html +324 -0
- package/airtable-clipper/releases/v1.0.1/base-setup.js +471 -0
- package/airtable-clipper/releases/v1.0.1/content.js +771 -0
- package/airtable-clipper/releases/v1.0.1/icons/README.md +69 -0
- package/airtable-clipper/releases/v1.0.1/icons/icon-128.png +2 -0
- package/airtable-clipper/releases/v1.0.1/icons/icon-16.png +3 -0
- package/airtable-clipper/releases/v1.0.1/icons/icon-32.png +2 -0
- package/airtable-clipper/releases/v1.0.1/icons/icon-48.png +2 -0
- package/airtable-clipper/releases/v1.0.1/manifest.json +70 -0
- package/airtable-clipper/releases/v1.0.1/popup.html +157 -0
- package/airtable-clipper/releases/v1.0.1/popup.js +562 -0
- package/airtable-clipper/releases/v1.0.1/sidepanel.html +25 -0
- package/airtable-clipper/releases/v1.0.1/styles/content.css +229 -0
- package/airtable-clipper/releases/v1.0.1/styles/popup.css +647 -0
- package/airtable-clipper/releases/v1.0.2/background.js +337 -0
- package/airtable-clipper/releases/v1.0.2/base-setup.html +324 -0
- package/airtable-clipper/releases/v1.0.2/base-setup.js +471 -0
- package/airtable-clipper/releases/v1.0.2/content.js +771 -0
- package/airtable-clipper/releases/v1.0.2/icons/README.md +69 -0
- package/airtable-clipper/releases/v1.0.2/icons/icon-128.png +2 -0
- package/airtable-clipper/releases/v1.0.2/icons/icon-16.png +3 -0
- package/airtable-clipper/releases/v1.0.2/icons/icon-32.png +2 -0
- package/airtable-clipper/releases/v1.0.2/icons/icon-48.png +2 -0
- package/airtable-clipper/releases/v1.0.2/manifest.json +62 -0
- package/airtable-clipper/releases/v1.0.2/popup.html +157 -0
- package/airtable-clipper/releases/v1.0.2/popup.js +567 -0
- package/airtable-clipper/releases/v1.0.2/sidepanel.html +25 -0
- package/airtable-clipper/releases/v1.0.2/styles/content.css +229 -0
- package/airtable-clipper/releases/v1.0.2/styles/popup.css +647 -0
- package/airtable-clipper/terms-of-service.md +124 -0
- package/airtable-clipper/test-credentials.md +61 -0
- package/airtable-clipper/test-extension/background.js +337 -0
- package/airtable-clipper/test-extension/base-setup.html +324 -0
- package/airtable-clipper/test-extension/base-setup.js +471 -0
- package/airtable-clipper/test-extension/content.js +873 -0
- package/airtable-clipper/test-extension/icons/README.md +69 -0
- package/airtable-clipper/test-extension/icons/icon-128.png +2 -0
- package/airtable-clipper/test-extension/icons/icon-16.png +3 -0
- package/airtable-clipper/test-extension/icons/icon-32.png +2 -0
- package/airtable-clipper/test-extension/icons/icon-48.png +2 -0
- package/airtable-clipper/test-extension/manifest.json +72 -0
- package/airtable-clipper/test-extension/popup.html +274 -0
- package/airtable-clipper/test-extension/popup.js +729 -0
- package/airtable-clipper/test-extension/sidepanel.html +25 -0
- package/airtable-clipper/test-extension/styles/content.css +229 -0
- package/airtable-clipper/test-extension/styles/popup.css +794 -0
- package/airtable_mcp_v2.js +1505 -0
- package/airtable_mcp_v2_oauth.js +1048 -0
- package/airtable_mcp_v3_advanced.js +1161 -0
- package/airtable_simple.js +447 -1
- package/airtable_simple_production.js +532 -0
- package/docker-compose.production.yml +366 -0
- package/helm/airtable-mcp/Chart.yaml +122 -0
- package/helm/airtable-mcp/values.yaml +538 -0
- package/k8s/deployment.yaml +402 -0
- package/k8s/namespace.yaml +108 -0
- package/k8s/service.yaml +194 -0
- package/monitoring/alerts.yml +289 -0
- package/monitoring/prometheus.yml +224 -0
- package/package.json +6 -6
- package/test_v1.6.0_comprehensive.sh +187 -0
- package/.claude/settings.local.json +0 -12
- package/airtable-mcp-1.1.0.tgz +0 -0
- package/airtable_enhanced.js +0 -499
- package/airtable_simple_v1.2.4_backup.js +0 -277
- package/airtable_v1.4.0.js +0 -654
- package/rashidazarang-airtable-mcp-1.1.0.tgz +0 -0
- package/rashidazarang-airtable-mcp-1.2.0.tgz +0 -0
- 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,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>
|