integrate-sdk 0.9.27-dev.1 → 0.9.27-dev.2
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/README.md +82 -0
- package/dist/adapters/index.js +52 -34
- package/dist/adapters/solid-start.js +52 -34
- package/dist/adapters/svelte-kit.js +52 -34
- package/dist/index.js +231 -62
- package/dist/server.js +253 -83
- package/dist/src/client.d.ts +8 -0
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/integrations/dropbox.d.ts +22 -0
- package/dist/src/integrations/dropbox.d.ts.map +1 -0
- package/dist/src/integrations/granola.d.ts +14 -0
- package/dist/src/integrations/granola.d.ts.map +1 -0
- package/dist/src/integrations/mercury.d.ts +14 -0
- package/dist/src/integrations/mercury.d.ts.map +1 -0
- package/dist/src/integrations/types.d.ts +4 -0
- package/dist/src/integrations/types.d.ts.map +1 -1
- package/dist/src/server.d.ts +3 -0
- package/dist/src/server.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -132,6 +132,88 @@ const result = await client.github.createIssue({
|
|
|
132
132
|
console.log("Issue created:", result);
|
|
133
133
|
```
|
|
134
134
|
|
|
135
|
+
### API Key Integrations
|
|
136
|
+
|
|
137
|
+
Use API-key integrations like Granola by passing the credential directly to the integration helper:
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
import { createMCPClient, granolaIntegration } from "integrate-sdk";
|
|
141
|
+
|
|
142
|
+
const client = createMCPClient({
|
|
143
|
+
integrations: [
|
|
144
|
+
granolaIntegration({
|
|
145
|
+
apiKey: process.env.GRANOLA_API_KEY!,
|
|
146
|
+
}),
|
|
147
|
+
],
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
const notes = await client.callTool("granola_list_notes", {
|
|
151
|
+
page_size: 10,
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
const note = await client.callTool("granola_get_note", {
|
|
155
|
+
note_id: "not_123",
|
|
156
|
+
include_transcript: true,
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
const folders = await client.callTool("granola_list_folders", {
|
|
160
|
+
page_size: 10,
|
|
161
|
+
});
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Mercury uses the same API-token pattern:
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
import { createMCPClient, mercuryIntegration } from "integrate-sdk";
|
|
168
|
+
|
|
169
|
+
const client = createMCPClient({
|
|
170
|
+
integrations: [
|
|
171
|
+
mercuryIntegration({
|
|
172
|
+
apiKey: process.env.MERCURY_API_KEY!,
|
|
173
|
+
}),
|
|
174
|
+
],
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
const org = await client.callTool("mercury_get_organization");
|
|
178
|
+
const accounts = await client.callTool("mercury_list_accounts", {
|
|
179
|
+
limit: 50,
|
|
180
|
+
});
|
|
181
|
+
const txns = await client.callTool("mercury_list_transactions", {
|
|
182
|
+
start: "2026-01-01",
|
|
183
|
+
end: "2026-01-31",
|
|
184
|
+
limit: 100,
|
|
185
|
+
});
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### OAuth File Storage Integrations
|
|
189
|
+
|
|
190
|
+
Dropbox follows the standard OAuth integration flow:
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
import { createMCPClient, dropboxIntegration } from "integrate-sdk";
|
|
194
|
+
|
|
195
|
+
const client = createMCPClient({
|
|
196
|
+
integrations: [
|
|
197
|
+
dropboxIntegration({
|
|
198
|
+
scopes: [
|
|
199
|
+
"account_info.read",
|
|
200
|
+
"files.metadata.read",
|
|
201
|
+
"files.content.read",
|
|
202
|
+
"files.content.write",
|
|
203
|
+
"sharing.read",
|
|
204
|
+
"sharing.write",
|
|
205
|
+
],
|
|
206
|
+
}),
|
|
207
|
+
],
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
const account = await client.callTool("dropbox_get_current_account");
|
|
211
|
+
const files = await client.callTool("dropbox_list_folder", {
|
|
212
|
+
path: "/",
|
|
213
|
+
limit: 50,
|
|
214
|
+
});
|
|
215
|
+
```
|
|
216
|
+
|
|
135
217
|
**That's it!** The SDK automatically:
|
|
136
218
|
|
|
137
219
|
- ✅ Connects on first method call (no manual `connect()` needed)
|
package/dist/adapters/index.js
CHANGED
|
@@ -3224,6 +3224,9 @@ class MCPClientBase {
|
|
|
3224
3224
|
async _callToolByName(name, args, options) {
|
|
3225
3225
|
return await this.callToolWithRetry(name, args, 0, options);
|
|
3226
3226
|
}
|
|
3227
|
+
async callTool(name, args, options) {
|
|
3228
|
+
return await this.callToolWithRetry(name, args, 0, options);
|
|
3229
|
+
}
|
|
3227
3230
|
async callServerTool(name, args) {
|
|
3228
3231
|
try {
|
|
3229
3232
|
const response = await this.callToolThroughHandler(name, args);
|
|
@@ -3234,35 +3237,38 @@ class MCPClientBase {
|
|
|
3234
3237
|
}
|
|
3235
3238
|
}
|
|
3236
3239
|
async callToolThroughHandler(name, args, provider, options) {
|
|
3240
|
+
const integrationHeaders = this.getHeadersForTool(name);
|
|
3237
3241
|
const transportHeaders = this.transport.headers || {};
|
|
3238
3242
|
const hasApiKey = !!transportHeaders["X-API-KEY"];
|
|
3239
3243
|
if (hasApiKey) {
|
|
3240
3244
|
await this.ensureConnected();
|
|
3245
|
+
const temporaryHeaders = { ...integrationHeaders };
|
|
3241
3246
|
if (provider) {
|
|
3242
3247
|
const tokenData = await this.oauthManager.getProviderToken(provider, undefined, options?.context);
|
|
3243
|
-
if (tokenData
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3248
|
+
if (tokenData) {
|
|
3249
|
+
temporaryHeaders["Authorization"] = `Bearer ${tokenData.accessToken}`;
|
|
3250
|
+
}
|
|
3251
|
+
}
|
|
3252
|
+
const previousHeaders = new Map;
|
|
3253
|
+
for (const [key, value] of Object.entries(temporaryHeaders)) {
|
|
3254
|
+
previousHeaders.set(key, transportHeaders[key]);
|
|
3255
|
+
this.transport.setHeader(key, value);
|
|
3256
|
+
}
|
|
3257
|
+
try {
|
|
3258
|
+
const result2 = await this.transport.sendRequest("tools/call", {
|
|
3259
|
+
name,
|
|
3260
|
+
arguments: args || {}
|
|
3261
|
+
});
|
|
3262
|
+
return result2;
|
|
3263
|
+
} finally {
|
|
3264
|
+
for (const [key, previousValue] of previousHeaders.entries()) {
|
|
3265
|
+
if (previousValue !== undefined) {
|
|
3266
|
+
this.transport.setHeader(key, previousValue);
|
|
3267
|
+
} else {
|
|
3268
|
+
this.transport.removeHeader(key);
|
|
3258
3269
|
}
|
|
3259
3270
|
}
|
|
3260
3271
|
}
|
|
3261
|
-
const result2 = await this.transport.sendRequest("tools/call", {
|
|
3262
|
-
name,
|
|
3263
|
-
arguments: args || {}
|
|
3264
|
-
});
|
|
3265
|
-
return result2;
|
|
3266
3272
|
}
|
|
3267
3273
|
const url = this.apiBaseUrl ? `${this.apiBaseUrl}${this.apiRouteBase}/mcp` : `${this.apiRouteBase}/mcp`;
|
|
3268
3274
|
const headers = {
|
|
@@ -3272,6 +3278,7 @@ class MCPClientBase {
|
|
|
3272
3278
|
if (integrationsHeader) {
|
|
3273
3279
|
headers["X-Integrations"] = integrationsHeader;
|
|
3274
3280
|
}
|
|
3281
|
+
Object.assign(headers, integrationHeaders);
|
|
3275
3282
|
if (provider) {
|
|
3276
3283
|
const tokenData = await this.oauthManager.getProviderToken(provider, undefined, options?.context);
|
|
3277
3284
|
if (tokenData) {
|
|
@@ -3361,6 +3368,14 @@ class MCPClientBase {
|
|
|
3361
3368
|
}
|
|
3362
3369
|
return;
|
|
3363
3370
|
}
|
|
3371
|
+
getHeadersForTool(toolName) {
|
|
3372
|
+
for (const integration of this.integrations) {
|
|
3373
|
+
if (integration.tools.includes(toolName) && integration.getHeaders) {
|
|
3374
|
+
return integration.getHeaders();
|
|
3375
|
+
}
|
|
3376
|
+
}
|
|
3377
|
+
return {};
|
|
3378
|
+
}
|
|
3364
3379
|
getTool(name) {
|
|
3365
3380
|
return this.availableTools.get(name);
|
|
3366
3381
|
}
|
|
@@ -3741,45 +3756,48 @@ var logger22 = createLogger("Ramp");
|
|
|
3741
3756
|
// ../integrations/onedrive.ts
|
|
3742
3757
|
init_logger();
|
|
3743
3758
|
var logger23 = createLogger("OneDrive");
|
|
3759
|
+
// ../integrations/dropbox.ts
|
|
3760
|
+
init_logger();
|
|
3761
|
+
var logger24 = createLogger("Dropbox");
|
|
3744
3762
|
// ../integrations/word.ts
|
|
3745
3763
|
init_logger();
|
|
3746
|
-
var
|
|
3764
|
+
var logger25 = createLogger("Word");
|
|
3747
3765
|
// ../integrations/excel.ts
|
|
3748
3766
|
init_logger();
|
|
3749
|
-
var
|
|
3767
|
+
var logger26 = createLogger("Excel");
|
|
3750
3768
|
// ../integrations/powerpoint.ts
|
|
3751
3769
|
init_logger();
|
|
3752
|
-
var
|
|
3770
|
+
var logger27 = createLogger("PowerPoint");
|
|
3753
3771
|
// ../integrations/gdocs.ts
|
|
3754
3772
|
init_logger();
|
|
3755
|
-
var
|
|
3773
|
+
var logger28 = createLogger("Google Docs");
|
|
3756
3774
|
// ../integrations/gdrive.ts
|
|
3757
3775
|
init_logger();
|
|
3758
|
-
var
|
|
3776
|
+
var logger29 = createLogger("Google Drive");
|
|
3759
3777
|
// ../integrations/gsheets.ts
|
|
3760
3778
|
init_logger();
|
|
3761
|
-
var
|
|
3779
|
+
var logger30 = createLogger("Google Sheets");
|
|
3762
3780
|
// ../integrations/gslides.ts
|
|
3763
3781
|
init_logger();
|
|
3764
|
-
var
|
|
3782
|
+
var logger31 = createLogger("Google Slides");
|
|
3765
3783
|
// ../integrations/polar.ts
|
|
3766
3784
|
init_logger();
|
|
3767
|
-
var
|
|
3785
|
+
var logger32 = createLogger("Polar");
|
|
3768
3786
|
// ../integrations/figma.ts
|
|
3769
3787
|
init_logger();
|
|
3770
|
-
var
|
|
3788
|
+
var logger33 = createLogger("Figma");
|
|
3771
3789
|
// ../integrations/intercom.ts
|
|
3772
3790
|
init_logger();
|
|
3773
|
-
var
|
|
3791
|
+
var logger34 = createLogger("Intercom");
|
|
3774
3792
|
// ../integrations/hubspot.ts
|
|
3775
3793
|
init_logger();
|
|
3776
|
-
var
|
|
3794
|
+
var logger35 = createLogger("HubSpot");
|
|
3777
3795
|
// ../integrations/youtube.ts
|
|
3778
3796
|
init_logger();
|
|
3779
|
-
var
|
|
3797
|
+
var logger36 = createLogger("YouTube");
|
|
3780
3798
|
// ../integrations/cursor.ts
|
|
3781
3799
|
init_logger();
|
|
3782
|
-
var
|
|
3800
|
+
var logger37 = createLogger("Cursor");
|
|
3783
3801
|
// ../ai/trigger-tools.ts
|
|
3784
3802
|
init_utils();
|
|
3785
3803
|
|
|
@@ -3798,7 +3816,7 @@ init_tool_builder();
|
|
|
3798
3816
|
init_tool_builder();
|
|
3799
3817
|
// ../server.ts
|
|
3800
3818
|
var SERVER_LOG_CONTEXT3 = "server";
|
|
3801
|
-
var
|
|
3819
|
+
var logger38 = createLogger("MCPServer", SERVER_LOG_CONTEXT3);
|
|
3802
3820
|
var codeVerifierStorage = new Map;
|
|
3803
3821
|
var unauthenticatedCodeModeWarnings = new Set;
|
|
3804
3822
|
function toSolidStartHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
@@ -3224,6 +3224,9 @@ class MCPClientBase {
|
|
|
3224
3224
|
async _callToolByName(name, args, options) {
|
|
3225
3225
|
return await this.callToolWithRetry(name, args, 0, options);
|
|
3226
3226
|
}
|
|
3227
|
+
async callTool(name, args, options) {
|
|
3228
|
+
return await this.callToolWithRetry(name, args, 0, options);
|
|
3229
|
+
}
|
|
3227
3230
|
async callServerTool(name, args) {
|
|
3228
3231
|
try {
|
|
3229
3232
|
const response = await this.callToolThroughHandler(name, args);
|
|
@@ -3234,35 +3237,38 @@ class MCPClientBase {
|
|
|
3234
3237
|
}
|
|
3235
3238
|
}
|
|
3236
3239
|
async callToolThroughHandler(name, args, provider, options) {
|
|
3240
|
+
const integrationHeaders = this.getHeadersForTool(name);
|
|
3237
3241
|
const transportHeaders = this.transport.headers || {};
|
|
3238
3242
|
const hasApiKey = !!transportHeaders["X-API-KEY"];
|
|
3239
3243
|
if (hasApiKey) {
|
|
3240
3244
|
await this.ensureConnected();
|
|
3245
|
+
const temporaryHeaders = { ...integrationHeaders };
|
|
3241
3246
|
if (provider) {
|
|
3242
3247
|
const tokenData = await this.oauthManager.getProviderToken(provider, undefined, options?.context);
|
|
3243
|
-
if (tokenData
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3248
|
+
if (tokenData) {
|
|
3249
|
+
temporaryHeaders["Authorization"] = `Bearer ${tokenData.accessToken}`;
|
|
3250
|
+
}
|
|
3251
|
+
}
|
|
3252
|
+
const previousHeaders = new Map;
|
|
3253
|
+
for (const [key, value] of Object.entries(temporaryHeaders)) {
|
|
3254
|
+
previousHeaders.set(key, transportHeaders[key]);
|
|
3255
|
+
this.transport.setHeader(key, value);
|
|
3256
|
+
}
|
|
3257
|
+
try {
|
|
3258
|
+
const result2 = await this.transport.sendRequest("tools/call", {
|
|
3259
|
+
name,
|
|
3260
|
+
arguments: args || {}
|
|
3261
|
+
});
|
|
3262
|
+
return result2;
|
|
3263
|
+
} finally {
|
|
3264
|
+
for (const [key, previousValue] of previousHeaders.entries()) {
|
|
3265
|
+
if (previousValue !== undefined) {
|
|
3266
|
+
this.transport.setHeader(key, previousValue);
|
|
3267
|
+
} else {
|
|
3268
|
+
this.transport.removeHeader(key);
|
|
3258
3269
|
}
|
|
3259
3270
|
}
|
|
3260
3271
|
}
|
|
3261
|
-
const result2 = await this.transport.sendRequest("tools/call", {
|
|
3262
|
-
name,
|
|
3263
|
-
arguments: args || {}
|
|
3264
|
-
});
|
|
3265
|
-
return result2;
|
|
3266
3272
|
}
|
|
3267
3273
|
const url = this.apiBaseUrl ? `${this.apiBaseUrl}${this.apiRouteBase}/mcp` : `${this.apiRouteBase}/mcp`;
|
|
3268
3274
|
const headers = {
|
|
@@ -3272,6 +3278,7 @@ class MCPClientBase {
|
|
|
3272
3278
|
if (integrationsHeader) {
|
|
3273
3279
|
headers["X-Integrations"] = integrationsHeader;
|
|
3274
3280
|
}
|
|
3281
|
+
Object.assign(headers, integrationHeaders);
|
|
3275
3282
|
if (provider) {
|
|
3276
3283
|
const tokenData = await this.oauthManager.getProviderToken(provider, undefined, options?.context);
|
|
3277
3284
|
if (tokenData) {
|
|
@@ -3361,6 +3368,14 @@ class MCPClientBase {
|
|
|
3361
3368
|
}
|
|
3362
3369
|
return;
|
|
3363
3370
|
}
|
|
3371
|
+
getHeadersForTool(toolName) {
|
|
3372
|
+
for (const integration of this.integrations) {
|
|
3373
|
+
if (integration.tools.includes(toolName) && integration.getHeaders) {
|
|
3374
|
+
return integration.getHeaders();
|
|
3375
|
+
}
|
|
3376
|
+
}
|
|
3377
|
+
return {};
|
|
3378
|
+
}
|
|
3364
3379
|
getTool(name) {
|
|
3365
3380
|
return this.availableTools.get(name);
|
|
3366
3381
|
}
|
|
@@ -3741,45 +3756,48 @@ var logger22 = createLogger("Ramp");
|
|
|
3741
3756
|
// ../integrations/onedrive.ts
|
|
3742
3757
|
init_logger();
|
|
3743
3758
|
var logger23 = createLogger("OneDrive");
|
|
3759
|
+
// ../integrations/dropbox.ts
|
|
3760
|
+
init_logger();
|
|
3761
|
+
var logger24 = createLogger("Dropbox");
|
|
3744
3762
|
// ../integrations/word.ts
|
|
3745
3763
|
init_logger();
|
|
3746
|
-
var
|
|
3764
|
+
var logger25 = createLogger("Word");
|
|
3747
3765
|
// ../integrations/excel.ts
|
|
3748
3766
|
init_logger();
|
|
3749
|
-
var
|
|
3767
|
+
var logger26 = createLogger("Excel");
|
|
3750
3768
|
// ../integrations/powerpoint.ts
|
|
3751
3769
|
init_logger();
|
|
3752
|
-
var
|
|
3770
|
+
var logger27 = createLogger("PowerPoint");
|
|
3753
3771
|
// ../integrations/gdocs.ts
|
|
3754
3772
|
init_logger();
|
|
3755
|
-
var
|
|
3773
|
+
var logger28 = createLogger("Google Docs");
|
|
3756
3774
|
// ../integrations/gdrive.ts
|
|
3757
3775
|
init_logger();
|
|
3758
|
-
var
|
|
3776
|
+
var logger29 = createLogger("Google Drive");
|
|
3759
3777
|
// ../integrations/gsheets.ts
|
|
3760
3778
|
init_logger();
|
|
3761
|
-
var
|
|
3779
|
+
var logger30 = createLogger("Google Sheets");
|
|
3762
3780
|
// ../integrations/gslides.ts
|
|
3763
3781
|
init_logger();
|
|
3764
|
-
var
|
|
3782
|
+
var logger31 = createLogger("Google Slides");
|
|
3765
3783
|
// ../integrations/polar.ts
|
|
3766
3784
|
init_logger();
|
|
3767
|
-
var
|
|
3785
|
+
var logger32 = createLogger("Polar");
|
|
3768
3786
|
// ../integrations/figma.ts
|
|
3769
3787
|
init_logger();
|
|
3770
|
-
var
|
|
3788
|
+
var logger33 = createLogger("Figma");
|
|
3771
3789
|
// ../integrations/intercom.ts
|
|
3772
3790
|
init_logger();
|
|
3773
|
-
var
|
|
3791
|
+
var logger34 = createLogger("Intercom");
|
|
3774
3792
|
// ../integrations/hubspot.ts
|
|
3775
3793
|
init_logger();
|
|
3776
|
-
var
|
|
3794
|
+
var logger35 = createLogger("HubSpot");
|
|
3777
3795
|
// ../integrations/youtube.ts
|
|
3778
3796
|
init_logger();
|
|
3779
|
-
var
|
|
3797
|
+
var logger36 = createLogger("YouTube");
|
|
3780
3798
|
// ../integrations/cursor.ts
|
|
3781
3799
|
init_logger();
|
|
3782
|
-
var
|
|
3800
|
+
var logger37 = createLogger("Cursor");
|
|
3783
3801
|
// ../ai/trigger-tools.ts
|
|
3784
3802
|
init_utils();
|
|
3785
3803
|
|
|
@@ -3798,7 +3816,7 @@ init_tool_builder();
|
|
|
3798
3816
|
init_tool_builder();
|
|
3799
3817
|
// ../server.ts
|
|
3800
3818
|
var SERVER_LOG_CONTEXT3 = "server";
|
|
3801
|
-
var
|
|
3819
|
+
var logger38 = createLogger("MCPServer", SERVER_LOG_CONTEXT3);
|
|
3802
3820
|
var codeVerifierStorage = new Map;
|
|
3803
3821
|
var unauthenticatedCodeModeWarnings = new Set;
|
|
3804
3822
|
function toSolidStartHandler(clientOrHandlerOrOptions, _redirectOptions) {
|
|
@@ -3224,6 +3224,9 @@ class MCPClientBase {
|
|
|
3224
3224
|
async _callToolByName(name, args, options) {
|
|
3225
3225
|
return await this.callToolWithRetry(name, args, 0, options);
|
|
3226
3226
|
}
|
|
3227
|
+
async callTool(name, args, options) {
|
|
3228
|
+
return await this.callToolWithRetry(name, args, 0, options);
|
|
3229
|
+
}
|
|
3227
3230
|
async callServerTool(name, args) {
|
|
3228
3231
|
try {
|
|
3229
3232
|
const response = await this.callToolThroughHandler(name, args);
|
|
@@ -3234,35 +3237,38 @@ class MCPClientBase {
|
|
|
3234
3237
|
}
|
|
3235
3238
|
}
|
|
3236
3239
|
async callToolThroughHandler(name, args, provider, options) {
|
|
3240
|
+
const integrationHeaders = this.getHeadersForTool(name);
|
|
3237
3241
|
const transportHeaders = this.transport.headers || {};
|
|
3238
3242
|
const hasApiKey = !!transportHeaders["X-API-KEY"];
|
|
3239
3243
|
if (hasApiKey) {
|
|
3240
3244
|
await this.ensureConnected();
|
|
3245
|
+
const temporaryHeaders = { ...integrationHeaders };
|
|
3241
3246
|
if (provider) {
|
|
3242
3247
|
const tokenData = await this.oauthManager.getProviderToken(provider, undefined, options?.context);
|
|
3243
|
-
if (tokenData
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3248
|
+
if (tokenData) {
|
|
3249
|
+
temporaryHeaders["Authorization"] = `Bearer ${tokenData.accessToken}`;
|
|
3250
|
+
}
|
|
3251
|
+
}
|
|
3252
|
+
const previousHeaders = new Map;
|
|
3253
|
+
for (const [key, value] of Object.entries(temporaryHeaders)) {
|
|
3254
|
+
previousHeaders.set(key, transportHeaders[key]);
|
|
3255
|
+
this.transport.setHeader(key, value);
|
|
3256
|
+
}
|
|
3257
|
+
try {
|
|
3258
|
+
const result2 = await this.transport.sendRequest("tools/call", {
|
|
3259
|
+
name,
|
|
3260
|
+
arguments: args || {}
|
|
3261
|
+
});
|
|
3262
|
+
return result2;
|
|
3263
|
+
} finally {
|
|
3264
|
+
for (const [key, previousValue] of previousHeaders.entries()) {
|
|
3265
|
+
if (previousValue !== undefined) {
|
|
3266
|
+
this.transport.setHeader(key, previousValue);
|
|
3267
|
+
} else {
|
|
3268
|
+
this.transport.removeHeader(key);
|
|
3258
3269
|
}
|
|
3259
3270
|
}
|
|
3260
3271
|
}
|
|
3261
|
-
const result2 = await this.transport.sendRequest("tools/call", {
|
|
3262
|
-
name,
|
|
3263
|
-
arguments: args || {}
|
|
3264
|
-
});
|
|
3265
|
-
return result2;
|
|
3266
3272
|
}
|
|
3267
3273
|
const url = this.apiBaseUrl ? `${this.apiBaseUrl}${this.apiRouteBase}/mcp` : `${this.apiRouteBase}/mcp`;
|
|
3268
3274
|
const headers = {
|
|
@@ -3272,6 +3278,7 @@ class MCPClientBase {
|
|
|
3272
3278
|
if (integrationsHeader) {
|
|
3273
3279
|
headers["X-Integrations"] = integrationsHeader;
|
|
3274
3280
|
}
|
|
3281
|
+
Object.assign(headers, integrationHeaders);
|
|
3275
3282
|
if (provider) {
|
|
3276
3283
|
const tokenData = await this.oauthManager.getProviderToken(provider, undefined, options?.context);
|
|
3277
3284
|
if (tokenData) {
|
|
@@ -3361,6 +3368,14 @@ class MCPClientBase {
|
|
|
3361
3368
|
}
|
|
3362
3369
|
return;
|
|
3363
3370
|
}
|
|
3371
|
+
getHeadersForTool(toolName) {
|
|
3372
|
+
for (const integration of this.integrations) {
|
|
3373
|
+
if (integration.tools.includes(toolName) && integration.getHeaders) {
|
|
3374
|
+
return integration.getHeaders();
|
|
3375
|
+
}
|
|
3376
|
+
}
|
|
3377
|
+
return {};
|
|
3378
|
+
}
|
|
3364
3379
|
getTool(name) {
|
|
3365
3380
|
return this.availableTools.get(name);
|
|
3366
3381
|
}
|
|
@@ -3741,45 +3756,48 @@ var logger22 = createLogger("Ramp");
|
|
|
3741
3756
|
// ../integrations/onedrive.ts
|
|
3742
3757
|
init_logger();
|
|
3743
3758
|
var logger23 = createLogger("OneDrive");
|
|
3759
|
+
// ../integrations/dropbox.ts
|
|
3760
|
+
init_logger();
|
|
3761
|
+
var logger24 = createLogger("Dropbox");
|
|
3744
3762
|
// ../integrations/word.ts
|
|
3745
3763
|
init_logger();
|
|
3746
|
-
var
|
|
3764
|
+
var logger25 = createLogger("Word");
|
|
3747
3765
|
// ../integrations/excel.ts
|
|
3748
3766
|
init_logger();
|
|
3749
|
-
var
|
|
3767
|
+
var logger26 = createLogger("Excel");
|
|
3750
3768
|
// ../integrations/powerpoint.ts
|
|
3751
3769
|
init_logger();
|
|
3752
|
-
var
|
|
3770
|
+
var logger27 = createLogger("PowerPoint");
|
|
3753
3771
|
// ../integrations/gdocs.ts
|
|
3754
3772
|
init_logger();
|
|
3755
|
-
var
|
|
3773
|
+
var logger28 = createLogger("Google Docs");
|
|
3756
3774
|
// ../integrations/gdrive.ts
|
|
3757
3775
|
init_logger();
|
|
3758
|
-
var
|
|
3776
|
+
var logger29 = createLogger("Google Drive");
|
|
3759
3777
|
// ../integrations/gsheets.ts
|
|
3760
3778
|
init_logger();
|
|
3761
|
-
var
|
|
3779
|
+
var logger30 = createLogger("Google Sheets");
|
|
3762
3780
|
// ../integrations/gslides.ts
|
|
3763
3781
|
init_logger();
|
|
3764
|
-
var
|
|
3782
|
+
var logger31 = createLogger("Google Slides");
|
|
3765
3783
|
// ../integrations/polar.ts
|
|
3766
3784
|
init_logger();
|
|
3767
|
-
var
|
|
3785
|
+
var logger32 = createLogger("Polar");
|
|
3768
3786
|
// ../integrations/figma.ts
|
|
3769
3787
|
init_logger();
|
|
3770
|
-
var
|
|
3788
|
+
var logger33 = createLogger("Figma");
|
|
3771
3789
|
// ../integrations/intercom.ts
|
|
3772
3790
|
init_logger();
|
|
3773
|
-
var
|
|
3791
|
+
var logger34 = createLogger("Intercom");
|
|
3774
3792
|
// ../integrations/hubspot.ts
|
|
3775
3793
|
init_logger();
|
|
3776
|
-
var
|
|
3794
|
+
var logger35 = createLogger("HubSpot");
|
|
3777
3795
|
// ../integrations/youtube.ts
|
|
3778
3796
|
init_logger();
|
|
3779
|
-
var
|
|
3797
|
+
var logger36 = createLogger("YouTube");
|
|
3780
3798
|
// ../integrations/cursor.ts
|
|
3781
3799
|
init_logger();
|
|
3782
|
-
var
|
|
3800
|
+
var logger37 = createLogger("Cursor");
|
|
3783
3801
|
// ../ai/trigger-tools.ts
|
|
3784
3802
|
init_utils();
|
|
3785
3803
|
|
|
@@ -3798,7 +3816,7 @@ init_tool_builder();
|
|
|
3798
3816
|
init_tool_builder();
|
|
3799
3817
|
// ../server.ts
|
|
3800
3818
|
var SERVER_LOG_CONTEXT3 = "server";
|
|
3801
|
-
var
|
|
3819
|
+
var logger38 = createLogger("MCPServer", SERVER_LOG_CONTEXT3);
|
|
3802
3820
|
var codeVerifierStorage = new Map;
|
|
3803
3821
|
var unauthenticatedCodeModeWarnings = new Set;
|
|
3804
3822
|
function toSolidStartHandler(clientOrHandlerOrOptions, _redirectOptions) {
|