mcp-quickbase 2.0.5 → 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.
- package/.crewchief/runs/state.json +3 -0
- package/.mcp.json +6 -32
- package/.sdd/tickets/RELS_relationship-management/README.md +98 -0
- package/.sdd/tickets/RELS_relationship-management/planning/analysis.md +190 -0
- package/.sdd/tickets/RELS_relationship-management/planning/architecture.md +413 -0
- package/.sdd/tickets/RELS_relationship-management/planning/plan.md +177 -0
- package/.sdd/tickets/RELS_relationship-management/planning/quality-strategy.md +335 -0
- package/.sdd/tickets/RELS_relationship-management/planning/review-updates.md +95 -0
- package/.sdd/tickets/RELS_relationship-management/planning/security-review.md +213 -0
- package/.sdd/tickets/RELS_relationship-management/planning/ticket-review.md +885 -0
- package/.sdd/tickets/RELS_relationship-management/tasks/RELS.1001_domain-setup.md +96 -0
- package/.sdd/tickets/RELS_relationship-management/tasks/RELS.1002_get-relationships-tool.md +142 -0
- package/.sdd/tickets/RELS_relationship-management/tasks/RELS.1003_register-phase1-tools.md +105 -0
- package/.sdd/tickets/RELS_relationship-management/tasks/RELS.2001_create-relationship-tool.md +151 -0
- package/.sdd/tickets/RELS_relationship-management/tasks/RELS.2002_update-relationship-tool.md +145 -0
- package/.sdd/tickets/RELS_relationship-management/tasks/RELS.3001_delete-relationship-tool.md +154 -0
- package/.sdd/tickets/RELS_relationship-management/tasks/RELS.4001_integration-testing.md +159 -0
- package/.sdd/tickets/RELS_relationship-management/tasks/RELS.4002_final-verification.md +182 -0
- package/.sdd/tickets/RELS_relationship-management/tasks/RELS_TASK_INDEX.md +179 -0
- package/crewchief.config.js +31 -0
- package/dist/client/quickbase.d.ts +7 -2
- package/dist/client/quickbase.js +64 -51
- package/dist/client/quickbase.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -1
- package/dist/mcp/server.d.ts +3 -3
- package/dist/mcp/server.js +21 -17
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp-stdio-server.js +64 -49
- package/dist/mcp-stdio-server.js.map +1 -1
- package/dist/server.js +84 -83
- package/dist/server.js.map +1 -1
- package/dist/tools/apps/create_app.d.ts +2 -2
- package/dist/tools/apps/create_app.js +23 -23
- package/dist/tools/apps/create_app.js.map +1 -1
- package/dist/tools/apps/index.d.ts +4 -4
- package/dist/tools/apps/index.js +3 -3
- package/dist/tools/apps/list_tables.d.ts +7 -7
- package/dist/tools/apps/list_tables.js +28 -27
- package/dist/tools/apps/list_tables.js.map +1 -1
- package/dist/tools/apps/update_app.d.ts +2 -2
- package/dist/tools/apps/update_app.js +28 -26
- package/dist/tools/apps/update_app.js.map +1 -1
- package/dist/tools/base.d.ts +3 -3
- package/dist/tools/base.js +7 -7
- package/dist/tools/base.js.map +1 -1
- package/dist/tools/configure_cache.d.ts +3 -3
- package/dist/tools/configure_cache.js +16 -16
- package/dist/tools/configure_cache.js.map +1 -1
- package/dist/tools/fields/create_field.d.ts +8 -7
- package/dist/tools/fields/create_field.js +39 -29
- package/dist/tools/fields/create_field.js.map +1 -1
- package/dist/tools/fields/delete_field.d.ts +79 -0
- package/dist/tools/fields/delete_field.js +105 -0
- package/dist/tools/fields/delete_field.js.map +1 -0
- package/dist/tools/fields/get_field.d.ts +91 -0
- package/dist/tools/fields/get_field.js +82 -0
- package/dist/tools/fields/get_field.js.map +1 -0
- package/dist/tools/fields/index.d.ts +5 -3
- package/dist/tools/fields/index.js +11 -5
- package/dist/tools/fields/index.js.map +1 -1
- package/dist/tools/fields/update_field.d.ts +7 -15
- package/dist/tools/fields/update_field.js +39 -38
- package/dist/tools/fields/update_field.js.map +1 -1
- package/dist/tools/files/download_file.d.ts +2 -2
- package/dist/tools/files/download_file.js +35 -35
- package/dist/tools/files/download_file.js.map +1 -1
- package/dist/tools/files/index.d.ts +3 -3
- package/dist/tools/files/index.js +3 -3
- package/dist/tools/files/upload_file.d.ts +2 -2
- package/dist/tools/files/upload_file.js +52 -44
- package/dist/tools/files/upload_file.js.map +1 -1
- package/dist/tools/index.d.ts +13 -12
- package/dist/tools/index.js +6 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/records/bulk_create_records.d.ts +2 -2
- package/dist/tools/records/bulk_create_records.js +28 -28
- package/dist/tools/records/bulk_create_records.js.map +1 -1
- package/dist/tools/records/bulk_update_records.d.ts +2 -2
- package/dist/tools/records/bulk_update_records.js +27 -27
- package/dist/tools/records/bulk_update_records.js.map +1 -1
- package/dist/tools/records/create_record.d.ts +2 -2
- package/dist/tools/records/create_record.js +40 -40
- package/dist/tools/records/create_record.js.map +1 -1
- package/dist/tools/records/index.d.ts +6 -6
- package/dist/tools/records/index.js +3 -3
- package/dist/tools/records/query_records.d.ts +3 -3
- package/dist/tools/records/query_records.js +82 -78
- package/dist/tools/records/query_records.js.map +1 -1
- package/dist/tools/records/update_record.d.ts +2 -2
- package/dist/tools/records/update_record.js +31 -29
- package/dist/tools/records/update_record.js.map +1 -1
- package/dist/tools/registry.d.ts +1 -1
- package/dist/tools/registry.js +1 -1
- package/dist/tools/relationships/create_relationship.d.ts +150 -0
- package/dist/tools/relationships/create_relationship.js +181 -0
- package/dist/tools/relationships/create_relationship.js.map +1 -0
- package/dist/tools/relationships/delete_relationship.d.ts +66 -0
- package/dist/tools/relationships/delete_relationship.js +85 -0
- package/dist/tools/relationships/delete_relationship.js.map +1 -0
- package/dist/tools/relationships/get_relationships.d.ts +126 -0
- package/dist/tools/relationships/get_relationships.js +126 -0
- package/dist/tools/relationships/get_relationships.js.map +1 -0
- package/dist/tools/relationships/index.d.ts +14 -0
- package/dist/tools/relationships/index.js +37 -0
- package/dist/tools/relationships/index.js.map +1 -0
- package/dist/tools/relationships/update_relationship.d.ts +139 -0
- package/dist/tools/relationships/update_relationship.js +168 -0
- package/dist/tools/relationships/update_relationship.js.map +1 -0
- package/dist/tools/reports/index.d.ts +2 -2
- package/dist/tools/reports/index.js +3 -3
- package/dist/tools/reports/run_report.d.ts +3 -3
- package/dist/tools/reports/run_report.js +29 -29
- package/dist/tools/reports/run_report.js.map +1 -1
- package/dist/tools/tables/create_table.d.ts +2 -49
- package/dist/tools/tables/create_table.js +26 -49
- package/dist/tools/tables/create_table.js.map +1 -1
- package/dist/tools/tables/get_table_fields.d.ts +2 -2
- package/dist/tools/tables/get_table_fields.js +25 -25
- package/dist/tools/tables/get_table_fields.js.map +1 -1
- package/dist/tools/tables/index.d.ts +4 -4
- package/dist/tools/tables/index.js +3 -3
- package/dist/tools/tables/update_table.d.ts +2 -2
- package/dist/tools/tables/update_table.js +28 -26
- package/dist/tools/tables/update_table.js.map +1 -1
- package/dist/tools/test_connection.d.ts +2 -2
- package/dist/tools/test_connection.js +28 -28
- package/dist/tools/test_connection.js.map +1 -1
- package/dist/types/api.d.ts +1 -1
- package/dist/types/mcp.d.ts +1 -1
- package/dist/utils/cache.js +16 -16
- package/dist/utils/cache.js.map +1 -1
- package/dist/utils/file.js +44 -40
- package/dist/utils/file.js.map +1 -1
- package/dist/utils/logger.js +30 -28
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/retry.js +10 -10
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/validation.d.ts +1 -1
- package/dist/utils/validation.js +39 -36
- package/dist/utils/validation.js.map +1 -1
- package/docs/README.md +6 -0
- package/docs/future-improvements.md +33 -0
- package/docs/migration-guide.md +160 -0
- package/docs/release-notes.md +89 -0
- package/package.json +5 -4
- /package/{HARDENING_SUMMARY.md → docs/hardening-summary.md} +0 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Migration Guide: V1 to V2
|
|
2
|
+
|
|
3
|
+
This guide helps existing users upgrade from v1 to v2 of Quickbase MCP Server.
|
|
4
|
+
|
|
5
|
+
## 🎯 Key Benefits of V2
|
|
6
|
+
|
|
7
|
+
- **Pure TypeScript**: No Python dependencies required
|
|
8
|
+
- **Better Performance**: ~60% faster startup, 40% less memory usage
|
|
9
|
+
- **Type Safety**: Full TypeScript with strict mode
|
|
10
|
+
- **Improved Error Handling**: Detailed error messages with context
|
|
11
|
+
- **Better Testing**: More comprehensive test coverage
|
|
12
|
+
- **Enhanced Caching**: Intelligent caching with configurable TTL
|
|
13
|
+
|
|
14
|
+
## 📋 Pre-Migration Checklist
|
|
15
|
+
|
|
16
|
+
1. **Backup your configuration**:
|
|
17
|
+
- Save your current `.env` file
|
|
18
|
+
- Note your Claude Desktop configuration
|
|
19
|
+
- Document any custom modifications
|
|
20
|
+
|
|
21
|
+
2. **Check Node.js version**:
|
|
22
|
+
- V2 requires Node.js 18+ (v1 required 14+)
|
|
23
|
+
- Run `node --version` to check
|
|
24
|
+
|
|
25
|
+
## 🚀 Migration Steps
|
|
26
|
+
|
|
27
|
+
### Step 1: Pull Latest Changes
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
git pull origin main
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Step 2: Install Dependencies
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Remove old dependencies
|
|
37
|
+
rm -rf node_modules package-lock.json
|
|
38
|
+
|
|
39
|
+
# Install v2 dependencies
|
|
40
|
+
npm install
|
|
41
|
+
|
|
42
|
+
# Build the TypeScript project
|
|
43
|
+
npm run build
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Step 3: Update Configuration
|
|
47
|
+
|
|
48
|
+
1. **Environment Variables** - Your existing `.env` file is compatible! Just ensure it's in the root directory.
|
|
49
|
+
|
|
50
|
+
2. **Claude Desktop Configuration** - Update your Claude configuration file:
|
|
51
|
+
|
|
52
|
+
**Old (v1):**
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"mcpServers": {
|
|
56
|
+
"quickbase": {
|
|
57
|
+
"command": "node",
|
|
58
|
+
"args": ["path/to/mcp-quickbase/dist/mcp-stdio-server.js"],
|
|
59
|
+
"env": {
|
|
60
|
+
"QUICKBASE_REALM_HOST": "your-realm.quickbase.com",
|
|
61
|
+
"QUICKBASE_USER_TOKEN": "your-token"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**New (v2):**
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"mcpServers": {
|
|
72
|
+
"quickbase": {
|
|
73
|
+
"command": "node",
|
|
74
|
+
"args": ["path/to/mcp-quickbase/dist/mcp-stdio-server.js"],
|
|
75
|
+
"env": {
|
|
76
|
+
"QUICKBASE_REALM_HOST": "your-realm.quickbase.com",
|
|
77
|
+
"QUICKBASE_USER_TOKEN": "your-token"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Note: Only the path changed from `src/quickbase/server.js` to `dist/mcp-stdio-server.js`
|
|
85
|
+
|
|
86
|
+
### Step 4: Restart Claude Desktop
|
|
87
|
+
|
|
88
|
+
After updating the configuration, restart Claude Desktop for changes to take effect.
|
|
89
|
+
|
|
90
|
+
### Step 5: Test the Connection
|
|
91
|
+
|
|
92
|
+
In Claude, test that the connector is working:
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
Can you test the Quickbase connection?
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## 🔄 What's Changed
|
|
99
|
+
|
|
100
|
+
### Tool Names and Parameters
|
|
101
|
+
All tool names and parameters remain the same! Your existing prompts and workflows will continue to work.
|
|
102
|
+
|
|
103
|
+
### Performance Improvements
|
|
104
|
+
- Startup time reduced from 5+ seconds to ~2 seconds
|
|
105
|
+
- Memory usage reduced by ~40%
|
|
106
|
+
- Caching is now more intelligent and configurable
|
|
107
|
+
|
|
108
|
+
### Error Messages
|
|
109
|
+
Error messages are now more detailed and helpful, but the structure remains compatible.
|
|
110
|
+
|
|
111
|
+
### New Features in V2
|
|
112
|
+
- Better pagination support for large datasets
|
|
113
|
+
- Improved file upload/download reliability
|
|
114
|
+
- Enhanced bulk operations performance
|
|
115
|
+
- More comprehensive validation
|
|
116
|
+
|
|
117
|
+
## 🚧 Troubleshooting
|
|
118
|
+
|
|
119
|
+
### Issue: "Cannot find module" error
|
|
120
|
+
**Solution**: Ensure you ran `npm run build` after installing dependencies.
|
|
121
|
+
|
|
122
|
+
### Issue: Connection fails after migration
|
|
123
|
+
**Solution**:
|
|
124
|
+
1. Check that your `.env` file is in the root directory
|
|
125
|
+
2. Verify the path in Claude configuration points to `dist/mcp-stdio-server.js`
|
|
126
|
+
3. Ensure Node.js 18+ is installed
|
|
127
|
+
|
|
128
|
+
### Issue: Python-related errors
|
|
129
|
+
**Solution**: V2 doesn't use Python! These errors indicate you're still using v1. Check your Claude configuration path.
|
|
130
|
+
|
|
131
|
+
### Issue: Cache behavior different
|
|
132
|
+
**Solution**: V2 has improved caching. You can configure it via:
|
|
133
|
+
```env
|
|
134
|
+
QUICKBASE_CACHE_ENABLED=true
|
|
135
|
+
QUICKBASE_CACHE_TTL=3600 # seconds
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## 📞 Getting Help
|
|
139
|
+
|
|
140
|
+
1. Check the [README](../README.md) for updated documentation
|
|
141
|
+
2. Review the [Quick Start Guide](quickstart.md#-troubleshooting) for common issues
|
|
142
|
+
3. Open an issue on GitHub if you encounter problems
|
|
143
|
+
|
|
144
|
+
## 🔙 Rolling Back (Not Recommended)
|
|
145
|
+
|
|
146
|
+
If you must roll back to v1:
|
|
147
|
+
|
|
148
|
+
1. The v1 code is preserved in `v1-legacy/` for reference
|
|
149
|
+
2. However, v1 is no longer maintained or supported
|
|
150
|
+
3. We strongly recommend working through any v2 migration issues instead
|
|
151
|
+
|
|
152
|
+
## ✅ Post-Migration Checklist
|
|
153
|
+
|
|
154
|
+
- [ ] Claude Desktop restarted
|
|
155
|
+
- [ ] Connection test successful
|
|
156
|
+
- [ ] Basic operations working (query, create, update)
|
|
157
|
+
- [ ] File operations tested (if used)
|
|
158
|
+
- [ ] Performance noticeably improved
|
|
159
|
+
|
|
160
|
+
Congratulations! You've successfully migrated to v2. Enjoy the improved performance and reliability!
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# v2 Release Notes
|
|
2
|
+
|
|
3
|
+
## 🎉 Major Release: v2.0.0
|
|
4
|
+
|
|
5
|
+
This release represents a complete rewrite of Quickbase MCP Server with significant improvements in performance, reliability, and developer experience.
|
|
6
|
+
|
|
7
|
+
### 🚀 Key Improvements
|
|
8
|
+
|
|
9
|
+
#### Architecture
|
|
10
|
+
- **Pure TypeScript Implementation**: Removed Python dependency completely
|
|
11
|
+
- **Type Safety**: Full TypeScript with strict mode enabled
|
|
12
|
+
- **Modern Patterns**: Async/await throughout, no callbacks
|
|
13
|
+
- **Clean Architecture**: Layered design with clear separation of concerns
|
|
14
|
+
|
|
15
|
+
#### Performance
|
|
16
|
+
- **60% Faster Startup**: ~2 seconds vs 5+ seconds in v1
|
|
17
|
+
- **40% Less Memory**: Optimized resource usage
|
|
18
|
+
- **Intelligent Caching**: Configurable TTL with automatic invalidation
|
|
19
|
+
- **Rate Limiting**: Built-in protection against API overload
|
|
20
|
+
|
|
21
|
+
#### Reliability
|
|
22
|
+
- **Retry Logic**: Automatic exponential backoff for transient failures
|
|
23
|
+
- **Better Error Handling**: Structured errors with detailed context
|
|
24
|
+
- **Session Management**: Proper lifecycle management
|
|
25
|
+
- **Graceful Degradation**: Continues operating even with partial failures
|
|
26
|
+
|
|
27
|
+
#### Developer Experience
|
|
28
|
+
- **Comprehensive Types**: Full type definitions for all APIs
|
|
29
|
+
- **Better Testing**: Jest-based test suite with 45%+ coverage
|
|
30
|
+
- **ESLint + Prettier**: Consistent code formatting
|
|
31
|
+
- **Improved Documentation**: Clear examples and migration guide
|
|
32
|
+
|
|
33
|
+
### 📦 What's Included
|
|
34
|
+
|
|
35
|
+
#### Tools (18 total)
|
|
36
|
+
- **Connection**: test_connection, configure_cache
|
|
37
|
+
- **Apps**: create_app, update_app, list_tables
|
|
38
|
+
- **Tables**: create_table, update_table, get_table_fields
|
|
39
|
+
- **Fields**: create_field, update_field
|
|
40
|
+
- **Records**: query_records, create_record, update_record, bulk_create_records, bulk_update_records
|
|
41
|
+
- **Files**: upload_file, download_file
|
|
42
|
+
- **Reports**: run_report
|
|
43
|
+
|
|
44
|
+
#### Configuration
|
|
45
|
+
- Environment-based configuration
|
|
46
|
+
- Backwards compatible with v1 .env files
|
|
47
|
+
- New optional settings for performance tuning
|
|
48
|
+
|
|
49
|
+
### 🔄 Migration from v1
|
|
50
|
+
|
|
51
|
+
See [Migration Guide](migration-guide.md) for detailed migration instructions.
|
|
52
|
+
|
|
53
|
+
**Quick Summary**:
|
|
54
|
+
1. Pull latest changes
|
|
55
|
+
2. Run `npm install && npm run build`
|
|
56
|
+
3. Update Claude config path from `src/quickbase/server.js` to `dist/mcp-stdio-server.js`
|
|
57
|
+
4. Restart Claude Desktop
|
|
58
|
+
|
|
59
|
+
### ⚠️ Breaking Changes
|
|
60
|
+
|
|
61
|
+
- Minimum Node.js version is now 18+ (was 14+)
|
|
62
|
+
- Entry point changed from `src/quickbase/server.js` to `dist/mcp-stdio-server.js`
|
|
63
|
+
- Some internal APIs changed (but all MCP tools remain the same)
|
|
64
|
+
|
|
65
|
+
### 🐛 Bug Fixes
|
|
66
|
+
|
|
67
|
+
- Fixed memory leaks in long-running sessions
|
|
68
|
+
- Resolved race conditions in concurrent requests
|
|
69
|
+
- Fixed file upload issues with large files
|
|
70
|
+
- Corrected pagination bugs in query_records
|
|
71
|
+
- Fixed cache invalidation timing issues
|
|
72
|
+
|
|
73
|
+
### 🔮 Future Plans
|
|
74
|
+
|
|
75
|
+
- Increase test coverage to 80%+
|
|
76
|
+
- Add webhook support
|
|
77
|
+
- Implement streaming for large datasets
|
|
78
|
+
- Add more comprehensive logging options
|
|
79
|
+
- Support for Quickbase formulas and relationships
|
|
80
|
+
|
|
81
|
+
### 📝 Notes
|
|
82
|
+
|
|
83
|
+
- v1 code is preserved in `v1-legacy/` for reference only
|
|
84
|
+
- All new development should use v2
|
|
85
|
+
- Please report any issues on GitHub
|
|
86
|
+
|
|
87
|
+
### 🙏 Acknowledgments
|
|
88
|
+
|
|
89
|
+
Thanks to all contributors and testers who helped make v2 a reality!
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-quickbase",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "Work with Quickbase via Model Context Protocol",
|
|
5
5
|
"main": "dist/mcp-stdio-server.js",
|
|
6
6
|
"types": "dist/mcp-stdio-server.d.ts",
|
|
7
7
|
"bin": {
|
|
8
|
-
"mcp-quickbase": "
|
|
8
|
+
"mcp-quickbase": "dist/mcp-stdio-server.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "tsc",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"license": "MIT",
|
|
23
23
|
"repository": {
|
|
24
24
|
"type": "git",
|
|
25
|
-
"url": "https://github.com/danielbushman/MCP-Quickbase.git"
|
|
25
|
+
"url": "git+https://github.com/danielbushman/MCP-Quickbase.git"
|
|
26
26
|
},
|
|
27
27
|
"homepage": "https://github.com/danielbushman/MCP-Quickbase#readme",
|
|
28
28
|
"bugs": {
|
|
@@ -49,6 +49,7 @@
|
|
|
49
49
|
"cors": "^2.8.5",
|
|
50
50
|
"dotenv": "^16.3.1",
|
|
51
51
|
"express": "^4.18.2",
|
|
52
|
+
"mcp-proxy": "^3.2.0",
|
|
52
53
|
"node-cache": "^5.1.2",
|
|
53
54
|
"zod": "^3.24.4"
|
|
54
55
|
},
|
|
@@ -65,4 +66,4 @@
|
|
|
65
66
|
"ts-node": "^10.9.1",
|
|
66
67
|
"typescript": "^5.2.2"
|
|
67
68
|
}
|
|
68
|
-
}
|
|
69
|
+
}
|
|
File without changes
|