mcp-use 0.1.20 → 0.3.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 (140) hide show
  1. package/dist/chunk-2HFIPY7C.js +429 -0
  2. package/dist/chunk-4DEFXVWT.js +680 -0
  3. package/dist/chunk-JXLQRAW2.js +532 -0
  4. package/dist/chunk-SHUYVCID.js +6 -0
  5. package/dist/chunk-YUSC6R6V.js +299 -0
  6. package/dist/index.cjs +5762 -0
  7. package/dist/index.d.ts +7 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +3767 -22
  10. package/dist/langfuse-YA2S23SM.js +13 -0
  11. package/dist/src/agents/remote.d.ts.map +1 -1
  12. package/dist/src/agents/utils/ai_sdk.d.ts.map +1 -1
  13. package/dist/src/auth/browser-provider.d.ts +52 -0
  14. package/dist/src/auth/browser-provider.d.ts.map +1 -0
  15. package/dist/src/auth/callback.d.ts +6 -0
  16. package/dist/src/auth/callback.d.ts.map +1 -0
  17. package/dist/src/auth/index.d.ts +7 -0
  18. package/dist/src/auth/index.d.ts.map +1 -0
  19. package/dist/src/auth/types.d.ts +18 -0
  20. package/dist/src/auth/types.d.ts.map +1 -0
  21. package/dist/src/browser.cjs +323 -0
  22. package/dist/src/browser.d.ts +8 -0
  23. package/dist/src/browser.d.ts.map +1 -0
  24. package/dist/src/browser.js +9 -0
  25. package/dist/src/client/base.d.ts +32 -0
  26. package/dist/src/client/base.d.ts.map +1 -0
  27. package/dist/src/client.d.ts +19 -16
  28. package/dist/src/client.d.ts.map +1 -1
  29. package/dist/src/logging.d.ts +1 -1
  30. package/dist/src/logging.d.ts.map +1 -1
  31. package/dist/src/oauth-helper.d.ts +125 -0
  32. package/dist/src/oauth-helper.d.ts.map +1 -0
  33. package/dist/src/react/index.cjs +986 -0
  34. package/dist/src/react/index.d.ts +9 -0
  35. package/dist/src/react/index.d.ts.map +1 -0
  36. package/dist/src/react/index.js +11 -0
  37. package/dist/src/react/types.d.ts +139 -0
  38. package/dist/src/react/types.d.ts.map +1 -0
  39. package/dist/src/react/useMcp.d.ts +3 -0
  40. package/dist/src/react/useMcp.d.ts.map +1 -0
  41. package/dist/src/server/index.cjs +566 -0
  42. package/dist/src/server/index.d.ts +3 -0
  43. package/dist/src/server/index.d.ts.map +1 -0
  44. package/dist/src/server/index.js +9 -0
  45. package/dist/src/server/logging.d.ts +16 -0
  46. package/dist/src/server/logging.d.ts.map +1 -0
  47. package/dist/src/server/mcp-server.d.ts +282 -0
  48. package/dist/src/server/mcp-server.d.ts.map +1 -0
  49. package/dist/src/server/types.d.ts +47 -0
  50. package/dist/src/server/types.d.ts.map +1 -0
  51. package/dist/src/utils/assert.d.ts +8 -0
  52. package/dist/src/utils/assert.d.ts.map +1 -0
  53. package/dist/tsconfig.tsbuildinfo +1 -0
  54. package/package.json +72 -40
  55. package/dist/examples/add_server_tool.d.ts +0 -8
  56. package/dist/examples/add_server_tool.d.ts.map +0 -1
  57. package/dist/examples/add_server_tool.js +0 -79
  58. package/dist/examples/ai_sdk_example.d.ts +0 -23
  59. package/dist/examples/ai_sdk_example.d.ts.map +0 -1
  60. package/dist/examples/ai_sdk_example.js +0 -213
  61. package/dist/examples/airbnb_use.d.ts +0 -10
  62. package/dist/examples/airbnb_use.d.ts.map +0 -1
  63. package/dist/examples/airbnb_use.js +0 -43
  64. package/dist/examples/blender_use.d.ts +0 -15
  65. package/dist/examples/blender_use.d.ts.map +0 -1
  66. package/dist/examples/blender_use.js +0 -39
  67. package/dist/examples/browser_use.d.ts +0 -10
  68. package/dist/examples/browser_use.d.ts.map +0 -1
  69. package/dist/examples/browser_use.js +0 -46
  70. package/dist/examples/chat_example.d.ts +0 -10
  71. package/dist/examples/chat_example.d.ts.map +0 -1
  72. package/dist/examples/chat_example.js +0 -86
  73. package/dist/examples/filesystem_use.d.ts +0 -11
  74. package/dist/examples/filesystem_use.d.ts.map +0 -1
  75. package/dist/examples/filesystem_use.js +0 -43
  76. package/dist/examples/http_example.d.ts +0 -18
  77. package/dist/examples/http_example.d.ts.map +0 -1
  78. package/dist/examples/http_example.js +0 -37
  79. package/dist/examples/mcp_everything.d.ts +0 -6
  80. package/dist/examples/mcp_everything.d.ts.map +0 -1
  81. package/dist/examples/mcp_everything.js +0 -25
  82. package/dist/examples/multi_server_example.d.ts +0 -10
  83. package/dist/examples/multi_server_example.d.ts.map +0 -1
  84. package/dist/examples/multi_server_example.js +0 -51
  85. package/dist/examples/observability.d.ts +0 -6
  86. package/dist/examples/observability.d.ts.map +0 -1
  87. package/dist/examples/observability.js +0 -50
  88. package/dist/examples/stream_example.d.ts +0 -12
  89. package/dist/examples/stream_example.d.ts.map +0 -1
  90. package/dist/examples/stream_example.js +0 -198
  91. package/dist/examples/structured_output.d.ts +0 -9
  92. package/dist/examples/structured_output.d.ts.map +0 -1
  93. package/dist/examples/structured_output.js +0 -95
  94. package/dist/src/adapters/base.js +0 -124
  95. package/dist/src/adapters/index.js +0 -2
  96. package/dist/src/adapters/langchain_adapter.js +0 -49
  97. package/dist/src/agents/base.js +0 -9
  98. package/dist/src/agents/index.js +0 -3
  99. package/dist/src/agents/mcp_agent.js +0 -1002
  100. package/dist/src/agents/prompts/system_prompt_builder.js +0 -40
  101. package/dist/src/agents/prompts/templates.js +0 -39
  102. package/dist/src/agents/remote.js +0 -264
  103. package/dist/src/agents/utils/ai_sdk.js +0 -62
  104. package/dist/src/agents/utils/index.js +0 -1
  105. package/dist/src/client.js +0 -133
  106. package/dist/src/config.js +0 -34
  107. package/dist/src/connectors/base.js +0 -143
  108. package/dist/src/connectors/http.js +0 -150
  109. package/dist/src/connectors/index.js +0 -4
  110. package/dist/src/connectors/stdio.js +0 -68
  111. package/dist/src/connectors/websocket.js +0 -157
  112. package/dist/src/logging.js +0 -217
  113. package/dist/src/managers/index.js +0 -2
  114. package/dist/src/managers/server_manager.js +0 -106
  115. package/dist/src/managers/tools/acquire_active_mcp_server.js +0 -17
  116. package/dist/src/managers/tools/add_server_from_config.js +0 -40
  117. package/dist/src/managers/tools/base.js +0 -17
  118. package/dist/src/managers/tools/connect_mcp_server.js +0 -46
  119. package/dist/src/managers/tools/index.js +0 -5
  120. package/dist/src/managers/tools/list_mcp_servers.js +0 -33
  121. package/dist/src/managers/tools/release_mcp_server_connection.js +0 -19
  122. package/dist/src/observability/index.js +0 -12
  123. package/dist/src/observability/langfuse.js +0 -211
  124. package/dist/src/observability/manager.js +0 -199
  125. package/dist/src/observability/types.js +0 -4
  126. package/dist/src/session.js +0 -23
  127. package/dist/src/task_managers/base.js +0 -127
  128. package/dist/src/task_managers/index.js +0 -5
  129. package/dist/src/task_managers/sse.js +0 -43
  130. package/dist/src/task_managers/stdio.js +0 -51
  131. package/dist/src/task_managers/streamable_http.js +0 -50
  132. package/dist/src/task_managers/websocket.js +0 -67
  133. package/dist/src/telemetry/events.js +0 -44
  134. package/dist/src/telemetry/index.js +0 -8
  135. package/dist/src/telemetry/telemetry.js +0 -324
  136. package/dist/src/telemetry/utils.js +0 -39
  137. package/dist/tests/ai_sdk_compatibility.test.js +0 -214
  138. package/dist/tests/stream_events.test.js +0 -307
  139. package/dist/tests/stream_events_simple.test.js +0 -179
  140. package/dist/vitest.config.js +0 -21
@@ -1,217 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { createLogger, format, transports } from 'winston';
4
- const { combine, timestamp, label, printf, colorize, splat } = format;
5
- const DEFAULT_LOGGER_NAME = 'mcp-use';
6
- // Environment detection function (similar to telemetry)
7
- function isNodeJSEnvironment() {
8
- try {
9
- // Check for Cloudflare Workers specifically
10
- if (typeof navigator !== 'undefined' && navigator.userAgent?.includes('Cloudflare-Workers')) {
11
- return false;
12
- }
13
- // Check for other edge runtime indicators
14
- if (typeof globalThis.EdgeRuntime !== 'undefined' || typeof globalThis.Deno !== 'undefined') {
15
- return false;
16
- }
17
- // Check for Node.js specific globals that are not available in edge environments
18
- const hasNodeGlobals = (typeof process !== 'undefined'
19
- && typeof process.platform !== 'undefined'
20
- && typeof __dirname !== 'undefined');
21
- // Check for Node.js modules
22
- const hasNodeModules = (typeof fs !== 'undefined'
23
- && typeof createLogger === 'function');
24
- return hasNodeGlobals && hasNodeModules;
25
- }
26
- catch {
27
- return false;
28
- }
29
- }
30
- // Simple console logger for non-Node.js environments
31
- class SimpleConsoleLogger {
32
- _level;
33
- name;
34
- constructor(name = DEFAULT_LOGGER_NAME, level = 'info') {
35
- this.name = name;
36
- this._level = level;
37
- }
38
- shouldLog(level) {
39
- const levels = ['error', 'warn', 'info', 'http', 'verbose', 'debug', 'silly'];
40
- const currentIndex = levels.indexOf(this._level);
41
- const messageIndex = levels.indexOf(level);
42
- return messageIndex <= currentIndex;
43
- }
44
- formatMessage(level, message) {
45
- const timestamp = new Date().toLocaleTimeString('en-US', { hour12: false });
46
- return `${timestamp} [${this.name}] ${level}: ${message}`;
47
- }
48
- error(message) {
49
- if (this.shouldLog('error')) {
50
- console.error(this.formatMessage('error', message));
51
- }
52
- }
53
- warn(message) {
54
- if (this.shouldLog('warn')) {
55
- console.warn(this.formatMessage('warn', message));
56
- }
57
- }
58
- info(message) {
59
- if (this.shouldLog('info')) {
60
- console.info(this.formatMessage('info', message)); // eslint-disable-line no-console
61
- }
62
- }
63
- debug(message) {
64
- if (this.shouldLog('debug')) {
65
- console.debug(this.formatMessage('debug', message)); // eslint-disable-line no-console
66
- }
67
- }
68
- http(message) {
69
- if (this.shouldLog('http')) {
70
- console.log(this.formatMessage('http', message)); // eslint-disable-line no-console
71
- }
72
- }
73
- verbose(message) {
74
- if (this.shouldLog('verbose')) {
75
- console.log(this.formatMessage('verbose', message)); // eslint-disable-line no-console
76
- }
77
- }
78
- silly(message) {
79
- if (this.shouldLog('silly')) {
80
- console.log(this.formatMessage('silly', message)); // eslint-disable-line no-console
81
- }
82
- }
83
- // Make it compatible with Winston interface
84
- get level() {
85
- return this._level;
86
- }
87
- set level(newLevel) {
88
- this._level = newLevel;
89
- }
90
- }
91
- function resolveLevel(env) {
92
- // Safely access environment variables
93
- const envValue = (typeof process !== 'undefined' && process.env) ? env : undefined;
94
- switch (envValue?.trim()) {
95
- case '2':
96
- return 'debug';
97
- case '1':
98
- return 'info';
99
- default:
100
- return 'info';
101
- }
102
- }
103
- const minimalFormatter = printf(({ level, message, label, timestamp }) => {
104
- return `${timestamp} [${label}] ${level}: ${message}`;
105
- });
106
- const detailedFormatter = printf(({ level, message, label, timestamp }) => {
107
- return `${timestamp} [${label}] ${level.toUpperCase()}: ${message}`;
108
- });
109
- const emojiFormatter = printf(({ level, message, label, timestamp }) => {
110
- return `${timestamp} [${label}] ${level.toUpperCase()}: ${message}`;
111
- });
112
- export class Logger {
113
- static instances = {};
114
- static simpleInstances = {};
115
- static currentFormat = 'minimal';
116
- static get(name = DEFAULT_LOGGER_NAME) {
117
- // Use simple console logger in non-Node.js environments
118
- if (!isNodeJSEnvironment()) {
119
- if (!this.simpleInstances[name]) {
120
- const debugEnv = (typeof process !== 'undefined' && process.env?.DEBUG) || undefined;
121
- this.simpleInstances[name] = new SimpleConsoleLogger(name, resolveLevel(debugEnv));
122
- }
123
- return this.simpleInstances[name];
124
- }
125
- // Use Winston logger in Node.js environments
126
- if (!this.instances[name]) {
127
- this.instances[name] = createLogger({
128
- level: resolveLevel(process.env.DEBUG),
129
- format: combine(colorize(), splat(), label({ label: name }), timestamp({ format: 'HH:mm:ss' }), this.getFormatter()),
130
- transports: [],
131
- });
132
- }
133
- return this.instances[name];
134
- }
135
- static getFormatter() {
136
- switch (this.currentFormat) {
137
- case 'minimal':
138
- return minimalFormatter;
139
- case 'detailed':
140
- return detailedFormatter;
141
- case 'emoji':
142
- return emojiFormatter;
143
- default:
144
- return minimalFormatter;
145
- }
146
- }
147
- static configure(options = {}) {
148
- const { level, console = true, file, format = 'minimal' } = options;
149
- const debugEnv = (typeof process !== 'undefined' && process.env?.DEBUG) || undefined;
150
- const resolvedLevel = level ?? resolveLevel(debugEnv);
151
- this.currentFormat = format;
152
- const root = this.get();
153
- root.level = resolvedLevel;
154
- // For non-Node.js environments, just update the level
155
- if (!isNodeJSEnvironment()) {
156
- Object.values(this.simpleInstances).forEach((logger) => {
157
- logger.level = resolvedLevel;
158
- });
159
- return;
160
- }
161
- // Winston-specific configuration for Node.js environments
162
- const winstonRoot = root;
163
- winstonRoot.clear();
164
- if (console) {
165
- winstonRoot.add(new transports.Console());
166
- }
167
- if (file) {
168
- const dir = path.dirname(path.resolve(file));
169
- if (!fs.existsSync(dir)) {
170
- fs.mkdirSync(dir, { recursive: true });
171
- }
172
- winstonRoot.add(new transports.File({ filename: file }));
173
- }
174
- // Update all existing Winston loggers with new format
175
- Object.values(this.instances).forEach((logger) => {
176
- if (logger && 'format' in logger) {
177
- logger.level = resolvedLevel;
178
- logger.format = combine(colorize(), splat(), label({ label: DEFAULT_LOGGER_NAME }), timestamp({ format: 'HH:mm:ss' }), this.getFormatter());
179
- }
180
- });
181
- }
182
- static setDebug(enabled) {
183
- let level;
184
- if (enabled === 2 || enabled === true)
185
- level = 'debug';
186
- else if (enabled === 1)
187
- level = 'info';
188
- else
189
- level = 'info';
190
- // Update both simple and Winston loggers
191
- Object.values(this.simpleInstances).forEach((logger) => {
192
- logger.level = level;
193
- });
194
- Object.values(this.instances).forEach((logger) => {
195
- if (logger) {
196
- logger.level = level;
197
- }
198
- });
199
- // Safely set environment variable
200
- if (typeof process !== 'undefined' && process.env) {
201
- process.env.DEBUG = enabled ? (enabled === true ? '2' : String(enabled)) : '0';
202
- }
203
- }
204
- static setFormat(format) {
205
- this.currentFormat = format;
206
- this.configure({ format });
207
- }
208
- }
209
- // Only configure Winston features if in Node.js environment
210
- if (isNodeJSEnvironment()) {
211
- Logger.configure();
212
- }
213
- else {
214
- // For non-Node.js environments, just initialize with defaults
215
- Logger.configure({ console: true });
216
- }
217
- export const logger = Logger.get();
@@ -1,2 +0,0 @@
1
- export * from './server_manager.js';
2
- export * from './tools/index.js';
@@ -1,106 +0,0 @@
1
- import { isEqual } from 'lodash-es';
2
- import { logger } from '../logging.js';
3
- import { AcquireActiveMCPServerTool } from './tools/acquire_active_mcp_server.js';
4
- import { AddMCPServerFromConfigTool } from './tools/add_server_from_config.js';
5
- import { ConnectMCPServerTool } from './tools/connect_mcp_server.js';
6
- import { ListMCPServersTool } from './tools/list_mcp_servers.js';
7
- import { ReleaseMCPServerConnectionTool } from './tools/release_mcp_server_connection.js';
8
- export class ServerManager {
9
- initializedServers = {};
10
- serverTools = {};
11
- client;
12
- adapter;
13
- activeServer = null;
14
- overrideManagementTools;
15
- constructor(client, adapter, managementTools) {
16
- this.client = client;
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.`);
23
- }
24
- logState(context) {
25
- const allServerNames = this.client.getServerNames();
26
- const activeSessionNames = Object.keys(this.client.getAllActiveSessions());
27
- if (allServerNames.length === 0) {
28
- logger.info('Server Manager State: No servers configured.');
29
- return;
30
- }
31
- const tableData = allServerNames.map(name => ({
32
- 'Server Name': name,
33
- 'Connected': activeSessionNames.includes(name) ? '✅' : '❌',
34
- 'Initialized': this.initializedServers[name] ? '✅' : '❌',
35
- 'Tool Count': this.serverTools[name]?.length ?? 0,
36
- 'Active': this.activeServer === name ? '✅' : '❌',
37
- }));
38
- logger.info(`Server Manager State: [${context}]`);
39
- console.table(tableData); // eslint-disable-line no-console
40
- }
41
- initialize() {
42
- const serverNames = this.client.getServerNames?.();
43
- if (serverNames.length === 0) {
44
- logger.warn('No MCP servers defined in client configuration');
45
- }
46
- }
47
- async prefetchServerTools() {
48
- const servers = this.client.getServerNames();
49
- for (const serverName of servers) {
50
- try {
51
- let session = null;
52
- session = this.client.getSession(serverName);
53
- logger.debug(`Using existing session for server '${serverName}' to prefetch tools.`);
54
- if (!session) {
55
- session = await this.client.createSession(serverName).catch((createSessionError) => {
56
- logger.warn(`Could not create session for '${serverName}' during prefetch: ${createSessionError}`);
57
- return null;
58
- });
59
- logger.debug(`Temporarily created session for '${serverName}' to prefetch tools.`);
60
- }
61
- if (session) {
62
- const connector = session.connector;
63
- let tools = [];
64
- try {
65
- tools = await this.adapter.createToolsFromConnectors([connector]);
66
- }
67
- catch (toolFetchError) {
68
- logger.error(`Failed to create tools from connector for server '${serverName}': ${toolFetchError}`);
69
- continue;
70
- }
71
- const cachedTools = this.serverTools[serverName];
72
- const toolsChanged = !cachedTools || !isEqual(cachedTools, tools);
73
- if (toolsChanged) {
74
- this.serverTools[serverName] = tools;
75
- this.initializedServers[serverName] = true;
76
- logger.debug(`Prefetched ${tools.length} tools for server '${serverName}'.`);
77
- }
78
- else {
79
- logger.debug(`Tools for server '${serverName}' unchanged, using cached version.`);
80
- }
81
- }
82
- }
83
- catch (outerError) {
84
- logger.error(`Error prefetching tools for server '${serverName}': ${outerError}`);
85
- }
86
- }
87
- }
88
- get tools() {
89
- if (logger.level === 'debug') {
90
- this.logState('Providing tools to agent');
91
- }
92
- const managementTools = this.overrideManagementTools ?? [
93
- new AddMCPServerFromConfigTool(this),
94
- new ListMCPServersTool(this),
95
- new ConnectMCPServerTool(this),
96
- new AcquireActiveMCPServerTool(this),
97
- new ReleaseMCPServerConnectionTool(this),
98
- ];
99
- if (this.activeServer && this.serverTools[this.activeServer]) {
100
- const activeTools = this.serverTools[this.activeServer];
101
- logger.debug(`Adding ${activeTools.length} tools from active server '${this.activeServer}'`);
102
- return [...managementTools, ...activeTools];
103
- }
104
- return managementTools;
105
- }
106
- }
@@ -1,17 +0,0 @@
1
- import { z } from 'zod';
2
- import { MCPServerTool } from './base.js';
3
- const PresentActiveServerSchema = z.object({});
4
- export class AcquireActiveMCPServerTool extends MCPServerTool {
5
- name = 'get_active_mcp_server';
6
- description = 'Get the currently active MCP (Model Context Protocol) server';
7
- schema = PresentActiveServerSchema;
8
- constructor(manager) {
9
- super(manager);
10
- }
11
- async _call() {
12
- if (!this.manager.activeServer) {
13
- return `No MCP server is currently active. Use connect_to_mcp_server to connect to a server.`;
14
- }
15
- return `Currently active MCP server: ${this.manager.activeServer}`;
16
- }
17
- }
@@ -1,40 +0,0 @@
1
- import { StructuredTool } from 'langchain/tools';
2
- import { z } from 'zod';
3
- import { logger } from '../../logging.js';
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
- 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
- }
@@ -1,17 +0,0 @@
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
- }
@@ -1,46 +0,0 @@
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
- }
@@ -1,5 +0,0 @@
1
- export * from './acquire_active_mcp_server.js';
2
- export * from './add_server_from_config.js';
3
- export * from './connect_mcp_server.js';
4
- export * from './list_mcp_servers.js';
5
- export * from './release_mcp_server_connection.js';
@@ -1,33 +0,0 @@
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
- }
@@ -1,19 +0,0 @@
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
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * Observability module for MCP-use.
3
- *
4
- * This module provides centralized observability management for LangChain agents,
5
- * supporting multiple platforms like Langfuse and Laminar.
6
- */
7
- // Import observability providers - order matters for initialization
8
- import './langfuse.js';
9
- // Re-export individual handlers for direct usage if needed
10
- export { langfuseClient, langfuseHandler, langfuseInitPromise, } from './langfuse.js';
11
- // Export the manager and its utilities
12
- export { createManager, getDefaultManager, ObservabilityManager, } from './manager.js';