@rashidazarang/airtable-mcp 2.1.0 → 2.2.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 (155) hide show
  1. package/README.md +1 -1
  2. package/airtable_simple_production.js +387 -5
  3. package/examples/claude_simple_config.json +0 -9
  4. package/package.json +10 -1
  5. package/.github/ISSUE_TEMPLATE/bug-report.yml +0 -173
  6. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  7. package/.github/ISSUE_TEMPLATE/custom.md +0 -10
  8. package/.github/ISSUE_TEMPLATE/feature-request.yml +0 -209
  9. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  10. package/.github/ISSUE_TEMPLATE/security-report.yml +0 -216
  11. package/.github/pull_request_template.md +0 -245
  12. package/.github/workflows/ci-cd.yml +0 -408
  13. package/.github/workflows/security-audit.yml +0 -316
  14. package/API_DOCUMENTATION.md +0 -897
  15. package/CAPABILITY_REPORT.md +0 -118
  16. package/CLAUDE_INTEGRATION.md +0 -96
  17. package/CODE_OF_CONDUCT.md +0 -181
  18. package/CONTRIBUTING.md +0 -81
  19. package/DEVELOPMENT.md +0 -190
  20. package/Dockerfile +0 -39
  21. package/Dockerfile.node +0 -20
  22. package/Dockerfile.production +0 -127
  23. package/IMPROVEMENT_PROPOSAL.md +0 -371
  24. package/INSTALLATION.md +0 -183
  25. package/ISSUE_RESPONSES.md +0 -171
  26. package/MCP_REVIEW_SUMMARY.md +0 -142
  27. package/QUICK_START.md +0 -60
  28. package/RELEASE_NOTES_v1.2.0.md +0 -50
  29. package/RELEASE_NOTES_v1.2.1.md +0 -40
  30. package/RELEASE_NOTES_v1.2.2.md +0 -48
  31. package/RELEASE_NOTES_v1.2.3.md +0 -105
  32. package/RELEASE_NOTES_v1.2.4.md +0 -60
  33. package/RELEASE_NOTES_v1.4.0.md +0 -104
  34. package/RELEASE_NOTES_v1.5.0.md +0 -185
  35. package/RELEASE_NOTES_v1.6.0.md +0 -248
  36. package/SECURITY_NOTICE.md +0 -40
  37. package/airtable-clipper/CHANGELOG.md +0 -198
  38. package/airtable-clipper/CHROME_STORE_SUBMISSION.md +0 -343
  39. package/airtable-clipper/LAUNCH_STRATEGY.md +0 -495
  40. package/airtable-clipper/LICENSE +0 -21
  41. package/airtable-clipper/OAUTH_SETUP.md +0 -51
  42. package/airtable-clipper/PRIVACY_POLICY.md +0 -187
  43. package/airtable-clipper/README.md +0 -575
  44. package/airtable-clipper/SUBMIT_TO_CHROME_STORE.md +0 -273
  45. package/airtable-clipper/build.sh +0 -85
  46. package/airtable-clipper/docs/QUICK_START.md +0 -99
  47. package/airtable-clipper/docs/SETUP.md +0 -291
  48. package/airtable-clipper/extension/background.js +0 -337
  49. package/airtable-clipper/extension/base-setup.html +0 -324
  50. package/airtable-clipper/extension/base-setup.js +0 -471
  51. package/airtable-clipper/extension/content.js +0 -771
  52. package/airtable-clipper/extension/icons/README.md +0 -69
  53. package/airtable-clipper/extension/icons/icon-16.png +0 -3
  54. package/airtable-clipper/extension/manifest.json +0 -73
  55. package/airtable-clipper/extension/popup.html +0 -144
  56. package/airtable-clipper/extension/popup.js +0 -475
  57. package/airtable-clipper/extension/styles/content.css +0 -229
  58. package/airtable-clipper/extension/styles/popup.css +0 -477
  59. package/airtable-clipper/privacy-policy.md +0 -63
  60. package/airtable-clipper/releases/v1.0.0/background.js +0 -337
  61. package/airtable-clipper/releases/v1.0.0/base-setup.html +0 -324
  62. package/airtable-clipper/releases/v1.0.0/base-setup.js +0 -471
  63. package/airtable-clipper/releases/v1.0.0/content.js +0 -771
  64. package/airtable-clipper/releases/v1.0.0/icons/README.md +0 -69
  65. package/airtable-clipper/releases/v1.0.0/icons/icon-128.png +0 -2
  66. package/airtable-clipper/releases/v1.0.0/icons/icon-16.png +0 -3
  67. package/airtable-clipper/releases/v1.0.0/icons/icon-32.png +0 -2
  68. package/airtable-clipper/releases/v1.0.0/icons/icon-48.png +0 -2
  69. package/airtable-clipper/releases/v1.0.0/manifest.json +0 -73
  70. package/airtable-clipper/releases/v1.0.0/popup.html +0 -144
  71. package/airtable-clipper/releases/v1.0.0/popup.js +0 -475
  72. package/airtable-clipper/releases/v1.0.0/sidepanel.html +0 -25
  73. package/airtable-clipper/releases/v1.0.0/styles/content.css +0 -229
  74. package/airtable-clipper/releases/v1.0.0/styles/popup.css +0 -477
  75. package/airtable-clipper/releases/v1.0.1/background.js +0 -337
  76. package/airtable-clipper/releases/v1.0.1/base-setup.html +0 -324
  77. package/airtable-clipper/releases/v1.0.1/base-setup.js +0 -471
  78. package/airtable-clipper/releases/v1.0.1/content.js +0 -771
  79. package/airtable-clipper/releases/v1.0.1/icons/README.md +0 -69
  80. package/airtable-clipper/releases/v1.0.1/icons/icon-128.png +0 -2
  81. package/airtable-clipper/releases/v1.0.1/icons/icon-16.png +0 -3
  82. package/airtable-clipper/releases/v1.0.1/icons/icon-32.png +0 -2
  83. package/airtable-clipper/releases/v1.0.1/icons/icon-48.png +0 -2
  84. package/airtable-clipper/releases/v1.0.1/manifest.json +0 -70
  85. package/airtable-clipper/releases/v1.0.1/popup.html +0 -157
  86. package/airtable-clipper/releases/v1.0.1/popup.js +0 -562
  87. package/airtable-clipper/releases/v1.0.1/sidepanel.html +0 -25
  88. package/airtable-clipper/releases/v1.0.1/styles/content.css +0 -229
  89. package/airtable-clipper/releases/v1.0.1/styles/popup.css +0 -647
  90. package/airtable-clipper/releases/v1.0.2/background.js +0 -337
  91. package/airtable-clipper/releases/v1.0.2/base-setup.html +0 -324
  92. package/airtable-clipper/releases/v1.0.2/base-setup.js +0 -471
  93. package/airtable-clipper/releases/v1.0.2/content.js +0 -771
  94. package/airtable-clipper/releases/v1.0.2/icons/README.md +0 -69
  95. package/airtable-clipper/releases/v1.0.2/icons/icon-128.png +0 -2
  96. package/airtable-clipper/releases/v1.0.2/icons/icon-16.png +0 -3
  97. package/airtable-clipper/releases/v1.0.2/icons/icon-32.png +0 -2
  98. package/airtable-clipper/releases/v1.0.2/icons/icon-48.png +0 -2
  99. package/airtable-clipper/releases/v1.0.2/manifest.json +0 -62
  100. package/airtable-clipper/releases/v1.0.2/popup.html +0 -157
  101. package/airtable-clipper/releases/v1.0.2/popup.js +0 -567
  102. package/airtable-clipper/releases/v1.0.2/sidepanel.html +0 -25
  103. package/airtable-clipper/releases/v1.0.2/styles/content.css +0 -229
  104. package/airtable-clipper/releases/v1.0.2/styles/popup.css +0 -647
  105. package/airtable-clipper/terms-of-service.md +0 -124
  106. package/airtable-clipper/test-credentials.md +0 -61
  107. package/airtable-clipper/test-extension/background.js +0 -337
  108. package/airtable-clipper/test-extension/base-setup.html +0 -324
  109. package/airtable-clipper/test-extension/base-setup.js +0 -471
  110. package/airtable-clipper/test-extension/content.js +0 -873
  111. package/airtable-clipper/test-extension/icons/README.md +0 -69
  112. package/airtable-clipper/test-extension/icons/icon-128.png +0 -2
  113. package/airtable-clipper/test-extension/icons/icon-16.png +0 -3
  114. package/airtable-clipper/test-extension/icons/icon-32.png +0 -2
  115. package/airtable-clipper/test-extension/icons/icon-48.png +0 -2
  116. package/airtable-clipper/test-extension/manifest.json +0 -72
  117. package/airtable-clipper/test-extension/popup.html +0 -274
  118. package/airtable-clipper/test-extension/popup.js +0 -729
  119. package/airtable-clipper/test-extension/sidepanel.html +0 -25
  120. package/airtable-clipper/test-extension/styles/content.css +0 -229
  121. package/airtable-clipper/test-extension/styles/popup.css +0 -794
  122. package/airtable_mcp/__init__.py +0 -5
  123. package/airtable_mcp/src/server.py +0 -329
  124. package/airtable_mcp_v2.js +0 -1505
  125. package/airtable_mcp_v2_oauth.js +0 -1048
  126. package/airtable_mcp_v3_advanced.js +0 -1161
  127. package/cleanup.sh +0 -71
  128. package/docker-compose.production.yml +0 -366
  129. package/helm/airtable-mcp/Chart.yaml +0 -122
  130. package/helm/airtable-mcp/values.yaml +0 -538
  131. package/index.js +0 -179
  132. package/inspector.py +0 -148
  133. package/inspector_server.py +0 -337
  134. package/k8s/deployment.yaml +0 -402
  135. package/k8s/namespace.yaml +0 -108
  136. package/k8s/service.yaml +0 -194
  137. package/monitoring/alerts.yml +0 -289
  138. package/monitoring/prometheus.yml +0 -224
  139. package/publish-steps.txt +0 -27
  140. package/quick_test.sh +0 -30
  141. package/requirements.txt +0 -10
  142. package/setup.py +0 -29
  143. package/simple_airtable_server.py +0 -151
  144. package/smithery.yaml +0 -45
  145. package/test_all_features.sh +0 -146
  146. package/test_all_operations.sh +0 -120
  147. package/test_client.py +0 -70
  148. package/test_enhanced_features.js +0 -389
  149. package/test_mcp_comprehensive.js +0 -163
  150. package/test_mock_server.js +0 -180
  151. package/test_v1.4.0_final.sh +0 -131
  152. package/test_v1.5.0_comprehensive.sh +0 -96
  153. package/test_v1.5.0_final.sh +0 -224
  154. package/test_v1.6.0_comprehensive.sh +0 -187
  155. 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
- )