mcp-use 0.1.0 → 0.1.1
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/dist/examples/add_server_tool.js +19 -5
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/src/agents/mcp_agent.d.ts +13 -1
- package/dist/src/agents/mcp_agent.d.ts.map +1 -1
- package/dist/src/agents/mcp_agent.js +35 -8
- package/dist/src/client.d.ts +2 -0
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +6 -0
- package/dist/src/managers/server_manager.d.ts +3 -1
- package/dist/src/managers/server_manager.d.ts.map +1 -1
- package/dist/src/managers/server_manager.js +10 -4
- package/dist/src/managers/tools/{add_server.d.ts → add_server_from_config.d.ts} +2 -2
- package/dist/src/managers/tools/add_server_from_config.d.ts.map +1 -0
- package/dist/src/managers/tools/{add_server.js → add_server_from_config.js} +3 -3
- package/dist/src/managers/tools/index.d.ts +1 -0
- package/dist/src/managers/tools/index.d.ts.map +1 -1
- package/dist/src/managers/tools/index.js +1 -0
- package/package.json +1 -1
- package/dist/src/managers/tools/add_server.d.ts.map +0 -1
@@ -9,6 +9,7 @@ import { config } from 'dotenv';
|
|
9
9
|
import { MCPAgent, MCPClient } from '../index.js';
|
10
10
|
import { LangChainAdapter } from '../src/adapters/langchain_adapter.js';
|
11
11
|
import { ServerManager } from '../src/managers/server_manager.js';
|
12
|
+
import { AddMCPServerFromConfigTool } from '../src/managers/tools/add_server_from_config.js';
|
12
13
|
// Load environment variables from .env file
|
13
14
|
config();
|
14
15
|
async function main() {
|
@@ -16,19 +17,21 @@ async function main() {
|
|
16
17
|
const client = new MCPClient();
|
17
18
|
// The LLM to power the agent
|
18
19
|
const llm = new ChatOpenAI({ model: 'gpt-4o', temperature: 0 });
|
20
|
+
const serverManager = new ServerManager(client, new LangChainAdapter());
|
21
|
+
serverManager.setManagementTools([new AddMCPServerFromConfigTool(serverManager)]);
|
19
22
|
// Create the agent, enabling the ServerManager
|
20
23
|
const agent = new MCPAgent({
|
21
24
|
llm,
|
22
25
|
client,
|
23
26
|
maxSteps: 30,
|
24
|
-
useServerManager: true,
|
25
|
-
serverManagerFactory: client => new ServerManager(client, new LangChainAdapter()),
|
26
27
|
autoInitialize: true,
|
28
|
+
useServerManager: true,
|
29
|
+
serverManagerFactory: () => serverManager,
|
27
30
|
});
|
28
31
|
// Define the server configuration that the agent will be asked to add.
|
29
32
|
const serverConfigA = {
|
30
33
|
command: 'npx',
|
31
|
-
args: ['@playwright/mcp@latest'],
|
34
|
+
args: ['@playwright/mcp@latest', '--headless'],
|
32
35
|
env: {
|
33
36
|
DISPLAY: ':1',
|
34
37
|
},
|
@@ -54,8 +57,19 @@ async function main() {
|
|
54
57
|
\`\`\`
|
55
58
|
and give me a house in the location of the company mcp-use.
|
56
59
|
`;
|
57
|
-
// Run the agent.
|
58
|
-
const
|
60
|
+
// Run the agent. We call `stream()` to get the async generator.
|
61
|
+
const stepIterator = agent.stream(query);
|
62
|
+
let result;
|
63
|
+
while (true) {
|
64
|
+
const { done, value } = await stepIterator.next();
|
65
|
+
if (done) {
|
66
|
+
result = value;
|
67
|
+
break;
|
68
|
+
}
|
69
|
+
// You can inspect the intermediate steps here.
|
70
|
+
console.log('--- Agent Step ---');
|
71
|
+
console.dir(value, { depth: 4 });
|
72
|
+
}
|
59
73
|
console.log(`\n✅ Final Result:\n${result}`);
|
60
74
|
// Clean up the session created by the agent
|
61
75
|
await client.closeAllSessions();
|
package/dist/index.d.ts
CHANGED
@@ -9,5 +9,6 @@ import { Logger, logger } from './src/logging.js';
|
|
9
9
|
import { MCPSession } from './src/session.js';
|
10
10
|
export { BaseAdapter, LangChainAdapter } from './src/adapters/index.js';
|
11
11
|
export { ServerManager } from './src/managers/server_manager.js';
|
12
|
+
export * from './src/managers/tools/index.js';
|
12
13
|
export { BaseConnector, HttpConnector, loadConfigFile, Logger, logger, MCPAgent, MCPClient, MCPSession, StdioConnector, WebSocketConnector };
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAChE,cAAc,+BAA+B,CAAA;AAE7C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAA"}
|
package/dist/index.js
CHANGED
@@ -9,4 +9,5 @@ import { Logger, logger } from './src/logging.js';
|
|
9
9
|
import { MCPSession } from './src/session.js';
|
10
10
|
export { BaseAdapter, LangChainAdapter } from './src/adapters/index.js';
|
11
11
|
export { ServerManager } from './src/managers/server_manager.js';
|
12
|
+
export * from './src/managers/tools/index.js';
|
12
13
|
export { BaseConnector, HttpConnector, loadConfigFile, Logger, logger, MCPAgent, MCPClient, MCPSession, StdioConnector, WebSocketConnector };
|
@@ -1,10 +1,12 @@
|
|
1
1
|
import type { BaseLanguageModelInterface } from '@langchain/core/language_models/base';
|
2
2
|
import type { BaseMessage } from '@langchain/core/messages';
|
3
|
+
import type { StructuredToolInterface } from '@langchain/core/tools';
|
4
|
+
import type { AgentStep } from 'langchain/agents';
|
3
5
|
import type { MCPClient } from '../client.js';
|
4
6
|
import type { BaseConnector } from '../connectors/base.js';
|
5
|
-
import type { ServerManager } from '../managers/server_manager.js';
|
6
7
|
import { SystemMessage } from '@langchain/core/messages';
|
7
8
|
import { LangChainAdapter } from '../adapters/langchain_adapter.js';
|
9
|
+
import { ServerManager } from '../managers/server_manager.js';
|
8
10
|
export declare class MCPAgent {
|
9
11
|
private llm;
|
10
12
|
private client?;
|
@@ -13,6 +15,7 @@ export declare class MCPAgent {
|
|
13
15
|
private autoInitialize;
|
14
16
|
private memoryEnabled;
|
15
17
|
private disallowedTools;
|
18
|
+
private additionalTools;
|
16
19
|
private useServerManager;
|
17
20
|
private verbose;
|
18
21
|
private systemPrompt?;
|
@@ -37,6 +40,7 @@ export declare class MCPAgent {
|
|
37
40
|
systemPromptTemplate?: string | null;
|
38
41
|
additionalInstructions?: string | null;
|
39
42
|
disallowedTools?: string[];
|
43
|
+
additionalTools?: StructuredToolInterface[];
|
40
44
|
useServerManager?: boolean;
|
41
45
|
verbose?: boolean;
|
42
46
|
adapter?: LangChainAdapter;
|
@@ -52,7 +56,15 @@ export declare class MCPAgent {
|
|
52
56
|
setSystemMessage(message: string): void;
|
53
57
|
setDisallowedTools(disallowedTools: string[]): void;
|
54
58
|
getDisallowedTools(): string[];
|
59
|
+
private _consumeAndReturn;
|
60
|
+
/**
|
61
|
+
* Runs the agent and returns a promise for the final result.
|
62
|
+
*/
|
55
63
|
run(query: string, maxSteps?: number, manageConnector?: boolean, externalHistory?: BaseMessage[]): Promise<string>;
|
64
|
+
/**
|
65
|
+
* Runs the agent and yields intermediate steps as an async generator.
|
66
|
+
*/
|
67
|
+
stream(query: string, maxSteps?: number, manageConnector?: boolean, externalHistory?: BaseMessage[]): AsyncGenerator<AgentStep, string, void>;
|
56
68
|
close(): Promise<void>;
|
57
69
|
}
|
58
70
|
//# sourceMappingURL=mcp_agent.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mcp_agent.d.ts","sourceRoot":"","sources":["../../../src/agents/mcp_agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAqB,MAAM,sCAAsC,CAAA;AACzG,OAAO,KAAK,EACV,WAAW,EACZ,MAAM,0BAA0B,CAAA;
|
1
|
+
{"version":3,"file":"mcp_agent.d.ts","sourceRoot":"","sources":["../../../src/agents/mcp_agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAqB,MAAM,sCAAsC,CAAA;AACzG,OAAO,KAAK,EACV,WAAW,EACZ,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,uBAAuB,EAAiB,MAAM,uBAAuB,CAAA;AACnF,OAAO,KAAK,EAAe,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,EAGL,aAAa,EACd,MAAM,0BAA0B,CAAA;AAUjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAI7D,qBAAa,QAAQ;IACnB,OAAO,CAAC,GAAG,CAA4B;IACvC,OAAO,CAAC,MAAM,CAAC,CAAW;IAC1B,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,4BAA4B,CAAC,CAAe;IACpD,OAAO,CAAC,sBAAsB,CAAC,CAAe;IAE9C,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,mBAAmB,CAAoB;IAC/C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,aAAa,CAA6B;gBAEtC,OAAO,EAAE;QACnB,GAAG,EAAE,0BAA0B,CAAA;QAC/B,MAAM,CAAC,EAAE,SAAS,CAAA;QAClB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAA;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,cAAc,CAAC,EAAE,OAAO,CAAA;QACxB,aAAa,CAAC,EAAE,OAAO,CAAA;QACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QAC5B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACpC,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACtC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;QAC1B,eAAe,CAAC,EAAE,uBAAuB,EAAE,CAAA;QAC3C,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,OAAO,CAAC,EAAE,gBAAgB,CAAA;QAC1B,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,aAAa,CAAA;KAC5D;IAiCY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAiE1B,4BAA4B;IAuB1C,OAAO,CAAC,WAAW;IAyBZ,sBAAsB,IAAI,WAAW,EAAE;IAIvC,wBAAwB,IAAI,IAAI;IAIvC,OAAO,CAAC,YAAY;IAKb,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAIxC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAavC,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI;IAQnD,kBAAkB,IAAI,MAAM,EAAE;YAIvB,iBAAiB;IAc/B;;OAEG;IACU,GAAG,CACd,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,OAAO,EACzB,eAAe,CAAC,EAAE,WAAW,EAAE,GAC9B,OAAO,CAAC,MAAM,CAAC;IAUlB;;OAEG;IACW,MAAM,CAClB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,eAAe,UAAO,EACtB,eAAe,CAAC,EAAE,WAAW,EAAE,GAC9B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;IA2J7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAyBpC"}
|
@@ -4,6 +4,7 @@ import { ChatPromptTemplate, MessagesPlaceholder, } from '@langchain/core/prompt
|
|
4
4
|
import { AgentExecutor, createToolCallingAgent, } from 'langchain/agents';
|
5
5
|
import { LangChainAdapter } from '../adapters/langchain_adapter.js';
|
6
6
|
import { logger } from '../logging.js';
|
7
|
+
import { ServerManager } from '../managers/server_manager.js';
|
7
8
|
import { createSystemMessage } from './prompts/system_prompt_builder.js';
|
8
9
|
import { DEFAULT_SYSTEM_PROMPT_TEMPLATE, SERVER_MANAGER_SYSTEM_PROMPT_TEMPLATE } from './prompts/templates.js';
|
9
10
|
export class MCPAgent {
|
@@ -14,6 +15,7 @@ export class MCPAgent {
|
|
14
15
|
autoInitialize;
|
15
16
|
memoryEnabled;
|
16
17
|
disallowedTools;
|
18
|
+
additionalTools;
|
17
19
|
useServerManager;
|
18
20
|
verbose;
|
19
21
|
systemPrompt;
|
@@ -38,6 +40,7 @@ export class MCPAgent {
|
|
38
40
|
this.systemPromptTemplateOverride = options.systemPromptTemplate ?? null;
|
39
41
|
this.additionalInstructions = options.additionalInstructions ?? null;
|
40
42
|
this.disallowedTools = options.disallowedTools ?? [];
|
43
|
+
this.additionalTools = options.additionalTools ?? [];
|
41
44
|
this.useServerManager = options.useServerManager ?? false;
|
42
45
|
this.verbose = options.verbose ?? false;
|
43
46
|
if (!this.client && this.connectors.length === 0) {
|
@@ -47,15 +50,13 @@ export class MCPAgent {
|
|
47
50
|
if (!this.client) {
|
48
51
|
throw new Error('\'client\' must be provided when \'useServerManager\' is true.');
|
49
52
|
}
|
50
|
-
|
51
|
-
|
52
|
-
}
|
53
|
-
else {
|
54
|
-
throw new Error('No serverManagerFactory passed to MCPAgent constructor.');
|
55
|
-
}
|
53
|
+
this.adapter = options.adapter ?? new LangChainAdapter(this.disallowedTools);
|
54
|
+
this.serverManager = options.serverManagerFactory?.(this.client) ?? new ServerManager(this.client, this.adapter);
|
56
55
|
}
|
57
56
|
// Let consumers swap allowed tools dynamically
|
58
|
-
|
57
|
+
else {
|
58
|
+
this.adapter = options.adapter ?? new LangChainAdapter(this.disallowedTools);
|
59
|
+
}
|
59
60
|
}
|
60
61
|
async initialize() {
|
61
62
|
logger.info('🚀 Initializing MCP agent and connecting to services...');
|
@@ -65,6 +66,7 @@ export class MCPAgent {
|
|
65
66
|
// Get server management tools
|
66
67
|
const managementTools = this.serverManager.tools;
|
67
68
|
this.tools = managementTools;
|
69
|
+
this.tools.push(...this.additionalTools);
|
68
70
|
logger.info(`🔧 Server manager mode active with ${managementTools.length} management tools`);
|
69
71
|
// Create the system message based on available tools
|
70
72
|
await this.createSystemMessageFromTools(this.tools);
|
@@ -83,6 +85,7 @@ export class MCPAgent {
|
|
83
85
|
}
|
84
86
|
// Create LangChain tools directly from the client using the adapter
|
85
87
|
this.tools = await LangChainAdapter.createTools(this.client);
|
88
|
+
this.tools.push(...this.additionalTools);
|
86
89
|
logger.info(`🛠️ Created ${this.tools.length} LangChain tools from client`);
|
87
90
|
}
|
88
91
|
else {
|
@@ -95,6 +98,7 @@ export class MCPAgent {
|
|
95
98
|
}
|
96
99
|
// Create LangChain tools using the adapter with connectors
|
97
100
|
this.tools = await this.adapter.createToolsFromConnectors(this.connectors);
|
101
|
+
this.tools.push(...this.additionalTools);
|
98
102
|
logger.info(`🛠️ Created ${this.tools.length} LangChain tools from connectors`);
|
99
103
|
}
|
100
104
|
// Get all tools for system message generation
|
@@ -173,7 +177,28 @@ export class MCPAgent {
|
|
173
177
|
getDisallowedTools() {
|
174
178
|
return this.disallowedTools;
|
175
179
|
}
|
176
|
-
async
|
180
|
+
async _consumeAndReturn(generator) {
|
181
|
+
// Manually iterate through the generator to consume the steps.
|
182
|
+
// The for-await-of loop is not used because it discards the generator's
|
183
|
+
// final return value. We need to capture that value when `done` is true.
|
184
|
+
while (true) {
|
185
|
+
const { done, value } = await generator.next();
|
186
|
+
if (done) {
|
187
|
+
return value;
|
188
|
+
}
|
189
|
+
}
|
190
|
+
}
|
191
|
+
/**
|
192
|
+
* Runs the agent and returns a promise for the final result.
|
193
|
+
*/
|
194
|
+
async run(query, maxSteps, manageConnector, externalHistory) {
|
195
|
+
const generator = this.stream(query, maxSteps, manageConnector, externalHistory);
|
196
|
+
return this._consumeAndReturn(generator);
|
197
|
+
}
|
198
|
+
/**
|
199
|
+
* Runs the agent and yields intermediate steps as an async generator.
|
200
|
+
*/
|
201
|
+
async *stream(query, maxSteps, manageConnector = true, externalHistory) {
|
177
202
|
let result = '';
|
178
203
|
let initializedHere = false;
|
179
204
|
try {
|
@@ -217,6 +242,7 @@ export class MCPAgent {
|
|
217
242
|
if (changed) {
|
218
243
|
logger.info(`🔄 Tools changed before step ${stepNum + 1}, updating agent. New tools: ${[...currentToolNames].join(', ')}`);
|
219
244
|
this.tools = currentTools;
|
245
|
+
this.tools.push(...this.additionalTools);
|
220
246
|
await this.createSystemMessageFromTools(this.tools);
|
221
247
|
this.agentExecutor = this.createAgent();
|
222
248
|
this.agentExecutor.maxIterations = steps;
|
@@ -235,6 +261,7 @@ export class MCPAgent {
|
|
235
261
|
const stepArray = nextStepOutput;
|
236
262
|
intermediateSteps.push(...stepArray);
|
237
263
|
for (const step of stepArray) {
|
264
|
+
yield step;
|
238
265
|
const { action, observation } = step;
|
239
266
|
const toolName = action.tool;
|
240
267
|
let toolInputStr = String(action.toolInput);
|
package/dist/src/client.d.ts
CHANGED
@@ -9,6 +9,8 @@ export declare class MCPClient {
|
|
9
9
|
addServer(name: string, serverConfig: Record<string, any>): void;
|
10
10
|
removeServer(name: string): void;
|
11
11
|
getServerNames(): string[];
|
12
|
+
getServerConfig(name: string): Record<string, any>;
|
13
|
+
getConfig(): Record<string, any>;
|
12
14
|
saveConfig(filepath: string): void;
|
13
15
|
createSession(serverName: string, autoInitialize?: boolean): Promise<MCPSession>;
|
14
16
|
createAllSessions(autoInitialize?: boolean): Promise<Record<string, MCPSession>>;
|
package/dist/src/client.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAiC;IAC1C,cAAc,EAAE,MAAM,EAAE,CAAK;gBAExB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;WAWnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS;WAI7C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAI9C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAKhE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOhC,cAAc,IAAI,MAAM,EAAE;IAI1B,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ5B,aAAa,CACxB,UAAU,EAAE,MAAM,EAClB,cAAc,UAAO,GACpB,OAAO,CAAC,UAAU,CAAC;IAwBT,iBAAiB,CAC5B,cAAc,UAAO,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAc/B,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAWjD,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;IAM5C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB/C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB/C"}
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAiC;IAC1C,cAAc,EAAE,MAAM,EAAE,CAAK;gBAExB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;WAWnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS;WAI7C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAI9C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAKhE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOhC,cAAc,IAAI,MAAM,EAAE;IAI1B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAIlD,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAIhC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ5B,aAAa,CACxB,UAAU,EAAE,MAAM,EAClB,cAAc,UAAO,GACpB,OAAO,CAAC,UAAU,CAAC;IAwBT,iBAAiB,CAC5B,cAAc,UAAO,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAc/B,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAWjD,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;IAM5C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB/C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB/C"}
|
package/dist/src/client.js
CHANGED
@@ -36,6 +36,12 @@ export class MCPClient {
|
|
36
36
|
getServerNames() {
|
37
37
|
return Object.keys(this.config.mcpServers ?? {});
|
38
38
|
}
|
39
|
+
getServerConfig(name) {
|
40
|
+
return this.config.mcpServers?.[name];
|
41
|
+
}
|
42
|
+
getConfig() {
|
43
|
+
return this.config ?? {};
|
44
|
+
}
|
39
45
|
saveConfig(filepath) {
|
40
46
|
const dir = path.dirname(filepath);
|
41
47
|
if (!fs.existsSync(dir)) {
|
@@ -7,7 +7,9 @@ export declare class ServerManager {
|
|
7
7
|
readonly client: MCPClient;
|
8
8
|
readonly adapter: LangChainAdapter;
|
9
9
|
activeServer: string | null;
|
10
|
-
|
10
|
+
private overrideManagementTools?;
|
11
|
+
constructor(client: MCPClient, adapter: LangChainAdapter, managementTools?: StructuredToolInterface[]);
|
12
|
+
setManagementTools(tools: StructuredToolInterface[]): void;
|
11
13
|
logState(context: string): void;
|
12
14
|
initialize(): void;
|
13
15
|
prefetchServerTools(): Promise<void>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"server_manager.d.ts","sourceRoot":"","sources":["../../../src/managers/server_manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAW7C,qBAAa,aAAa;IACxB,SAAgB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAK;IAChE,SAAgB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAK;IAE3E,SAAgB,MAAM,EAAE,SAAS,CAAA;IACjC,SAAgB,OAAO,EAAE,gBAAgB,CAAA;IAClC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAO;
|
1
|
+
{"version":3,"file":"server_manager.d.ts","sourceRoot":"","sources":["../../../src/managers/server_manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAW7C,qBAAa,aAAa;IACxB,SAAgB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAK;IAChE,SAAgB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAK;IAE3E,SAAgB,MAAM,EAAE,SAAS,CAAA;IACjC,SAAgB,OAAO,EAAE,gBAAgB,CAAA;IAClC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAO;IACzC,OAAO,CAAC,uBAAuB,CAAC,CAA2B;gBAGzD,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,gBAAgB,EACzB,eAAe,CAAC,EAAE,uBAAuB,EAAE;IAOtC,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,EAAE,GAAG,IAAI;IAO1D,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAqBtC,UAAU,IAAI,IAAI;IAOZ,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoD1C,IAAI,KAAK,IAAI,uBAAuB,EAAE,CAsBrC;CACF"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { isEqual } from 'lodash-es';
|
2
2
|
import { logger } from '../logging.js';
|
3
3
|
import { AcquireActiveMCPServerTool } from './tools/acquire_active_mcp_server.js';
|
4
|
-
import {
|
4
|
+
import { AddMCPServerFromConfigTool } from './tools/add_server_from_config.js';
|
5
5
|
import { ConnectMCPServerTool } from './tools/connect_mcp_server.js';
|
6
6
|
import { ListMCPServersTool } from './tools/list_mcp_servers.js';
|
7
7
|
import { ReleaseMCPServerConnectionTool } from './tools/release_mcp_server_connection.js';
|
@@ -11,9 +11,15 @@ export class ServerManager {
|
|
11
11
|
client;
|
12
12
|
adapter;
|
13
13
|
activeServer = null;
|
14
|
-
|
14
|
+
overrideManagementTools;
|
15
|
+
constructor(client, adapter, managementTools) {
|
15
16
|
this.client = client;
|
16
17
|
this.adapter = adapter;
|
18
|
+
this.overrideManagementTools = managementTools;
|
19
|
+
}
|
20
|
+
setManagementTools(tools) {
|
21
|
+
this.overrideManagementTools = tools;
|
22
|
+
logger.info(`Overriding default management tools with a new set of ${tools.length} tools.`);
|
17
23
|
}
|
18
24
|
logState(context) {
|
19
25
|
const allServerNames = this.client.getServerNames();
|
@@ -83,8 +89,8 @@ export class ServerManager {
|
|
83
89
|
if (logger.level === 'debug') {
|
84
90
|
this.logState('Providing tools to agent');
|
85
91
|
}
|
86
|
-
const managementTools = [
|
87
|
-
new
|
92
|
+
const managementTools = this.overrideManagementTools ?? [
|
93
|
+
new AddMCPServerFromConfigTool(this),
|
88
94
|
new ListMCPServersTool(this),
|
89
95
|
new ConnectMCPServerTool(this),
|
90
96
|
new AcquireActiveMCPServerTool(this),
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import type { ServerManager } from '../server_manager.js';
|
2
2
|
import { StructuredTool } from 'langchain/tools';
|
3
3
|
import { z } from 'zod';
|
4
|
-
export declare class
|
4
|
+
export declare class AddMCPServerFromConfigTool extends StructuredTool {
|
5
5
|
name: string;
|
6
6
|
description: string;
|
7
7
|
schema: z.ZodObject<{
|
@@ -18,4 +18,4 @@ export declare class AddMCPServerTool extends StructuredTool {
|
|
18
18
|
constructor(manager: ServerManager);
|
19
19
|
protected _call({ serverName, serverConfig, }: z.infer<typeof this.schema>): Promise<string>;
|
20
20
|
}
|
21
|
-
//# sourceMappingURL=
|
21
|
+
//# sourceMappingURL=add_server_from_config.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"add_server_from_config.d.ts","sourceRoot":"","sources":["../../../../src/managers/tools/add_server_from_config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,qBAAa,0BAA2B,SAAQ,cAAc;IAC5D,IAAI,SAA+B;IACnC,WAAW,SAC0G;IAErH,MAAM;;;;;;;;;OAOJ;IAEF,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,EAAE,aAAa;cAKlB,KAAK,CAAC,EACpB,UAAU,EACV,YAAY,GACb,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CA6BjD"}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { StructuredTool } from 'langchain/tools';
|
2
2
|
import { z } from 'zod';
|
3
3
|
import { logger } from '../../logging.js';
|
4
|
-
export class
|
5
|
-
name = '
|
6
|
-
description = 'Adds a new MCP server to the client and connects to it, making its tools available.';
|
4
|
+
export class AddMCPServerFromConfigTool extends StructuredTool {
|
5
|
+
name = 'add_mcp_server_from_config';
|
6
|
+
description = 'Adds a new MCP server to the client from a configuration object and connects to it, making its tools available.';
|
7
7
|
schema = z.object({
|
8
8
|
serverName: z.string().describe('The name for the new MCP server.'),
|
9
9
|
serverConfig: z
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/managers/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAA;AAC9C,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oCAAoC,CAAA"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/managers/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oCAAoC,CAAA"}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "mcp-use",
|
3
3
|
"type": "module",
|
4
|
-
"version": "0.1.
|
4
|
+
"version": "0.1.1",
|
5
5
|
"packageManager": "pnpm@10.6.1",
|
6
6
|
"description": "A utility library for integrating Model Context Protocol (MCP) with LangChain, Zod, and related tools. Provides helpers for schema conversion, event streaming, and SDK usage.",
|
7
7
|
"author": "Zane",
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"add_server.d.ts","sourceRoot":"","sources":["../../../../src/managers/tools/add_server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,IAAI,SAAmB;IACvB,WAAW,SAC8E;IAEzF,MAAM;;;;;;;;;OAOJ;IAEF,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,EAAE,aAAa;cAKlB,KAAK,CAAC,EACpB,UAAU,EACV,YAAY,GACb,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CA6BjD"}
|