@henrylabs/mcp 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/code-tool-worker.d.mts.map +1 -1
- package/code-tool-worker.d.ts.map +1 -1
- package/code-tool-worker.js +57 -27
- package/code-tool-worker.js.map +1 -1
- package/code-tool-worker.mjs +24 -27
- package/code-tool-worker.mjs.map +1 -1
- package/code-tool.d.mts.map +1 -1
- package/code-tool.d.ts.map +1 -1
- package/code-tool.js +13 -10
- package/code-tool.js.map +1 -1
- package/code-tool.mjs +13 -10
- package/code-tool.mjs.map +1 -1
- package/docs-search-tool.d.mts +2 -0
- package/docs-search-tool.d.mts.map +1 -1
- package/docs-search-tool.d.ts +2 -0
- package/docs-search-tool.d.ts.map +1 -1
- package/docs-search-tool.js +32 -2
- package/docs-search-tool.js.map +1 -1
- package/docs-search-tool.mjs +31 -2
- package/docs-search-tool.mjs.map +1 -1
- package/http.d.mts.map +1 -1
- package/http.d.ts.map +1 -1
- package/http.js +24 -1
- package/http.js.map +1 -1
- package/http.mjs +24 -1
- package/http.mjs.map +1 -1
- package/instructions.d.mts +4 -1
- package/instructions.d.mts.map +1 -1
- package/instructions.d.ts +4 -1
- package/instructions.d.ts.map +1 -1
- package/instructions.js +24 -5
- package/instructions.js.map +1 -1
- package/instructions.mjs +21 -5
- package/instructions.mjs.map +1 -1
- package/local-docs-search.d.mts +28 -0
- package/local-docs-search.d.mts.map +1 -0
- package/local-docs-search.d.ts +28 -0
- package/local-docs-search.d.ts.map +1 -0
- package/local-docs-search.js +752 -0
- package/local-docs-search.js.map +1 -0
- package/local-docs-search.mjs +712 -0
- package/local-docs-search.mjs.map +1 -0
- package/methods.d.mts.map +1 -1
- package/methods.d.ts.map +1 -1
- package/methods.js +51 -117
- package/methods.js.map +1 -1
- package/methods.mjs +51 -117
- package/methods.mjs.map +1 -1
- package/options.d.mts +3 -0
- package/options.d.mts.map +1 -1
- package/options.d.ts +3 -0
- package/options.d.ts.map +1 -1
- package/options.js +19 -0
- package/options.js.map +1 -1
- package/options.mjs +19 -0
- package/options.mjs.map +1 -1
- package/package.json +14 -3
- package/server.d.mts +9 -1
- package/server.d.mts.map +1 -1
- package/server.d.ts +9 -1
- package/server.d.ts.map +1 -1
- package/server.js +12 -5
- package/server.js.map +1 -1
- package/server.mjs +12 -5
- package/server.mjs.map +1 -1
- package/src/code-tool-worker.ts +24 -27
- package/src/code-tool.ts +16 -16
- package/src/docs-search-tool.ts +46 -8
- package/src/http.ts +27 -1
- package/src/instructions.ts +28 -5
- package/src/local-docs-search.ts +856 -0
- package/src/methods.ts +51 -117
- package/src/options.ts +24 -0
- package/src/server.ts +21 -5
- package/src/stdio.ts +4 -1
- package/src/types.ts +2 -0
- package/stdio.d.mts.map +1 -1
- package/stdio.d.ts.map +1 -1
- package/stdio.js +4 -1
- package/stdio.js.map +1 -1
- package/stdio.mjs +4 -1
- package/stdio.mjs.map +1 -1
- package/types.d.mts +5 -0
- package/types.d.mts.map +1 -1
- package/types.d.ts +5 -0
- package/types.d.ts.map +1 -1
- package/types.js.map +1 -1
- package/types.mjs.map +1 -1
package/options.js
CHANGED
|
@@ -32,8 +32,22 @@ function parseCLIOptions() {
|
|
|
32
32
|
choices: ['stainless-sandbox', 'local'],
|
|
33
33
|
default: 'stainless-sandbox',
|
|
34
34
|
description: "Where to run code execution in code tool; 'stainless-sandbox' will execute code in Stainless-hosted sandboxes whereas 'local' will execute code locally on the MCP server machine.",
|
|
35
|
+
})
|
|
36
|
+
.option('custom-instructions-path', {
|
|
37
|
+
type: 'string',
|
|
38
|
+
description: 'Path to custom instructions for the MCP server',
|
|
35
39
|
})
|
|
36
40
|
.option('debug', { type: 'boolean', description: 'Enable debug logging' })
|
|
41
|
+
.option('docs-dir', {
|
|
42
|
+
type: 'string',
|
|
43
|
+
description: 'Path to a directory of local documentation files (markdown/JSON) to include in local docs search.',
|
|
44
|
+
})
|
|
45
|
+
.option('docs-search-mode', {
|
|
46
|
+
type: 'string',
|
|
47
|
+
choices: ['stainless-api', 'local'],
|
|
48
|
+
default: 'stainless-api',
|
|
49
|
+
description: "Where to search documentation; 'stainless-api' uses the Stainless-hosted search API whereas 'local' uses an in-memory search index built from embedded SDK method data and optional local docs files.",
|
|
50
|
+
})
|
|
37
51
|
.option('log-format', {
|
|
38
52
|
type: 'string',
|
|
39
53
|
choices: ['json', 'pretty'],
|
|
@@ -86,10 +100,13 @@ function parseCLIOptions() {
|
|
|
86
100
|
...(includeDocsTools !== undefined && { includeDocsTools }),
|
|
87
101
|
debug: !!argv.debug,
|
|
88
102
|
stainlessApiKey: argv.stainlessApiKey,
|
|
103
|
+
docsSearchMode: argv.docsSearchMode,
|
|
104
|
+
docsDir: argv.docsDir,
|
|
89
105
|
codeAllowHttpGets: argv.codeAllowHttpGets,
|
|
90
106
|
codeAllowedMethods: argv.codeAllowedMethods,
|
|
91
107
|
codeBlockedMethods: argv.codeBlockedMethods,
|
|
92
108
|
codeExecutionMode: argv.codeExecutionMode,
|
|
109
|
+
customInstructionsPath: argv.customInstructionsPath,
|
|
93
110
|
transport,
|
|
94
111
|
logFormat,
|
|
95
112
|
port: argv.port,
|
|
@@ -117,6 +134,8 @@ function parseQueryOptions(defaultOptions, query) {
|
|
|
117
134
|
...(codeTool !== undefined && { includeCodeTool: codeTool }),
|
|
118
135
|
...(docsTools !== undefined && { includeDocsTools: docsTools }),
|
|
119
136
|
codeExecutionMode: defaultOptions.codeExecutionMode,
|
|
137
|
+
docsSearchMode: defaultOptions.docsSearchMode,
|
|
138
|
+
docsDir: defaultOptions.docsDir,
|
|
120
139
|
};
|
|
121
140
|
}
|
|
122
141
|
//# sourceMappingURL=options.js.map
|
package/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["src/options.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["src/options.ts"],"names":[],"mappings":"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"}
|
package/options.mjs
CHANGED
|
@@ -25,8 +25,22 @@ export function parseCLIOptions() {
|
|
|
25
25
|
choices: ['stainless-sandbox', 'local'],
|
|
26
26
|
default: 'stainless-sandbox',
|
|
27
27
|
description: "Where to run code execution in code tool; 'stainless-sandbox' will execute code in Stainless-hosted sandboxes whereas 'local' will execute code locally on the MCP server machine.",
|
|
28
|
+
})
|
|
29
|
+
.option('custom-instructions-path', {
|
|
30
|
+
type: 'string',
|
|
31
|
+
description: 'Path to custom instructions for the MCP server',
|
|
28
32
|
})
|
|
29
33
|
.option('debug', { type: 'boolean', description: 'Enable debug logging' })
|
|
34
|
+
.option('docs-dir', {
|
|
35
|
+
type: 'string',
|
|
36
|
+
description: 'Path to a directory of local documentation files (markdown/JSON) to include in local docs search.',
|
|
37
|
+
})
|
|
38
|
+
.option('docs-search-mode', {
|
|
39
|
+
type: 'string',
|
|
40
|
+
choices: ['stainless-api', 'local'],
|
|
41
|
+
default: 'stainless-api',
|
|
42
|
+
description: "Where to search documentation; 'stainless-api' uses the Stainless-hosted search API whereas 'local' uses an in-memory search index built from embedded SDK method data and optional local docs files.",
|
|
43
|
+
})
|
|
30
44
|
.option('log-format', {
|
|
31
45
|
type: 'string',
|
|
32
46
|
choices: ['json', 'pretty'],
|
|
@@ -79,10 +93,13 @@ export function parseCLIOptions() {
|
|
|
79
93
|
...(includeDocsTools !== undefined && { includeDocsTools }),
|
|
80
94
|
debug: !!argv.debug,
|
|
81
95
|
stainlessApiKey: argv.stainlessApiKey,
|
|
96
|
+
docsSearchMode: argv.docsSearchMode,
|
|
97
|
+
docsDir: argv.docsDir,
|
|
82
98
|
codeAllowHttpGets: argv.codeAllowHttpGets,
|
|
83
99
|
codeAllowedMethods: argv.codeAllowedMethods,
|
|
84
100
|
codeBlockedMethods: argv.codeBlockedMethods,
|
|
85
101
|
codeExecutionMode: argv.codeExecutionMode,
|
|
102
|
+
customInstructionsPath: argv.customInstructionsPath,
|
|
86
103
|
transport,
|
|
87
104
|
logFormat,
|
|
88
105
|
port: argv.port,
|
|
@@ -110,6 +127,8 @@ export function parseQueryOptions(defaultOptions, query) {
|
|
|
110
127
|
...(codeTool !== undefined && { includeCodeTool: codeTool }),
|
|
111
128
|
...(docsTools !== undefined && { includeDocsTools: docsTools }),
|
|
112
129
|
codeExecutionMode: defaultOptions.codeExecutionMode,
|
|
130
|
+
docsSearchMode: defaultOptions.docsSearchMode,
|
|
131
|
+
docsDir: defaultOptions.docsDir,
|
|
113
132
|
};
|
|
114
133
|
}
|
|
115
134
|
//# sourceMappingURL=options.mjs.map
|
package/options.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.mjs","sourceRoot":"","sources":["src/options.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,MAAM,IAAI;OACZ,KAAK,MAAM,OAAO;OAClB,EAAE,OAAO,EAAE,MAAM,eAAe;OAChC,CAAC,MAAM,KAAK;OACZ,EAAE,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"options.mjs","sourceRoot":"","sources":["src/options.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@henrylabs/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "The official MCP Server for the Henry SDK API",
|
|
5
|
-
"author": "Henry SDK <
|
|
5
|
+
"author": "Henry SDK <support@henrylabs.ai>",
|
|
6
6
|
"types": "./index.d.ts",
|
|
7
7
|
"main": "./index.js",
|
|
8
8
|
"type": "commonjs",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"fix": "eslint --fix ."
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@henrylabs/sdk": "^1.
|
|
30
|
+
"@henrylabs/sdk": "^1.2.0",
|
|
31
31
|
"ajv": "^8.18.0",
|
|
32
32
|
"@cloudflare/cabidela": "^0.2.4",
|
|
33
33
|
"@hono/node-server": "^1.19.10",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"cors": "^2.8.5",
|
|
39
39
|
"express": "^5.1.0",
|
|
40
40
|
"fuse.js": "^7.1.0",
|
|
41
|
+
"minisearch": "^7.2.0",
|
|
41
42
|
"jq-web": "https://github.com/stainless-api/jq-web/releases/download/v0.8.8/jq-web.tar.gz",
|
|
42
43
|
"pino": "^10.3.1",
|
|
43
44
|
"pino-http": "^11.0.0",
|
|
@@ -151,6 +152,16 @@
|
|
|
151
152
|
"./instructions.mjs": {
|
|
152
153
|
"default": "./instructions.mjs"
|
|
153
154
|
},
|
|
155
|
+
"./local-docs-search": {
|
|
156
|
+
"import": "./local-docs-search.mjs",
|
|
157
|
+
"require": "./local-docs-search.js"
|
|
158
|
+
},
|
|
159
|
+
"./local-docs-search.js": {
|
|
160
|
+
"default": "./local-docs-search.js"
|
|
161
|
+
},
|
|
162
|
+
"./local-docs-search.mjs": {
|
|
163
|
+
"default": "./local-docs-search.mjs"
|
|
164
|
+
},
|
|
154
165
|
"./logger": {
|
|
155
166
|
"import": "./logger.mjs",
|
|
156
167
|
"require": "./logger.js"
|
package/server.d.mts
CHANGED
|
@@ -3,7 +3,10 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
3
3
|
import { ClientOptions } from '@henrylabs/sdk';
|
|
4
4
|
import { McpOptions } from "./options.mjs";
|
|
5
5
|
import { HandlerFunction, McpRequestContext, ToolCallResult, McpTool } from "./types.mjs";
|
|
6
|
-
export declare const newMcpServer: (stainlessApiKey
|
|
6
|
+
export declare const newMcpServer: ({ stainlessApiKey, customInstructionsPath, }: {
|
|
7
|
+
stainlessApiKey?: string | undefined;
|
|
8
|
+
customInstructionsPath?: string | undefined;
|
|
9
|
+
}) => Promise<McpServer>;
|
|
7
10
|
/**
|
|
8
11
|
* Initializes the provided MCP Server with the given tools and handlers.
|
|
9
12
|
* If not provided, the default client, tools and handlers will be used.
|
|
@@ -14,6 +17,11 @@ export declare function initMcpServer(params: {
|
|
|
14
17
|
mcpOptions?: McpOptions;
|
|
15
18
|
stainlessApiKey?: string | undefined;
|
|
16
19
|
upstreamClientEnvs?: Record<string, string> | undefined;
|
|
20
|
+
mcpSessionId?: string | undefined;
|
|
21
|
+
mcpClientInfo?: {
|
|
22
|
+
name: string;
|
|
23
|
+
version: string;
|
|
24
|
+
} | undefined;
|
|
17
25
|
}): Promise<void>;
|
|
18
26
|
/**
|
|
19
27
|
* Selects the tools to include in the MCP Server based on the provided options.
|
package/server.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.mts","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"OAEO,EAAE,MAAM,EAAE,MAAM,2CAA2C;OAC3D,EAAE,SAAS,EAAE,MAAM,yCAAyC;OAM5D,EAAE,aAAa,EAAE,MAAM,gBAAgB;
|
|
1
|
+
{"version":3,"file":"server.d.mts","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"OAEO,EAAE,MAAM,EAAE,MAAM,2CAA2C;OAC3D,EAAE,SAAS,EAAE,MAAM,yCAAyC;OAM5D,EAAE,aAAa,EAAE,MAAM,gBAAgB;OAOvC,EAAE,UAAU,EAAE;OAEd,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE;AAEtE,eAAO,MAAM,YAAY,GAAU,8CAGhC;IACD,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C,uBAUE,CAAC;AAEJ;;;GAGG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC/D,iBA0HA;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,EAAE,CAe3D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EACnC,OAAO,EACP,UAAU,EACV,IAAI,GACL,EAAE;IACD,OAAO,EAAE,eAAe,CAAC;IACzB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC3C,GAAG,OAAO,CAAC,cAAc,CAAC,CAE1B"}
|
package/server.d.ts
CHANGED
|
@@ -3,7 +3,10 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
3
3
|
import { ClientOptions } from '@henrylabs/sdk';
|
|
4
4
|
import { McpOptions } from "./options.js";
|
|
5
5
|
import { HandlerFunction, McpRequestContext, ToolCallResult, McpTool } from "./types.js";
|
|
6
|
-
export declare const newMcpServer: (stainlessApiKey
|
|
6
|
+
export declare const newMcpServer: ({ stainlessApiKey, customInstructionsPath, }: {
|
|
7
|
+
stainlessApiKey?: string | undefined;
|
|
8
|
+
customInstructionsPath?: string | undefined;
|
|
9
|
+
}) => Promise<McpServer>;
|
|
7
10
|
/**
|
|
8
11
|
* Initializes the provided MCP Server with the given tools and handlers.
|
|
9
12
|
* If not provided, the default client, tools and handlers will be used.
|
|
@@ -14,6 +17,11 @@ export declare function initMcpServer(params: {
|
|
|
14
17
|
mcpOptions?: McpOptions;
|
|
15
18
|
stainlessApiKey?: string | undefined;
|
|
16
19
|
upstreamClientEnvs?: Record<string, string> | undefined;
|
|
20
|
+
mcpSessionId?: string | undefined;
|
|
21
|
+
mcpClientInfo?: {
|
|
22
|
+
name: string;
|
|
23
|
+
version: string;
|
|
24
|
+
} | undefined;
|
|
17
25
|
}): Promise<void>;
|
|
18
26
|
/**
|
|
19
27
|
* Selects the tools to include in the MCP Server based on the provided options.
|
package/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"OAEO,EAAE,MAAM,EAAE,MAAM,2CAA2C;OAC3D,EAAE,SAAS,EAAE,MAAM,yCAAyC;OAM5D,EAAE,aAAa,EAAE,MAAM,gBAAgB;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"OAEO,EAAE,MAAM,EAAE,MAAM,2CAA2C;OAC3D,EAAE,SAAS,EAAE,MAAM,yCAAyC;OAM5D,EAAE,aAAa,EAAE,MAAM,gBAAgB;OAOvC,EAAE,UAAU,EAAE;OAEd,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE;AAEtE,eAAO,MAAM,YAAY,GAAU,8CAGhC;IACD,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C,uBAUE,CAAC;AAEJ;;;GAGG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC/D,iBA0HA;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,EAAE,CAe3D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EACnC,OAAO,EACP,UAAU,EACV,IAAI,GACL,EAAE;IACD,OAAO,EAAE,eAAe,CAAC;IACzB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC3C,GAAG,OAAO,CAAC,cAAc,CAAC,CAE1B"}
|
package/server.js
CHANGED
|
@@ -13,14 +13,15 @@ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
|
13
13
|
const sdk_1 = __importDefault(require("@henrylabs/sdk"));
|
|
14
14
|
const code_tool_1 = require("./code-tool.js");
|
|
15
15
|
const docs_search_tool_1 = __importDefault(require("./docs-search-tool.js"));
|
|
16
|
+
const docs_search_tool_2 = require("./docs-search-tool.js");
|
|
17
|
+
const local_docs_search_1 = require("./local-docs-search.js");
|
|
16
18
|
const instructions_1 = require("./instructions.js");
|
|
17
19
|
const methods_1 = require("./methods.js");
|
|
18
|
-
const
|
|
19
|
-
const newMcpServer = async (stainlessApiKey) => new mcp_js_1.McpServer({
|
|
20
|
+
const newMcpServer = async ({ stainlessApiKey, customInstructionsPath, }) => new mcp_js_1.McpServer({
|
|
20
21
|
name: 'henrylabs_sdk_api',
|
|
21
|
-
version: '1.
|
|
22
|
+
version: '1.2.0',
|
|
22
23
|
}, {
|
|
23
|
-
instructions: await (0, instructions_1.getInstructions)(stainlessApiKey),
|
|
24
|
+
instructions: await (0, instructions_1.getInstructions)({ stainlessApiKey, customInstructionsPath }),
|
|
24
25
|
capabilities: { tools: {}, logging: {} },
|
|
25
26
|
});
|
|
26
27
|
exports.newMcpServer = newMcpServer;
|
|
@@ -42,6 +43,11 @@ async function initMcpServer(params) {
|
|
|
42
43
|
warn: logAtLevel('warning'),
|
|
43
44
|
error: logAtLevel('error'),
|
|
44
45
|
};
|
|
46
|
+
if (params.mcpOptions?.docsSearchMode === 'local') {
|
|
47
|
+
const docsDir = params.mcpOptions?.docsDir;
|
|
48
|
+
const localSearch = await local_docs_search_1.LocalDocsSearch.create(docsDir ? { docsDir } : undefined);
|
|
49
|
+
(0, docs_search_tool_2.setLocalSearch)(localSearch);
|
|
50
|
+
}
|
|
45
51
|
let _client;
|
|
46
52
|
let _clientError;
|
|
47
53
|
let _logLevel;
|
|
@@ -51,7 +57,6 @@ async function initMcpServer(params) {
|
|
|
51
57
|
if (!_client) {
|
|
52
58
|
try {
|
|
53
59
|
_client = new sdk_1.default({
|
|
54
|
-
...{ environment: ((0, util_1.readEnv)('HENRY_SDK_ENVIRONMENT') || undefined) },
|
|
55
60
|
logger,
|
|
56
61
|
...params.clientOptions,
|
|
57
62
|
defaultHeaders: {
|
|
@@ -104,6 +109,8 @@ async function initMcpServer(params) {
|
|
|
104
109
|
client,
|
|
105
110
|
stainlessApiKey: params.stainlessApiKey ?? params.mcpOptions?.stainlessApiKey,
|
|
106
111
|
upstreamClientEnvs: params.upstreamClientEnvs,
|
|
112
|
+
mcpSessionId: params.mcpSessionId,
|
|
113
|
+
mcpClientInfo: params.mcpClientInfo,
|
|
107
114
|
},
|
|
108
115
|
args,
|
|
109
116
|
});
|
package/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"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"}
|
package/server.mjs
CHANGED
|
@@ -4,14 +4,15 @@ import { CallToolRequestSchema, ListToolsRequestSchema, SetLevelRequestSchema, }
|
|
|
4
4
|
import HenrySDK from '@henrylabs/sdk';
|
|
5
5
|
import { codeTool } from "./code-tool.mjs";
|
|
6
6
|
import docsSearchTool from "./docs-search-tool.mjs";
|
|
7
|
+
import { setLocalSearch } from "./docs-search-tool.mjs";
|
|
8
|
+
import { LocalDocsSearch } from "./local-docs-search.mjs";
|
|
7
9
|
import { getInstructions } from "./instructions.mjs";
|
|
8
10
|
import { blockedMethodsForCodeTool } from "./methods.mjs";
|
|
9
|
-
|
|
10
|
-
export const newMcpServer = async (stainlessApiKey) => new McpServer({
|
|
11
|
+
export const newMcpServer = async ({ stainlessApiKey, customInstructionsPath, }) => new McpServer({
|
|
11
12
|
name: 'henrylabs_sdk_api',
|
|
12
|
-
version: '1.
|
|
13
|
+
version: '1.2.0',
|
|
13
14
|
}, {
|
|
14
|
-
instructions: await getInstructions(stainlessApiKey),
|
|
15
|
+
instructions: await getInstructions({ stainlessApiKey, customInstructionsPath }),
|
|
15
16
|
capabilities: { tools: {}, logging: {} },
|
|
16
17
|
});
|
|
17
18
|
/**
|
|
@@ -32,6 +33,11 @@ export async function initMcpServer(params) {
|
|
|
32
33
|
warn: logAtLevel('warning'),
|
|
33
34
|
error: logAtLevel('error'),
|
|
34
35
|
};
|
|
36
|
+
if (params.mcpOptions?.docsSearchMode === 'local') {
|
|
37
|
+
const docsDir = params.mcpOptions?.docsDir;
|
|
38
|
+
const localSearch = await LocalDocsSearch.create(docsDir ? { docsDir } : undefined);
|
|
39
|
+
setLocalSearch(localSearch);
|
|
40
|
+
}
|
|
35
41
|
let _client;
|
|
36
42
|
let _clientError;
|
|
37
43
|
let _logLevel;
|
|
@@ -41,7 +47,6 @@ export async function initMcpServer(params) {
|
|
|
41
47
|
if (!_client) {
|
|
42
48
|
try {
|
|
43
49
|
_client = new HenrySDK({
|
|
44
|
-
...{ environment: (readEnv('HENRY_SDK_ENVIRONMENT') || undefined) },
|
|
45
50
|
logger,
|
|
46
51
|
...params.clientOptions,
|
|
47
52
|
defaultHeaders: {
|
|
@@ -94,6 +99,8 @@ export async function initMcpServer(params) {
|
|
|
94
99
|
client,
|
|
95
100
|
stainlessApiKey: params.stainlessApiKey ?? params.mcpOptions?.stainlessApiKey,
|
|
96
101
|
upstreamClientEnvs: params.upstreamClientEnvs,
|
|
102
|
+
mcpSessionId: params.mcpSessionId,
|
|
103
|
+
mcpClientInfo: params.mcpClientInfo,
|
|
97
104
|
},
|
|
98
105
|
args,
|
|
99
106
|
});
|
package/server.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.mjs","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAG/E,EAAE,SAAS,EAAE,MAAM,yCAAyC;OAC5D,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,oCAAoC;OAEpC,QAAQ,MAAM,gBAAgB;OAC9B,EAAE,QAAQ,EAAE;OACZ,cAAc;OACd,EAAE,eAAe,EAAE;
|
|
1
|
+
{"version":3,"file":"server.mjs","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"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"}
|
package/src/code-tool-worker.ts
CHANGED
|
@@ -7,6 +7,10 @@ import ts from 'typescript';
|
|
|
7
7
|
import { WorkerOutput } from './code-tool-types';
|
|
8
8
|
import { HenrySDK, ClientOptions } from '@henrylabs/sdk';
|
|
9
9
|
|
|
10
|
+
async function tseval(code: string) {
|
|
11
|
+
return import('data:application/typescript;charset=utf-8;base64,' + Buffer.from(code).toString('base64'));
|
|
12
|
+
}
|
|
13
|
+
|
|
10
14
|
function getRunFunctionSource(code: string): {
|
|
11
15
|
type: 'declaration' | 'expression';
|
|
12
16
|
client: string | undefined;
|
|
@@ -104,33 +108,22 @@ function getTSDiagnostics(code: string): string[] {
|
|
|
104
108
|
|
|
105
109
|
const fuse = new Fuse(
|
|
106
110
|
[
|
|
107
|
-
'client.products.
|
|
108
|
-
'client.products.
|
|
111
|
+
'client.products.details',
|
|
112
|
+
'client.products.pollDetails',
|
|
113
|
+
'client.products.pollSearch',
|
|
109
114
|
'client.products.search',
|
|
110
|
-
'client.
|
|
111
|
-
'client.
|
|
112
|
-
'client.
|
|
113
|
-
'client.
|
|
114
|
-
'client.cart.
|
|
115
|
-
'client.cart.
|
|
116
|
-
'client.cart.
|
|
117
|
-
'client.cart.
|
|
118
|
-
'client.cart.
|
|
115
|
+
'client.cart.create',
|
|
116
|
+
'client.cart.delete',
|
|
117
|
+
'client.cart.list',
|
|
118
|
+
'client.cart.item.add',
|
|
119
|
+
'client.cart.item.remove',
|
|
120
|
+
'client.cart.item.update',
|
|
121
|
+
'client.cart.checkout.details',
|
|
122
|
+
'client.cart.checkout.pollDetails',
|
|
123
|
+
'client.cart.checkout.pollPurchase',
|
|
124
|
+
'client.cart.checkout.purchase',
|
|
119
125
|
'client.orders.list',
|
|
120
|
-
'client.
|
|
121
|
-
'client.wallet.createCardCollection',
|
|
122
|
-
'client.merchants.checkStatus',
|
|
123
|
-
'client.merchants.listSupported',
|
|
124
|
-
'client.checkout.createSingleProductToken',
|
|
125
|
-
'client.checkout.session.confirmCheckout',
|
|
126
|
-
'client.checkout.session.createQuote',
|
|
127
|
-
'client.checkout.session.listProducts',
|
|
128
|
-
'client.checkout.session.retrieveShippingInfo',
|
|
129
|
-
'client.checkout.guest.addresses.create',
|
|
130
|
-
'client.checkout.guest.addresses.delete',
|
|
131
|
-
'client.checkout.guest.addresses.list',
|
|
132
|
-
'client.checkout.guest.addresses.setDefault',
|
|
133
|
-
'client.checkout.guest.addresses.update',
|
|
126
|
+
'client.merchants.list',
|
|
134
127
|
],
|
|
135
128
|
{ threshold: 1, shouldSort: true },
|
|
136
129
|
);
|
|
@@ -263,7 +256,9 @@ const fetch = async (req: Request): Promise<Response> => {
|
|
|
263
256
|
|
|
264
257
|
const log_lines: string[] = [];
|
|
265
258
|
const err_lines: string[] = [];
|
|
266
|
-
const
|
|
259
|
+
const originalConsole = globalThis.console;
|
|
260
|
+
globalThis.console = {
|
|
261
|
+
...originalConsole,
|
|
267
262
|
log: (...args: unknown[]) => {
|
|
268
263
|
log_lines.push(util.format(...args));
|
|
269
264
|
},
|
|
@@ -273,7 +268,7 @@ const fetch = async (req: Request): Promise<Response> => {
|
|
|
273
268
|
};
|
|
274
269
|
try {
|
|
275
270
|
let run_ = async (client: any) => {};
|
|
276
|
-
|
|
271
|
+
run_ = (await tseval(`${code}\nexport default run;`)).default;
|
|
277
272
|
const result = await run_(makeSdkProxy(client, { path: ['client'] }));
|
|
278
273
|
return Response.json({
|
|
279
274
|
is_error: false,
|
|
@@ -291,6 +286,8 @@ const fetch = async (req: Request): Promise<Response> => {
|
|
|
291
286
|
} satisfies WorkerOutput,
|
|
292
287
|
{ status: 400, statusText: 'Code execution error' },
|
|
293
288
|
);
|
|
289
|
+
} finally {
|
|
290
|
+
globalThis.console = originalConsole;
|
|
294
291
|
}
|
|
295
292
|
};
|
|
296
293
|
|
package/src/code-tool.ts
CHANGED
|
@@ -25,9 +25,14 @@ For example:
|
|
|
25
25
|
|
|
26
26
|
\`\`\`
|
|
27
27
|
async function run(client) {
|
|
28
|
-
const response = await client.products.search({
|
|
28
|
+
const response = await client.products.search({
|
|
29
|
+
imageUrl: 'https://static.nike.com/a/images/t_web_pdp_535_v2/f_auto/example.png',
|
|
30
|
+
searchType: 'image',
|
|
31
|
+
country: 'US',
|
|
32
|
+
limit: 10,
|
|
33
|
+
});
|
|
29
34
|
|
|
30
|
-
console.log(response.
|
|
35
|
+
console.log(response.refId);
|
|
31
36
|
}
|
|
32
37
|
\`\`\`
|
|
33
38
|
|
|
@@ -149,10 +154,7 @@ const remoteStainlessHandler = async ({
|
|
|
149
154
|
readEnv('HENRY_SDK_API_KEY') ?? client.apiKey,
|
|
150
155
|
'set HENRY_SDK_API_KEY environment variable or provide apiKey client option',
|
|
151
156
|
),
|
|
152
|
-
HENRY_SDK_BASE_URL:
|
|
153
|
-
readEnv('HENRY_SDK_BASE_URL') ?? readEnv('HENRY_SDK_ENVIRONMENT') ?
|
|
154
|
-
undefined
|
|
155
|
-
: client.baseURL ?? undefined,
|
|
157
|
+
HENRY_SDK_BASE_URL: readEnv('HENRY_SDK_BASE_URL') ?? client.baseURL ?? undefined,
|
|
156
158
|
};
|
|
157
159
|
// Merge any upstream client envs from the request header, with upstream values taking precedence.
|
|
158
160
|
const mergedClientEnvs = { ...localClientEnvs, ...reqContext.upstreamClientEnvs };
|
|
@@ -169,7 +171,7 @@ const remoteStainlessHandler = async ({
|
|
|
169
171
|
project_name: 'henry-sdk',
|
|
170
172
|
code,
|
|
171
173
|
intent,
|
|
172
|
-
client_opts: {
|
|
174
|
+
client_opts: {},
|
|
173
175
|
} satisfies WorkerInput),
|
|
174
176
|
});
|
|
175
177
|
|
|
@@ -288,15 +290,13 @@ const localDenoHandler = async ({
|
|
|
288
290
|
|
|
289
291
|
// Strip null/undefined values so that the worker SDK client can fall back to
|
|
290
292
|
// reading from environment variables (including any upstreamClientEnvs).
|
|
291
|
-
const opts
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
}).filter(([_, v]) => v != null),
|
|
299
|
-
) as ClientOptions;
|
|
293
|
+
const opts = {
|
|
294
|
+
...(client.baseURL != null ? { baseURL: client.baseURL } : undefined),
|
|
295
|
+
...(client.apiKey != null ? { apiKey: client.apiKey } : undefined),
|
|
296
|
+
defaultHeaders: {
|
|
297
|
+
'X-Stainless-MCP': 'true',
|
|
298
|
+
},
|
|
299
|
+
} satisfies Partial<ClientOptions> as ClientOptions;
|
|
300
300
|
|
|
301
301
|
const req = worker.request(
|
|
302
302
|
'http://localhost',
|
package/src/docs-search-tool.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
4
4
|
import { Metadata, McpRequestContext, asTextContentResult } from './types';
|
|
5
5
|
import { getLogger } from './logger';
|
|
6
|
+
import type { LocalDocsSearch } from './local-docs-search';
|
|
6
7
|
|
|
7
8
|
export const metadata: Metadata = {
|
|
8
9
|
resource: 'all',
|
|
@@ -43,13 +44,30 @@ export const tool: Tool = {
|
|
|
43
44
|
const docsSearchURL =
|
|
44
45
|
process.env['DOCS_SEARCH_URL'] || 'https://api.stainless.com/api/projects/henry-sdk/docs/search';
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
let _localSearch: LocalDocsSearch | undefined;
|
|
48
|
+
|
|
49
|
+
export function setLocalSearch(search: LocalDocsSearch): void {
|
|
50
|
+
_localSearch = search;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async function searchLocal(args: Record<string, unknown>): Promise<unknown> {
|
|
54
|
+
if (!_localSearch) {
|
|
55
|
+
throw new Error('Local search not initialized');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const query = (args['query'] as string) ?? '';
|
|
59
|
+
const language = (args['language'] as string) ?? 'typescript';
|
|
60
|
+
const detail = (args['detail'] as string) ?? 'default';
|
|
61
|
+
|
|
62
|
+
return _localSearch.search({
|
|
63
|
+
query,
|
|
64
|
+
language,
|
|
65
|
+
detail,
|
|
66
|
+
maxResults: 5,
|
|
67
|
+
}).results;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
async function searchRemote(args: Record<string, unknown>, reqContext: McpRequestContext): Promise<unknown> {
|
|
53
71
|
const body = args as any;
|
|
54
72
|
const query = new URLSearchParams(body).toString();
|
|
55
73
|
|
|
@@ -57,6 +75,10 @@ export const handler = async ({
|
|
|
57
75
|
const result = await fetch(`${docsSearchURL}?${query}`, {
|
|
58
76
|
headers: {
|
|
59
77
|
...(reqContext.stainlessApiKey && { Authorization: reqContext.stainlessApiKey }),
|
|
78
|
+
...(reqContext.mcpSessionId && { 'x-stainless-mcp-session-id': reqContext.mcpSessionId }),
|
|
79
|
+
...(reqContext.mcpClientInfo && {
|
|
80
|
+
'x-stainless-mcp-client-info': JSON.stringify(reqContext.mcpClientInfo),
|
|
81
|
+
}),
|
|
60
82
|
},
|
|
61
83
|
});
|
|
62
84
|
|
|
@@ -94,7 +116,23 @@ export const handler = async ({
|
|
|
94
116
|
},
|
|
95
117
|
'Got docs search result',
|
|
96
118
|
);
|
|
97
|
-
return
|
|
119
|
+
return resultBody;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export const handler = async ({
|
|
123
|
+
reqContext,
|
|
124
|
+
args,
|
|
125
|
+
}: {
|
|
126
|
+
reqContext: McpRequestContext;
|
|
127
|
+
args: Record<string, unknown> | undefined;
|
|
128
|
+
}) => {
|
|
129
|
+
const body = args ?? {};
|
|
130
|
+
|
|
131
|
+
if (_localSearch) {
|
|
132
|
+
return asTextContentResult(await searchLocal(body));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return asTextContentResult(await searchRemote(body, reqContext));
|
|
98
136
|
};
|
|
99
137
|
|
|
100
138
|
export default { metadata, tool, handler };
|