@@ -7,25 +7,22 @@ import {
7
7
} from "../tool.js" ;
8
8
import { CallToolResult } from "@modelcontextprotocol/sdk/types.js" ;
9
9
import { Server } from "../../server.js" ;
10
- import { Session } from "../../common/session.js" ;
11
- import { UserConfig } from "../../common/config.js" ;
12
- import { Telemetry } from "../../telemetry/telemetry.js" ;
13
10
import { packageInfo } from "../../common/packageInfo.js" ;
14
11
15
12
export abstract class AssistantToolBase extends ToolBase {
16
13
protected server ?: Server ;
17
14
public category : ToolCategory = "assistant" ;
18
15
protected baseUrl : URL ;
19
- protected requiredHeaders : Record < string , string > ;
16
+ protected requiredHeaders : Headers ;
20
17
21
18
constructor ( { session, config, telemetry, elicitation } : ToolConstructorParams ) {
22
19
super ( { session, config, telemetry, elicitation } ) ;
23
20
this . baseUrl = new URL ( config . assistantBaseUrl ) ;
24
21
const serverVersion = packageInfo . version ;
25
- this . requiredHeaders = {
22
+ this . requiredHeaders = new Headers ( {
26
23
"x-request-origin" : "mongodb-mcp-server" ,
27
24
"user-agent" : serverVersion ? `mongodb-mcp-server/v${ serverVersion } ` : "mongodb-mcp-server" ,
28
- } ;
25
+ } ) ;
29
26
}
30
27
31
28
public register ( server : Server ) : boolean {
@@ -39,10 +36,16 @@ export abstract class AssistantToolBase extends ToolBase {
39
36
return { } ;
40
37
}
41
38
42
- protected handleError (
43
- error : unknown ,
44
- args : ToolArgs < typeof this . argsShape >
45
- ) : Promise < CallToolResult > | CallToolResult {
46
- return super . handleError ( error , args ) ;
39
+ protected async callAssistantApi ( args : { method : "GET" | "POST" ; endpoint : string ; body ?: unknown } ) {
40
+ const endpoint = new URL ( args . endpoint , this . baseUrl ) ;
41
+ const headers = new Headers ( this . requiredHeaders ) ;
42
+ if ( args . method === "POST" ) {
43
+ headers . set ( "Content-Type" , "application/json" ) ;
44
+ }
45
+ return await fetch ( endpoint , {
46
+ method : args . method ,
47
+ headers,
48
+ body : JSON . stringify ( args . body ) ,
49
+ } ) ;
47
50
}
48
51
}
0 commit comments