mcp-quickbase 2.0.5 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/.crewchief/runs/state.json +3 -0
  2. package/.mcp.json +6 -32
  3. package/crewchief.config.js +31 -0
  4. package/dist/client/quickbase.d.ts +7 -2
  5. package/dist/client/quickbase.js +64 -51
  6. package/dist/client/quickbase.js.map +1 -1
  7. package/dist/mcp/index.d.ts +1 -1
  8. package/dist/mcp/server.d.ts +3 -3
  9. package/dist/mcp/server.js +21 -17
  10. package/dist/mcp/server.js.map +1 -1
  11. package/dist/mcp-stdio-server.js +64 -49
  12. package/dist/mcp-stdio-server.js.map +1 -1
  13. package/dist/server.js +84 -83
  14. package/dist/server.js.map +1 -1
  15. package/dist/tools/apps/create_app.d.ts +2 -2
  16. package/dist/tools/apps/create_app.js +23 -23
  17. package/dist/tools/apps/create_app.js.map +1 -1
  18. package/dist/tools/apps/index.d.ts +4 -4
  19. package/dist/tools/apps/index.js +3 -3
  20. package/dist/tools/apps/list_tables.d.ts +2 -2
  21. package/dist/tools/apps/list_tables.js +27 -26
  22. package/dist/tools/apps/list_tables.js.map +1 -1
  23. package/dist/tools/apps/update_app.d.ts +2 -2
  24. package/dist/tools/apps/update_app.js +28 -26
  25. package/dist/tools/apps/update_app.js.map +1 -1
  26. package/dist/tools/base.d.ts +3 -3
  27. package/dist/tools/base.js +7 -7
  28. package/dist/tools/base.js.map +1 -1
  29. package/dist/tools/configure_cache.d.ts +3 -3
  30. package/dist/tools/configure_cache.js +16 -16
  31. package/dist/tools/configure_cache.js.map +1 -1
  32. package/dist/tools/fields/create_field.d.ts +8 -7
  33. package/dist/tools/fields/create_field.js +39 -29
  34. package/dist/tools/fields/create_field.js.map +1 -1
  35. package/dist/tools/fields/delete_field.d.ts +79 -0
  36. package/dist/tools/fields/delete_field.js +105 -0
  37. package/dist/tools/fields/delete_field.js.map +1 -0
  38. package/dist/tools/fields/get_field.d.ts +91 -0
  39. package/dist/tools/fields/get_field.js +82 -0
  40. package/dist/tools/fields/get_field.js.map +1 -0
  41. package/dist/tools/fields/index.d.ts +5 -3
  42. package/dist/tools/fields/index.js +11 -5
  43. package/dist/tools/fields/index.js.map +1 -1
  44. package/dist/tools/fields/update_field.d.ts +7 -15
  45. package/dist/tools/fields/update_field.js +39 -38
  46. package/dist/tools/fields/update_field.js.map +1 -1
  47. package/dist/tools/files/download_file.d.ts +2 -2
  48. package/dist/tools/files/download_file.js +35 -35
  49. package/dist/tools/files/download_file.js.map +1 -1
  50. package/dist/tools/files/index.d.ts +3 -3
  51. package/dist/tools/files/index.js +3 -3
  52. package/dist/tools/files/upload_file.d.ts +2 -2
  53. package/dist/tools/files/upload_file.js +52 -44
  54. package/dist/tools/files/upload_file.js.map +1 -1
  55. package/dist/tools/index.d.ts +12 -12
  56. package/dist/tools/index.js +2 -2
  57. package/dist/tools/records/bulk_create_records.d.ts +2 -2
  58. package/dist/tools/records/bulk_create_records.js +28 -28
  59. package/dist/tools/records/bulk_create_records.js.map +1 -1
  60. package/dist/tools/records/bulk_update_records.d.ts +2 -2
  61. package/dist/tools/records/bulk_update_records.js +27 -27
  62. package/dist/tools/records/bulk_update_records.js.map +1 -1
  63. package/dist/tools/records/create_record.d.ts +2 -2
  64. package/dist/tools/records/create_record.js +40 -40
  65. package/dist/tools/records/create_record.js.map +1 -1
  66. package/dist/tools/records/index.d.ts +6 -6
  67. package/dist/tools/records/index.js +3 -3
  68. package/dist/tools/records/query_records.d.ts +3 -3
  69. package/dist/tools/records/query_records.js +82 -78
  70. package/dist/tools/records/query_records.js.map +1 -1
  71. package/dist/tools/records/update_record.d.ts +2 -2
  72. package/dist/tools/records/update_record.js +31 -29
  73. package/dist/tools/records/update_record.js.map +1 -1
  74. package/dist/tools/registry.d.ts +1 -1
  75. package/dist/tools/registry.js +1 -1
  76. package/dist/tools/reports/index.d.ts +2 -2
  77. package/dist/tools/reports/index.js +3 -3
  78. package/dist/tools/reports/run_report.d.ts +3 -3
  79. package/dist/tools/reports/run_report.js +29 -29
  80. package/dist/tools/reports/run_report.js.map +1 -1
  81. package/dist/tools/tables/create_table.d.ts +2 -49
  82. package/dist/tools/tables/create_table.js +26 -49
  83. package/dist/tools/tables/create_table.js.map +1 -1
  84. package/dist/tools/tables/get_table_fields.d.ts +2 -2
  85. package/dist/tools/tables/get_table_fields.js +25 -25
  86. package/dist/tools/tables/get_table_fields.js.map +1 -1
  87. package/dist/tools/tables/index.d.ts +4 -4
  88. package/dist/tools/tables/index.js +3 -3
  89. package/dist/tools/tables/update_table.d.ts +2 -2
  90. package/dist/tools/tables/update_table.js +28 -26
  91. package/dist/tools/tables/update_table.js.map +1 -1
  92. package/dist/tools/test_connection.d.ts +2 -2
  93. package/dist/tools/test_connection.js +28 -28
  94. package/dist/tools/test_connection.js.map +1 -1
  95. package/dist/types/api.d.ts +1 -1
  96. package/dist/types/mcp.d.ts +1 -1
  97. package/dist/utils/cache.js +16 -16
  98. package/dist/utils/cache.js.map +1 -1
  99. package/dist/utils/file.js +44 -40
  100. package/dist/utils/file.js.map +1 -1
  101. package/dist/utils/logger.js +30 -28
  102. package/dist/utils/logger.js.map +1 -1
  103. package/dist/utils/retry.js +10 -10
  104. package/dist/utils/retry.js.map +1 -1
  105. package/dist/utils/validation.d.ts +1 -1
  106. package/dist/utils/validation.js +39 -36
  107. package/dist/utils/validation.js.map +1 -1
  108. package/docs/README.md +6 -0
  109. package/docs/future-improvements.md +33 -0
  110. package/docs/migration-guide.md +160 -0
  111. package/docs/release-notes.md +89 -0
  112. package/package.json +5 -4
  113. /package/{HARDENING_SUMMARY.md → docs/hardening-summary.md} +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ "runs": []
3
+ }
package/.mcp.json CHANGED
@@ -1,41 +1,15 @@
1
1
  {
2
2
  "mcpServers": {
3
- "github": {
4
- "command": "npx",
3
+ "quickbase": {
4
+ "command": "node",
5
5
  "args": [
6
- "-y",
7
- "@modelcontextprotocol/server-github"
6
+ "/workspace/repos/mcp-quickbase/MCP-Quickbase/dist/mcp-stdio-server.js"
8
7
  ],
9
8
  "env": {
10
- "GITHUB_TOKEN": "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"
9
+ "QUICKBASE_REALM_HOST": "team.quickbase.com",
10
+ "QUICKBASE_USER_TOKEN": "b4pekw_uyp_0_dzurqa6dx5jqgecnfgxavdcrfpqj",
11
+ "QUICKBASE_APP_ID": "buy74gngz"
11
12
  }
12
- },
13
- "memory": {
14
- "command": "docker",
15
- "args": [
16
- "run",
17
- "-i",
18
- "-v",
19
- "claude-memory:/app/dist",
20
- "--rm",
21
- "mcp/memory"
22
- ]
23
- },
24
- "sequentialthinking": {
25
- "command": "docker",
26
- "args": [
27
- "run",
28
- "--rm",
29
- "-i",
30
- "mcp/sequentialthinking"
31
- ]
32
- },
33
- "context7": {
34
- "command": "npx",
35
- "args": [
36
- "-y",
37
- "@upstash/context7-mcp"
38
- ]
39
13
  }
40
14
  }
41
15
  }
@@ -0,0 +1,31 @@
1
+ export default {
2
+ repository: {
3
+ mainBranch: "main",
4
+ worktreeBasePath: '/workspace/repos/mcp-quickbase'
5
+ },
6
+ worktree: {
7
+ copyIgnoredFiles: [
8
+ ".claude/settings.json",
9
+ ".claude/settings.local.json",
10
+ "crewchief.config.js",
11
+ "crewchief.config.local.js",
12
+ ".env"
13
+ ],
14
+ copyFromPath: '.',
15
+ overwriteStrategy: 'skip'
16
+ },
17
+ launch: {
18
+ askToUpdateLlmGuides: false
19
+ },
20
+ terminal: {
21
+ backend: 'iterm',
22
+ iterm: {
23
+ sessionName: 'mcp-quickbase'
24
+ }
25
+ },
26
+ evaluation: {
27
+ autoMergeThreshold: 0.95,
28
+ requireTestsPass: true,
29
+ requireReview: false
30
+ }
31
+ };
@@ -1,5 +1,5 @@
1
- import { QuickbaseConfig } from '../types/config';
2
- import { ApiResponse, RequestOptions } from '../types/api';
1
+ import { QuickbaseConfig } from "../types/config";
2
+ import { ApiResponse, RequestOptions } from "../types/api";
3
3
  /**
4
4
  * Client for interacting with the Quickbase API
5
5
  */
@@ -19,6 +19,11 @@ export declare class QuickbaseClient {
19
19
  * @returns Current configuration
20
20
  */
21
21
  getConfig(): QuickbaseConfig;
22
+ /**
23
+ * Invalidate a cache entry
24
+ * @param key Cache key to invalidate
25
+ */
26
+ invalidateCache(key: string): void;
22
27
  /**
23
28
  * Sends a request to the Quickbase API with retry logic
24
29
  * @param options Request options
@@ -4,7 +4,7 @@ exports.QuickbaseClient = void 0;
4
4
  const cache_1 = require("../utils/cache");
5
5
  const logger_1 = require("../utils/logger");
6
6
  const retry_1 = require("../utils/retry");
7
- const logger = (0, logger_1.createLogger)('QuickbaseClient');
7
+ const logger = (0, logger_1.createLogger)("QuickbaseClient");
8
8
  /**
9
9
  * Thread-safe rate limiter to prevent API overload
10
10
  */
@@ -23,14 +23,14 @@ class RateLimiter {
23
23
  async checkRateLimit() {
24
24
  const now = Date.now();
25
25
  // Remove requests outside the current window
26
- this.requests = this.requests.filter(time => now - time < this.windowMs);
26
+ this.requests = this.requests.filter((time) => now - time < this.windowMs);
27
27
  if (this.requests.length >= this.maxRequests) {
28
28
  // Calculate wait time until oldest request expires
29
29
  const oldestRequest = Math.min(...this.requests);
30
30
  const waitTime = this.windowMs - (now - oldestRequest) + 10; // +10ms buffer
31
31
  if (waitTime > 0) {
32
32
  logger.debug(`Rate limiting: waiting ${waitTime}ms`);
33
- await new Promise(resolve => setTimeout(resolve, waitTime));
33
+ await new Promise((resolve) => setTimeout(resolve, waitTime));
34
34
  // Re-check after waiting (recursive but bounded by maxRequests)
35
35
  return this.checkRateLimit();
36
36
  }
@@ -56,22 +56,24 @@ class QuickbaseClient {
56
56
  const requestTimeout = config.requestTimeout !== undefined ? config.requestTimeout : 30000;
57
57
  // Validate numeric values
58
58
  if (rateLimit < 1 || rateLimit > 100) {
59
- throw new Error('Rate limit must be between 1 and 100 requests per second');
59
+ throw new Error("Rate limit must be between 1 and 100 requests per second");
60
60
  }
61
- if (cacheTtl < 0 || cacheTtl > 86400) { // Max 24 hours
62
- throw new Error('Cache TTL must be between 0 and 86400 seconds (24 hours)');
61
+ if (cacheTtl < 0 || cacheTtl > 86400) {
62
+ // Max 24 hours
63
+ throw new Error("Cache TTL must be between 0 and 86400 seconds (24 hours)");
63
64
  }
64
65
  if (maxRetries < 0 || maxRetries > 10) {
65
- throw new Error('Max retries must be between 0 and 10');
66
+ throw new Error("Max retries must be between 0 and 10");
66
67
  }
67
68
  if (retryDelay < 100 || retryDelay > 60000) {
68
- throw new Error('Retry delay must be between 100ms and 60 seconds');
69
+ throw new Error("Retry delay must be between 100ms and 60 seconds");
69
70
  }
70
- if (requestTimeout < 1000 || requestTimeout > 300000) { // 1s to 5 minutes
71
- throw new Error('Request timeout must be between 1 second and 5 minutes');
71
+ if (requestTimeout < 1000 || requestTimeout > 300000) {
72
+ // 1s to 5 minutes
73
+ throw new Error("Request timeout must be between 1 second and 5 minutes");
72
74
  }
73
75
  this.config = {
74
- userAgent: 'QuickbaseMCPConnector/2.0',
76
+ userAgent: "QuickbaseMCPConnector/2.0",
75
77
  cacheEnabled: true,
76
78
  debug: false,
77
79
  ...config,
@@ -80,29 +82,29 @@ class QuickbaseClient {
80
82
  maxRetries,
81
83
  retryDelay,
82
84
  requestTimeout,
83
- rateLimit
85
+ rateLimit,
84
86
  };
85
87
  if (!this.config.realmHost) {
86
- throw new Error('Realm hostname is required');
88
+ throw new Error("Realm hostname is required");
87
89
  }
88
90
  if (!this.config.userToken) {
89
- throw new Error('User token is required');
91
+ throw new Error("User token is required");
90
92
  }
91
93
  this.baseUrl = `https://api.quickbase.com/v1`;
92
94
  this.headers = {
93
- 'QB-Realm-Hostname': this.config.realmHost,
94
- 'Authorization': `QB-USER-TOKEN ${this.config.userToken}`,
95
- 'Content-Type': 'application/json',
96
- 'User-Agent': this.config.userAgent || 'QuickbaseMCPConnector/2.0'
95
+ "QB-Realm-Hostname": this.config.realmHost,
96
+ Authorization: `QB-USER-TOKEN ${this.config.userToken}`,
97
+ "Content-Type": "application/json",
98
+ "User-Agent": this.config.userAgent || "QuickbaseMCPConnector/2.0",
97
99
  };
98
100
  this.cache = new cache_1.CacheService(this.config.cacheTtl, this.config.cacheEnabled);
99
101
  // Initialize rate limiter (10 requests per second by default)
100
102
  this.rateLimiter = new RateLimiter(this.config.rateLimit || 10, 1000);
101
- logger.info('Quickbase client initialized', {
103
+ logger.info("Quickbase client initialized", {
102
104
  realmHost: this.config.realmHost,
103
105
  appId: this.config.appId,
104
106
  cacheEnabled: this.config.cacheEnabled,
105
- rateLimit: this.config.rateLimit || 10
107
+ rateLimit: this.config.rateLimit || 10,
106
108
  });
107
109
  }
108
110
  /**
@@ -112,6 +114,14 @@ class QuickbaseClient {
112
114
  getConfig() {
113
115
  return { ...this.config };
114
116
  }
117
+ /**
118
+ * Invalidate a cache entry
119
+ * @param key Cache key to invalidate
120
+ */
121
+ invalidateCache(key) {
122
+ this.cache.del(key);
123
+ logger.debug(`Cache invalidated for key: ${key}`);
124
+ }
115
125
  /**
116
126
  * Sends a request to the Quickbase API with retry logic
117
127
  * @param options Request options
@@ -119,7 +129,7 @@ class QuickbaseClient {
119
129
  */
120
130
  async request(options) {
121
131
  const makeRequest = async () => {
122
- const { method, path, body, params, headers = {}, skipCache = false } = options;
132
+ const { method, path, body, params, headers = {}, skipCache = false, } = options;
123
133
  // Build full URL with query parameters
124
134
  let url = `${this.baseUrl}${path}`;
125
135
  if (params && Object.keys(params).length > 0) {
@@ -131,10 +141,10 @@ class QuickbaseClient {
131
141
  }
132
142
  // Check cache for GET requests
133
143
  const cacheKey = `${method}:${url}`;
134
- if (method === 'GET' && !skipCache) {
144
+ if (method === "GET" && !skipCache) {
135
145
  const cachedResponse = this.cache.get(cacheKey);
136
146
  if (cachedResponse) {
137
- logger.debug('Returning cached response', { url, method });
147
+ logger.debug("Returning cached response", { url, method });
138
148
  return cachedResponse;
139
149
  }
140
150
  }
@@ -145,18 +155,18 @@ class QuickbaseClient {
145
155
  // Log request (with redacted sensitive info)
146
156
  const redactedHeaders = { ...requestHeaders };
147
157
  if (redactedHeaders.Authorization) {
148
- redactedHeaders.Authorization = '***REDACTED***';
158
+ redactedHeaders.Authorization = "***REDACTED***";
149
159
  }
150
- if (redactedHeaders['QB-Realm-Hostname']) {
160
+ if (redactedHeaders["QB-Realm-Hostname"]) {
151
161
  // Keep realm hostname structure for debugging but redact sensitive parts
152
162
  // Example: "company-name.quickbase.com" becomes "***.quickbase.com"
153
- redactedHeaders['QB-Realm-Hostname'] = redactedHeaders['QB-Realm-Hostname'].replace(/^[^.]+/, '***');
163
+ redactedHeaders["QB-Realm-Hostname"] = redactedHeaders["QB-Realm-Hostname"].replace(/^[^.]+/, "***");
154
164
  }
155
- logger.debug('Sending API request', {
156
- url: url.replace(/[?&]userToken=[^&]*/g, '&userToken=***REDACTED***'), // Redact tokens in URL too
165
+ logger.debug("Sending API request", {
166
+ url: url.replace(/[?&]userToken=[^&]*/g, "&userToken=***REDACTED***"), // Redact tokens in URL too
157
167
  method,
158
168
  headers: redactedHeaders,
159
- body: body ? JSON.stringify(body) : undefined
169
+ body: body ? JSON.stringify(body) : undefined,
160
170
  });
161
171
  // Send request with timeout protection
162
172
  const controller = new AbortController();
@@ -167,7 +177,7 @@ class QuickbaseClient {
167
177
  method,
168
178
  headers: requestHeaders,
169
179
  body: body ? JSON.stringify(body) : undefined,
170
- signal: controller.signal
180
+ signal: controller.signal,
171
181
  });
172
182
  }
173
183
  finally {
@@ -179,28 +189,31 @@ class QuickbaseClient {
179
189
  responseData = await response.json();
180
190
  }
181
191
  catch (error) {
182
- throw new Error(`Invalid JSON response: ${error instanceof Error ? error.message : 'Unknown error'}`);
192
+ throw new Error(`Invalid JSON response: ${error instanceof Error ? error.message : "Unknown error"}`);
183
193
  }
184
194
  // Ensure responseData is an object
185
- if (typeof responseData !== 'object' || responseData === null) {
186
- throw new Error('API response is not a valid object');
195
+ if (typeof responseData !== "object" || responseData === null) {
196
+ throw new Error("API response is not a valid object");
187
197
  }
188
198
  const data = responseData;
189
199
  // Check for error response
190
200
  if (!response.ok) {
191
- const errorMessage = typeof data.message === 'string' ? data.message : response.statusText;
201
+ const errorMessage = typeof data.message === "string" ? data.message : response.statusText;
192
202
  const error = {
193
203
  message: errorMessage,
194
204
  code: response.status,
195
- details: data
205
+ details: data,
196
206
  };
197
- logger.error('API request failed', {
207
+ logger.error("API request failed", {
198
208
  status: response.status,
199
- error
209
+ error,
200
210
  });
201
211
  // Create error with proper metadata for retry logic
202
212
  const httpError = new Error(`HTTP Error ${response.status}: ${errorMessage}`);
203
- Object.assign(httpError, { status: response.status, data: responseData });
213
+ Object.assign(httpError, {
214
+ status: response.status,
215
+ data: responseData,
216
+ });
204
217
  // Always throw HTTP errors - let retry logic determine if they're retryable
205
218
  // The retry logic will check the status code and decide whether to retry
206
219
  throw httpError;
@@ -208,10 +221,10 @@ class QuickbaseClient {
208
221
  // Successful response
209
222
  const result = {
210
223
  success: true,
211
- data: responseData
224
+ data: responseData,
212
225
  };
213
226
  // Cache successful GET responses
214
- if (method === 'GET' && !skipCache) {
227
+ if (method === "GET" && !skipCache) {
215
228
  this.cache.set(cacheKey, result);
216
229
  }
217
230
  return result;
@@ -225,20 +238,20 @@ class QuickbaseClient {
225
238
  if (!error)
226
239
  return false;
227
240
  // Handle HTTP errors
228
- if (typeof error === 'object' && error !== null && 'status' in error) {
241
+ if (typeof error === "object" && error !== null && "status" in error) {
229
242
  const httpError = error;
230
- return httpError.status === 429 || // Too Many Requests
243
+ return (httpError.status === 429 || // Too Many Requests
231
244
  httpError.status === 408 || // Request Timeout
232
- (httpError.status >= 500 && httpError.status < 600); // Server errors
245
+ (httpError.status >= 500 && httpError.status < 600)); // Server errors
233
246
  }
234
247
  // Handle network errors
235
248
  if (error instanceof Error) {
236
- return error.message.includes('network') ||
237
- error.message.includes('timeout') ||
238
- error.message.includes('connection');
249
+ return (error.message.includes("network") ||
250
+ error.message.includes("timeout") ||
251
+ error.message.includes("connection"));
239
252
  }
240
253
  return false;
241
- }
254
+ },
242
255
  };
243
256
  try {
244
257
  // Use withRetry to add retry logic to the request
@@ -246,13 +259,13 @@ class QuickbaseClient {
246
259
  }
247
260
  catch (error) {
248
261
  // Handle errors that weren't handled by the retry logic
249
- logger.error('Request failed after retries', { error });
262
+ logger.error("Request failed after retries", { error });
250
263
  return {
251
264
  success: false,
252
265
  error: {
253
- message: error instanceof Error ? error.message : 'Unknown error',
254
- type: 'NetworkError'
255
- }
266
+ message: error instanceof Error ? error.message : "Unknown error",
267
+ type: "NetworkError",
268
+ },
256
269
  };
257
270
  }
258
271
  }
@@ -1 +1 @@
1
- {"version":3,"file":"quickbase.js","sourceRoot":"","sources":["../../src/client/quickbase.ts"],"names":[],"mappings":";;;AAEA,0CAA8C;AAC9C,4CAA+C;AAC/C,0CAAyD;AAEzD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,iBAAiB,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW;IAMf,YAAY,cAAsB,EAAE,EAAE,WAAmB,IAAI;QALrD,aAAQ,GAAa,EAAE,CAAC;QAGxB,YAAO,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;QAGjD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,6DAA6D;QAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,6CAA6C;QAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7C,mDAAmD;YACnD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,eAAe;YAE5E,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,0BAA0B,QAAQ,IAAI,CAAC,CAAC;gBACrD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAE5D,gEAAgE;gBAChE,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACjC,CAAC;CACF;AAED;;GAEG;AACH,MAAa,eAAe;IAO1B;;;OAGG;IACH,YAAY,MAAuB;QACjC,sCAAsC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9E,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;QAE3F,0BAA0B;QAC1B,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,eAAe;YACrD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,GAAG,KAAK,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,cAAc,GAAG,IAAI,IAAI,cAAc,GAAG,MAAM,EAAE,CAAC,CAAC,kBAAkB;YACxE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC,MAAM,GAAG;YACZ,SAAS,EAAE,2BAA2B;YACtC,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,KAAK;YACZ,GAAG,MAAM;YACT,iCAAiC;YACjC,QAAQ;YACR,UAAU;YACV,UAAU;YACV,cAAc;YACd,SAAS;SACV,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,8BAA8B,CAAC;QAE9C,IAAI,CAAC,OAAO,GAAG;YACb,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAC1C,eAAe,EAAE,iBAAiB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACzD,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,2BAA2B;SACnE,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAY,CAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,IAAI,CAAC,MAAM,CAAC,YAAY,CACzB,CAAC;QAEF,8DAA8D;QAC9D,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAChC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAC3B,IAAI,CACL,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;YAC1C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YACtC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE;SACvC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,SAAS;QACd,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAI,OAAuB;QACtC,MAAM,WAAW,GAAG,KAAK,IAA6B,EAAE;YACtD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;YAEhF,uCAAuC;YACvC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;YACnC,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;gBAC3C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBAC9C,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,GAAG,IAAI,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;YACvC,CAAC;YAED,+BAA+B;YAC/B,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;YACpC,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,QAAQ,CAAC,CAAC;gBAChE,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC3D,OAAO,cAAc,CAAC;gBACxB,CAAC;YACH,CAAC;YAED,gDAAgD;YAChD,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAE9B,wDAAwD;YACxD,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;YAEvD,6CAA6C;YAC7C,MAAM,eAAe,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;YAC9C,IAAI,eAAe,CAAC,aAAa,EAAE,CAAC;gBAClC,eAAe,CAAC,aAAa,GAAG,gBAAgB,CAAC;YACnD,CAAC;YACD,IAAI,eAAe,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACzC,yEAAyE;gBACzE,oEAAoE;gBACpE,eAAe,CAAC,mBAAmB,CAAC,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvG,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;gBAClC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,2BAA2B,CAAC,EAAE,2BAA2B;gBAClG,MAAM;gBACN,OAAO,EAAE,eAAe;gBACxB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;aAC9C,CAAC,CAAC;YAEH,uCAAuC;YACvC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC,CAAC;YAE5F,IAAI,QAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAC1B,MAAM;oBACN,OAAO,EAAE,cAAc;oBACvB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC7C,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAC;YACL,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;YAED,wBAAwB;YACxB,IAAI,YAAqB,CAAC;YAC1B,IAAI,CAAC;gBACH,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YACxG,CAAC;YAED,mCAAmC;YACnC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,IAAI,GAAG,YAAuC,CAAC;YAErD,2BAA2B;YAC3B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC3F,MAAM,KAAK,GAAa;oBACtB,OAAO,EAAE,YAAY;oBACrB,IAAI,EAAE,QAAQ,CAAC,MAAM;oBACrB,OAAO,EAAE,IAAI;iBACd,CAAC;gBAEF,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE;oBACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,KAAK;iBACN,CAAC,CAAC;gBAEH,oDAAoD;gBACpD,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC,CAAC;gBAC9E,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;gBAE1E,4EAA4E;gBAC5E,yEAAyE;gBACzE,MAAM,SAAS,CAAC;YAClB,CAAC;YAED,sBAAsB;YACtB,MAAM,MAAM,GAAmB;gBAC7B,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,YAAiB;aACxB,CAAC;YAEF,iCAAiC;YACjC,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,sBAAsB;QACtB,MAAM,YAAY,GAAiB;YACjC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC;YACvC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI;YACzC,WAAW,EAAE,CAAC,KAAc,EAAE,EAAE;gBAC9B,oDAAoD;gBACpD,IAAI,CAAC,KAAK;oBAAE,OAAO,KAAK,CAAC;gBAEzB,qBAAqB;gBACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;oBACrE,MAAM,SAAS,GAAG,KAA2B,CAAC;oBAC9C,OAAO,SAAS,CAAC,MAAM,KAAK,GAAG,IAAI,oBAAoB;wBAChD,SAAS,CAAC,MAAM,KAAK,GAAG,IAAI,kBAAkB;wBAC9C,CAAC,SAAS,CAAC,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAgB;gBAC9E,CAAC;gBAED,wBAAwB;gBACxB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBAC3B,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;wBACjC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;wBACjC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC9C,CAAC;gBAED,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC;QAEF,IAAI,CAAC;YACH,kDAAkD;YAClD,OAAO,MAAM,IAAA,iBAAS,EAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wDAAwD;YACxD,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAExD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;oBACjE,IAAI,EAAE,cAAc;iBACrB;aACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAjQD,0CAiQC"}
1
+ {"version":3,"file":"quickbase.js","sourceRoot":"","sources":["../../src/client/quickbase.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * MCP (Model Context Protocol) module exports
3
3
  */
4
- export * from './server';
4
+ export * from "./server";
@@ -1,6 +1,6 @@
1
- import { Request, Response } from 'express';
2
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
- import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
1
+ import { Request, Response } from "express";
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
4
4
  /**
5
5
  * Create and configure an MCP server instance
6
6
  */
@@ -13,17 +13,17 @@ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamable
13
13
  const logger_1 = require("../utils/logger");
14
14
  const tools_1 = require("../tools");
15
15
  const validation_1 = require("../utils/validation");
16
- const logger = (0, logger_1.createLogger)('mcp-server');
16
+ const logger = (0, logger_1.createLogger)("mcp-server");
17
17
  /**
18
18
  * Create and configure an MCP server instance
19
19
  */
20
20
  function createMcpServer() {
21
21
  // Initialize the MCP server with our app info
22
22
  const server = new mcp_js_1.McpServer({
23
- name: 'Quickbase MCP Server',
24
- version: '2.0.0',
23
+ name: "Quickbase MCP Server",
24
+ version: "2.0.0",
25
25
  });
26
- logger.info('MCP Server created');
26
+ logger.info("MCP Server created");
27
27
  return server;
28
28
  }
29
29
  /**
@@ -37,7 +37,7 @@ function registerMcpTools(server) {
37
37
  */
38
38
  function registerTools(server) {
39
39
  const tools = tools_1.toolRegistry.getAllTools();
40
- tools.forEach(tool => {
40
+ tools.forEach((tool) => {
41
41
  // Create a Zod schema from our tool's parameter schema
42
42
  const schema = (0, validation_1.createMcpZodSchema)(tool.paramSchema);
43
43
  // Register the tool with the MCP server
@@ -47,16 +47,20 @@ function registerTools(server) {
47
47
  const apiResponse = await tool.execute(params);
48
48
  // Handle API response - only return the data if successful
49
49
  if (!apiResponse.success || apiResponse.error) {
50
- const errorMessage = apiResponse.error?.message || 'Tool execution failed';
51
- logger.error(`Tool ${tool.name} failed`, { error: apiResponse.error });
50
+ const errorMessage = apiResponse.error?.message || "Tool execution failed";
51
+ logger.error(`Tool ${tool.name} failed`, {
52
+ error: apiResponse.error,
53
+ });
52
54
  throw new Error(errorMessage);
53
55
  }
54
56
  // Ensure proper JSON formatting by using a standardized response structure
55
57
  return {
56
- content: [{
57
- type: 'text',
58
- text: JSON.stringify(apiResponse.data, null, 2)
59
- }]
58
+ content: [
59
+ {
60
+ type: "text",
61
+ text: JSON.stringify(apiResponse.data, null, 2),
62
+ },
63
+ ],
60
64
  };
61
65
  }
62
66
  catch (error) {
@@ -76,7 +80,7 @@ function createHttpTransport() {
76
80
  // Following the TypeScript SDK examples for HTTP transport
77
81
  return new streamableHttp_js_1.StreamableHTTPServerTransport({
78
82
  sessionIdGenerator: () => (0, crypto_1.randomUUID)(),
79
- enableJsonResponse: true
83
+ enableJsonResponse: true,
80
84
  });
81
85
  }
82
86
  /**
@@ -84,18 +88,18 @@ function createHttpTransport() {
84
88
  */
85
89
  async function handleMcpRequest(server, transport, req, res) {
86
90
  try {
87
- logger.info('Handling MCP request');
91
+ logger.info("Handling MCP request");
88
92
  await transport.handleRequest(req, res, req.body);
89
93
  }
90
94
  catch (error) {
91
- logger.error('Error handling MCP request', { error });
95
+ logger.error("Error handling MCP request", { error });
92
96
  res.status(500).json({
93
- jsonrpc: '2.0',
97
+ jsonrpc: "2.0",
94
98
  error: {
95
99
  code: -32000,
96
- message: error instanceof Error ? error.message : 'Unknown error'
100
+ message: error instanceof Error ? error.message : "Unknown error",
97
101
  },
98
- id: req.body?.id || null
102
+ id: req.body?.id || null,
99
103
  });
100
104
  }
101
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";;AAgBA,0CAUC;AAKD,4CAEC;AAqDD,kDAOC;AAKD,4CAoBC;AAtHD;;GAEG;AACH,mCAAoC;AAEpC,oEAAoE;AACpE,0FAAmG;AACnG,4CAA+C;AAC/C,oCAAwC;AACxC,oDAAyD;AAEzD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,YAAY,CAAC,CAAC;AAE1C;;GAEG;AACH,SAAgB,eAAe;IAC7B,8CAA8C;IAC9C,MAAM,MAAM,GAAG,IAAI,kBAAS,CAAC;QAC3B,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,MAAiB;IAChD,aAAa,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,MAAiB;IACtC,MAAM,KAAK,GAAG,oBAAY,CAAC,WAAW,EAAE,CAAC;IAEzC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,uDAAuD;QACvD,MAAM,MAAM,GAAG,IAAA,+BAAkB,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEpD,wCAAwC;QACxC,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,MAAM,EACN,KAAK,EAAE,MAA+B,EAAE,EAAE;YACxC,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAChD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAE/C,2DAA2D;gBAC3D,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;oBAC9C,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,IAAI,uBAAuB,CAAC;oBAC3E,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;oBACvE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;gBAChC,CAAC;gBAED,2EAA2E;gBAC3E,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;yBAChD,CAAC;iBACH,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CACF,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,MAAM,wBAAwB,CAAC,CAAC;AAClE,CAAC;AAGD;;GAEG;AACH,SAAgB,mBAAmB;IACjC,wDAAwD;IACxD,2DAA2D;IAC3D,OAAO,IAAI,iDAA6B,CAAC;QACvC,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,mBAAU,GAAE;QACtC,kBAAkB,EAAE,IAAI;KACzB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,gBAAgB,CACpC,MAAiB,EACjB,SAAwC,EACxC,GAAY,EACZ,GAAa;IAEb,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,CAAC,KAAK;gBACZ,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAClE;YACD,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI;SACzB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}