@rashidazarang/airtable-mcp 2.1.0 → 2.1.1

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 (152) hide show
  1. package/package.json +10 -1
  2. package/.github/ISSUE_TEMPLATE/bug-report.yml +0 -173
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  4. package/.github/ISSUE_TEMPLATE/custom.md +0 -10
  5. package/.github/ISSUE_TEMPLATE/feature-request.yml +0 -209
  6. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  7. package/.github/ISSUE_TEMPLATE/security-report.yml +0 -216
  8. package/.github/pull_request_template.md +0 -245
  9. package/.github/workflows/ci-cd.yml +0 -408
  10. package/.github/workflows/security-audit.yml +0 -316
  11. package/API_DOCUMENTATION.md +0 -897
  12. package/CAPABILITY_REPORT.md +0 -118
  13. package/CLAUDE_INTEGRATION.md +0 -96
  14. package/CODE_OF_CONDUCT.md +0 -181
  15. package/CONTRIBUTING.md +0 -81
  16. package/DEVELOPMENT.md +0 -190
  17. package/Dockerfile +0 -39
  18. package/Dockerfile.node +0 -20
  19. package/Dockerfile.production +0 -127
  20. package/IMPROVEMENT_PROPOSAL.md +0 -371
  21. package/INSTALLATION.md +0 -183
  22. package/ISSUE_RESPONSES.md +0 -171
  23. package/MCP_REVIEW_SUMMARY.md +0 -142
  24. package/QUICK_START.md +0 -60
  25. package/RELEASE_NOTES_v1.2.0.md +0 -50
  26. package/RELEASE_NOTES_v1.2.1.md +0 -40
  27. package/RELEASE_NOTES_v1.2.2.md +0 -48
  28. package/RELEASE_NOTES_v1.2.3.md +0 -105
  29. package/RELEASE_NOTES_v1.2.4.md +0 -60
  30. package/RELEASE_NOTES_v1.4.0.md +0 -104
  31. package/RELEASE_NOTES_v1.5.0.md +0 -185
  32. package/RELEASE_NOTES_v1.6.0.md +0 -248
  33. package/SECURITY_NOTICE.md +0 -40
  34. package/airtable-clipper/CHANGELOG.md +0 -198
  35. package/airtable-clipper/CHROME_STORE_SUBMISSION.md +0 -343
  36. package/airtable-clipper/LAUNCH_STRATEGY.md +0 -495
  37. package/airtable-clipper/LICENSE +0 -21
  38. package/airtable-clipper/OAUTH_SETUP.md +0 -51
  39. package/airtable-clipper/PRIVACY_POLICY.md +0 -187
  40. package/airtable-clipper/README.md +0 -575
  41. package/airtable-clipper/SUBMIT_TO_CHROME_STORE.md +0 -273
  42. package/airtable-clipper/build.sh +0 -85
  43. package/airtable-clipper/docs/QUICK_START.md +0 -99
  44. package/airtable-clipper/docs/SETUP.md +0 -291
  45. package/airtable-clipper/extension/background.js +0 -337
  46. package/airtable-clipper/extension/base-setup.html +0 -324
  47. package/airtable-clipper/extension/base-setup.js +0 -471
  48. package/airtable-clipper/extension/content.js +0 -771
  49. package/airtable-clipper/extension/icons/README.md +0 -69
  50. package/airtable-clipper/extension/icons/icon-16.png +0 -3
  51. package/airtable-clipper/extension/manifest.json +0 -73
  52. package/airtable-clipper/extension/popup.html +0 -144
  53. package/airtable-clipper/extension/popup.js +0 -475
  54. package/airtable-clipper/extension/styles/content.css +0 -229
  55. package/airtable-clipper/extension/styles/popup.css +0 -477
  56. package/airtable-clipper/privacy-policy.md +0 -63
  57. package/airtable-clipper/releases/v1.0.0/background.js +0 -337
  58. package/airtable-clipper/releases/v1.0.0/base-setup.html +0 -324
  59. package/airtable-clipper/releases/v1.0.0/base-setup.js +0 -471
  60. package/airtable-clipper/releases/v1.0.0/content.js +0 -771
  61. package/airtable-clipper/releases/v1.0.0/icons/README.md +0 -69
  62. package/airtable-clipper/releases/v1.0.0/icons/icon-128.png +0 -2
  63. package/airtable-clipper/releases/v1.0.0/icons/icon-16.png +0 -3
  64. package/airtable-clipper/releases/v1.0.0/icons/icon-32.png +0 -2
  65. package/airtable-clipper/releases/v1.0.0/icons/icon-48.png +0 -2
  66. package/airtable-clipper/releases/v1.0.0/manifest.json +0 -73
  67. package/airtable-clipper/releases/v1.0.0/popup.html +0 -144
  68. package/airtable-clipper/releases/v1.0.0/popup.js +0 -475
  69. package/airtable-clipper/releases/v1.0.0/sidepanel.html +0 -25
  70. package/airtable-clipper/releases/v1.0.0/styles/content.css +0 -229
  71. package/airtable-clipper/releases/v1.0.0/styles/popup.css +0 -477
  72. package/airtable-clipper/releases/v1.0.1/background.js +0 -337
  73. package/airtable-clipper/releases/v1.0.1/base-setup.html +0 -324
  74. package/airtable-clipper/releases/v1.0.1/base-setup.js +0 -471
  75. package/airtable-clipper/releases/v1.0.1/content.js +0 -771
  76. package/airtable-clipper/releases/v1.0.1/icons/README.md +0 -69
  77. package/airtable-clipper/releases/v1.0.1/icons/icon-128.png +0 -2
  78. package/airtable-clipper/releases/v1.0.1/icons/icon-16.png +0 -3
  79. package/airtable-clipper/releases/v1.0.1/icons/icon-32.png +0 -2
  80. package/airtable-clipper/releases/v1.0.1/icons/icon-48.png +0 -2
  81. package/airtable-clipper/releases/v1.0.1/manifest.json +0 -70
  82. package/airtable-clipper/releases/v1.0.1/popup.html +0 -157
  83. package/airtable-clipper/releases/v1.0.1/popup.js +0 -562
  84. package/airtable-clipper/releases/v1.0.1/sidepanel.html +0 -25
  85. package/airtable-clipper/releases/v1.0.1/styles/content.css +0 -229
  86. package/airtable-clipper/releases/v1.0.1/styles/popup.css +0 -647
  87. package/airtable-clipper/releases/v1.0.2/background.js +0 -337
  88. package/airtable-clipper/releases/v1.0.2/base-setup.html +0 -324
  89. package/airtable-clipper/releases/v1.0.2/base-setup.js +0 -471
  90. package/airtable-clipper/releases/v1.0.2/content.js +0 -771
  91. package/airtable-clipper/releases/v1.0.2/icons/README.md +0 -69
  92. package/airtable-clipper/releases/v1.0.2/icons/icon-128.png +0 -2
  93. package/airtable-clipper/releases/v1.0.2/icons/icon-16.png +0 -3
  94. package/airtable-clipper/releases/v1.0.2/icons/icon-32.png +0 -2
  95. package/airtable-clipper/releases/v1.0.2/icons/icon-48.png +0 -2
  96. package/airtable-clipper/releases/v1.0.2/manifest.json +0 -62
  97. package/airtable-clipper/releases/v1.0.2/popup.html +0 -157
  98. package/airtable-clipper/releases/v1.0.2/popup.js +0 -567
  99. package/airtable-clipper/releases/v1.0.2/sidepanel.html +0 -25
  100. package/airtable-clipper/releases/v1.0.2/styles/content.css +0 -229
  101. package/airtable-clipper/releases/v1.0.2/styles/popup.css +0 -647
  102. package/airtable-clipper/terms-of-service.md +0 -124
  103. package/airtable-clipper/test-credentials.md +0 -61
  104. package/airtable-clipper/test-extension/background.js +0 -337
  105. package/airtable-clipper/test-extension/base-setup.html +0 -324
  106. package/airtable-clipper/test-extension/base-setup.js +0 -471
  107. package/airtable-clipper/test-extension/content.js +0 -873
  108. package/airtable-clipper/test-extension/icons/README.md +0 -69
  109. package/airtable-clipper/test-extension/icons/icon-128.png +0 -2
  110. package/airtable-clipper/test-extension/icons/icon-16.png +0 -3
  111. package/airtable-clipper/test-extension/icons/icon-32.png +0 -2
  112. package/airtable-clipper/test-extension/icons/icon-48.png +0 -2
  113. package/airtable-clipper/test-extension/manifest.json +0 -72
  114. package/airtable-clipper/test-extension/popup.html +0 -274
  115. package/airtable-clipper/test-extension/popup.js +0 -729
  116. package/airtable-clipper/test-extension/sidepanel.html +0 -25
  117. package/airtable-clipper/test-extension/styles/content.css +0 -229
  118. package/airtable-clipper/test-extension/styles/popup.css +0 -794
  119. package/airtable_mcp/__init__.py +0 -5
  120. package/airtable_mcp/src/server.py +0 -329
  121. package/airtable_mcp_v2.js +0 -1505
  122. package/airtable_mcp_v2_oauth.js +0 -1048
  123. package/airtable_mcp_v3_advanced.js +0 -1161
  124. package/cleanup.sh +0 -71
  125. package/docker-compose.production.yml +0 -366
  126. package/helm/airtable-mcp/Chart.yaml +0 -122
  127. package/helm/airtable-mcp/values.yaml +0 -538
  128. package/index.js +0 -179
  129. package/inspector.py +0 -148
  130. package/inspector_server.py +0 -337
  131. package/k8s/deployment.yaml +0 -402
  132. package/k8s/namespace.yaml +0 -108
  133. package/k8s/service.yaml +0 -194
  134. package/monitoring/alerts.yml +0 -289
  135. package/monitoring/prometheus.yml +0 -224
  136. package/publish-steps.txt +0 -27
  137. package/quick_test.sh +0 -30
  138. package/requirements.txt +0 -10
  139. package/setup.py +0 -29
  140. package/simple_airtable_server.py +0 -151
  141. package/smithery.yaml +0 -45
  142. package/test_all_features.sh +0 -146
  143. package/test_all_operations.sh +0 -120
  144. package/test_client.py +0 -70
  145. package/test_enhanced_features.js +0 -389
  146. package/test_mcp_comprehensive.js +0 -163
  147. package/test_mock_server.js +0 -180
  148. package/test_v1.4.0_final.sh +0 -131
  149. package/test_v1.5.0_comprehensive.sh +0 -96
  150. package/test_v1.5.0_final.sh +0 -224
  151. package/test_v1.6.0_comprehensive.sh +0 -187
  152. package/test_webhooks.sh +0 -105
@@ -1,289 +0,0 @@
1
- # Prometheus Alerting Rules for Airtable MCP Server
2
- # Comprehensive monitoring for Trust Score 100/100
3
-
4
- groups:
5
- # ============================================================================
6
- # HIGH SEVERITY ALERTS - Immediate Action Required
7
- # ============================================================================
8
- - name: airtable-mcp.critical
9
- interval: 30s
10
- rules:
11
- # Service Down
12
- - alert: AirtableMCPDown
13
- expr: up{job="airtable-mcp"} == 0
14
- for: 1m
15
- labels:
16
- severity: critical
17
- service: airtable-mcp
18
- trust_score_impact: high
19
- annotations:
20
- summary: "Airtable MCP Server is down"
21
- description: "Airtable MCP Server has been down for more than 1 minute. Instance: {{ $labels.instance }}"
22
- runbook_url: "https://docs.example.com/runbooks/mcp-down"
23
- action: "Check server logs and restart if necessary"
24
-
25
- # High Error Rate
26
- - alert: AirtableMCPHighErrorRate
27
- expr: rate(airtable_mcp_http_requests_total{status=~"5.."}[5m]) / rate(airtable_mcp_http_requests_total[5m]) > 0.1
28
- for: 2m
29
- labels:
30
- severity: critical
31
- service: airtable-mcp
32
- trust_score_impact: high
33
- annotations:
34
- summary: "High error rate in Airtable MCP Server"
35
- description: "Error rate is {{ $value | humanizePercentage }} for instance {{ $labels.instance }}"
36
- runbook_url: "https://docs.example.com/runbooks/high-error-rate"
37
-
38
- # Memory Usage Critical
39
- - alert: AirtableMCPMemoryUsageCritical
40
- expr: (airtable_mcp_process_resident_memory_bytes / airtable_mcp_process_memory_limit_bytes) > 0.9
41
- for: 5m
42
- labels:
43
- severity: critical
44
- service: airtable-mcp
45
- trust_score_impact: medium
46
- annotations:
47
- summary: "Critical memory usage in Airtable MCP Server"
48
- description: "Memory usage is {{ $value | humanizePercentage }} for instance {{ $labels.instance }}"
49
- runbook_url: "https://docs.example.com/runbooks/memory-usage"
50
-
51
- # Response Time Critical
52
- - alert: AirtableMCPResponseTimeCritical
53
- expr: histogram_quantile(0.95, rate(airtable_mcp_http_request_duration_seconds_bucket[5m])) > 5
54
- for: 3m
55
- labels:
56
- severity: critical
57
- service: airtable-mcp
58
- trust_score_impact: high
59
- annotations:
60
- summary: "Critical response time in Airtable MCP Server"
61
- description: "95th percentile response time is {{ $value }}s for instance {{ $labels.instance }}"
62
- runbook_url: "https://docs.example.com/runbooks/response-time"
63
-
64
- # Rate Limit Exhaustion
65
- - alert: AirtableMCPRateLimitExhaustion
66
- expr: rate(airtable_mcp_rate_limit_exceeded_total[5m]) > 10
67
- for: 1m
68
- labels:
69
- severity: critical
70
- service: airtable-mcp
71
- trust_score_impact: high
72
- annotations:
73
- summary: "Rate limit exhaustion in Airtable MCP Server"
74
- description: "Rate limit exceeded {{ $value }} times per second for instance {{ $labels.instance }}"
75
- runbook_url: "https://docs.example.com/runbooks/rate-limit"
76
-
77
- # ============================================================================
78
- # WARNING ALERTS - Attention Required
79
- # ============================================================================
80
- - name: airtable-mcp.warning
81
- interval: 60s
82
- rules:
83
- # High Memory Usage
84
- - alert: AirtableMCPHighMemoryUsage
85
- expr: (airtable_mcp_process_resident_memory_bytes / airtable_mcp_process_memory_limit_bytes) > 0.7
86
- for: 10m
87
- labels:
88
- severity: warning
89
- service: airtable-mcp
90
- trust_score_impact: low
91
- annotations:
92
- summary: "High memory usage in Airtable MCP Server"
93
- description: "Memory usage is {{ $value | humanizePercentage }} for instance {{ $labels.instance }}"
94
- runbook_url: "https://docs.example.com/runbooks/memory-usage"
95
-
96
- # High CPU Usage
97
- - alert: AirtableMCPHighCPUUsage
98
- expr: rate(airtable_mcp_process_cpu_seconds_total[5m]) > 0.8
99
- for: 10m
100
- labels:
101
- severity: warning
102
- service: airtable-mcp
103
- trust_score_impact: low
104
- annotations:
105
- summary: "High CPU usage in Airtable MCP Server"
106
- description: "CPU usage is {{ $value | humanizePercentage }} for instance {{ $labels.instance }}"
107
- runbook_url: "https://docs.example.com/runbooks/cpu-usage"
108
-
109
- # Slow Response Time
110
- - alert: AirtableMCPSlowResponseTime
111
- expr: histogram_quantile(0.95, rate(airtable_mcp_http_request_duration_seconds_bucket[5m])) > 2
112
- for: 10m
113
- labels:
114
- severity: warning
115
- service: airtable-mcp
116
- trust_score_impact: medium
117
- annotations:
118
- summary: "Slow response time in Airtable MCP Server"
119
- description: "95th percentile response time is {{ $value }}s for instance {{ $labels.instance }}"
120
- runbook_url: "https://docs.example.com/runbooks/response-time"
121
-
122
- # High Request Rate
123
- - alert: AirtableMCPHighRequestRate
124
- expr: rate(airtable_mcp_http_requests_total[5m]) > 50
125
- for: 10m
126
- labels:
127
- severity: warning
128
- service: airtable-mcp
129
- trust_score_impact: low
130
- annotations:
131
- summary: "High request rate in Airtable MCP Server"
132
- description: "Request rate is {{ $value }} requests/second for instance {{ $labels.instance }}"
133
- runbook_url: "https://docs.example.com/runbooks/high-request-rate"
134
-
135
- # OAuth Token Expiring Soon
136
- - alert: AirtableMCPOAuthTokenExpiring
137
- expr: airtable_mcp_oauth_token_expires_in_seconds < 3600
138
- for: 5m
139
- labels:
140
- severity: warning
141
- service: airtable-mcp
142
- trust_score_impact: medium
143
- annotations:
144
- summary: "OAuth token expiring soon"
145
- description: "OAuth token expires in {{ $value }} seconds for instance {{ $labels.instance }}"
146
- runbook_url: "https://docs.example.com/runbooks/oauth-token"
147
-
148
- # Cache Hit Rate Low
149
- - alert: AirtableMCPLowCacheHitRate
150
- expr: (rate(airtable_mcp_cache_hits_total[5m]) / rate(airtable_mcp_cache_requests_total[5m])) < 0.7
151
- for: 15m
152
- labels:
153
- severity: warning
154
- service: airtable-mcp
155
- trust_score_impact: low
156
- annotations:
157
- summary: "Low cache hit rate in Airtable MCP Server"
158
- description: "Cache hit rate is {{ $value | humanizePercentage }} for instance {{ $labels.instance }}"
159
- runbook_url: "https://docs.example.com/runbooks/cache-performance"
160
-
161
- # ============================================================================
162
- # SECURITY ALERTS - Security-related monitoring
163
- # ============================================================================
164
- - name: airtable-mcp.security
165
- interval: 30s
166
- rules:
167
- # Authentication Failures
168
- - alert: AirtableMCPAuthFailures
169
- expr: rate(airtable_mcp_auth_failures_total[5m]) > 5
170
- for: 2m
171
- labels:
172
- severity: warning
173
- service: airtable-mcp
174
- category: security
175
- trust_score_impact: high
176
- annotations:
177
- summary: "High authentication failure rate"
178
- description: "Authentication failure rate is {{ $value }} failures/second for instance {{ $labels.instance }}"
179
- runbook_url: "https://docs.example.com/runbooks/auth-failures"
180
-
181
- # Suspicious Request Patterns
182
- - alert: AirtableMCPSuspiciousRequests
183
- expr: rate(airtable_mcp_http_requests_total{status="400"}[5m]) > 10
184
- for: 5m
185
- labels:
186
- severity: warning
187
- service: airtable-mcp
188
- category: security
189
- trust_score_impact: medium
190
- annotations:
191
- summary: "High rate of suspicious requests"
192
- description: "Bad request rate is {{ $value }} requests/second for instance {{ $labels.instance }}"
193
- runbook_url: "https://docs.example.com/runbooks/suspicious-requests"
194
-
195
- # Rate Limit Violations
196
- - alert: AirtableMCPRateLimitViolations
197
- expr: rate(airtable_mcp_rate_limit_exceeded_total[5m]) > 1
198
- for: 5m
199
- labels:
200
- severity: info
201
- service: airtable-mcp
202
- category: security
203
- trust_score_impact: low
204
- annotations:
205
- summary: "Rate limit violations detected"
206
- description: "Rate limit exceeded {{ $value }} times/second for instance {{ $labels.instance }}"
207
- runbook_url: "https://docs.example.com/runbooks/rate-limit-violations"
208
-
209
- # ============================================================================
210
- # BUSINESS METRICS - Trust Score related alerts
211
- # ============================================================================
212
- - name: airtable-mcp.business
213
- interval: 60s
214
- rules:
215
- # API Success Rate
216
- - alert: AirtableMCPLowSuccessRate
217
- expr: (rate(airtable_mcp_http_requests_total{status=~"2.."}[10m]) / rate(airtable_mcp_http_requests_total[10m])) < 0.95
218
- for: 10m
219
- labels:
220
- severity: warning
221
- service: airtable-mcp
222
- category: business
223
- trust_score_impact: high
224
- annotations:
225
- summary: "Low API success rate"
226
- description: "API success rate is {{ $value | humanizePercentage }} for instance {{ $labels.instance }}"
227
- runbook_url: "https://docs.example.com/runbooks/success-rate"
228
-
229
- # Trust Score Degradation
230
- - alert: AirtableMCPTrustScoreDegradation
231
- expr: airtable_mcp_trust_score < 95
232
- for: 5m
233
- labels:
234
- severity: warning
235
- service: airtable-mcp
236
- category: business
237
- trust_score_impact: critical
238
- annotations:
239
- summary: "Trust score degradation detected"
240
- description: "Trust score is {{ $value }} for instance {{ $labels.instance }}"
241
- runbook_url: "https://docs.example.com/runbooks/trust-score"
242
-
243
- # ============================================================================
244
- # INFRASTRUCTURE ALERTS - Supporting services
245
- # ============================================================================
246
- - name: airtable-mcp.infrastructure
247
- interval: 60s
248
- rules:
249
- # Redis Connection Issues
250
- - alert: AirtableMCPRedisConnectionFailed
251
- expr: airtable_mcp_redis_connection_errors_total > 0
252
- for: 2m
253
- labels:
254
- severity: warning
255
- service: airtable-mcp
256
- category: infrastructure
257
- trust_score_impact: medium
258
- annotations:
259
- summary: "Redis connection issues"
260
- description: "Redis connection errors detected for instance {{ $labels.instance }}"
261
- runbook_url: "https://docs.example.com/runbooks/redis-connection"
262
-
263
- # Airtable API Rate Limits
264
- - alert: AirtableMCPAirtableAPIRateLimited
265
- expr: rate(airtable_mcp_airtable_api_rate_limited_total[5m]) > 0
266
- for: 1m
267
- labels:
268
- severity: warning
269
- service: airtable-mcp
270
- category: infrastructure
271
- trust_score_impact: medium
272
- annotations:
273
- summary: "Airtable API rate limiting detected"
274
- description: "Airtable API rate limit hit for instance {{ $labels.instance }}"
275
- runbook_url: "https://docs.example.com/runbooks/airtable-rate-limit"
276
-
277
- # Disk Space Low
278
- - alert: AirtableMCPDiskSpaceLow
279
- expr: (node_filesystem_free_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) < 0.1
280
- for: 5m
281
- labels:
282
- severity: warning
283
- service: airtable-mcp
284
- category: infrastructure
285
- trust_score_impact: low
286
- annotations:
287
- summary: "Low disk space"
288
- description: "Disk space is {{ $value | humanizePercentage }} free for instance {{ $labels.instance }}"
289
- runbook_url: "https://docs.example.com/runbooks/disk-space"
@@ -1,224 +0,0 @@
1
- # Prometheus Configuration for Airtable MCP Server
2
- # Comprehensive monitoring for Trust Score 100/100
3
-
4
- global:
5
- scrape_interval: 15s
6
- evaluation_interval: 15s
7
- external_labels:
8
- cluster: 'airtable-mcp-cluster'
9
- environment: 'production'
10
- trust_score: '100'
11
-
12
- # Alertmanager configuration
13
- alerting:
14
- alertmanagers:
15
- - static_configs:
16
- - targets:
17
- - alertmanager:9093
18
-
19
- # Load rules once and periodically evaluate them
20
- rule_files:
21
- - "alerts/*.yml"
22
- - "rules/*.yml"
23
-
24
- # Scrape configurations
25
- scrape_configs:
26
- # Prometheus itself
27
- - job_name: 'prometheus'
28
- static_configs:
29
- - targets: ['localhost:9090']
30
- scrape_interval: 15s
31
- metrics_path: /metrics
32
-
33
- # Airtable MCP Server
34
- - job_name: 'airtable-mcp'
35
- static_configs:
36
- - targets: ['airtable-mcp:9090']
37
- scrape_interval: 15s
38
- metrics_path: /metrics
39
- honor_labels: true
40
- relabel_configs:
41
- - source_labels: [__address__]
42
- target_label: __param_target
43
- - source_labels: [__param_target]
44
- target_label: instance
45
- - target_label: __address__
46
- replacement: airtable-mcp:9090
47
- metric_relabel_configs:
48
- - source_labels: [__name__]
49
- regex: 'airtable_mcp_(.*)'
50
- target_label: __name__
51
- replacement: 'mcp_${1}'
52
-
53
- # Kubernetes API Server
54
- - job_name: 'kubernetes-apiservers'
55
- kubernetes_sd_configs:
56
- - role: endpoints
57
- namespaces:
58
- names:
59
- - default
60
- scheme: https
61
- tls_config:
62
- ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
63
- insecure_skip_verify: true
64
- bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
65
- relabel_configs:
66
- - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
67
- action: keep
68
- regex: default;kubernetes;https
69
-
70
- # Kubernetes Nodes
71
- - job_name: 'kubernetes-nodes'
72
- kubernetes_sd_configs:
73
- - role: node
74
- scheme: https
75
- tls_config:
76
- ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
77
- insecure_skip_verify: true
78
- bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
79
- relabel_configs:
80
- - action: labelmap
81
- regex: __meta_kubernetes_node_label_(.+)
82
- - target_label: __address__
83
- replacement: kubernetes.default.svc:443
84
- - source_labels: [__meta_kubernetes_node_name]
85
- regex: (.+)
86
- target_label: __metrics_path__
87
- replacement: /api/v1/nodes/${1}/proxy/metrics
88
-
89
- # Kubernetes Node Exporter
90
- - job_name: 'kubernetes-node-exporter'
91
- kubernetes_sd_configs:
92
- - role: endpoints
93
- relabel_configs:
94
- - source_labels: [__meta_kubernetes_endpoints_name]
95
- action: keep
96
- regex: node-exporter
97
- - source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]
98
- action: keep
99
- regex: Node;(.*)
100
- - source_labels: [__meta_kubernetes_endpoint_address_target_name]
101
- action: replace
102
- target_label: node
103
- - action: labelmap
104
- regex: __meta_kubernetes_service_label_(.+)
105
-
106
- # Kubernetes Pods
107
- - job_name: 'kubernetes-pods'
108
- kubernetes_sd_configs:
109
- - role: pod
110
- namespaces:
111
- names:
112
- - airtable-mcp
113
- - monitoring
114
- relabel_configs:
115
- - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
116
- action: keep
117
- regex: true
118
- - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
119
- action: replace
120
- target_label: __metrics_path__
121
- regex: (.+)
122
- - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
123
- action: replace
124
- regex: ([^:]+)(?::\d+)?;(\d+)
125
- replacement: $1:$2
126
- target_label: __address__
127
- - action: labelmap
128
- regex: __meta_kubernetes_pod_label_(.+)
129
- - source_labels: [__meta_kubernetes_namespace]
130
- action: replace
131
- target_label: kubernetes_namespace
132
- - source_labels: [__meta_kubernetes_pod_name]
133
- action: replace
134
- target_label: kubernetes_pod_name
135
-
136
- # Kubernetes Services
137
- - job_name: 'kubernetes-services'
138
- kubernetes_sd_configs:
139
- - role: endpoints
140
- namespaces:
141
- names:
142
- - airtable-mcp
143
- - monitoring
144
- relabel_configs:
145
- - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
146
- action: keep
147
- regex: true
148
- - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
149
- action: replace
150
- target_label: __scheme__
151
- regex: (https?)
152
- - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
153
- action: replace
154
- target_label: __metrics_path__
155
- regex: (.+)
156
- - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
157
- action: replace
158
- target_label: __address__
159
- regex: ([^:]+)(?::\d+)?;(\d+)
160
- replacement: $1:$2
161
- - action: labelmap
162
- regex: __meta_kubernetes_service_label_(.+)
163
- - source_labels: [__meta_kubernetes_namespace]
164
- action: replace
165
- target_label: kubernetes_namespace
166
- - source_labels: [__meta_kubernetes_service_name]
167
- action: replace
168
- target_label: kubernetes_name
169
-
170
- # Redis Exporter
171
- - job_name: 'redis'
172
- static_configs:
173
- - targets: ['redis-exporter:9121']
174
- scrape_interval: 30s
175
-
176
- # Node Exporter
177
- - job_name: 'node-exporter'
178
- static_configs:
179
- - targets: ['node-exporter:9100']
180
- scrape_interval: 30s
181
-
182
- # cAdvisor (Container metrics)
183
- - job_name: 'cadvisor'
184
- static_configs:
185
- - targets: ['cadvisor:8080']
186
- scrape_interval: 30s
187
- metrics_path: /metrics
188
-
189
- # Traefik (if using)
190
- - job_name: 'traefik'
191
- static_configs:
192
- - targets: ['traefik:8080']
193
- scrape_interval: 30s
194
- metrics_path: /metrics
195
-
196
- # Custom Application Metrics
197
- - job_name: 'custom-metrics'
198
- static_configs:
199
- - targets: ['airtable-mcp:9090']
200
- scrape_interval: 15s
201
- metrics_path: /custom-metrics
202
- honor_labels: true
203
-
204
- # Remote write configuration (for long-term storage)
205
- remote_write:
206
- - url: "http://thanos-receive:19291/api/v1/receive"
207
- name: "thanos"
208
- queue_config:
209
- capacity: 10000
210
- max_shards: 1000
211
- min_shards: 1
212
- max_samples_per_send: 1000
213
- batch_send_deadline: 5s
214
- min_backoff: 30ms
215
- max_backoff: 100ms
216
-
217
- # Storage configuration
218
- storage:
219
- tsdb:
220
- retention.time: 15d
221
- retention.size: 50GB
222
- min-block-duration: 2h
223
- max-block-duration: 25h
224
- wal-compression: true
package/publish-steps.txt DELETED
@@ -1,27 +0,0 @@
1
- # Steps to Publish to npm
2
-
3
- ## 1. Login to npm
4
- ```
5
- npm login
6
- ```
7
-
8
- ## 2. Publish the package
9
- ```
10
- npm publish --access public
11
- ```
12
-
13
- ## 3. Create GitHub Release
14
- 1. Go to https://github.com/rashidazarang/airtable-mcp/releases
15
- 2. Click "Draft a new release"
16
- 3. Select the tag: v1.2.0
17
- 4. Title: "v1.2.0: Claude & Windsurf Compatibility"
18
- 5. Copy and paste the content from RELEASE_NOTES_v1.2.0.md
19
- 6. Attach the file: rashidazarang-airtable-mcp-1.2.0.tgz
20
- 7. Click "Publish release"
21
-
22
- ## 4. Update Smithery
23
- If you use Smithery, make sure to update the repository there:
24
- 1. Login to Smithery
25
- 2. Go to your package
26
- 3. Update the version information
27
- 4. Publish the update
package/quick_test.sh DELETED
@@ -1,30 +0,0 @@
1
- #!/bin/bash
2
-
3
- echo "šŸ”Œ Airtable MCP Quick Tests"
4
- echo "==========================="
5
-
6
- # Test 1: List Tables
7
- echo "šŸ“Š Testing: List Tables"
8
- curl -s -X POST http://localhost:8010/mcp \
9
- -H "Content-Type: application/json" \
10
- -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "list_tables"}}' | jq '.result.content[0].text'
11
-
12
- echo -e "\n"
13
-
14
- # Test 2: List Records from Requests
15
- echo "šŸ“„ Testing: List Records (Requests)"
16
- curl -s -X POST http://localhost:8010/mcp \
17
- -H "Content-Type: application/json" \
18
- -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "list_records", "arguments": {"table_name": "requests", "max_records": 2}}}' | jq '.result.content[0].text'
19
-
20
- echo -e "\n"
21
-
22
- # Test 3: List Records from Providers
23
- echo "šŸ‘„ Testing: List Records (Providers)"
24
- curl -s -X POST http://localhost:8010/mcp \
25
- -H "Content-Type: application/json" \
26
- -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "list_records", "arguments": {"table_name": "providers", "max_records": 2}}}' | jq '.result.content[0].text'
27
-
28
- echo -e "\nāœ… All quick tests completed!"
29
-
30
-
package/requirements.txt DELETED
@@ -1,10 +0,0 @@
1
- airtable-python-wrapper>=0.15.3
2
- anthropic>=0.19.1
3
- argparse>=1.4.0
4
- python-dotenv>=1.0.0
5
- pydantic>=2.4.2
6
- # MCP core will be installed by Smithery during deployment
7
- requests>=2.31.0
8
- typing-extensions>=4.7.1
9
- websockets>=11.0.3
10
- mcp>=1.4.1
package/setup.py DELETED
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env python3
2
-
3
- from setuptools import setup, find_packages
4
-
5
- with open("README.md", "r", encoding="utf-8") as fh:
6
- long_description = fh.read()
7
-
8
- with open("requirements.txt", "r", encoding="utf-8") as req_file:
9
- requirements = req_file.read().splitlines()
10
-
11
- setup(
12
- name="airtable-mcp",
13
- version="1.1.0",
14
- author="Rashid Azarang",
15
- author_email="rashidazarang@gmail.com",
16
- description="Airtable MCP for AI tools - updated to work with MCP SDK 1.4.1+",
17
- long_description=long_description,
18
- long_description_content_type="text/markdown",
19
- url="https://github.com/rashidazarang/airtable-mcp",
20
- packages=find_packages(),
21
- install_requires=requirements,
22
- classifiers=[
23
- "Programming Language :: Python :: 3.10",
24
- "License :: OSI Approved :: MIT License",
25
- "Operating System :: OS Independent",
26
- ],
27
- python_requires=">=3.10",
28
- include_package_data=True,
29
- )