@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,289 @@
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"
@@ -0,0 +1,224 @@
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/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@rashidazarang/airtable-mcp",
3
- "version": "1.6.0",
4
- "description": "Airtable MCP for Claude Desktop - Connect directly to Airtable using natural language",
5
- "main": "airtable_simple.js",
3
+ "version": "2.1.0",
4
+ "description": "Airtable MCP server for Claude Desktop - Connect directly to Airtable using natural language",
5
+ "main": "airtable_simple_production.js",
6
6
  "bin": {
7
- "airtable-mcp": "./airtable_simple.js"
7
+ "airtable-mcp": "./airtable_simple_production.js"
8
8
  },
9
9
  "scripts": {
10
- "start": "node airtable_simple.js",
10
+ "start": "node airtable_simple_production.js",
11
11
  "start:python": "python3.10 inspector_server.py",
12
12
  "test": "node test_mcp_comprehensive.js",
13
13
  "test:quick": "./quick_test.sh",
14
- "dev": "node airtable_simple.js --token YOUR_TOKEN --base YOUR_BASE_ID"
14
+ "dev": "node airtable_simple_production.js --token YOUR_TOKEN --base YOUR_BASE_ID"
15
15
  },
16
16
  "keywords": [
17
17
  "airtable",
@@ -1,12 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(cat:*)",
5
- "WebFetch(domain:github.com)",
6
- "Bash(# Test create with simpler extraction\necho \"\"TEST: CREATE AND EXTRACT ID\"\"\ncurl -s -X POST http://localhost:8010/mcp \\\n -H \"\"Content-Type: application/json\"\" \\\n -d ''{\"\"jsonrpc\"\": \"\"2.0\"\", \"\"id\"\": 2, \"\"method\"\": \"\"tools/call\"\", \"\"params\"\": {\"\"name\"\": \"\"create_record\"\", \"\"arguments\"\": {\"\"table\"\": \"\"tblH7TnJxYpNqhQYK\"\", \"\"fields\"\": {\"\"Name\"\": \"\"Simple Test\"\"}}}}'' \\\n > /tmp/raw_response.txt\n\n# Extract record ID using grep\nRECORD_ID=$(cat /tmp/raw_response.txt | grep -o ''rec[a-zA-Z0-9]\\{10,20\\}'' | head -1)\necho \"\"Extracted ID: $RECORD_ID\"\"\n\nif [ ! -z \"\"$RECORD_ID\"\" ]; then\n echo \"\"✅ Got record ID: $RECORD_ID\"\"\nelse\n echo \"\"❌ Failed to extract ID\"\"\n cat /tmp/raw_response.txt | od -c | head -20\nfi)",
7
- "Bash(# Add debug logging to see the exact API call\nexport LOG_LEVEL=DEBUG\npkill -f \"\"node.*airtable\"\" 2>/dev/null; sleep 1\nexport AIRTABLE_TOKEN=\"\"patSDGN40NJd9G8E4.9fee82826ee482d6556480d004592e5f806bd8e95cef18fc5ba2d7fc55274367\"\"\nexport AIRTABLE_BASE_ID=\"\"appTV04Fyu1Gvbunq\"\"\nnode airtable_simple.js > /tmp/server_debug.log 2>&1 &\npid=$!\nsleep 2\n\n# Test webhook creation with debug\ncurl -s -X POST http://localhost:8010/mcp \\\n -H \"\"Content-Type: application/json\"\" \\\n -d ''{\"\"jsonrpc\"\": \"\"2.0\"\", \"\"id\"\": 1, \"\"method\"\": \"\"tools/call\"\", \"\"params\"\": {\"\"name\"\": \"\"create_webhook\"\", \"\"arguments\"\": {\"\"notificationUrl\"\": \"\"https://webhook.site/debug-test\"\"}}}'' > /dev/null\n\n# Check debug log\necho \"\"Debug output:\"\"\ngrep -A 2 \"\"API Request.*webhook\"\" /tmp/server_debug.log | tail -5)",
8
- "Bash(./test_all_features.sh:*)"
9
- ],
10
- "deny": []
11
- }
12
- }
Binary file