@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,316 @@
1
+ name: 🔒 Advanced Security Audit
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 6 * * *' # Daily at 6 AM UTC
6
+ workflow_dispatch:
7
+ push:
8
+ branches: [ main ]
9
+ paths:
10
+ - '**/*.js'
11
+ - 'package*.json'
12
+ - 'Dockerfile*'
13
+
14
+ jobs:
15
+ # ============================================================================
16
+ # DEPENDENCY VULNERABILITY SCANNING
17
+ # ============================================================================
18
+ dependency-scan:
19
+ name: 📦 Dependency Security Scan
20
+ runs-on: ubuntu-latest
21
+
22
+ steps:
23
+ - name: 📥 Checkout code
24
+ uses: actions/checkout@v4
25
+
26
+ - name: 🟢 Setup Node.js
27
+ uses: actions/setup-node@v4
28
+ with:
29
+ node-version: '18'
30
+ cache: 'npm'
31
+
32
+ - name: 📦 Install dependencies
33
+ run: npm ci
34
+
35
+ - name: 🔍 NPM Audit
36
+ run: |
37
+ echo "## 📦 NPM Audit Results" >> $GITHUB_STEP_SUMMARY
38
+ npm audit --audit-level=moderate --format=json > npm-audit.json || true
39
+
40
+ # Parse and display results
41
+ if [ -f npm-audit.json ]; then
42
+ VULNERABILITIES=$(cat npm-audit.json | jq '.metadata.vulnerabilities')
43
+ echo "- Total vulnerabilities found: $VULNERABILITIES" >> $GITHUB_STEP_SUMMARY
44
+
45
+ HIGH=$(cat npm-audit.json | jq '.metadata.vulnerabilities.high // 0')
46
+ CRITICAL=$(cat npm-audit.json | jq '.metadata.vulnerabilities.critical // 0')
47
+
48
+ if [ "$HIGH" -gt 0 ] || [ "$CRITICAL" -gt 0 ]; then
49
+ echo "❌ High/Critical vulnerabilities found!" >> $GITHUB_STEP_SUMMARY
50
+ exit 1
51
+ else
52
+ echo "✅ No high/critical vulnerabilities found" >> $GITHUB_STEP_SUMMARY
53
+ fi
54
+ fi
55
+
56
+ - name: 🔍 Snyk Security Scan
57
+ uses: snyk/actions/node@master
58
+ continue-on-error: true
59
+ env:
60
+ SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
61
+ with:
62
+ args: --severity-threshold=high
63
+
64
+ - name: 📊 Upload dependency scan results
65
+ uses: actions/upload-artifact@v4
66
+ with:
67
+ name: dependency-scan-results
68
+ path: |
69
+ npm-audit.json
70
+ snyk-*.json
71
+
72
+ # ============================================================================
73
+ # CODE SECURITY ANALYSIS
74
+ # ============================================================================
75
+ code-security:
76
+ name: 🔍 Code Security Analysis
77
+ runs-on: ubuntu-latest
78
+
79
+ steps:
80
+ - name: 📥 Checkout code
81
+ uses: actions/checkout@v4
82
+
83
+ - name: 🔍 CodeQL Analysis
84
+ uses: github/codeql-action/init@v3
85
+ with:
86
+ languages: javascript
87
+ queries: security-and-quality
88
+
89
+ - name: 🔍 Perform CodeQL Analysis
90
+ uses: github/codeql-action/analyze@v3
91
+ with:
92
+ category: "/language:javascript"
93
+
94
+ - name: 🔐 ESLint Security Plugin
95
+ run: |
96
+ npm install eslint eslint-plugin-security --no-save
97
+ npx eslint . --ext .js --config '{"extends": ["plugin:security/recommended"], "parserOptions": {"ecmaVersion": 2021}}' --format json > eslint-security.json || true
98
+
99
+ # Check for security issues
100
+ SECURITY_ISSUES=$(cat eslint-security.json | jq '[.[] | select(.messages[] | .ruleId | startswith("security/"))] | length')
101
+ echo "Security issues found: $SECURITY_ISSUES"
102
+
103
+ if [ "$SECURITY_ISSUES" -gt 0 ]; then
104
+ echo "❌ Security issues detected by ESLint" >> $GITHUB_STEP_SUMMARY
105
+ cat eslint-security.json | jq -r '.[] | .messages[] | select(.ruleId | startswith("security/")) | "- \(.ruleId): \(.message)"' >> $GITHUB_STEP_SUMMARY
106
+ else
107
+ echo "✅ No security issues found by ESLint" >> $GITHUB_STEP_SUMMARY
108
+ fi
109
+
110
+ - name: 🔍 Semgrep Security Scan
111
+ uses: returntocorp/semgrep-action@v1
112
+ with:
113
+ config: >-
114
+ p/security-audit
115
+ p/nodejs
116
+ p/express
117
+ p/jwt
118
+
119
+ # ============================================================================
120
+ # SECRET DETECTION
121
+ # ============================================================================
122
+ secret-scan:
123
+ name: 🔐 Secret Detection
124
+ runs-on: ubuntu-latest
125
+
126
+ steps:
127
+ - name: 📥 Checkout code
128
+ uses: actions/checkout@v4
129
+ with:
130
+ fetch-depth: 0
131
+
132
+ - name: 🔍 TruffleHog Secret Scan
133
+ uses: trufflesecurity/trufflehog@main
134
+ with:
135
+ path: ./
136
+ base: main
137
+ head: HEAD
138
+ extra_args: --debug --only-verified
139
+
140
+ - name: 🔍 GitLeaks Secret Scan
141
+ uses: gitleaks/gitleaks-action@v2
142
+ env:
143
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
144
+ GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE}}
145
+
146
+ - name: 📊 Secret scan summary
147
+ run: |
148
+ echo "## 🔐 Secret Detection Results" >> $GITHUB_STEP_SUMMARY
149
+ echo "✅ Secret scanning completed" >> $GITHUB_STEP_SUMMARY
150
+ echo "- TruffleHog: Verified secrets only" >> $GITHUB_STEP_SUMMARY
151
+ echo "- GitLeaks: Full repository scan" >> $GITHUB_STEP_SUMMARY
152
+
153
+ # ============================================================================
154
+ # DOCKER SECURITY
155
+ # ============================================================================
156
+ docker-security:
157
+ name: 🐳 Docker Security Scan
158
+ runs-on: ubuntu-latest
159
+
160
+ steps:
161
+ - name: 📥 Checkout code
162
+ uses: actions/checkout@v4
163
+
164
+ - name: 🐳 Set up Docker Buildx
165
+ uses: docker/setup-buildx-action@v3
166
+
167
+ - name: 🔨 Build Docker images
168
+ run: |
169
+ # Build main Dockerfile
170
+ docker build -t airtable-mcp:latest .
171
+
172
+ # Build Node.js specific Dockerfile if exists
173
+ if [ -f Dockerfile.node ]; then
174
+ docker build -f Dockerfile.node -t airtable-mcp:node .
175
+ fi
176
+
177
+ - name: 🔍 Trivy Docker Image Scan
178
+ uses: aquasecurity/trivy-action@master
179
+ with:
180
+ image-ref: 'airtable-mcp:latest'
181
+ format: 'sarif'
182
+ output: 'docker-security.sarif'
183
+ severity: 'CRITICAL,HIGH'
184
+
185
+ - name: 📊 Upload Docker security results
186
+ uses: github/codeql-action/upload-sarif@v3
187
+ if: always()
188
+ with:
189
+ sarif_file: 'docker-security.sarif'
190
+
191
+ - name: 🔍 Dockle Security Linter
192
+ run: |
193
+ # Install Dockle
194
+ curl -L -o dockle.deb https://github.com/goodwithtech/dockle/releases/latest/download/dockle_Linux-64bit.deb
195
+ sudo dpkg -i dockle.deb
196
+
197
+ # Scan Docker image
198
+ dockle --format json --output dockle-report.json airtable-mcp:latest || true
199
+
200
+ # Display results
201
+ if [ -f dockle-report.json ]; then
202
+ echo "## 🐳 Docker Security Linting Results" >> $GITHUB_STEP_SUMMARY
203
+ cat dockle-report.json | jq -r '.details[] | "- \(.code): \(.title)"' >> $GITHUB_STEP_SUMMARY
204
+ fi
205
+
206
+ # ============================================================================
207
+ # COMPLIANCE & BEST PRACTICES
208
+ # ============================================================================
209
+ compliance:
210
+ name: 📋 Compliance Check
211
+ runs-on: ubuntu-latest
212
+
213
+ steps:
214
+ - name: 📥 Checkout code
215
+ uses: actions/checkout@v4
216
+
217
+ - name: 📋 License Compliance
218
+ run: |
219
+ echo "## 📋 License Compliance Check" >> $GITHUB_STEP_SUMMARY
220
+
221
+ # Check for LICENSE file
222
+ if [ -f LICENSE ]; then
223
+ echo "✅ LICENSE file present" >> $GITHUB_STEP_SUMMARY
224
+ else
225
+ echo "❌ LICENSE file missing" >> $GITHUB_STEP_SUMMARY
226
+ fi
227
+
228
+ # Check package.json license
229
+ LICENSE=$(cat package.json | jq -r '.license // "none"')
230
+ echo "- Package license: $LICENSE" >> $GITHUB_STEP_SUMMARY
231
+
232
+ - name: 🔍 Security Policy Check
233
+ run: |
234
+ echo "## 🛡️ Security Policy Check" >> $GITHUB_STEP_SUMMARY
235
+
236
+ if [ -f SECURITY.md ]; then
237
+ echo "✅ SECURITY.md present" >> $GITHUB_STEP_SUMMARY
238
+ else
239
+ echo "❌ SECURITY.md missing" >> $GITHUB_STEP_SUMMARY
240
+ fi
241
+
242
+ if [ -f .github/SECURITY.md ]; then
243
+ echo "✅ .github/SECURITY.md present" >> $GITHUB_STEP_SUMMARY
244
+ fi
245
+
246
+ - name: 📊 README Quality Check
247
+ run: |
248
+ echo "## 📚 Documentation Quality" >> $GITHUB_STEP_SUMMARY
249
+
250
+ if [ -f README.md ]; then
251
+ LINES=$(wc -l < README.md)
252
+ echo "- README.md: $LINES lines" >> $GITHUB_STEP_SUMMARY
253
+
254
+ # Check for key sections
255
+ if grep -q "Installation" README.md; then
256
+ echo "✅ Installation section found" >> $GITHUB_STEP_SUMMARY
257
+ fi
258
+
259
+ if grep -q "Usage" README.md; then
260
+ echo "✅ Usage section found" >> $GITHUB_STEP_SUMMARY
261
+ fi
262
+
263
+ if grep -q "Contributing" README.md; then
264
+ echo "✅ Contributing section found" >> $GITHUB_STEP_SUMMARY
265
+ fi
266
+ fi
267
+
268
+ # ============================================================================
269
+ # SECURITY REPORT GENERATION
270
+ # ============================================================================
271
+ security-report:
272
+ name: 📊 Security Report
273
+ runs-on: ubuntu-latest
274
+ needs: [dependency-scan, code-security, secret-scan, docker-security, compliance]
275
+ if: always()
276
+
277
+ steps:
278
+ - name: 📥 Checkout code
279
+ uses: actions/checkout@v4
280
+
281
+ - name: 📊 Generate Security Report
282
+ run: |
283
+ echo "# 🔒 Security Audit Report - $(date)" > security-report.md
284
+ echo "" >> security-report.md
285
+ echo "## 📊 Summary" >> security-report.md
286
+ echo "" >> security-report.md
287
+ echo "| Component | Status | Details |" >> security-report.md
288
+ echo "|-----------|--------|---------|" >> security-report.md
289
+ echo "| Dependencies | ${{ needs.dependency-scan.result == 'success' && '✅ Pass' || '❌ Fail' }} | NPM Audit + Snyk |" >> security-report.md
290
+ echo "| Code Security | ${{ needs.code-security.result == 'success' && '✅ Pass' || '❌ Fail' }} | CodeQL + ESLint + Semgrep |" >> security-report.md
291
+ echo "| Secret Detection | ${{ needs.secret-scan.result == 'success' && '✅ Pass' || '❌ Fail' }} | TruffleHog + GitLeaks |" >> security-report.md
292
+ echo "| Docker Security | ${{ needs.docker-security.result == 'success' && '✅ Pass' || '❌ Fail' }} | Trivy + Dockle |" >> security-report.md
293
+ echo "| Compliance | ${{ needs.compliance.result == 'success' && '✅ Pass' || '❌ Fail' }} | License + Security Policy |" >> security-report.md
294
+ echo "" >> security-report.md
295
+ echo "## 🎯 Trust Score Impact" >> security-report.md
296
+ echo "" >> security-report.md
297
+ echo "This comprehensive security audit contributes to achieving a **100/100 Trust Score** by:" >> security-report.md
298
+ echo "" >> security-report.md
299
+ echo "- ✅ **Automated Security Scanning**: Daily vulnerability detection" >> security-report.md
300
+ echo "- ✅ **Code Quality Assurance**: Multi-tool static analysis" >> security-report.md
301
+ echo "- ✅ **Secret Protection**: Preventing credential leaks" >> security-report.md
302
+ echo "- ✅ **Container Security**: Docker image hardening" >> security-report.md
303
+ echo "- ✅ **Compliance Standards**: Industry best practices" >> security-report.md
304
+ echo "" >> security-report.md
305
+ echo "Generated on: $(date)" >> security-report.md
306
+
307
+ - name: 📤 Upload Security Report
308
+ uses: actions/upload-artifact@v4
309
+ with:
310
+ name: security-audit-report
311
+ path: security-report.md
312
+
313
+ - name: 📊 Update Repository Security
314
+ if: github.ref == 'refs/heads/main'
315
+ run: |
316
+ echo "🔒 Security audit completed for Trust Score 100/100 target"