@nqminds/mcp-client 1.0.33 → 1.0.34
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-helpers.d.ts","sourceRoot":"","sources":["../src/api-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,0BAA0B,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CACjD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,sBAAsB,IACnD,SAAS,OAAO,
|
|
1
|
+
{"version":3,"file":"api-helpers.d.ts","sourceRoot":"","sources":["../src/api-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,0BAA0B,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CACjD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,sBAAsB,IACnD,SAAS,OAAO,uBA0H/B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,KACrB,SAAS,OAAO,uBAW/B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,kBAKtC"}
|
package/dist/api-helpers.js
CHANGED
|
@@ -9,9 +9,10 @@ const clients = new Map();
|
|
|
9
9
|
*/
|
|
10
10
|
export function createMCPChatHandler(config) {
|
|
11
11
|
return async (request) => {
|
|
12
|
-
const { message, context, sessionId = "default", bypassSystemPrompt = false } = await request.json();
|
|
12
|
+
const { message, context, sessionId = "default", bypassSystemPrompt = false, systemPromptName = "system-prompt" } = await request.json();
|
|
13
13
|
// Get or create client for this session
|
|
14
|
-
|
|
14
|
+
const cacheKey = `${sessionId}:${systemPromptName}`;
|
|
15
|
+
let client = clients.get(cacheKey);
|
|
15
16
|
if (!client) {
|
|
16
17
|
client = new MCPClientOpenAI({
|
|
17
18
|
openaiApiKey: config.openaiApiKey,
|
|
@@ -20,9 +21,11 @@ export function createMCPChatHandler(config) {
|
|
|
20
21
|
logDir: config.logDir || process.env.MCP_LOG_DIR,
|
|
21
22
|
enableCodeInterpreter: config.enableCodeInterpreter,
|
|
22
23
|
codeInterpreterMemoryLimit: config.codeInterpreterMemoryLimit,
|
|
24
|
+
systemPromptName,
|
|
25
|
+
systemPromptArgs: sessionId !== "default" ? { company_number: sessionId } : {},
|
|
23
26
|
});
|
|
24
27
|
await client.connect();
|
|
25
|
-
clients.set(
|
|
28
|
+
clients.set(cacheKey, client);
|
|
26
29
|
}
|
|
27
30
|
// Create an AbortController to handle client disconnection
|
|
28
31
|
const abortController = new AbortController();
|
|
@@ -118,8 +121,9 @@ export function createMCPChatHandler(config) {
|
|
|
118
121
|
*/
|
|
119
122
|
export function createMCPClearHandler() {
|
|
120
123
|
return async (request) => {
|
|
121
|
-
const { sessionId = "default" } = await request.json();
|
|
122
|
-
const
|
|
124
|
+
const { sessionId = "default", systemPromptName = "system-prompt" } = await request.json();
|
|
125
|
+
const cacheKey = `${sessionId}:${systemPromptName}`;
|
|
126
|
+
const client = clients.get(cacheKey);
|
|
123
127
|
if (client) {
|
|
124
128
|
client.clearHistory();
|
|
125
129
|
}
|
package/dist/openai-client.d.ts
CHANGED
|
@@ -57,6 +57,17 @@ export interface MCPClientConfig {
|
|
|
57
57
|
* Omit to use OpenAI's default (1 GB).
|
|
58
58
|
*/
|
|
59
59
|
codeInterpreterMemoryLimit?: "1g" | "2g" | "4g";
|
|
60
|
+
/**
|
|
61
|
+
* Name of the MCP prompt to use as the system prompt.
|
|
62
|
+
* Defaults to "system-prompt".
|
|
63
|
+
*/
|
|
64
|
+
systemPromptName?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Optional arguments to pass when fetching the system prompt from the MCP server.
|
|
67
|
+
* Required when the prompt has a non-empty argsSchema (e.g. company_financial_synopsis needs company_number).
|
|
68
|
+
* Defaults to {} (no arguments).
|
|
69
|
+
*/
|
|
70
|
+
systemPromptArgs?: Record<string, string>;
|
|
60
71
|
}
|
|
61
72
|
interface UsageStats {
|
|
62
73
|
inputTokens: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-client.d.ts","sourceRoot":"","sources":["../src/openai-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAsEH,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;;OAKG;IACH,0BAA0B,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-client.d.ts","sourceRoot":"","sources":["../src/openai-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAsEH,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;;OAKG;IACH,0BAA0B,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAEhD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAID,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB;AAiBD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAuB;IAExC;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAuB;IAE3C;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAA2B;IAEtD;;;OAGG;IACH,OAAO,CAAC,UAAU,CAGhB;IAEF;;OAEG;IACH,OAAO,CAAC,eAAe,CAAK;IAE5B;;OAEG;IACH,OAAO,CAAC,SAAS,CAOf;IAEF;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAKf;IAEF,OAAO,CAAC,MAAM,CAA0L;IACxM,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,eAAe;IA2C7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,YAAY,IAAI,IAAI;IAmBpB,QAAQ,IAAI,UAAU;IAItB;;;OAGG;YACW,kBAAkB;IA8BhC;;;OAGG;IACH,OAAO,CAAC,UAAU;IAalB;;;OAGG;YACW,gBAAgB;IAuB9B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY;IAmCpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA8EzB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,kBAAkB;IAQ1B;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IA2CzB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAsC9B;;OAEG;YACW,kBAAkB;IA4DhC;;;OAGG;YACW,mBAAmB;IAoBjC;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAatC;;OAEG;YACW,UAAU;IAuBxB;;OAEG;YACW,cAAc;IAqC5B;;OAEG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACtC,WAAW,CAAC,EAAE,WAAW,EACzB,kBAAkB,UAAQ,GACzB,OAAO,CAAC,MAAM,CAAC;IA2RlB;;OAEG;YACW,eAAe;CAgI9B"}
|
package/dist/openai-client.js
CHANGED
|
@@ -140,6 +140,8 @@ export class MCPClientOpenAI {
|
|
|
140
140
|
logDir: config.logDir ?? process.env.MCP_LOG_DIR ?? path.resolve(process.cwd(), "logs"),
|
|
141
141
|
enableCodeInterpreter: config.enableCodeInterpreter ?? false,
|
|
142
142
|
codeInterpreterMemoryLimit: config.codeInterpreterMemoryLimit,
|
|
143
|
+
systemPromptName: config.systemPromptName ?? "system-prompt",
|
|
144
|
+
systemPromptArgs: config.systemPromptArgs ?? {},
|
|
143
145
|
};
|
|
144
146
|
this.logger = new McpLogger(this.config.logDir);
|
|
145
147
|
this.openai = new OpenAI({
|
|
@@ -198,7 +200,11 @@ export class MCPClientOpenAI {
|
|
|
198
200
|
try {
|
|
199
201
|
// SDK typing may not expose getPrompt.
|
|
200
202
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
201
|
-
const
|
|
203
|
+
const promptArgs = this.config.systemPromptArgs;
|
|
204
|
+
const result = await this.client.getPrompt({
|
|
205
|
+
name: this.config.systemPromptName,
|
|
206
|
+
...(Object.keys(promptArgs).length > 0 && { arguments: promptArgs }),
|
|
207
|
+
});
|
|
202
208
|
const parts = [];
|
|
203
209
|
for (const msg of result.messages ?? []) {
|
|
204
210
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|