Skip to content

Commit 59b74e0

Browse files
committed
rename and fix imports
1 parent 89f36e4 commit 59b74e0

File tree

6 files changed

+32
-10
lines changed

6 files changed

+32
-10
lines changed

examples/add_server_tool.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
import { ChatOpenAI } from '@langchain/openai'
99
import { config } from 'dotenv'
1010
import { MCPAgent, MCPClient } from '../index.js'
11-
11+
import { LangChainAdapter } from '../src/adapters/langchain_adapter.js'
12+
import { ServerManager } from '../src/managers/server_manager.js'
13+
import { AddMCPServerFromConfigTool } from '../src/managers/tools/add_server_from_config.js'
1214
// Load environment variables from .env file
1315
config()
1416

@@ -19,13 +21,17 @@ async function main() {
1921
// The LLM to power the agent
2022
const llm = new ChatOpenAI({ model: 'gpt-4o', temperature: 0 })
2123

24+
const serverManager = new ServerManager(client, new LangChainAdapter())
25+
serverManager.setManagementTools([new AddMCPServerFromConfigTool(serverManager)])
26+
2227
// Create the agent, enabling the ServerManager
2328
const agent = new MCPAgent({
2429
llm,
2530
client,
2631
maxSteps: 30,
27-
useServerManager: true,
2832
autoInitialize: true,
33+
useServerManager: true,
34+
serverManagerFactory: () => serverManager,
2935
})
3036

3137
// Define the server configuration that the agent will be asked to add.

index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ import { MCPSession } from './src/session.js'
1111

1212
export { BaseAdapter, LangChainAdapter } from './src/adapters/index.js'
1313
export { ServerManager } from './src/managers/server_manager.js'
14+
export * from './src/managers/tools/index.js'
1415

1516
export { BaseConnector, HttpConnector, loadConfigFile, Logger, logger, MCPAgent, MCPClient, MCPSession, StdioConnector, WebSocketConnector }

src/agents/mcp_agent.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export class MCPAgent {
6666
useServerManager?: boolean
6767
verbose?: boolean
6868
adapter?: LangChainAdapter
69+
serverManagerFactory?: (client: MCPClient) => ServerManager
6970
}) {
7071
this.llm = options.llm
7172

@@ -91,7 +92,7 @@ export class MCPAgent {
9192
throw new Error('\'client\' must be provided when \'useServerManager\' is true.')
9293
}
9394
this.adapter = options.adapter ?? new LangChainAdapter(this.disallowedTools)
94-
this.serverManager = new ServerManager(this.client, this.adapter)
95+
this.serverManager = options.serverManagerFactory?.(this.client) ?? new ServerManager(this.client, this.adapter)
9596
}
9697
// Let consumers swap allowed tools dynamically
9798
else {

src/managers/server_manager.ts

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type { MCPSession } from '../session.js'
66
import { isEqual } from 'lodash-es'
77
import { logger } from '../logging.js'
88
import { 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'
1010
import { ConnectMCPServerTool } from './tools/connect_mcp_server.js'
1111
import { ListMCPServersTool } from './tools/list_mcp_servers.js'
1212
import { 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),

src/managers/tools/add_server.ts renamed to src/managers/tools/add_server_from_config.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import { StructuredTool } from 'langchain/tools'
44
import { z } from 'zod'
55
import { logger } from '../../logging.js'
66

7-
export class AddMCPServerTool extends StructuredTool {
8-
name = 'add_mcp_server'
7+
export class AddMCPServerFromConfigTool extends StructuredTool {
8+
name = 'add_mcp_server_from_config'
99
description
10-
= 'Adds a new MCP server to the client and connects to it, making its tools available.'
10+
= 'Adds a new MCP server to the client from a configuration object and connects to it, making its tools available.'
1111

1212
schema = z.object({
1313
serverName: z.string().describe('The name for the new MCP server.'),

src/managers/tools/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export * from './acquire_active_mcp_server.js'
2+
export * from './add_server_from_config.js'
23
export * from './connect_mcp_server.js'
34
export * from './list_mcp_servers.js'
45
export * from './release_mcp_server_connection.js'

0 commit comments

Comments
 (0)