@@ -6,7 +6,7 @@ import type { MCPSession } from '../session.js'
66import { isEqual } from 'lodash-es'
77import { logger } from '../logging.js'
88import { AcquireActiveMCPServerTool } from './tools/acquire_active_mcp_server.js'
9- import { AddMCPServerTool } from './tools/add_server .js'
9+ import { AddMCPServerFromConfigTool } from './tools/add_server_from_config .js'
1010import { ConnectMCPServerTool } from './tools/connect_mcp_server.js'
1111import { ListMCPServersTool } from './tools/list_mcp_servers.js'
1212import { ReleaseMCPServerConnectionTool } from './tools/release_mcp_server_connection.js'
@@ -18,10 +18,23 @@ export class ServerManager {
1818 public readonly client : MCPClient
1919 public readonly adapter : LangChainAdapter
2020 public activeServer : string | null = null
21+ private overrideManagementTools ?: StructuredToolInterface [ ]
2122
22- constructor ( client : MCPClient , adapter : LangChainAdapter ) {
23+ constructor (
24+ client : MCPClient ,
25+ adapter : LangChainAdapter ,
26+ managementTools ?: StructuredToolInterface [ ] ,
27+ ) {
2328 this . client = client
2429 this . adapter = adapter
30+ this . overrideManagementTools = managementTools
31+ }
32+
33+ public setManagementTools ( tools : StructuredToolInterface [ ] ) : void {
34+ this . overrideManagementTools = tools
35+ logger . info (
36+ `Overriding default management tools with a new set of ${ tools . length } tools.` ,
37+ )
2538 }
2639
2740 public logState ( context : string ) : void {
@@ -109,8 +122,8 @@ export class ServerManager {
109122 this . logState ( 'Providing tools to agent' )
110123 }
111124
112- const managementTools = [
113- new AddMCPServerTool ( this ) ,
125+ const managementTools = this . overrideManagementTools ?? [
126+ new AddMCPServerFromConfigTool ( this ) ,
114127 new ListMCPServersTool ( this ) ,
115128 new ConnectMCPServerTool ( this ) ,
116129 new AcquireActiveMCPServerTool ( this ) ,
0 commit comments