mcp-use 0.0.6 → 0.1.0

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.
Files changed (80) hide show
  1. package/README.md +66 -5
  2. package/dist/examples/add_server_tool.d.ts +8 -0
  3. package/dist/examples/add_server_tool.d.ts.map +1 -0
  4. package/dist/examples/add_server_tool.js +65 -0
  5. package/dist/examples/airbnb_use.d.ts +10 -0
  6. package/dist/examples/airbnb_use.d.ts.map +1 -0
  7. package/dist/examples/airbnb_use.js +43 -0
  8. package/dist/examples/blender_use.d.ts +15 -0
  9. package/dist/examples/blender_use.d.ts.map +1 -0
  10. package/dist/examples/blender_use.js +39 -0
  11. package/dist/examples/browser_use.d.ts +10 -0
  12. package/dist/examples/browser_use.d.ts.map +1 -0
  13. package/dist/examples/browser_use.js +46 -0
  14. package/dist/examples/chat_example.d.ts +10 -0
  15. package/dist/examples/chat_example.d.ts.map +1 -0
  16. package/dist/examples/chat_example.js +86 -0
  17. package/dist/examples/filesystem_use.d.ts +11 -0
  18. package/dist/examples/filesystem_use.d.ts.map +1 -0
  19. package/dist/examples/filesystem_use.js +43 -0
  20. package/dist/examples/http_example.d.ts +18 -0
  21. package/dist/examples/http_example.d.ts.map +1 -0
  22. package/dist/examples/http_example.js +36 -0
  23. package/dist/examples/mcp_everything.d.ts +6 -0
  24. package/dist/examples/mcp_everything.d.ts.map +1 -0
  25. package/dist/examples/mcp_everything.js +25 -0
  26. package/dist/examples/multi_server_example.d.ts +10 -0
  27. package/dist/examples/multi_server_example.d.ts.map +1 -0
  28. package/dist/examples/multi_server_example.js +51 -0
  29. package/dist/index.d.ts +2 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +2 -0
  32. package/dist/src/adapters/langchain_adapter.js +1 -1
  33. package/dist/src/agents/index.d.ts +0 -1
  34. package/dist/src/agents/index.d.ts.map +1 -1
  35. package/dist/src/agents/index.js +0 -1
  36. package/dist/src/agents/mcp_agent.d.ts +1 -1
  37. package/dist/src/agents/mcp_agent.d.ts.map +1 -1
  38. package/dist/src/agents/mcp_agent.js +3 -3
  39. package/dist/src/client.d.ts +1 -1
  40. package/dist/src/client.d.ts.map +1 -1
  41. package/dist/src/client.js +6 -3
  42. package/dist/src/connectors/stdio.d.ts.map +1 -1
  43. package/dist/src/connectors/stdio.js +14 -1
  44. package/dist/src/logging.d.ts +15 -4
  45. package/dist/src/logging.d.ts.map +1 -1
  46. package/dist/src/logging.js +71 -38
  47. package/dist/src/managers/index.d.ts +3 -0
  48. package/dist/src/managers/index.d.ts.map +1 -0
  49. package/dist/src/managers/index.js +2 -0
  50. package/dist/src/managers/server_manager.d.ts +16 -0
  51. package/dist/src/managers/server_manager.d.ts.map +1 -0
  52. package/dist/src/managers/server_manager.js +100 -0
  53. package/dist/src/managers/tools/acquire_active_mcp_server.d.ts +13 -0
  54. package/dist/src/managers/tools/acquire_active_mcp_server.d.ts.map +1 -0
  55. package/dist/src/managers/tools/acquire_active_mcp_server.js +17 -0
  56. package/dist/src/managers/tools/add_server.d.ts +21 -0
  57. package/dist/src/managers/tools/add_server.d.ts.map +1 -0
  58. package/dist/src/managers/tools/add_server.js +40 -0
  59. package/dist/src/managers/tools/base.d.ts +24 -0
  60. package/dist/src/managers/tools/base.d.ts.map +1 -0
  61. package/dist/src/managers/tools/base.js +17 -0
  62. package/dist/src/managers/tools/connect_mcp_server.d.ts +26 -0
  63. package/dist/src/managers/tools/connect_mcp_server.d.ts.map +1 -0
  64. package/dist/src/managers/tools/connect_mcp_server.js +46 -0
  65. package/dist/src/managers/tools/index.d.ts +5 -0
  66. package/dist/src/managers/tools/index.d.ts.map +1 -0
  67. package/dist/src/managers/tools/index.js +4 -0
  68. package/dist/src/managers/tools/list_mcp_servers.d.ts +13 -0
  69. package/dist/src/managers/tools/list_mcp_servers.d.ts.map +1 -0
  70. package/dist/src/managers/tools/list_mcp_servers.js +33 -0
  71. package/dist/src/managers/tools/release_mcp_server_connection.d.ts +13 -0
  72. package/dist/src/managers/tools/release_mcp_server_connection.d.ts.map +1 -0
  73. package/dist/src/managers/tools/release_mcp_server_connection.js +19 -0
  74. package/dist/src/session.d.ts +1 -9
  75. package/dist/src/session.d.ts.map +1 -1
  76. package/dist/src/session.js +1 -30
  77. package/package.json +52 -21
  78. package/dist/src/agents/server_manager.d.ts +0 -22
  79. package/dist/src/agents/server_manager.d.ts.map +0 -1
  80. package/dist/src/agents/server_manager.js +0 -152
@@ -0,0 +1,40 @@
1
+ import { StructuredTool } from 'langchain/tools';
2
+ import { z } from 'zod';
3
+ import { logger } from '../../logging.js';
4
+ export class AddMCPServerTool extends StructuredTool {
5
+ name = 'add_mcp_server';
6
+ description = 'Adds a new MCP server to the client and connects to it, making its tools available.';
7
+ schema = z.object({
8
+ serverName: z.string().describe('The name for the new MCP server.'),
9
+ serverConfig: z
10
+ .any()
11
+ .describe('The configuration object for the server. This should not include the top-level "mcpServers" key.'),
12
+ });
13
+ manager;
14
+ constructor(manager) {
15
+ super();
16
+ this.manager = manager;
17
+ }
18
+ async _call({ serverName, serverConfig, }) {
19
+ try {
20
+ this.manager.client.addServer(serverName, serverConfig);
21
+ let result = `Server '${serverName}' added to the client.`;
22
+ logger.debug(`Connecting to new server '${serverName}' and discovering tools.`);
23
+ const session = await this.manager.client.createSession(serverName);
24
+ const connector = session.connector;
25
+ const tools = await this.manager.adapter.createToolsFromConnectors([connector]);
26
+ this.manager.serverTools[serverName] = tools;
27
+ this.manager.initializedServers[serverName] = true;
28
+ this.manager.activeServer = serverName; // Set as active server
29
+ const numTools = tools.length;
30
+ result += ` Session created and connected. '${serverName}' is now the active server with ${numTools} tools available.`;
31
+ result += `\n\n${tools.map(t => t.name).join('\n')}`;
32
+ logger.info(result);
33
+ return result;
34
+ }
35
+ catch (e) {
36
+ logger.error(`Failed to add or connect to server '${serverName}': ${e.message}`);
37
+ return `Failed to add or connect to server '${serverName}': ${e.message}`;
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,24 @@
1
+ import type { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';
2
+ import type { ToolParams, ToolRunnableConfig, ToolSchemaBase } from '@langchain/core/tools';
3
+ import type { JSONSchema } from '@langchain/core/utils/json_schema';
4
+ import type z from 'zod';
5
+ import type { ServerManager } from '../server_manager.js';
6
+ import { StructuredTool } from '@langchain/core/tools';
7
+ export type ToolOutputT = any;
8
+ export type SchemaOutputT<T extends ToolSchemaBase> = T extends z.ZodSchema ? z.output<T> : T extends JSONSchema ? unknown : never;
9
+ export interface MCPServerToolOptions extends ToolParams {
10
+ name?: string;
11
+ description?: string;
12
+ returnDirect?: boolean;
13
+ sandboxId?: string;
14
+ }
15
+ export declare class MCPServerTool<SchemaT extends ToolSchemaBase> extends StructuredTool<SchemaT, SchemaOutputT<SchemaT>> {
16
+ name: string;
17
+ description: string;
18
+ schema: SchemaT;
19
+ private readonly _manager;
20
+ constructor(manager: ServerManager);
21
+ protected _call(_arg: SchemaOutputT<SchemaT>, _runManager?: CallbackManagerForToolRun, _parentConfig?: ToolRunnableConfig): Promise<ToolOutputT>;
22
+ get manager(): ServerManager;
23
+ }
24
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/managers/tools/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,MAAM,MAAM,WAAW,GAAG,GAAG,CAAA;AAC7B,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,cAAc,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,GACvE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GACX,CAAC,SAAS,UAAU,GAClB,OAAO,GACP,KAAK,CAAA;AAEX,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,aAAa,CAAC,OAAO,SAAS,cAAc,CAAE,SAAQ,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACvG,IAAI,EAAE,MAAM,CAAoB;IAChC,WAAW,EAAE,MAAM,CAAyC;IAC5D,MAAM,EAAG,OAAO,CAAA;IAEzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;gBAE5B,OAAO,EAAE,aAAa;cAKlB,KAAK,CACnB,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAC5B,WAAW,CAAC,EAAE,yBAAyB,EACvC,aAAa,CAAC,EAAE,kBAAkB,GACjC,OAAO,CAAC,WAAW,CAAC;IAIvB,IAAI,OAAO,IAAI,aAAa,CAE3B;CACF"}
@@ -0,0 +1,17 @@
1
+ import { StructuredTool } from '@langchain/core/tools';
2
+ export class MCPServerTool extends StructuredTool {
3
+ name = 'mcp_server_tool';
4
+ description = 'Base tool for MCP server operations.';
5
+ schema;
6
+ _manager;
7
+ constructor(manager) {
8
+ super();
9
+ this._manager = manager;
10
+ }
11
+ async _call(_arg, _runManager, _parentConfig) {
12
+ throw new Error('Method not implemented.');
13
+ }
14
+ get manager() {
15
+ return this._manager;
16
+ }
17
+ }
@@ -0,0 +1,26 @@
1
+ import type { ServerManager } from '../server_manager.js';
2
+ import type { SchemaOutputT } from './base.js';
3
+ import { z } from 'zod';
4
+ import { MCPServerTool } from './base.js';
5
+ declare const ConnectMCPServerSchema: z.ZodObject<{
6
+ serverName: z.ZodString;
7
+ }, "strip", z.ZodTypeAny, {
8
+ serverName: string;
9
+ }, {
10
+ serverName: string;
11
+ }>;
12
+ export declare class ConnectMCPServerTool extends MCPServerTool<typeof ConnectMCPServerSchema> {
13
+ name: string;
14
+ description: string;
15
+ schema: z.ZodObject<{
16
+ serverName: z.ZodString;
17
+ }, "strip", z.ZodTypeAny, {
18
+ serverName: string;
19
+ }, {
20
+ serverName: string;
21
+ }>;
22
+ constructor(manager: ServerManager);
23
+ _call({ serverName }: SchemaOutputT<typeof ConnectMCPServerSchema>): Promise<string>;
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=connect_mcp_server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect_mcp_server.d.ts","sourceRoot":"","sources":["../../../../src/managers/tools/connect_mcp_server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,QAAA,MAAM,sBAAsB;;;;;;EAE1B,CAAA;AAEF,qBAAa,oBAAqB,SAAQ,aAAa,CAAC,OAAO,sBAAsB,CAAC;IAC3E,IAAI,SAA0B;IAC9B,WAAW,SAAiJ;IAC5J,MAAM;;;;;;OAAyB;gBAE5B,OAAO,EAAE,aAAa;IAI5B,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,aAAa,CAAC,OAAO,sBAAsB,CAAC;CAmCzE"}
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ import { logger } from '../../logging.js';
3
+ import { MCPServerTool } from './base.js';
4
+ const ConnectMCPServerSchema = z.object({
5
+ serverName: z.string().describe('The name of the MCP server.'),
6
+ });
7
+ export class ConnectMCPServerTool extends MCPServerTool {
8
+ name = 'connect_to_mcp_server';
9
+ description = 'Connect to a specific MCP (Model Context Protocol) server to use its tools. Use this tool to connect to a specific server and use its tools.';
10
+ schema = ConnectMCPServerSchema;
11
+ constructor(manager) {
12
+ super(manager);
13
+ }
14
+ async _call({ serverName }) {
15
+ const serverNames = this.manager.client.getServerNames();
16
+ if (!serverNames.includes(serverName)) {
17
+ const available = serverNames.length > 0 ? serverNames.join(', ') : 'none';
18
+ return `Server '${serverName}' not found. Available servers: ${available}`;
19
+ }
20
+ if (this.manager.activeServer === serverName) {
21
+ return `Already connected to MCP server '${serverName}'`;
22
+ }
23
+ try {
24
+ let session = this.manager.client.getSession(serverName);
25
+ logger.debug(`Using existing session for server '${serverName}'`);
26
+ if (!session) {
27
+ logger.debug(`Creating new session for server '${serverName}'`);
28
+ session = await this.manager.client.createSession(serverName);
29
+ }
30
+ this.manager.activeServer = serverName;
31
+ if (this.manager.serverTools[serverName]) {
32
+ const connector = session.connector;
33
+ const tools = await this.manager.adapter.createToolsFromConnectors([connector]);
34
+ this.manager.serverTools[serverName] = tools;
35
+ this.manager.initializedServers[serverName] = true;
36
+ }
37
+ const serverTools = this.manager.serverTools[serverName] || [];
38
+ const numTools = serverTools.length;
39
+ return `Connected to MCP server '${serverName}'. ${numTools} tools are now available.`;
40
+ }
41
+ catch (error) {
42
+ logger.error(`Error connecting to server '${serverName}': ${String(error)}`);
43
+ return `Failed to connect to server '${serverName}': ${String(error)}`;
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,5 @@
1
+ export * from './acquire_active_mcp_server.js';
2
+ export * from './connect_mcp_server.js';
3
+ export * from './list_mcp_servers.js';
4
+ export * from './release_mcp_server_connection.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ export * from './acquire_active_mcp_server.js';
2
+ export * from './connect_mcp_server.js';
3
+ export * from './list_mcp_servers.js';
4
+ export * from './release_mcp_server_connection.js';
@@ -0,0 +1,13 @@
1
+ import type { ServerManager } from '../server_manager.js';
2
+ import { z } from 'zod';
3
+ import { MCPServerTool } from './base.js';
4
+ declare const EnumerateServersSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
5
+ export declare class ListMCPServersTool extends MCPServerTool<typeof EnumerateServersSchema> {
6
+ name: string;
7
+ description: string;
8
+ schema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
9
+ constructor(manager: ServerManager);
10
+ _call(): Promise<string>;
11
+ }
12
+ export {};
13
+ //# sourceMappingURL=list_mcp_servers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list_mcp_servers.d.ts","sourceRoot":"","sources":["../../../../src/managers/tools/list_mcp_servers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,QAAA,MAAM,sBAAsB,gDAAe,CAAA;AAE3C,qBAAa,kBAAmB,SAAQ,aAAa,CAAC,OAAO,sBAAsB,CAAC;IACzE,IAAI,SAAqB;IACzB,WAAW,SAAiN;IAC5N,MAAM,iDAAyB;gBAE5B,OAAO,EAAE,aAAa;IAI5B,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CAwB/B"}
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ import { logger } from '../../logging.js';
3
+ import { MCPServerTool } from './base.js';
4
+ const EnumerateServersSchema = z.object({});
5
+ export class ListMCPServersTool extends MCPServerTool {
6
+ name = 'list_mcp_servers';
7
+ description = `Lists all available MCP (Model Context Protocol) servers that can be connected to, along with the tools available on each server. Use this tool to discover servers and see what functionalities they offer.`;
8
+ schema = EnumerateServersSchema;
9
+ constructor(manager) {
10
+ super(manager);
11
+ }
12
+ async _call() {
13
+ const serverNames = this.manager.client.getServerNames();
14
+ if (serverNames.length === 0) {
15
+ return `No MCP servers are currently defined.`;
16
+ }
17
+ const outputLines = ['Available MCP servers:'];
18
+ for (const serverName of serverNames) {
19
+ const isActiveServer = serverName === this.manager.activeServer;
20
+ const activeFlag = isActiveServer ? ' (ACTIVE)' : '';
21
+ outputLines.push(`- ${serverName}${activeFlag}`);
22
+ try {
23
+ const serverTools = this.manager.serverTools?.[serverName] ?? [];
24
+ const numberOfTools = Array.isArray(serverTools) ? serverTools.length : 0;
25
+ outputLines.push(`${numberOfTools} tools available for this server\n`);
26
+ }
27
+ catch (error) {
28
+ logger.error(`Unexpected error listing tools for server '${serverName}': ${String(error)}`);
29
+ }
30
+ }
31
+ return outputLines.join('\n');
32
+ }
33
+ }
@@ -0,0 +1,13 @@
1
+ import type { ServerManager } from '../server_manager.js';
2
+ import { z } from 'zod';
3
+ import { MCPServerTool } from './base.js';
4
+ declare const ReleaseConnectionSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
5
+ export declare class ReleaseMCPServerConnectionTool extends MCPServerTool<typeof ReleaseConnectionSchema> {
6
+ name: string;
7
+ description: string;
8
+ schema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
9
+ constructor(manager: ServerManager);
10
+ _call(): Promise<string>;
11
+ }
12
+ export {};
13
+ //# sourceMappingURL=release_mcp_server_connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release_mcp_server_connection.d.ts","sourceRoot":"","sources":["../../../../src/managers/tools/release_mcp_server_connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,QAAA,MAAM,uBAAuB,gDAAe,CAAA;AAE5C,qBAAa,8BAA+B,SAAQ,aAAa,CAAC,OAAO,uBAAuB,CAAC;IACtF,IAAI,SAA+B;IACnC,WAAW,SAA6E;IACxF,MAAM,iDAA0B;gBAE7B,OAAO,EAAE,aAAa;IAI5B,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CAQ/B"}
@@ -0,0 +1,19 @@
1
+ import { z } from 'zod';
2
+ import { MCPServerTool } from './base.js';
3
+ const ReleaseConnectionSchema = z.object({});
4
+ export class ReleaseMCPServerConnectionTool extends MCPServerTool {
5
+ name = 'disconnect_from_mcp_server';
6
+ description = 'Disconnect from the currently active MCP (Model Context Protocol) server';
7
+ schema = ReleaseConnectionSchema;
8
+ constructor(manager) {
9
+ super(manager);
10
+ }
11
+ async _call() {
12
+ if (!this.manager.activeServer) {
13
+ return `No MCP server is currently active, so there's nothing to disconnect from.`;
14
+ }
15
+ const serverName = this.manager.activeServer;
16
+ this.manager.activeServer = null;
17
+ return `Successfully disconnected from MCP server '${serverName}'.`;
18
+ }
19
+ }
@@ -2,18 +2,10 @@ import type { BaseConnector } from './connectors/base.js';
2
2
  export declare class MCPSession {
3
3
  readonly connector: BaseConnector;
4
4
  private autoConnect;
5
- private _sessionInfo;
6
- private _tools;
7
5
  constructor(connector: BaseConnector, autoConnect?: boolean);
8
- open(): Promise<this>;
9
- close(): Promise<void>;
10
6
  connect(): Promise<void>;
11
7
  disconnect(): Promise<void>;
12
- initialize(): Promise<Record<string, any>>;
8
+ initialize(): Promise<void>;
13
9
  get isConnected(): boolean;
14
- get sessionInfo(): Record<string, any> | null;
15
- get tools(): Record<string, any>[];
16
- discoverTools(): Promise<Record<string, any>[]>;
17
- callTool(name: string, args: Record<string, any>): Promise<any>;
18
10
  }
19
11
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGzD,qBAAa,UAAU;IACrB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,MAAM,CAA4B;gBAE9B,SAAS,EAAE,aAAa,EAAE,WAAW,UAAO;IAKlD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAUhD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAE5C;IAED,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAEjC;IAEK,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAK/C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;CAOtE"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzD,qBAAa,UAAU;IACrB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;IACjC,OAAO,CAAC,WAAW,CAAS;gBAEhB,SAAS,EAAE,aAAa,EAAE,WAAW,UAAO;IAKlD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC,IAAI,WAAW,IAAI,OAAO,CAEzB;CACF"}
@@ -1,20 +1,10 @@
1
- import { logger } from './logging.js';
2
1
  export class MCPSession {
3
2
  connector;
4
3
  autoConnect;
5
- _sessionInfo = null;
6
- _tools = [];
7
4
  constructor(connector, autoConnect = true) {
8
5
  this.connector = connector;
9
6
  this.autoConnect = autoConnect;
10
7
  }
11
- async open() {
12
- await this.connect();
13
- return this;
14
- }
15
- async close() {
16
- await this.disconnect();
17
- }
18
8
  async connect() {
19
9
  await this.connector.connect();
20
10
  }
@@ -25,28 +15,9 @@ export class MCPSession {
25
15
  if (!this.isConnected && this.autoConnect) {
26
16
  await this.connect();
27
17
  }
28
- this._sessionInfo = await this.connector.initialize() ?? {};
29
- await this.discoverTools();
30
- return this._sessionInfo;
18
+ await this.connector.initialize();
31
19
  }
32
20
  get isConnected() {
33
21
  return this.connector && this.connector.isClientConnected;
34
22
  }
35
- get sessionInfo() {
36
- return this._sessionInfo;
37
- }
38
- get tools() {
39
- return this._tools;
40
- }
41
- async discoverTools() {
42
- this._tools = this.connector.tools;
43
- return this._tools;
44
- }
45
- async callTool(name, args) {
46
- if (!this.isConnected && this.autoConnect) {
47
- await this.connect();
48
- }
49
- logger.debug(`MCPSession calling tool '${name}'`);
50
- return await this.connector.callTool(name, args);
51
- }
52
23
  }
package/package.json CHANGED
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "name": "mcp-use",
3
3
  "type": "module",
4
- "version": "0.0.6",
4
+ "version": "0.1.0",
5
+ "packageManager": "pnpm@10.6.1",
5
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.",
6
7
  "author": "Zane",
7
8
  "license": "MIT",
8
- "homepage": "https://github.com/zandko/mcp-use#readme",
9
+ "homepage": "https://github.com/mcp-use/mcp-use-ts#readme",
9
10
  "repository": {
10
11
  "type": "git",
11
- "url": "git+https://github.com/zandko/mcp-use.git"
12
+ "url": "git+https://github.com/mcp-use/mcp-use-ts.git"
12
13
  },
13
14
  "bugs": {
14
- "url": "https://github.com/zandko/mcp-use/issues"
15
+ "url": "https://github.com/mcp-use/mcp-use-ts/issues"
15
16
  },
16
17
  "keywords": [
17
18
  "MCP",
@@ -43,35 +44,65 @@
43
44
  "publishConfig": {
44
45
  "registry": "https://registry.npmjs.org"
45
46
  },
47
+ "scripts": {
48
+ "build": "rm -rf dist && tsc",
49
+ "watch": "tsc --watch",
50
+ "start": "node dist/index.js",
51
+ "prepublishOnly": "npm run build",
52
+ "lint": "eslint",
53
+ "lint:fix": "eslint --fix",
54
+ "fmt": "eslint --fix",
55
+ "release": "npm version patch --tag-version-prefix=v && git push --follow-tags",
56
+ "release:minor": "npm version minor --tag-version-prefix=v && git push --follow-tags",
57
+ "release:major": "npm version major --tag-version-prefix=v && git push --follow-tags",
58
+ "prepare": "husky",
59
+ "example:airbnb": "npm run build && node dist/examples/airbnb_use.js",
60
+ "example:browser": "npm run build && node dist/examples/browser_use.js",
61
+ "example:chat": "npm run build && node dist/examples/chat_example.js",
62
+ "example:filesystem": "npm run build && node dist/examples/filesystem_use.js",
63
+ "example:http": "npm run build && node dist/examples/http_example.js",
64
+ "example:everything": "npm run build && node dist/examples/mcp_everything.js",
65
+ "example:multi": "npm run build && node dist/examples/multi_server_example.js",
66
+ "example:sandbox": "npm run build && node dist/examples/sandbox_everything.js",
67
+ "example:oauth": "npm run build && node dist/examples/simple_oauth_example.js",
68
+ "example:blender": "npm run build && node dist/examples/blender_use.js",
69
+ "example:add_server": "npm run build && node dist/examples/add_server_tool.js"
70
+ },
46
71
  "dependencies": {
47
72
  "@dmitryrechkin/json-schema-to-zod": "^1.0.1",
48
- "@langchain/community": "0.3.42",
49
- "@langchain/core": "0.3.54",
50
- "@modelcontextprotocol/sdk": "1.11.0",
73
+ "@langchain/anthropic": "^0.3.14",
74
+ "@langchain/community": "0.3.45",
75
+ "@langchain/core": "0.3.58",
76
+ "@langchain/openai": "^0.5.15",
77
+ "@modelcontextprotocol/sdk": "1.12.1",
78
+ "dotenv": "^16.5.0",
51
79
  "eventsource": "^3.0.6",
52
- "langchain": "^0.3.24",
80
+ "fastembed": "^1.14.4",
81
+ "langchain": "^0.3.27",
82
+ "lodash-es": "^4.17.21",
53
83
  "uuid": "^11.1.0",
54
84
  "winston": "^3.17.0",
55
85
  "ws": "^8.18.2",
56
- "zod": "^3.24.4",
86
+ "zod": "^3.25.48",
57
87
  "zod-to-json-schema": "^3.24.5"
58
88
  },
59
89
  "devDependencies": {
60
- "@antfu/eslint-config": "^4.13.0",
90
+ "@antfu/eslint-config": "^4.13.2",
91
+ "@types/lodash-es": "^4.17.12",
61
92
  "@types/ws": "^8.18.1",
62
- "eslint": "^9.26.0",
93
+ "eslint": "^9.28.0",
63
94
  "eslint-plugin-format": "^1.0.1",
95
+ "husky": "^9.1.7",
96
+ "lint-staged": "^15.2.11",
64
97
  "shx": "^0.4.0",
65
98
  "typescript": "^5.8.3"
66
99
  },
67
- "scripts": {
68
- "build": "rm -rf dist && tsc && shx chmod +x dist/*.js",
69
- "watch": "tsc --watch",
70
- "start": "node dist/index.js",
71
- "lint": "eslint",
72
- "lint:fix": "eslint --fix",
73
- "release": "npm version patch && git push --follow-tags",
74
- "release:minor": "npm version minor && git push --follow-tags",
75
- "release:major": "npm version major && git push --follow-tags"
100
+ "lint-staged": {
101
+ "*.{js,ts}": [
102
+ "npm run lint"
103
+ ],
104
+ "**/*.ts": [
105
+ "npm run build"
106
+ ]
76
107
  }
77
- }
108
+ }
@@ -1,22 +0,0 @@
1
- import type { StructuredToolInterface } from '@langchain/core/tools';
2
- import type { LangChainAdapter } from '../adapters/langchain_adapter.js';
3
- import type { MCPClient } from '../client.js';
4
- export declare class ServerManager {
5
- private readonly client;
6
- private readonly adapter;
7
- private activeServer;
8
- private readonly initializedServers;
9
- private readonly serverTools;
10
- constructor(client: MCPClient, adapter: LangChainAdapter);
11
- initialize(): Promise<void>;
12
- getServerManagementTools(): Promise<StructuredToolInterface[]>;
13
- listServers(): Promise<string>;
14
- connectToServer(serverName: string): Promise<string>;
15
- getActiveServer(): Promise<string>;
16
- disconnectFromServer(): Promise<string>;
17
- getActiveServerTools(): Promise<StructuredToolInterface[]>;
18
- getAllTools(): Promise<StructuredToolInterface[]>;
19
- private ensureSession;
20
- private ensureToolsFetched;
21
- }
22
- //# sourceMappingURL=server_manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server_manager.d.ts","sourceRoot":"","sources":["../../../src/agents/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;AAc7C,qBAAa,aAAa;IAMtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA8B;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;gBAGzD,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,gBAAgB;IAGtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,wBAAwB,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAsC9D,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IA0B9B,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiCpD,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAMlC,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAUvC,oBAAoB,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAI1D,WAAW,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;YAIzC,aAAa;YAWb,kBAAkB;CAuBjC"}
@@ -1,152 +0,0 @@
1
- import { DynamicStructuredTool } from '@langchain/core/tools';
2
- import { z } from 'zod';
3
- import { logger } from '../logging.js';
4
- const ServerActionInputSchema = z.object({
5
- serverName: z.string().describe('The name of the MCP server'),
6
- });
7
- const DisconnectServerInputSchema = z.object({});
8
- const ListServersInputSchema = z.object({});
9
- const CurrentServerInputSchema = z.object({});
10
- export class ServerManager {
11
- client;
12
- adapter;
13
- activeServer = null;
14
- initializedServers = {};
15
- serverTools = {};
16
- constructor(client, adapter) {
17
- this.client = client;
18
- this.adapter = adapter;
19
- }
20
- async initialize() {
21
- if (!this.client.getServerNames?.().length) {
22
- logger.warning('No MCP servers defined in client configuration');
23
- }
24
- }
25
- async getServerManagementTools() {
26
- const listServersTool = new DynamicStructuredTool({
27
- name: 'list_mcp_servers',
28
- description: 'Lists all available MCP (Model Context Protocol) servers that can be connected to, along with the tools available on each server. Use this tool to discover servers and see what functionalities they offer.',
29
- schema: ListServersInputSchema,
30
- func: async () => this.listServers(),
31
- });
32
- const connectServerTool = new DynamicStructuredTool({
33
- name: 'connect_to_mcp_server',
34
- description: 'Connect to a specific MCP (Model Context Protocol) server to use its tools. Use this tool to connect to a specific server and use its tools.',
35
- schema: ServerActionInputSchema,
36
- func: async ({ serverName }) => this.connectToServer(serverName),
37
- });
38
- const getActiveServerTool = new DynamicStructuredTool({
39
- name: 'get_active_mcp_server',
40
- description: 'Get the currently active MCP (Model Context Protocol) server.',
41
- schema: CurrentServerInputSchema,
42
- func: async () => this.getActiveServer(),
43
- });
44
- const disconnectServerTool = new DynamicStructuredTool({
45
- name: 'disconnect_from_mcp_server',
46
- description: 'Disconnect from the currently active MCP (Model Context Protocol) server.',
47
- schema: DisconnectServerInputSchema,
48
- func: async () => this.disconnectFromServer(),
49
- });
50
- return [
51
- listServersTool,
52
- connectServerTool,
53
- getActiveServerTool,
54
- disconnectServerTool,
55
- ];
56
- }
57
- async listServers() {
58
- const servers = this.client.getServerNames?.() ?? [];
59
- if (!servers.length)
60
- return 'No MCP servers are currently defined.';
61
- let out = 'Available MCP servers:\n';
62
- for (const [idx, serverName] of servers.entries()) {
63
- const active = serverName === this.activeServer ? ' (ACTIVE)' : '';
64
- out += `${idx + 1}. ${serverName}${active}\n`;
65
- try {
66
- const tools = await this.ensureToolsFetched(serverName);
67
- out += tools.length
68
- ? ` Tools: ${tools.map(t => t.name).join(', ')}\n`
69
- : ' Tools: (Could not retrieve or none available)\n';
70
- }
71
- catch (err) {
72
- logger?.error?.(`Error listing tools for server '${serverName}':`, err);
73
- out += ' Tools: (Error retrieving tools)\n';
74
- }
75
- }
76
- return out;
77
- }
78
- async connectToServer(serverName) {
79
- const servers = this.client.getServerNames() ?? [];
80
- if (!servers.includes(serverName)) {
81
- return `Server '${serverName}' not found. Available servers: ${servers.join(', ') || 'none'}`;
82
- }
83
- if (this.activeServer === serverName) {
84
- return `Already connected to MCP server '${serverName}'`;
85
- }
86
- try {
87
- const session = await this.ensureSession(serverName, /* create */ true);
88
- this.activeServer = serverName;
89
- // Ensure tools cached
90
- await this.ensureToolsFetched(serverName, session?.connector);
91
- const tools = this.serverTools[serverName] ?? [];
92
- const toolDetails = tools
93
- .map((t, i) => `${i + 1}. ${t.name}: ${t.description}`)
94
- .join('\n');
95
- return (`Connected to MCP server '${serverName}'. ${tools.length} tools are now available.${tools.length ? `\nAvailable tools for this server:\n${toolDetails}` : ''}`);
96
- }
97
- catch (err) {
98
- logger.error(`Error connecting to server '${serverName}':`, err);
99
- return `Failed to connect to server '${serverName}': ${String(err)}`;
100
- }
101
- }
102
- async getActiveServer() {
103
- return this.activeServer
104
- ? `Currently active MCP server: ${this.activeServer}`
105
- : 'No MCP server is currently active. Use connect_to_mcp_server to connect.';
106
- }
107
- async disconnectFromServer() {
108
- if (!this.activeServer) {
109
- return 'No MCP server is currently active, so there\'s nothing to disconnect from.';
110
- }
111
- const was = this.activeServer;
112
- this.activeServer = null;
113
- return `Successfully disconnected from MCP server '${was}'.`;
114
- }
115
- async getActiveServerTools() {
116
- return this.activeServer ? this.serverTools[this.activeServer] ?? [] : [];
117
- }
118
- async getAllTools() {
119
- return [...(await this.getServerManagementTools()), ...(await this.getActiveServerTools())];
120
- }
121
- async ensureSession(serverName, createIfMissing = false) {
122
- try {
123
- return this.client.getSession(serverName);
124
- }
125
- catch {
126
- if (!createIfMissing)
127
- return undefined;
128
- return this.client.createSession ? await this.client.createSession(serverName) : undefined;
129
- }
130
- }
131
- async ensureToolsFetched(serverName, connector) {
132
- if (this.serverTools[serverName])
133
- return this.serverTools[serverName];
134
- const session = connector ? { connector } : await this.ensureSession(serverName, true);
135
- if (!session) {
136
- this.serverTools[serverName] = [];
137
- return [];
138
- }
139
- try {
140
- const tools = await this.adapter.createToolsFromConnectors([session.connector]);
141
- this.serverTools[serverName] = tools;
142
- this.initializedServers[serverName] = true;
143
- logger.debug(`Fetched ${tools.length} tools for server '${serverName}'.`);
144
- return tools;
145
- }
146
- catch (err) {
147
- logger.warning(`Could not fetch tools for server '${serverName}':`, err);
148
- this.serverTools[serverName] = [];
149
- return [];
150
- }
151
- }
152
- }