@rashidazarang/airtable-mcp 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +10 -1
- package/.github/ISSUE_TEMPLATE/bug-report.yml +0 -173
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
- package/.github/ISSUE_TEMPLATE/custom.md +0 -10
- package/.github/ISSUE_TEMPLATE/feature-request.yml +0 -209
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/.github/ISSUE_TEMPLATE/security-report.yml +0 -216
- package/.github/pull_request_template.md +0 -245
- package/.github/workflows/ci-cd.yml +0 -408
- package/.github/workflows/security-audit.yml +0 -316
- package/API_DOCUMENTATION.md +0 -897
- package/CAPABILITY_REPORT.md +0 -118
- package/CLAUDE_INTEGRATION.md +0 -96
- package/CODE_OF_CONDUCT.md +0 -181
- package/CONTRIBUTING.md +0 -81
- package/DEVELOPMENT.md +0 -190
- package/Dockerfile +0 -39
- package/Dockerfile.node +0 -20
- package/Dockerfile.production +0 -127
- package/IMPROVEMENT_PROPOSAL.md +0 -371
- package/INSTALLATION.md +0 -183
- package/ISSUE_RESPONSES.md +0 -171
- package/MCP_REVIEW_SUMMARY.md +0 -142
- package/QUICK_START.md +0 -60
- package/RELEASE_NOTES_v1.2.0.md +0 -50
- package/RELEASE_NOTES_v1.2.1.md +0 -40
- package/RELEASE_NOTES_v1.2.2.md +0 -48
- package/RELEASE_NOTES_v1.2.3.md +0 -105
- package/RELEASE_NOTES_v1.2.4.md +0 -60
- package/RELEASE_NOTES_v1.4.0.md +0 -104
- package/RELEASE_NOTES_v1.5.0.md +0 -185
- package/RELEASE_NOTES_v1.6.0.md +0 -248
- package/SECURITY_NOTICE.md +0 -40
- package/airtable-clipper/CHANGELOG.md +0 -198
- package/airtable-clipper/CHROME_STORE_SUBMISSION.md +0 -343
- package/airtable-clipper/LAUNCH_STRATEGY.md +0 -495
- package/airtable-clipper/LICENSE +0 -21
- package/airtable-clipper/OAUTH_SETUP.md +0 -51
- package/airtable-clipper/PRIVACY_POLICY.md +0 -187
- package/airtable-clipper/README.md +0 -575
- package/airtable-clipper/SUBMIT_TO_CHROME_STORE.md +0 -273
- package/airtable-clipper/build.sh +0 -85
- package/airtable-clipper/docs/QUICK_START.md +0 -99
- package/airtable-clipper/docs/SETUP.md +0 -291
- package/airtable-clipper/extension/background.js +0 -337
- package/airtable-clipper/extension/base-setup.html +0 -324
- package/airtable-clipper/extension/base-setup.js +0 -471
- package/airtable-clipper/extension/content.js +0 -771
- package/airtable-clipper/extension/icons/README.md +0 -69
- package/airtable-clipper/extension/icons/icon-16.png +0 -3
- package/airtable-clipper/extension/manifest.json +0 -73
- package/airtable-clipper/extension/popup.html +0 -144
- package/airtable-clipper/extension/popup.js +0 -475
- package/airtable-clipper/extension/styles/content.css +0 -229
- package/airtable-clipper/extension/styles/popup.css +0 -477
- package/airtable-clipper/privacy-policy.md +0 -63
- package/airtable-clipper/releases/v1.0.0/background.js +0 -337
- package/airtable-clipper/releases/v1.0.0/base-setup.html +0 -324
- package/airtable-clipper/releases/v1.0.0/base-setup.js +0 -471
- package/airtable-clipper/releases/v1.0.0/content.js +0 -771
- package/airtable-clipper/releases/v1.0.0/icons/README.md +0 -69
- package/airtable-clipper/releases/v1.0.0/icons/icon-128.png +0 -2
- package/airtable-clipper/releases/v1.0.0/icons/icon-16.png +0 -3
- package/airtable-clipper/releases/v1.0.0/icons/icon-32.png +0 -2
- package/airtable-clipper/releases/v1.0.0/icons/icon-48.png +0 -2
- package/airtable-clipper/releases/v1.0.0/manifest.json +0 -73
- package/airtable-clipper/releases/v1.0.0/popup.html +0 -144
- package/airtable-clipper/releases/v1.0.0/popup.js +0 -475
- package/airtable-clipper/releases/v1.0.0/sidepanel.html +0 -25
- package/airtable-clipper/releases/v1.0.0/styles/content.css +0 -229
- package/airtable-clipper/releases/v1.0.0/styles/popup.css +0 -477
- package/airtable-clipper/releases/v1.0.1/background.js +0 -337
- package/airtable-clipper/releases/v1.0.1/base-setup.html +0 -324
- package/airtable-clipper/releases/v1.0.1/base-setup.js +0 -471
- package/airtable-clipper/releases/v1.0.1/content.js +0 -771
- package/airtable-clipper/releases/v1.0.1/icons/README.md +0 -69
- package/airtable-clipper/releases/v1.0.1/icons/icon-128.png +0 -2
- package/airtable-clipper/releases/v1.0.1/icons/icon-16.png +0 -3
- package/airtable-clipper/releases/v1.0.1/icons/icon-32.png +0 -2
- package/airtable-clipper/releases/v1.0.1/icons/icon-48.png +0 -2
- package/airtable-clipper/releases/v1.0.1/manifest.json +0 -70
- package/airtable-clipper/releases/v1.0.1/popup.html +0 -157
- package/airtable-clipper/releases/v1.0.1/popup.js +0 -562
- package/airtable-clipper/releases/v1.0.1/sidepanel.html +0 -25
- package/airtable-clipper/releases/v1.0.1/styles/content.css +0 -229
- package/airtable-clipper/releases/v1.0.1/styles/popup.css +0 -647
- package/airtable-clipper/releases/v1.0.2/background.js +0 -337
- package/airtable-clipper/releases/v1.0.2/base-setup.html +0 -324
- package/airtable-clipper/releases/v1.0.2/base-setup.js +0 -471
- package/airtable-clipper/releases/v1.0.2/content.js +0 -771
- package/airtable-clipper/releases/v1.0.2/icons/README.md +0 -69
- package/airtable-clipper/releases/v1.0.2/icons/icon-128.png +0 -2
- package/airtable-clipper/releases/v1.0.2/icons/icon-16.png +0 -3
- package/airtable-clipper/releases/v1.0.2/icons/icon-32.png +0 -2
- package/airtable-clipper/releases/v1.0.2/icons/icon-48.png +0 -2
- package/airtable-clipper/releases/v1.0.2/manifest.json +0 -62
- package/airtable-clipper/releases/v1.0.2/popup.html +0 -157
- package/airtable-clipper/releases/v1.0.2/popup.js +0 -567
- package/airtable-clipper/releases/v1.0.2/sidepanel.html +0 -25
- package/airtable-clipper/releases/v1.0.2/styles/content.css +0 -229
- package/airtable-clipper/releases/v1.0.2/styles/popup.css +0 -647
- package/airtable-clipper/terms-of-service.md +0 -124
- package/airtable-clipper/test-credentials.md +0 -61
- package/airtable-clipper/test-extension/background.js +0 -337
- package/airtable-clipper/test-extension/base-setup.html +0 -324
- package/airtable-clipper/test-extension/base-setup.js +0 -471
- package/airtable-clipper/test-extension/content.js +0 -873
- package/airtable-clipper/test-extension/icons/README.md +0 -69
- package/airtable-clipper/test-extension/icons/icon-128.png +0 -2
- package/airtable-clipper/test-extension/icons/icon-16.png +0 -3
- package/airtable-clipper/test-extension/icons/icon-32.png +0 -2
- package/airtable-clipper/test-extension/icons/icon-48.png +0 -2
- package/airtable-clipper/test-extension/manifest.json +0 -72
- package/airtable-clipper/test-extension/popup.html +0 -274
- package/airtable-clipper/test-extension/popup.js +0 -729
- package/airtable-clipper/test-extension/sidepanel.html +0 -25
- package/airtable-clipper/test-extension/styles/content.css +0 -229
- package/airtable-clipper/test-extension/styles/popup.css +0 -794
- package/airtable_mcp/__init__.py +0 -5
- package/airtable_mcp/src/server.py +0 -329
- package/airtable_mcp_v2.js +0 -1505
- package/airtable_mcp_v2_oauth.js +0 -1048
- package/airtable_mcp_v3_advanced.js +0 -1161
- package/cleanup.sh +0 -71
- package/docker-compose.production.yml +0 -366
- package/helm/airtable-mcp/Chart.yaml +0 -122
- package/helm/airtable-mcp/values.yaml +0 -538
- package/index.js +0 -179
- package/inspector.py +0 -148
- package/inspector_server.py +0 -337
- package/k8s/deployment.yaml +0 -402
- package/k8s/namespace.yaml +0 -108
- package/k8s/service.yaml +0 -194
- package/monitoring/alerts.yml +0 -289
- package/monitoring/prometheus.yml +0 -224
- package/publish-steps.txt +0 -27
- package/quick_test.sh +0 -30
- package/requirements.txt +0 -10
- package/setup.py +0 -29
- package/simple_airtable_server.py +0 -151
- package/smithery.yaml +0 -45
- package/test_all_features.sh +0 -146
- package/test_all_operations.sh +0 -120
- package/test_client.py +0 -70
- package/test_enhanced_features.js +0 -389
- package/test_mcp_comprehensive.js +0 -163
- package/test_mock_server.js +0 -180
- package/test_v1.4.0_final.sh +0 -131
- package/test_v1.5.0_comprehensive.sh +0 -96
- package/test_v1.5.0_final.sh +0 -224
- package/test_v1.6.0_comprehensive.sh +0 -187
- package/test_webhooks.sh +0 -105
package/CAPABILITY_REPORT.md
DELETED
|
@@ -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.
|
package/CLAUDE_INTEGRATION.md
DELETED
|
@@ -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
|
package/CODE_OF_CONDUCT.md
DELETED
|
@@ -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"]
|