@cjavdev/believe-mcp 0.7.0 → 0.9.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/auth.d.mts +6 -0
- package/auth.d.mts.map +1 -0
- package/auth.d.ts +6 -0
- package/auth.d.ts.map +1 -0
- package/{headers.mjs → auth.js} +18 -2
- package/auth.js.map +1 -0
- package/{headers.js → auth.mjs} +13 -6
- package/auth.mjs.map +1 -0
- package/code-tool.d.mts +1 -1
- package/code-tool.d.mts.map +1 -1
- package/code-tool.d.ts +1 -1
- package/code-tool.d.ts.map +1 -1
- package/code-tool.js +11 -12
- package/code-tool.js.map +1 -1
- package/code-tool.mjs +9 -10
- package/code-tool.mjs.map +1 -1
- package/docs-search-tool.d.mts +9 -3
- package/docs-search-tool.d.mts.map +1 -1
- package/docs-search-tool.d.ts +9 -3
- package/docs-search-tool.d.ts.map +1 -1
- package/docs-search-tool.js +6 -2
- package/docs-search-tool.js.map +1 -1
- package/docs-search-tool.mjs +6 -2
- package/docs-search-tool.mjs.map +1 -1
- package/http.d.mts +2 -2
- package/http.d.mts.map +1 -1
- package/http.d.ts +2 -2
- package/http.d.ts.map +1 -1
- package/http.js +9 -7
- package/http.js.map +1 -1
- package/http.mjs +9 -7
- package/http.mjs.map +1 -1
- package/instructions.d.mts +2 -0
- package/instructions.d.mts.map +1 -0
- package/instructions.d.ts +2 -0
- package/instructions.d.ts.map +1 -0
- package/instructions.js +55 -0
- package/instructions.js.map +1 -0
- package/instructions.mjs +52 -0
- package/instructions.mjs.map +1 -0
- package/methods.d.mts.map +1 -1
- package/methods.d.ts.map +1 -1
- package/methods.js +1 -6
- package/methods.js.map +1 -1
- package/methods.mjs +1 -6
- package/methods.mjs.map +1 -1
- package/options.d.mts +1 -0
- package/options.d.mts.map +1 -1
- package/options.d.ts +1 -0
- package/options.d.ts.map +1 -1
- package/options.js +8 -0
- package/options.js.map +1 -1
- package/options.mjs +8 -0
- package/options.mjs.map +1 -1
- package/package.json +32 -12
- package/server.d.mts +8 -9
- package/server.d.mts.map +1 -1
- package/server.d.ts +8 -9
- package/server.d.ts.map +1 -1
- package/server.js +15 -58
- package/server.js.map +1 -1
- package/server.mjs +14 -54
- package/server.mjs.map +1 -1
- package/src/{headers.ts → auth.ts} +16 -1
- package/src/code-tool.ts +22 -13
- package/src/docs-search-tool.ts +13 -4
- package/src/http.ts +16 -8
- package/src/instructions.ts +74 -0
- package/src/methods.ts +2 -6
- package/src/options.ts +11 -0
- package/src/server.ts +24 -74
- package/src/stdio.ts +2 -2
- package/src/types.ts +12 -4
- package/src/util.ts +25 -0
- package/stdio.js +2 -2
- package/stdio.js.map +1 -1
- package/stdio.mjs +2 -2
- package/stdio.mjs.map +1 -1
- package/types.d.mts +8 -1
- package/types.d.mts.map +1 -1
- package/types.d.ts +8 -1
- package/types.d.ts.map +1 -1
- package/types.js.map +1 -1
- package/types.mjs.map +1 -1
- package/util.d.mts +4 -0
- package/util.d.mts.map +1 -0
- package/util.d.ts +4 -0
- package/util.d.ts.map +1 -0
- package/util.js +30 -0
- package/util.js.map +1 -0
- package/util.mjs +24 -0
- package/util.mjs.map +1 -0
- package/headers.d.mts +0 -4
- package/headers.d.mts.map +0 -1
- package/headers.d.ts +0 -4
- package/headers.d.ts.map +0 -1
- package/headers.js.map +0 -1
- package/headers.mjs.map +0 -1
package/auth.d.mts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { IncomingMessage } from 'node:http';
|
|
2
|
+
import { ClientOptions } from '@cjavdev/believe';
|
|
3
|
+
import { McpOptions } from "./options.mjs";
|
|
4
|
+
export declare const parseClientAuthHeaders: (req: IncomingMessage, required?: boolean) => Partial<ClientOptions>;
|
|
5
|
+
export declare const getStainlessApiKey: (req: IncomingMessage, mcpOptions: McpOptions) => string | undefined;
|
|
6
|
+
//# sourceMappingURL=auth.d.mts.map
|
package/auth.d.mts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.mts","sourceRoot":"","sources":["src/auth.ts"],"names":[],"mappings":"OAEO,EAAE,eAAe,EAAE,MAAM,WAAW;OACpC,EAAE,aAAa,EAAE,MAAM,kBAAkB;OACzC,EAAE,UAAU,EAAE;AAErB,eAAO,MAAM,sBAAsB,GAAI,KAAK,eAAe,EAAE,WAAW,OAAO,KAAG,OAAO,CAAC,aAAa,CAqBtG,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,KAAK,eAAe,EAAE,YAAY,UAAU,KAAG,MAAM,GAAG,SAY1F,CAAC"}
|
package/auth.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { IncomingMessage } from 'node:http';
|
|
2
|
+
import { ClientOptions } from '@cjavdev/believe';
|
|
3
|
+
import { McpOptions } from "./options.js";
|
|
4
|
+
export declare const parseClientAuthHeaders: (req: IncomingMessage, required?: boolean) => Partial<ClientOptions>;
|
|
5
|
+
export declare const getStainlessApiKey: (req: IncomingMessage, mcpOptions: McpOptions) => string | undefined;
|
|
6
|
+
//# sourceMappingURL=auth.d.ts.map
|
package/auth.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["src/auth.ts"],"names":[],"mappings":"OAEO,EAAE,eAAe,EAAE,MAAM,WAAW;OACpC,EAAE,aAAa,EAAE,MAAM,kBAAkB;OACzC,EAAE,UAAU,EAAE;AAErB,eAAO,MAAM,sBAAsB,GAAI,KAAK,eAAe,EAAE,WAAW,OAAO,KAAG,OAAO,CAAC,aAAa,CAqBtG,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,KAAK,eAAe,EAAE,YAAY,UAAU,KAAG,MAAM,GAAG,SAY1F,CAAC"}
|
package/{headers.mjs → auth.js}
RENAMED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getStainlessApiKey = exports.parseClientAuthHeaders = void 0;
|
|
5
|
+
const parseClientAuthHeaders = (req, required) => {
|
|
3
6
|
if (req.headers.authorization) {
|
|
4
7
|
const scheme = req.headers.authorization.split(' ')[0];
|
|
5
8
|
const value = req.headers.authorization.slice(scheme.length + 1);
|
|
@@ -18,4 +21,17 @@ export const parseAuthHeaders = (req, required) => {
|
|
|
18
21
|
: req.headers['x-believe-api-key'];
|
|
19
22
|
return { apiKey };
|
|
20
23
|
};
|
|
21
|
-
|
|
24
|
+
exports.parseClientAuthHeaders = parseClientAuthHeaders;
|
|
25
|
+
const getStainlessApiKey = (req, mcpOptions) => {
|
|
26
|
+
// Try to get the key from the x-stainless-api-key header
|
|
27
|
+
const headerKey = Array.isArray(req.headers['x-stainless-api-key']) ?
|
|
28
|
+
req.headers['x-stainless-api-key'][0]
|
|
29
|
+
: req.headers['x-stainless-api-key'];
|
|
30
|
+
if (headerKey && typeof headerKey === 'string') {
|
|
31
|
+
return headerKey;
|
|
32
|
+
}
|
|
33
|
+
// Fall back to value set in the mcpOptions (e.g. from environment variable), if provided
|
|
34
|
+
return mcpOptions.stainlessApiKey;
|
|
35
|
+
};
|
|
36
|
+
exports.getStainlessApiKey = getStainlessApiKey;
|
|
37
|
+
//# sourceMappingURL=auth.js.map
|
package/auth.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["src/auth.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAM/E,MAAM,sBAAsB,GAAG,CAAC,GAAoB,EAAE,QAAkB,EAA0B,EAAE;IACzG,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACxD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE;gBACE,MAAM,IAAI,KAAK,CACb,0GAA0G,CAC3G,CAAC;QACN,CAAC;IACH,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,MAAM,GACV,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC/C,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC,CAAC;AArBW,QAAA,sBAAsB,0BAqBjC;AAEK,MAAM,kBAAkB,GAAG,CAAC,GAAoB,EAAE,UAAsB,EAAsB,EAAE;IACrG,yDAAyD;IACzD,MAAM,SAAS,GACb,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACvC,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yFAAyF;IACzF,OAAO,UAAU,CAAC,eAAe,CAAC;AACpC,CAAC,CAAC;AAZW,QAAA,kBAAkB,sBAY7B"}
|
package/{headers.js → auth.mjs}
RENAMED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
3
|
-
|
|
4
|
-
exports.parseAuthHeaders = void 0;
|
|
5
|
-
const parseAuthHeaders = (req, required) => {
|
|
2
|
+
export const parseClientAuthHeaders = (req, required) => {
|
|
6
3
|
if (req.headers.authorization) {
|
|
7
4
|
const scheme = req.headers.authorization.split(' ')[0];
|
|
8
5
|
const value = req.headers.authorization.slice(scheme.length + 1);
|
|
@@ -21,5 +18,15 @@ const parseAuthHeaders = (req, required) => {
|
|
|
21
18
|
: req.headers['x-believe-api-key'];
|
|
22
19
|
return { apiKey };
|
|
23
20
|
};
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
export const getStainlessApiKey = (req, mcpOptions) => {
|
|
22
|
+
// Try to get the key from the x-stainless-api-key header
|
|
23
|
+
const headerKey = Array.isArray(req.headers['x-stainless-api-key']) ?
|
|
24
|
+
req.headers['x-stainless-api-key'][0]
|
|
25
|
+
: req.headers['x-stainless-api-key'];
|
|
26
|
+
if (headerKey && typeof headerKey === 'string') {
|
|
27
|
+
return headerKey;
|
|
28
|
+
}
|
|
29
|
+
// Fall back to value set in the mcpOptions (e.g. from environment variable), if provided
|
|
30
|
+
return mcpOptions.stainlessApiKey;
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=auth.mjs.map
|
package/auth.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.mjs","sourceRoot":"","sources":["src/auth.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAMtF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAoB,EAAE,QAAkB,EAA0B,EAAE;IACzG,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACxD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE;gBACE,MAAM,IAAI,KAAK,CACb,0GAA0G,CAC3G,CAAC;QACN,CAAC;IACH,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,MAAM,GACV,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC/C,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAoB,EAAE,UAAsB,EAAsB,EAAE;IACrG,yDAAyD;IACzD,MAAM,SAAS,GACb,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACvC,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yFAAyF;IACzF,OAAO,UAAU,CAAC,eAAe,CAAC;AACpC,CAAC,CAAC"}
|
package/code-tool.d.mts
CHANGED
|
@@ -9,7 +9,7 @@ import { SdkMethod } from "./methods.mjs";
|
|
|
9
9
|
*
|
|
10
10
|
* @param endpoints - The endpoints to include in the list.
|
|
11
11
|
*/
|
|
12
|
-
export declare function codeTool(
|
|
12
|
+
export declare function codeTool({ blockedMethods }: {
|
|
13
13
|
blockedMethods: SdkMethod[] | undefined;
|
|
14
14
|
}): McpTool;
|
|
15
15
|
//# sourceMappingURL=code-tool.d.mts.map
|
package/code-tool.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-tool.d.mts","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"OAEO,
|
|
1
|
+
{"version":3,"file":"code-tool.d.mts","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"OAEO,EAEL,OAAO,EAKR;OAIM,EAAE,SAAS,EAAE;AAuBpB;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EAAE,cAAc,EAAE,EAAE;IAAE,cAAc,EAAE,SAAS,EAAE,GAAG,SAAS,CAAA;CAAE,GAAG,OAAO,CA8FjG"}
|
package/code-tool.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { SdkMethod } from "./methods.js";
|
|
|
9
9
|
*
|
|
10
10
|
* @param endpoints - The endpoints to include in the list.
|
|
11
11
|
*/
|
|
12
|
-
export declare function codeTool(
|
|
12
|
+
export declare function codeTool({ blockedMethods }: {
|
|
13
13
|
blockedMethods: SdkMethod[] | undefined;
|
|
14
14
|
}): McpTool;
|
|
15
15
|
//# sourceMappingURL=code-tool.d.ts.map
|
package/code-tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-tool.d.ts","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"OAEO,
|
|
1
|
+
{"version":3,"file":"code-tool.d.ts","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"OAEO,EAEL,OAAO,EAKR;OAIM,EAAE,SAAS,EAAE;AAuBpB;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EAAE,cAAc,EAAE,EAAE;IAAE,cAAc,EAAE,SAAS,EAAE,GAAG,SAAS,CAAA;CAAE,GAAG,OAAO,CA8FjG"}
|
package/code-tool.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.codeTool = codeTool;
|
|
5
5
|
const types_1 = require("./types.js");
|
|
6
|
-
const
|
|
6
|
+
const util_1 = require("./util.js");
|
|
7
7
|
const prompt = `Runs JavaScript code to interact with the Believe API.
|
|
8
8
|
|
|
9
9
|
You are a skilled programmer writing code to interface with the service.
|
|
@@ -33,7 +33,7 @@ Variables will not persist between calls, so make sure to return or log any data
|
|
|
33
33
|
*
|
|
34
34
|
* @param endpoints - The endpoints to include in the list.
|
|
35
35
|
*/
|
|
36
|
-
function codeTool(
|
|
36
|
+
function codeTool({ blockedMethods }) {
|
|
37
37
|
const metadata = { resource: 'all', operation: 'write', tags: [] };
|
|
38
38
|
const tool = {
|
|
39
39
|
name: 'execute',
|
|
@@ -53,34 +53,33 @@ function codeTool(params) {
|
|
|
53
53
|
required: ['code'],
|
|
54
54
|
},
|
|
55
55
|
};
|
|
56
|
-
const handler = async (
|
|
56
|
+
const handler = async ({ reqContext, args, }) => {
|
|
57
57
|
const code = args.code;
|
|
58
58
|
const intent = args.intent;
|
|
59
|
+
const client = reqContext.client;
|
|
59
60
|
// Do very basic blocking of code that includes forbidden method names.
|
|
60
61
|
//
|
|
61
62
|
// WARNING: This is not secure against obfuscation and other evasion methods. If
|
|
62
63
|
// stronger security blocks are required, then these should be enforced in the downstream
|
|
63
64
|
// API (e.g., by having users call the MCP server with API keys with limited permissions).
|
|
64
|
-
if (
|
|
65
|
-
const blockedMatches =
|
|
65
|
+
if (blockedMethods) {
|
|
66
|
+
const blockedMatches = blockedMethods.filter((method) => code.includes(method.fullyQualifiedName));
|
|
66
67
|
if (blockedMatches.length > 0) {
|
|
67
68
|
return (0, types_1.asErrorResult)(`The following methods have been blocked by the MCP server and cannot be used in code execution: ${blockedMatches
|
|
68
69
|
.map((m) => m.fullyQualifiedName)
|
|
69
70
|
.join(', ')}`);
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
|
-
|
|
73
|
-
//
|
|
74
|
-
const stainlessAPIKey = (0, server_1.readEnv)('STAINLESS_API_KEY');
|
|
75
|
-
const codeModeEndpoint = (0, server_1.readEnv)('CODE_MODE_ENDPOINT_URL') ?? 'https://api.stainless.com/api/ai/code-tool';
|
|
73
|
+
const codeModeEndpoint = (0, util_1.readEnv)('CODE_MODE_ENDPOINT_URL') ?? 'https://api.stainless.com/api/ai/code-tool';
|
|
74
|
+
// Setting a Stainless API key authenticates requests to the code tool endpoint.
|
|
76
75
|
const res = await fetch(codeModeEndpoint, {
|
|
77
76
|
method: 'POST',
|
|
78
77
|
headers: {
|
|
79
|
-
...(
|
|
78
|
+
...(reqContext.stainlessApiKey && { Authorization: reqContext.stainlessApiKey }),
|
|
80
79
|
'Content-Type': 'application/json',
|
|
81
80
|
client_envs: JSON.stringify({
|
|
82
|
-
BELIEVE_API_KEY: (0,
|
|
83
|
-
BELIEVE_BASE_URL: (0,
|
|
81
|
+
BELIEVE_API_KEY: (0, util_1.requireValue)((0, util_1.readEnv)('BELIEVE_API_KEY') ?? client.apiKey, 'set BELIEVE_API_KEY environment variable or provide apiKey client option'),
|
|
82
|
+
BELIEVE_BASE_URL: (0, util_1.readEnv)('BELIEVE_BASE_URL') ?? client.baseURL ?? undefined,
|
|
84
83
|
}),
|
|
85
84
|
},
|
|
86
85
|
body: JSON.stringify({
|
package/code-tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-tool.js","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":";AAAA,sFAAsF;;
|
|
1
|
+
{"version":3,"file":"code-tool.js","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"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"}
|
package/code-tool.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
-
import { asErrorResult, asTextContentResult } from "./types.mjs";
|
|
3
|
-
import { readEnv, requireValue } from "./
|
|
2
|
+
import { asErrorResult, asTextContentResult, } from "./types.mjs";
|
|
3
|
+
import { readEnv, requireValue } from "./util.mjs";
|
|
4
4
|
const prompt = `Runs JavaScript code to interact with the Believe API.
|
|
5
5
|
|
|
6
6
|
You are a skilled programmer writing code to interface with the service.
|
|
@@ -30,7 +30,7 @@ Variables will not persist between calls, so make sure to return or log any data
|
|
|
30
30
|
*
|
|
31
31
|
* @param endpoints - The endpoints to include in the list.
|
|
32
32
|
*/
|
|
33
|
-
export function codeTool(
|
|
33
|
+
export function codeTool({ blockedMethods }) {
|
|
34
34
|
const metadata = { resource: 'all', operation: 'write', tags: [] };
|
|
35
35
|
const tool = {
|
|
36
36
|
name: 'execute',
|
|
@@ -50,30 +50,29 @@ export function codeTool(params) {
|
|
|
50
50
|
required: ['code'],
|
|
51
51
|
},
|
|
52
52
|
};
|
|
53
|
-
const handler = async (
|
|
53
|
+
const handler = async ({ reqContext, args, }) => {
|
|
54
54
|
const code = args.code;
|
|
55
55
|
const intent = args.intent;
|
|
56
|
+
const client = reqContext.client;
|
|
56
57
|
// Do very basic blocking of code that includes forbidden method names.
|
|
57
58
|
//
|
|
58
59
|
// WARNING: This is not secure against obfuscation and other evasion methods. If
|
|
59
60
|
// stronger security blocks are required, then these should be enforced in the downstream
|
|
60
61
|
// API (e.g., by having users call the MCP server with API keys with limited permissions).
|
|
61
|
-
if (
|
|
62
|
-
const blockedMatches =
|
|
62
|
+
if (blockedMethods) {
|
|
63
|
+
const blockedMatches = blockedMethods.filter((method) => code.includes(method.fullyQualifiedName));
|
|
63
64
|
if (blockedMatches.length > 0) {
|
|
64
65
|
return asErrorResult(`The following methods have been blocked by the MCP server and cannot be used in code execution: ${blockedMatches
|
|
65
66
|
.map((m) => m.fullyQualifiedName)
|
|
66
67
|
.join(', ')}`);
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
|
-
// this is not required, but passing a Stainless API key for the matching project_name
|
|
70
|
-
// will allow you to run code-mode queries against non-published versions of your SDK.
|
|
71
|
-
const stainlessAPIKey = readEnv('STAINLESS_API_KEY');
|
|
72
70
|
const codeModeEndpoint = readEnv('CODE_MODE_ENDPOINT_URL') ?? 'https://api.stainless.com/api/ai/code-tool';
|
|
71
|
+
// Setting a Stainless API key authenticates requests to the code tool endpoint.
|
|
73
72
|
const res = await fetch(codeModeEndpoint, {
|
|
74
73
|
method: 'POST',
|
|
75
74
|
headers: {
|
|
76
|
-
...(
|
|
75
|
+
...(reqContext.stainlessApiKey && { Authorization: reqContext.stainlessApiKey }),
|
|
77
76
|
'Content-Type': 'application/json',
|
|
78
77
|
client_envs: JSON.stringify({
|
|
79
78
|
BELIEVE_API_KEY: requireValue(readEnv('BELIEVE_API_KEY') ?? client.apiKey, 'set BELIEVE_API_KEY environment variable or provide apiKey client option'),
|
package/code-tool.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-tool.mjs","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,
|
|
1
|
+
{"version":3,"file":"code-tool.mjs","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAKL,aAAa,EACb,mBAAmB,GACpB;OAEM,EAAE,OAAO,EAAE,YAAY,EAAE;AAIhC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;uGAmBwF,CAAC;AAExG;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,cAAc,EAA+C;IACtF,MAAM,QAAQ,GAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC7E,MAAM,IAAI,GAAS;QACjB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kBAAkB;iBAChC;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iEAAiE;iBAC/E;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,EAAE,EACrB,UAAU,EACV,IAAI,GAIL,EAA2B,EAAE;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAc,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAA4B,CAAC;QACjD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAEjC,uEAAuE;QACvE,EAAE;QACF,gFAAgF;QAChF,yFAAyF;QACzF,0FAA0F;QAC1F,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACnG,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,aAAa,CAClB,mGAAmG,cAAc;qBAC9G,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;qBAChC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GACpB,OAAO,CAAC,wBAAwB,CAAC,IAAI,4CAA4C,CAAC;QAEpF,gFAAgF;QAChF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,GAAG,CAAC,UAAU,CAAC,eAAe,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,eAAe,EAAE,CAAC;gBAChF,cAAc,EAAE,kBAAkB;gBAClC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;oBAC1B,eAAe,EAAE,YAAY,CAC3B,OAAO,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,MAAM,EAC3C,0EAA0E,CAC3E;oBACD,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS;iBAC7E,CAAC;aACH;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,YAAY,EAAE,SAAS;gBACvB,IAAI;gBACJ,MAAM;gBACN,WAAW,EAAE,EAAE;aACM,CAAC;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,GAAG,GAAG,CAAC,MAAM,KACX,GAAG,CAAC,UACN,4DAA4D,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAC/E,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAiB,CAAC;QACtF,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG;YACb,MAAM;YACN,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;YAC1C,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,aAAa,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1G,CAAC;QACD,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC"}
|
package/docs-search-tool.d.mts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { Metadata } from "./types.mjs";
|
|
1
|
+
import { Metadata, McpRequestContext } from "./types.mjs";
|
|
2
2
|
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
3
|
export declare const metadata: Metadata;
|
|
4
4
|
export declare const tool: Tool;
|
|
5
|
-
export declare const handler: (
|
|
5
|
+
export declare const handler: ({ reqContext, args, }: {
|
|
6
|
+
reqContext: McpRequestContext;
|
|
7
|
+
args: Record<string, unknown> | undefined;
|
|
8
|
+
}) => Promise<import("./types").ToolCallResult>;
|
|
6
9
|
declare const _default: {
|
|
7
10
|
metadata: Metadata;
|
|
8
11
|
tool: {
|
|
@@ -45,7 +48,10 @@ declare const _default: {
|
|
|
45
48
|
}[] | undefined;
|
|
46
49
|
title?: string | undefined;
|
|
47
50
|
};
|
|
48
|
-
handler: (
|
|
51
|
+
handler: ({ reqContext, args, }: {
|
|
52
|
+
reqContext: McpRequestContext;
|
|
53
|
+
args: Record<string, unknown> | undefined;
|
|
54
|
+
}) => Promise<import("./types").ToolCallResult>;
|
|
49
55
|
};
|
|
50
56
|
export default _default;
|
|
51
57
|
//# sourceMappingURL=docs-search-tool.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-search-tool.d.mts","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":"OAEO,EAAE,QAAQ,EAAuB;
|
|
1
|
+
{"version":3,"file":"docs-search-tool.d.mts","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":"OAEO,EAAE,QAAQ,EAAE,iBAAiB,EAAuB;OACpD,EAAE,IAAI,EAAE,MAAM,oCAAoC;AAEzD,eAAO,MAAM,QAAQ,EAAE,QAKtB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,IA0BlB,CAAC;AAKF,eAAO,MAAM,OAAO,GAAU,uBAG3B;IACD,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC3C,8CAgBA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAnBC;QACD,UAAU,EAAE,iBAAiB,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KAC3C;;AAkBD,wBAA2C"}
|
package/docs-search-tool.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { Metadata } from "./types.js";
|
|
1
|
+
import { Metadata, McpRequestContext } from "./types.js";
|
|
2
2
|
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
3
|
export declare const metadata: Metadata;
|
|
4
4
|
export declare const tool: Tool;
|
|
5
|
-
export declare const handler: (
|
|
5
|
+
export declare const handler: ({ reqContext, args, }: {
|
|
6
|
+
reqContext: McpRequestContext;
|
|
7
|
+
args: Record<string, unknown> | undefined;
|
|
8
|
+
}) => Promise<import("./types").ToolCallResult>;
|
|
6
9
|
declare const _default: {
|
|
7
10
|
metadata: Metadata;
|
|
8
11
|
tool: {
|
|
@@ -45,7 +48,10 @@ declare const _default: {
|
|
|
45
48
|
}[] | undefined;
|
|
46
49
|
title?: string | undefined;
|
|
47
50
|
};
|
|
48
|
-
handler: (
|
|
51
|
+
handler: ({ reqContext, args, }: {
|
|
52
|
+
reqContext: McpRequestContext;
|
|
53
|
+
args: Record<string, unknown> | undefined;
|
|
54
|
+
}) => Promise<import("./types").ToolCallResult>;
|
|
49
55
|
};
|
|
50
56
|
export default _default;
|
|
51
57
|
//# sourceMappingURL=docs-search-tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-search-tool.d.ts","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":"OAEO,EAAE,QAAQ,EAAuB;
|
|
1
|
+
{"version":3,"file":"docs-search-tool.d.ts","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":"OAEO,EAAE,QAAQ,EAAE,iBAAiB,EAAuB;OACpD,EAAE,IAAI,EAAE,MAAM,oCAAoC;AAEzD,eAAO,MAAM,QAAQ,EAAE,QAKtB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,IA0BlB,CAAC;AAKF,eAAO,MAAM,OAAO,GAAU,uBAG3B;IACD,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC3C,8CAgBA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAnBC;QACD,UAAU,EAAE,iBAAiB,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KAC3C;;AAkBD,wBAA2C"}
|
package/docs-search-tool.js
CHANGED
|
@@ -37,10 +37,14 @@ exports.tool = {
|
|
|
37
37
|
},
|
|
38
38
|
};
|
|
39
39
|
const docsSearchURL = process.env['DOCS_SEARCH_URL'] || 'https://api.stainless.com/api/projects/believe/docs/search';
|
|
40
|
-
const handler = async (
|
|
40
|
+
const handler = async ({ reqContext, args, }) => {
|
|
41
41
|
const body = args;
|
|
42
42
|
const query = new URLSearchParams(body).toString();
|
|
43
|
-
const result = await fetch(`${docsSearchURL}?${query}
|
|
43
|
+
const result = await fetch(`${docsSearchURL}?${query}`, {
|
|
44
|
+
headers: {
|
|
45
|
+
...(reqContext.stainlessApiKey && { Authorization: reqContext.stainlessApiKey }),
|
|
46
|
+
},
|
|
47
|
+
});
|
|
44
48
|
if (!result.ok) {
|
|
45
49
|
throw new Error(`${result.status}: ${result.statusText} when using doc search tool. Details: ${await result.text()}`);
|
|
46
50
|
}
|
package/docs-search-tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-search-tool.js","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,
|
|
1
|
+
{"version":3,"file":"docs-search-tool.js","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,sCAA2E;AAG9D,QAAA,QAAQ,GAAa;IAChC,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,MAAM;IACjB,IAAI,EAAE,EAAE;IACR,UAAU,EAAE,KAAK;CAClB,CAAC;AAEW,QAAA,IAAI,GAAS;IACxB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,8EAA8E;IAC3F,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0BAA0B;aACxC;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yCAAyC;gBACtD,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;aAClG;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;gBAC9C,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;aAC7B;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;KAChC;IACD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;KACnB;CACF,CAAC;AAEF,MAAM,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,4DAA4D,CAAC;AAE1F,MAAM,OAAO,GAAG,KAAK,EAAE,EAC5B,UAAU,EACV,IAAI,GAIL,EAAE,EAAE;IACH,MAAM,IAAI,GAAG,IAAW,CAAC;IACzB,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,aAAa,IAAI,KAAK,EAAE,EAAE;QACtD,OAAO,EAAE;YACP,GAAG,CAAC,UAAU,CAAC,eAAe,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,eAAe,EAAE,CAAC;SACjF;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,yCAAyC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CACrG,CAAC;IACJ,CAAC;IAED,OAAO,IAAA,2BAAmB,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC;AAtBW,QAAA,OAAO,WAsBlB;AAEF,kBAAe,EAAE,QAAQ,EAAR,gBAAQ,EAAE,IAAI,EAAJ,YAAI,EAAE,OAAO,EAAP,eAAO,EAAE,CAAC"}
|
package/docs-search-tool.mjs
CHANGED
|
@@ -34,10 +34,14 @@ export const tool = {
|
|
|
34
34
|
},
|
|
35
35
|
};
|
|
36
36
|
const docsSearchURL = process.env['DOCS_SEARCH_URL'] || 'https://api.stainless.com/api/projects/believe/docs/search';
|
|
37
|
-
export const handler = async (
|
|
37
|
+
export const handler = async ({ reqContext, args, }) => {
|
|
38
38
|
const body = args;
|
|
39
39
|
const query = new URLSearchParams(body).toString();
|
|
40
|
-
const result = await fetch(`${docsSearchURL}?${query}
|
|
40
|
+
const result = await fetch(`${docsSearchURL}?${query}`, {
|
|
41
|
+
headers: {
|
|
42
|
+
...(reqContext.stainlessApiKey && { Authorization: reqContext.stainlessApiKey }),
|
|
43
|
+
},
|
|
44
|
+
});
|
|
41
45
|
if (!result.ok) {
|
|
42
46
|
throw new Error(`${result.status}: ${result.statusText} when using doc search tool. Details: ${await result.text()}`);
|
|
43
47
|
}
|
package/docs-search-tool.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-search-tool.mjs","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,
|
|
1
|
+
{"version":3,"file":"docs-search-tool.mjs","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAA+B,mBAAmB,EAAE;AAG3D,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,MAAM;IACjB,IAAI,EAAE,EAAE;IACR,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAS;IACxB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,8EAA8E;IAC3F,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0BAA0B;aACxC;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yCAAyC;gBACtD,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;aAClG;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;gBAC9C,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;aAC7B;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;KAChC;IACD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;KACnB;CACF,CAAC;AAEF,MAAM,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,4DAA4D,CAAC;AAEjG,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,EAC5B,UAAU,EACV,IAAI,GAIL,EAAE,EAAE;IACH,MAAM,IAAI,GAAG,IAAW,CAAC;IACzB,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,aAAa,IAAI,KAAK,EAAE,EAAE;QACtD,OAAO,EAAE;YACP,GAAG,CAAC,UAAU,CAAC,eAAe,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,eAAe,EAAE,CAAC;SACjF;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,yCAAyC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CACrG,CAAC;IACJ,CAAC;IAED,OAAO,mBAAmB,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC"}
|
package/http.d.mts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import { ClientOptions } from '@cjavdev/believe';
|
|
1
2
|
import express from 'express';
|
|
2
3
|
import { McpOptions } from "./options.mjs";
|
|
3
|
-
import { ClientOptions } from "./server.mjs";
|
|
4
4
|
export declare const streamableHTTPApp: ({ clientOptions, mcpOptions, debug, }: {
|
|
5
5
|
clientOptions?: ClientOptions;
|
|
6
6
|
mcpOptions: McpOptions;
|
|
7
7
|
debug: boolean;
|
|
8
8
|
}) => express.Express;
|
|
9
|
-
export declare const launchStreamableHTTPServer: (
|
|
9
|
+
export declare const launchStreamableHTTPServer: ({ mcpOptions, debug, port, }: {
|
|
10
10
|
mcpOptions: McpOptions;
|
|
11
11
|
debug: boolean;
|
|
12
12
|
port: number | string | undefined;
|
package/http.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.mts","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"OAIO,OAAO,MAAM,SAAS;
|
|
1
|
+
{"version":3,"file":"http.d.mts","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"OAIO,EAAE,aAAa,EAAE,MAAM,kBAAkB;OACzC,OAAO,MAAM,SAAS;OAItB,EAAE,UAAU,EAAE;AA0ErB,eAAO,MAAM,iBAAiB,GAAI,uCAI/B;IACD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;CAChB,KAAG,OAAO,CAAC,OAwBX,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAU,8BAI9C;IACD,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,kBAYA,CAAC"}
|
package/http.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import { ClientOptions } from '@cjavdev/believe';
|
|
1
2
|
import express from 'express';
|
|
2
3
|
import { McpOptions } from "./options.js";
|
|
3
|
-
import { ClientOptions } from "./server.js";
|
|
4
4
|
export declare const streamableHTTPApp: ({ clientOptions, mcpOptions, debug, }: {
|
|
5
5
|
clientOptions?: ClientOptions;
|
|
6
6
|
mcpOptions: McpOptions;
|
|
7
7
|
debug: boolean;
|
|
8
8
|
}) => express.Express;
|
|
9
|
-
export declare const launchStreamableHTTPServer: (
|
|
9
|
+
export declare const launchStreamableHTTPServer: ({ mcpOptions, debug, port, }: {
|
|
10
10
|
mcpOptions: McpOptions;
|
|
11
11
|
debug: boolean;
|
|
12
12
|
port: number | string | undefined;
|
package/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"OAIO,OAAO,MAAM,SAAS;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"OAIO,EAAE,aAAa,EAAE,MAAM,kBAAkB;OACzC,OAAO,MAAM,SAAS;OAItB,EAAE,UAAU,EAAE;AA0ErB,eAAO,MAAM,iBAAiB,GAAI,uCAI/B;IACD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;CAChB,KAAG,OAAO,CAAC,OAwBX,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAU,8BAI9C;IACD,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,kBAYA,CAAC"}
|
package/http.js
CHANGED
|
@@ -9,12 +9,13 @@ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamable
|
|
|
9
9
|
const express_1 = __importDefault(require("express"));
|
|
10
10
|
const morgan_1 = __importDefault(require("morgan"));
|
|
11
11
|
const morgan_body_1 = __importDefault(require("morgan-body"));
|
|
12
|
+
const auth_1 = require("./auth.js");
|
|
12
13
|
const server_1 = require("./server.js");
|
|
13
|
-
const headers_1 = require("./headers.js");
|
|
14
14
|
const newServer = async ({ clientOptions, mcpOptions, req, res, }) => {
|
|
15
|
-
const
|
|
15
|
+
const stainlessApiKey = (0, auth_1.getStainlessApiKey)(req, mcpOptions);
|
|
16
|
+
const server = await (0, server_1.newMcpServer)(stainlessApiKey);
|
|
16
17
|
try {
|
|
17
|
-
const authOptions = (0,
|
|
18
|
+
const authOptions = (0, auth_1.parseClientAuthHeaders)(req, false);
|
|
18
19
|
await (0, server_1.initMcpServer)({
|
|
19
20
|
server: server,
|
|
20
21
|
mcpOptions: mcpOptions,
|
|
@@ -22,6 +23,7 @@ const newServer = async ({ clientOptions, mcpOptions, req, res, }) => {
|
|
|
22
23
|
...clientOptions,
|
|
23
24
|
...authOptions,
|
|
24
25
|
},
|
|
26
|
+
stainlessApiKey: stainlessApiKey,
|
|
25
27
|
});
|
|
26
28
|
}
|
|
27
29
|
catch (error) {
|
|
@@ -87,9 +89,9 @@ const streamableHTTPApp = ({ clientOptions = {}, mcpOptions, debug, }) => {
|
|
|
87
89
|
return app;
|
|
88
90
|
};
|
|
89
91
|
exports.streamableHTTPApp = streamableHTTPApp;
|
|
90
|
-
const launchStreamableHTTPServer = async (
|
|
91
|
-
const app = (0, exports.streamableHTTPApp)({ mcpOptions
|
|
92
|
-
const server = app.listen(
|
|
92
|
+
const launchStreamableHTTPServer = async ({ mcpOptions, debug, port, }) => {
|
|
93
|
+
const app = (0, exports.streamableHTTPApp)({ mcpOptions, debug });
|
|
94
|
+
const server = app.listen(port);
|
|
93
95
|
const address = server.address();
|
|
94
96
|
if (typeof address === 'string') {
|
|
95
97
|
console.error(`MCP Server running on streamable HTTP at ${address}`);
|
|
@@ -98,7 +100,7 @@ const launchStreamableHTTPServer = async (params) => {
|
|
|
98
100
|
console.error(`MCP Server running on streamable HTTP on port ${address.port}`);
|
|
99
101
|
}
|
|
100
102
|
else {
|
|
101
|
-
console.error(`MCP Server running on streamable HTTP on port ${
|
|
103
|
+
console.error(`MCP Server running on streamable HTTP on port ${port}`);
|
|
102
104
|
}
|
|
103
105
|
};
|
|
104
106
|
exports.launchStreamableHTTPServer = launchStreamableHTTPServer;
|
package/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;;;AAGtF,0FAAmG;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"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"}
|
package/http.mjs
CHANGED
|
@@ -3,12 +3,13 @@ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/
|
|
|
3
3
|
import express from 'express';
|
|
4
4
|
import morgan from 'morgan';
|
|
5
5
|
import morganBody from 'morgan-body';
|
|
6
|
+
import { getStainlessApiKey, parseClientAuthHeaders } from "./auth.mjs";
|
|
6
7
|
import { initMcpServer, newMcpServer } from "./server.mjs";
|
|
7
|
-
import { parseAuthHeaders } from "./headers.mjs";
|
|
8
8
|
const newServer = async ({ clientOptions, mcpOptions, req, res, }) => {
|
|
9
|
-
const
|
|
9
|
+
const stainlessApiKey = getStainlessApiKey(req, mcpOptions);
|
|
10
|
+
const server = await newMcpServer(stainlessApiKey);
|
|
10
11
|
try {
|
|
11
|
-
const authOptions =
|
|
12
|
+
const authOptions = parseClientAuthHeaders(req, false);
|
|
12
13
|
await initMcpServer({
|
|
13
14
|
server: server,
|
|
14
15
|
mcpOptions: mcpOptions,
|
|
@@ -16,6 +17,7 @@ const newServer = async ({ clientOptions, mcpOptions, req, res, }) => {
|
|
|
16
17
|
...clientOptions,
|
|
17
18
|
...authOptions,
|
|
18
19
|
},
|
|
20
|
+
stainlessApiKey: stainlessApiKey,
|
|
19
21
|
});
|
|
20
22
|
}
|
|
21
23
|
catch (error) {
|
|
@@ -80,9 +82,9 @@ export const streamableHTTPApp = ({ clientOptions = {}, mcpOptions, debug, }) =>
|
|
|
80
82
|
app.delete('/', del);
|
|
81
83
|
return app;
|
|
82
84
|
};
|
|
83
|
-
export const launchStreamableHTTPServer = async (
|
|
84
|
-
const app = streamableHTTPApp({ mcpOptions
|
|
85
|
-
const server = app.listen(
|
|
85
|
+
export const launchStreamableHTTPServer = async ({ mcpOptions, debug, port, }) => {
|
|
86
|
+
const app = streamableHTTPApp({ mcpOptions, debug });
|
|
87
|
+
const server = app.listen(port);
|
|
86
88
|
const address = server.address();
|
|
87
89
|
if (typeof address === 'string') {
|
|
88
90
|
console.error(`MCP Server running on streamable HTTP at ${address}`);
|
|
@@ -91,7 +93,7 @@ export const launchStreamableHTTPServer = async (params) => {
|
|
|
91
93
|
console.error(`MCP Server running on streamable HTTP on port ${address.port}`);
|
|
92
94
|
}
|
|
93
95
|
else {
|
|
94
|
-
console.error(`MCP Server running on streamable HTTP on port ${
|
|
96
|
+
console.error(`MCP Server running on streamable HTTP on port ${port}`);
|
|
95
97
|
}
|
|
96
98
|
};
|
|
97
99
|
//# sourceMappingURL=http.mjs.map
|
package/http.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.mjs","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAG/E,EAAE,6BAA6B,EAAE,MAAM,oDAAoD;
|
|
1
|
+
{"version":3,"file":"http.mjs","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.d.mts","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"AA0BA,wBAAsB,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAW1F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"AA0BA,wBAAsB,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAW1F"}
|