@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,118 +0,0 @@
1
- # Airtable MCP Capability Report
2
- **Version**: 1.3.0 (Enhanced)
3
- **Test Date**: August 15, 2025
4
- **Status**: ✅ PRODUCTION READY
5
-
6
- ## 📊 Current Capabilities (Tested & Validated)
7
-
8
- ### ✅ **WORKING FEATURES**
9
-
10
- | Tool | Description | Status | Test Result |
11
- |------|-------------|--------|-------------|
12
- | `list_tables` | List all tables in base | ✅ Working | Successfully lists all tables with IDs and field counts |
13
- | `list_records` | List records from table | ✅ Working | Returns all records with pagination support |
14
- | `get_record` | Get single record by ID | ✅ Working | Retrieves specific record with all fields |
15
- | `create_record` | Create new records | ✅ Working | Successfully creates records with any fields |
16
- | `update_record` | Update existing records | ✅ Working | Updates specific fields without affecting others |
17
- | `delete_record` | Delete records | ✅ Working | Permanently removes records from table |
18
- | `search_records` | Filter and sort records | ✅ Working | Supports Airtable formulas and sorting |
19
-
20
- ### 🔑 **API Scope Coverage**
21
-
22
- Based on your token's scopes, here's what we currently support:
23
-
24
- | Scope | Status | Implementation |
25
- |-------|--------|----------------|
26
- | **data.records:read** | ✅ Fully Implemented | `list_records`, `get_record`, `search_records` |
27
- | **data.records:write** | ✅ Fully Implemented | `create_record`, `update_record`, `delete_record` |
28
- | **data.recordComments:read** | ❌ Not Implemented | No comment reading tools |
29
- | **data.recordComments:write** | ❌ Not Implemented | No comment writing tools |
30
- | **schema.bases:read** | ✅ Partially Implemented | `list_tables` (reads table structure) |
31
- | **schema.bases:write** | ❌ Not Implemented | No table/field creation tools |
32
- | **webhook:manage** | ❌ Not Implemented | No webhook management |
33
- | **block:manage** | ❌ Not Implemented | No custom extension support |
34
- | **user.email:read** | ❌ Not Implemented | No user info retrieval |
35
-
36
- ## 🎯 **Version Comparison**
37
-
38
- ### v1.2.4 (Current Production)
39
- - **Tools**: 2 (list_tables, list_records)
40
- - **Operations**: READ only
41
- - **Coverage**: ~20% of API capabilities
42
-
43
- ### v1.3.0 (Enhanced - Ready for Deployment)
44
- - **Tools**: 7 (all CRUD operations)
45
- - **Operations**: Full CRUD (Create, Read, Update, Delete)
46
- - **Coverage**: ~40% of API capabilities
47
- - **New Features**:
48
- - ✅ Create records with any fields
49
- - ✅ Update specific fields
50
- - ✅ Delete records
51
- - ✅ Get single record by ID
52
- - ✅ Search with filters and sorting
53
-
54
- ## 🚀 **Recommended Next Features**
55
-
56
- ### Priority 1: Comments & Attachments
57
- - `add_comment` - Add comments to records
58
- - `list_comments` - View record comments
59
- - `upload_attachment` - Add files to records
60
- - `download_attachment` - Retrieve files
61
-
62
- ### Priority 2: Schema Management
63
- - `create_table` - Create new tables
64
- - `create_field` - Add fields to tables
65
- - `update_field` - Modify field properties
66
- - `delete_field` - Remove fields
67
-
68
- ### Priority 3: Advanced Operations
69
- - `batch_create` - Create multiple records (up to 10)
70
- - `batch_update` - Update multiple records
71
- - `batch_delete` - Delete multiple records
72
- - `export_base` - Export entire base structure
73
-
74
- ### Priority 4: Webhooks & Automation
75
- - `create_webhook` - Set up webhooks
76
- - `list_webhooks` - View active webhooks
77
- - `delete_webhook` - Remove webhooks
78
- - `get_webhook_payload` - Retrieve webhook data
79
-
80
- ## 📈 **Performance Metrics**
81
-
82
- - **Response Time**: ~500ms average per operation
83
- - **Success Rate**: 100% in testing
84
- - **Error Handling**: Proper error messages with details
85
- - **Rate Limiting**: Respects Airtable's 5 req/sec limit
86
-
87
- ## 🔒 **Security Features**
88
-
89
- - ✅ Token masking in logs
90
- - ✅ Environment variable support
91
- - ✅ No hardcoded credentials
92
- - ✅ Secure HTTPS connections
93
- - ✅ Input validation
94
-
95
- ## 📝 **Test Results Summary**
96
-
97
- ```
98
- Test Environment: Production Airtable API
99
- Base: Newsletter (appTV04Fyu1Gvbunq)
100
- Table: Test Table CRUD (tblH7TnJxYpNqhQYK)
101
-
102
- Results:
103
- ✅ 7/7 tools tested successfully
104
- ✅ 100% success rate
105
- ✅ All CRUD operations verified
106
- ✅ Error handling confirmed
107
- ✅ Field validation working
108
- ```
109
-
110
- ## 🎉 **Conclusion**
111
-
112
- The Enhanced Airtable MCP v1.3.0 is **production-ready** and provides:
113
- - Complete CRUD functionality
114
- - Robust error handling
115
- - Secure credential management
116
- - 3.5x more features than v1.2.4
117
-
118
- **Recommendation**: Deploy v1.3.0 to production to unlock full CRUD capabilities for users.
@@ -1,96 +0,0 @@
1
- # Claude Desktop Integration Guide
2
-
3
- This guide provides detailed instructions for setting up the Airtable MCP with Claude Desktop.
4
-
5
- ## Prerequisites
6
-
7
- - Node.js 14+ installed
8
- - Claude Desktop installed
9
- - Airtable API token
10
- - Airtable base ID
11
-
12
- ## Configuration Steps
13
-
14
- 1. **Locate Configuration File**
15
- - Open Finder
16
- - Press `Cmd + Shift + G`
17
- - Enter `~/Library/Application Support/Claude`
18
- - Create or open `claude_desktop_config.json`
19
-
20
- 2. **Add Configuration**
21
- ```json
22
- {
23
- "mcpServers": {
24
- "airtable-mcp": {
25
- "command": "npx",
26
- "args": [
27
- "@smithery/cli",
28
- "run",
29
- "@rashidazarang/airtable-mcp",
30
- "--token",
31
- "YOUR_AIRTABLE_TOKEN",
32
- "--base",
33
- "YOUR_BASE_ID"
34
- ]
35
- }
36
- }
37
- }
38
- ```
39
-
40
- 3. **Replace Credentials**
41
- - Replace `YOUR_AIRTABLE_TOKEN` with your token from [Airtable Account](https://airtable.com/account)
42
- - Replace `YOUR_BASE_ID` with your base ID (found in your Airtable base URL)
43
-
44
- 4. **Restart Claude Desktop**
45
- - Close Claude Desktop completely
46
- - Wait 5 seconds
47
- - Reopen Claude Desktop
48
- - Wait 30 seconds for the connection to establish
49
-
50
- ## Verification
51
-
52
- Test the connection by asking Claude:
53
- - "Show me all my Airtable bases"
54
- - "What tables are in this base?"
55
- - "Show me the first 5 records from any table"
56
-
57
- ## Troubleshooting
58
-
59
- ### Connection Issues
60
- 1. Verify Node.js installation:
61
- ```bash
62
- node -v # Should show v14 or higher
63
- ```
64
-
65
- 2. Test Smithery CLI:
66
- ```bash
67
- npx @smithery/cli --version
68
- ```
69
-
70
- 3. Check logs:
71
- - Open `~/Library/Logs/Claude/mcp-server-airtable-mcp.log`
72
- - Look for any error messages
73
-
74
- ### Common Errors
75
-
76
- 1. **"Command not found"**
77
- ```bash
78
- npm install -g npm@latest
79
- ```
80
-
81
- 2. **JSON Parsing Errors**
82
- - Remove any extra backslashes
83
- - Use the exact format shown above
84
- - Ensure no trailing commas
85
-
86
- 3. **Connection Timeout**
87
- - Wait full 30 seconds after startup
88
- - Check your internet connection
89
- - Verify API token is valid
90
-
91
- ## Support
92
-
93
- If you encounter any issues:
94
- 1. Check [GitHub Issues](https://github.com/rashidazarang/airtable-mcp/issues)
95
- 2. Join our [Discord](https://discord.gg/your-discord)
96
- 3. Email: support@example.com
@@ -1,181 +0,0 @@
1
- # 🤝 Contributor Covenant Code of Conduct
2
-
3
- ## 🎯 Our Pledge
4
-
5
- We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
6
-
7
- We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community, while working together towards our **100/100 Trust Score** goal.
8
-
9
- ## 📋 Our Standards
10
-
11
- Examples of behavior that contributes to a positive environment for our community include:
12
-
13
- ### ✅ Positive Behaviors
14
- - **🤝 Respectful Communication**: Using welcoming and inclusive language
15
- - **🎯 Constructive Feedback**: Providing and gracefully accepting constructive criticism
16
- - **🙏 Empathy**: Showing empathy towards other community members
17
- - **🔒 Security Focus**: Prioritizing security and responsible disclosure
18
- - **📚 Knowledge Sharing**: Helping others learn and grow
19
- - **🚀 Quality Commitment**: Contributing to our Trust Score improvement goals
20
- - **🌟 Recognition**: Acknowledging others' contributions and efforts
21
- - **🔧 Solution-Oriented**: Focusing on what is best for the overall community
22
-
23
- ### ❌ Unacceptable Behaviors
24
- - **💬 Harassment**: Trolling, insulting/derogatory comments, personal or political attacks
25
- - **📧 Privacy Violations**: Publishing others' private information without permission
26
- - **🔓 Security Violations**: Publicly disclosing security vulnerabilities before responsible disclosure
27
- - **🎯 Scope Creep**: Other conduct which could reasonably be considered inappropriate in a professional setting
28
- - **📊 Spam**: Excessive self-promotion or off-topic content
29
- - **🚫 Discrimination**: Any form of discrimination or exclusion based on protected characteristics
30
-
31
- ## 🛡️ Security-Specific Guidelines
32
-
33
- Given our focus on achieving a **100/100 Trust Score**, we have additional guidelines around security:
34
-
35
- ### 🔒 Responsible Disclosure
36
- - Report security vulnerabilities privately through appropriate channels
37
- - Do not publicly disclose vulnerabilities until fixes are available
38
- - Follow coordinated disclosure timelines with maintainers
39
-
40
- ### 🛡️ Security Discussions
41
- - Keep security discussions constructive and solution-focused
42
- - Avoid fear-mongering or exaggerating security issues
43
- - Provide evidence-based security recommendations
44
-
45
- ## 📊 Trust Score Community Standards
46
-
47
- Our community is committed to building the most trusted MCP server for Airtable:
48
-
49
- ### 🎯 Quality Standards
50
- - **🧪 Testing**: All contributions include appropriate tests
51
- - **📚 Documentation**: Clear documentation accompanies code changes
52
- - **🔍 Code Review**: Constructive and thorough code reviews
53
- - **📈 Continuous Improvement**: Regular updates and enhancements
54
-
55
- ### 🤝 Collaboration Standards
56
- - **💡 Innovation**: Encouraging creative solutions and new ideas
57
- - **🔄 Iteration**: Embracing feedback and iterative improvement
58
- - **🌐 Inclusivity**: Welcoming contributors of all skill levels
59
- - **📊 Transparency**: Open communication about goals and progress
60
-
61
- ## 🚀 Enforcement Responsibilities
62
-
63
- Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
64
-
65
- ### 👥 Leadership Team
66
- - **Primary Maintainer**: [@rashidazarang](https://github.com/rashidazarang)
67
- - **Security Team**: security@[domain]
68
- - **Community Moderators**: [to be appointed as community grows]
69
-
70
- ### 🔧 Enforcement Powers
71
- Community leaders have the right and responsibility to:
72
- - Remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions
73
- - Temporarily or permanently ban contributors for inappropriate behaviors
74
- - Communicate expectations and consequences clearly
75
-
76
- ## 📏 Scope
77
-
78
- This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include:
79
-
80
- ### 📍 Community Spaces
81
- - **GitHub Repository**: Issues, PRs, discussions, and project boards
82
- - **Communication Channels**: Discord, Slack, or other official channels
83
- - **Documentation**: Wiki, docs site, and README files
84
- - **Events**: Conferences, meetups, and online presentations
85
-
86
- ### 🌐 Public Representation
87
- - Using an official e-mail address
88
- - Posting via an official social media account
89
- - Acting as an appointed representative at online or offline events
90
- - Speaking about the project in interviews or presentations
91
-
92
- ## 📞 Reporting Guidelines
93
-
94
- ### 🚨 How to Report
95
- If you experience or witness unacceptable behavior, or have any other concerns, please report it by contacting the community leaders:
96
-
97
- - **General Issues**: conduct@[domain]
98
- - **Security Issues**: security@[domain]
99
- - **Direct Contact**: [@rashidazarang](https://github.com/rashidazarang)
100
- - **Anonymous Reporting**: [to be set up as community grows]
101
-
102
- ### 📝 What to Include
103
- When reporting, please include:
104
- - Your contact information (if comfortable sharing)
105
- - Details of the incident, including:
106
- - When and where it occurred
107
- - What happened
108
- - Who was involved
109
- - Any available evidence (screenshots, links, etc.)
110
- - Any additional context that would be helpful
111
-
112
- ### ⚡ Response Timeline
113
- - **Acknowledgment**: Within 24 hours
114
- - **Initial Review**: Within 48 hours
115
- - **Investigation**: 1-7 days (depending on complexity)
116
- - **Resolution**: Varies based on the situation
117
- - **Follow-up**: Ongoing as needed
118
-
119
- ## 🔧 Enforcement Guidelines
120
-
121
- Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
122
-
123
- ### 1. 📝 Correction
124
- **Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
125
-
126
- **Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
127
-
128
- ### 2. ⚠️ Warning
129
- **Community Impact**: A violation through a single incident or series of actions.
130
-
131
- **Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
132
-
133
- ### 3. ⏸️ Temporary Ban
134
- **Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
135
-
136
- **Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
137
-
138
- ### 4. 🚫 Permanent Ban
139
- **Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
140
-
141
- **Consequence**: A permanent ban from any sort of public interaction within the community.
142
-
143
- ## 🔄 Appeals Process
144
-
145
- ### 📝 How to Appeal
146
- If you believe you have been unfairly sanctioned, you may appeal by:
147
- 1. Contacting the community leaders at appeals@[domain]
148
- 2. Providing a detailed explanation of why you believe the action was unfair
149
- 3. Including any relevant evidence or context
150
- 4. Waiting for review and response
151
-
152
- ### ⏱️ Appeal Timeline
153
- - **Review Period**: 7-14 days
154
- - **Decision**: Final decisions will be communicated clearly
155
- - **Implementation**: Changes take effect immediately upon decision
156
-
157
- ## 🙏 Attribution
158
-
159
- This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
160
-
161
- Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
162
-
163
- For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations].
164
-
165
- ## 🎯 Our Commitment
166
-
167
- As we work towards our **100/100 Trust Score** goal, we recognize that trust extends beyond technical excellence to include community trust. This Code of Conduct is our commitment to maintaining a community that reflects the same high standards of security, quality, and reliability that we strive for in our code.
168
-
169
- Together, we're not just building software – we're building a trusted community that makes the entire MCP ecosystem stronger. 🚀
170
-
171
- ---
172
-
173
- **Last Updated**: August 2025
174
- **Version**: 1.0
175
- **Contact**: conduct@[domain]
176
-
177
- [homepage]: https://www.contributor-covenant.org
178
- [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
179
- [Mozilla CoC]: https://github.com/mozilla/diversity
180
- [FAQ]: https://www.contributor-covenant.org/faq
181
- [translations]: https://www.contributor-covenant.org/translations
package/CONTRIBUTING.md DELETED
@@ -1,81 +0,0 @@
1
- # Contributing to Airtable MCP
2
-
3
- Thank you for your interest in contributing to Airtable MCP! This guide will help you get started with contributing to this project.
4
-
5
- ## Development Setup
6
-
7
- 1. **Clone the repository**:
8
- ```bash
9
- git clone https://github.com/rashidazarang/airtable-mcp.git
10
- cd airtable-mcp
11
- ```
12
-
13
- 2. **Install dependencies**:
14
- ```bash
15
- pip install -r requirements.txt
16
- ```
17
-
18
- 3. **Environment setup**:
19
- Create a `.env` file in the root directory with your Airtable API token:
20
- ```
21
- AIRTABLE_PERSONAL_ACCESS_TOKEN=your_token_here
22
- AIRTABLE_BASE_ID=optional_default_base_id
23
- ```
24
-
25
- ## Running the Server
26
-
27
- You can run the server directly with Python:
28
-
29
- ```bash
30
- python3.10 inspector_server.py --token "your_token" --base "your_base_id"
31
- ```
32
-
33
- Or through the Node.js wrapper:
34
-
35
- ```bash
36
- node index.js --token "your_token" --base "your_base_id"
37
- ```
38
-
39
- ## Testing
40
-
41
- Run the test client to verify your Airtable API access:
42
-
43
- ```bash
44
- python3.10 test_client.py
45
- ```
46
-
47
- ## Pull Request Process
48
-
49
- 1. **Fork the Repository** on GitHub.
50
-
51
- 2. **Create a Branch** for your feature or bugfix.
52
-
53
- 3. **Make Changes** according to the project style guidelines.
54
-
55
- 4. **Test Thoroughly** to ensure your changes work as expected.
56
-
57
- 5. **Document Changes** in the README.md if necessary.
58
-
59
- 6. **Submit a Pull Request** to the main repository.
60
-
61
- ## Coding Guidelines
62
-
63
- - Follow Python PEP 8 style guidelines
64
- - Write docstrings for all functions, classes, and modules
65
- - Include type hints for function parameters and return values
66
- - Write clear commit messages
67
-
68
- ## Adding New Tools
69
-
70
- When adding new Airtable API tools:
71
-
72
- 1. Add the tool function to `inspector_server.py` using the `@app.tool()` decorator
73
- 2. Define clear parameter and return types
74
- 3. Provide a descriptive docstring for the tool
75
- 4. Update the inspector.py file to include the new tool in the JSON schema
76
- 5. Add error handling for API requests
77
- 6. Update the README.md to document the new tool
78
-
79
- ## License
80
-
81
- By contributing to this project, you agree that your contributions will be licensed under the project's MIT License.
package/DEVELOPMENT.md DELETED
@@ -1,190 +0,0 @@
1
- # Development Guide
2
-
3
- ## 🛠️ **Development Setup**
4
-
5
- ### Prerequisites
6
- - Node.js >= 14.0.0
7
- - Python 3.10+ (for legacy Python server)
8
- - Airtable Personal Access Token
9
-
10
- ### Installation
11
- ```bash
12
- git clone https://github.com/rashidazarang/airtable-mcp.git
13
- cd airtable-mcp
14
- npm install
15
- ```
16
-
17
- ## 🏗️ **Architecture Overview**
18
-
19
- ### **Recommended Implementation: `airtable_simple.js`**
20
- - **Status**: ✅ Production Ready
21
- - **Protocol**: HTTP/JSON-RPC 2.0
22
- - **Port**: 8010
23
- - **Features**:
24
- - Direct Airtable API integration
25
- - Proper error handling
26
- - CORS support
27
- - Standard MCP tool definitions
28
-
29
- ### **Legacy Implementation: `inspector_server.py`**
30
- - **Status**: ⚠️ Has compatibility issues
31
- - **Protocol**: FastMCP (Python)
32
- - **Issues**:
33
- - `app.rpc_method` not available in MCP 1.4.1
34
- - `app.start()` method missing
35
- - Complex dependency management
36
-
37
- ## 🧪 **Testing**
38
-
39
- ### **Quick Tests**
40
- ```bash
41
- # Run quick tests
42
- npm run test:quick
43
-
44
- # Run comprehensive tests
45
- npm run test
46
- ```
47
-
48
- ### **Manual Testing**
49
- ```bash
50
- # Start the server
51
- npm start -- --token YOUR_TOKEN --base YOUR_BASE_ID
52
-
53
- # Test with curl
54
- curl -X POST http://localhost:8010/mcp \
55
- -H "Content-Type: application/json" \
56
- -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "list_tables"}}'
57
- ```
58
-
59
- ## 🔧 **Adding New Tools**
60
-
61
- ### **JavaScript Server (`airtable_simple.js`)**
62
-
63
- 1. **Add Tool Handler**
64
- ```javascript
65
- if (toolName === 'your_new_tool') {
66
- // Your tool implementation
67
- const result = await callAirtableAPI('your/endpoint');
68
-
69
- const response = {
70
- jsonrpc: '2.0',
71
- id: request.id,
72
- result: {
73
- content: [
74
- {
75
- type: 'text',
76
- text: 'Your tool response'
77
- }
78
- ]
79
- }
80
- };
81
-
82
- res.writeHead(200, { 'Content-Type': 'application/json' });
83
- res.end(JSON.stringify(response));
84
- return;
85
- }
86
- ```
87
-
88
- 2. **Add to Resources/Prompts** (if needed)
89
- ```javascript
90
- // In resources/list handler
91
- {
92
- id: 'your_resource',
93
- name: 'Your Resource',
94
- description: 'Description of your resource'
95
- }
96
-
97
- // In prompts/list handler
98
- {
99
- id: 'your_prompt',
100
- name: 'Your Prompt',
101
- description: 'Description of your prompt'
102
- }
103
- ```
104
-
105
- ### **Python Server (`inspector_server.py`)**
106
-
107
- ⚠️ **Note**: The Python server has compatibility issues and is not recommended for new development.
108
-
109
- ## 📦 **Building and Publishing**
110
-
111
- ### **Update Version**
112
- ```bash
113
- # Update version in package.json
114
- npm version patch # or minor/major
115
- ```
116
-
117
- ### **Test Before Publishing**
118
- ```bash
119
- # Run all tests
120
- npm run test
121
- npm run test:quick
122
-
123
- # Test with real Airtable data
124
- npm start -- --token YOUR_TOKEN --base YOUR_BASE_ID
125
- ```
126
-
127
- ### **Publish to NPM**
128
- ```bash
129
- npm publish
130
- ```
131
-
132
- ## 🐛 **Debugging**
133
-
134
- ### **Common Issues**
135
-
136
- 1. **Port Already in Use**
137
- ```bash
138
- lsof -ti:8010 | xargs kill -9
139
- ```
140
-
141
- 2. **Python MCP Compatibility**
142
- - Check MCP version: `pip show mcp`
143
- - Update to latest: `pip install --upgrade mcp`
144
-
145
- 3. **Airtable API Issues**
146
- - Verify token permissions
147
- - Check base ID format
148
- - Test API directly: `curl -H "Authorization: Bearer YOUR_TOKEN" https://api.airtable.com/v0/meta/bases`
149
-
150
- ### **Logging**
151
- - JavaScript server logs to console
152
- - Python server uses Python logging
153
- - Check for error messages in MCP client logs
154
-
155
- ## 📋 **Code Standards**
156
-
157
- ### **JavaScript**
158
- - Use ES6+ features
159
- - Proper error handling with try/catch
160
- - Consistent JSON-RPC response format
161
- - Add JSDoc comments for functions
162
-
163
- ### **Python**
164
- - Follow PEP 8 style guide
165
- - Use type hints
166
- - Proper exception handling
167
- - Add docstrings for functions
168
-
169
- ## 🤝 **Contributing**
170
-
171
- 1. Fork the repository
172
- 2. Create a feature branch
173
- 3. Make your changes
174
- 4. Add tests
175
- 5. Update documentation
176
- 6. Submit a pull request
177
-
178
- ### **Before Submitting**
179
- - [ ] All tests pass
180
- - [ ] Documentation updated
181
- - [ ] No console errors
182
- - [ ] MCP protocol compliance verified
183
-
184
- ## 📚 **Resources**
185
-
186
- - [MCP Specification](https://modelcontextprotocol.io/)
187
- - [Airtable API Documentation](https://airtable.com/developers/web/api/introduction)
188
- - [JSON-RPC 2.0 Specification](https://www.jsonrpc.org/specification)
189
-
190
-
package/Dockerfile DELETED
@@ -1,39 +0,0 @@
1
- FROM python:3.10-slim
2
-
3
- WORKDIR /app
4
-
5
- # Install Node.js for the NPX functionality
6
- RUN apt-get update && \
7
- apt-get install -y curl gnupg && \
8
- curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
9
- apt-get install -y nodejs && \
10
- apt-get clean && \
11
- rm -rf /var/lib/apt/lists/*
12
-
13
- # Copy package files first (for better layer caching)
14
- COPY package.json /app/
15
- COPY package-lock.json /app/
16
-
17
- # Install Node.js dependencies
18
- RUN npm install
19
-
20
- # Copy Python requirements and install
21
- COPY requirements.txt /app/
22
- RUN pip install --no-cache-dir -r requirements.txt
23
-
24
- # Copy source code
25
- COPY index.js /app/
26
- COPY inspector.py /app/
27
- COPY inspector_server.py /app/
28
- COPY airtable_mcp/ /app/airtable_mcp/
29
-
30
- # Set environment variables
31
- ENV NODE_ENV=production
32
- ENV PYTHONUNBUFFERED=1
33
-
34
- # Expose the port the server might run on
35
- EXPOSE 3000
36
-
37
- # Start the server in STDIO mode by default
38
- # Smithery will override this with their own command
39
- CMD ["python3", "inspector_server.py"]