mcp-use 1.3.11__py3-none-any.whl → 1.3.13__py3-none-any.whl
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.
Potentially problematic release.
This version of mcp-use might be problematic. Click here for more details.
- mcp_use/__init__.py +1 -1
- mcp_use/adapters/.deprecated +0 -0
- mcp_use/adapters/__init__.py +18 -7
- mcp_use/adapters/base.py +12 -185
- mcp_use/adapters/langchain_adapter.py +12 -264
- mcp_use/agents/adapters/__init__.py +10 -0
- mcp_use/agents/adapters/base.py +193 -0
- mcp_use/agents/adapters/langchain_adapter.py +228 -0
- mcp_use/agents/base.py +1 -1
- mcp_use/agents/managers/__init__.py +19 -0
- mcp_use/agents/managers/base.py +36 -0
- mcp_use/agents/managers/server_manager.py +131 -0
- mcp_use/agents/managers/tools/__init__.py +15 -0
- mcp_use/agents/managers/tools/base_tool.py +19 -0
- mcp_use/agents/managers/tools/connect_server.py +69 -0
- mcp_use/agents/managers/tools/disconnect_server.py +43 -0
- mcp_use/agents/managers/tools/get_active_server.py +29 -0
- mcp_use/agents/managers/tools/list_servers_tool.py +53 -0
- mcp_use/agents/managers/tools/search_tools.py +328 -0
- mcp_use/agents/mcpagent.py +88 -47
- mcp_use/agents/remote.py +168 -129
- mcp_use/auth/.deprecated +0 -0
- mcp_use/auth/__init__.py +19 -4
- mcp_use/auth/bearer.py +11 -12
- mcp_use/auth/oauth.py +11 -620
- mcp_use/auth/oauth_callback.py +16 -207
- mcp_use/client/__init__.py +1 -0
- mcp_use/client/auth/__init__.py +6 -0
- mcp_use/client/auth/bearer.py +23 -0
- mcp_use/client/auth/oauth.py +629 -0
- mcp_use/client/auth/oauth_callback.py +214 -0
- mcp_use/client/client.py +356 -0
- mcp_use/client/config.py +106 -0
- mcp_use/client/connectors/__init__.py +20 -0
- mcp_use/client/connectors/base.py +470 -0
- mcp_use/client/connectors/http.py +304 -0
- mcp_use/client/connectors/sandbox.py +332 -0
- mcp_use/client/connectors/stdio.py +109 -0
- mcp_use/client/connectors/utils.py +13 -0
- mcp_use/client/connectors/websocket.py +257 -0
- mcp_use/client/exceptions.py +31 -0
- mcp_use/client/middleware/__init__.py +50 -0
- mcp_use/client/middleware/logging.py +31 -0
- mcp_use/client/middleware/metrics.py +314 -0
- mcp_use/client/middleware/middleware.py +266 -0
- mcp_use/client/session.py +162 -0
- mcp_use/client/task_managers/__init__.py +20 -0
- mcp_use/client/task_managers/base.py +145 -0
- mcp_use/client/task_managers/sse.py +84 -0
- mcp_use/client/task_managers/stdio.py +69 -0
- mcp_use/client/task_managers/streamable_http.py +86 -0
- mcp_use/client/task_managers/websocket.py +68 -0
- mcp_use/client.py +12 -320
- mcp_use/config.py +20 -92
- mcp_use/connectors/.deprecated +0 -0
- mcp_use/connectors/__init__.py +46 -20
- mcp_use/connectors/base.py +12 -447
- mcp_use/connectors/http.py +13 -288
- mcp_use/connectors/sandbox.py +13 -297
- mcp_use/connectors/stdio.py +13 -96
- mcp_use/connectors/utils.py +15 -8
- mcp_use/connectors/websocket.py +13 -252
- mcp_use/exceptions.py +33 -18
- mcp_use/managers/.deprecated +0 -0
- mcp_use/managers/__init__.py +56 -17
- mcp_use/managers/base.py +13 -31
- mcp_use/managers/server_manager.py +13 -119
- mcp_use/managers/tools/__init__.py +45 -15
- mcp_use/managers/tools/base_tool.py +5 -16
- mcp_use/managers/tools/connect_server.py +5 -67
- mcp_use/managers/tools/disconnect_server.py +5 -41
- mcp_use/managers/tools/get_active_server.py +5 -26
- mcp_use/managers/tools/list_servers_tool.py +5 -51
- mcp_use/managers/tools/search_tools.py +17 -321
- mcp_use/middleware/.deprecated +0 -0
- mcp_use/middleware/__init__.py +89 -0
- mcp_use/middleware/logging.py +19 -0
- mcp_use/middleware/metrics.py +41 -0
- mcp_use/middleware/middleware.py +55 -0
- mcp_use/session.py +13 -149
- mcp_use/task_managers/.deprecated +0 -0
- mcp_use/task_managers/__init__.py +48 -20
- mcp_use/task_managers/base.py +13 -140
- mcp_use/task_managers/sse.py +13 -79
- mcp_use/task_managers/stdio.py +13 -64
- mcp_use/task_managers/streamable_http.py +15 -81
- mcp_use/task_managers/websocket.py +13 -63
- mcp_use/telemetry/events.py +58 -0
- mcp_use/telemetry/telemetry.py +71 -1
- mcp_use/types/.deprecated +0 -0
- mcp_use/types/sandbox.py +13 -18
- {mcp_use-1.3.11.dist-info → mcp_use-1.3.13.dist-info}/METADATA +66 -40
- mcp_use-1.3.13.dist-info/RECORD +109 -0
- mcp_use-1.3.11.dist-info/RECORD +0 -60
- mcp_use-1.3.11.dist-info/licenses/LICENSE +0 -21
- /mcp_use/{observability → agents/observability}/__init__.py +0 -0
- /mcp_use/{observability → agents/observability}/callbacks_manager.py +0 -0
- /mcp_use/{observability → agents/observability}/laminar.py +0 -0
- /mcp_use/{observability → agents/observability}/langfuse.py +0 -0
- {mcp_use-1.3.11.dist-info → mcp_use-1.3.13.dist-info}/WHEEL +0 -0
- {mcp_use-1.3.11.dist-info → mcp_use-1.3.13.dist-info}/entry_points.txt +0 -0
|
@@ -1,124 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
# mcp_use/managers/server_manager.py
|
|
2
|
+
import warnings
|
|
2
3
|
|
|
3
|
-
from
|
|
4
|
-
from mcp_use.logging import logger
|
|
4
|
+
from typing_extensions import deprecated
|
|
5
5
|
|
|
6
|
-
from
|
|
7
|
-
from .base import BaseServerManager
|
|
8
|
-
from .tools import ConnectServerTool, DisconnectServerTool, GetActiveServerTool, ListServersTool, SearchToolsTool
|
|
6
|
+
from mcp_use.agents.managers.server_manager import ServerManager as _ServerManager
|
|
9
7
|
|
|
8
|
+
warnings.warn(
|
|
9
|
+
"mcp_use.managers.server_manager is deprecated. "
|
|
10
|
+
"Use mcp_use.agents.managers.server_manager. "
|
|
11
|
+
"This import will be removed in version 1.4.0",
|
|
12
|
+
DeprecationWarning,
|
|
13
|
+
stacklevel=2,
|
|
14
|
+
)
|
|
10
15
|
|
|
11
|
-
class ServerManager(BaseServerManager):
|
|
12
|
-
"""Manages MCP servers and provides tools for server selection and management.
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
def __init__(self, client: MCPClient, adapter: BaseAdapter) -> None:
|
|
19
|
-
"""Initialize the server manager.
|
|
20
|
-
|
|
21
|
-
Args:
|
|
22
|
-
client: The MCPClient instance managing server connections
|
|
23
|
-
adapter: The LangChainAdapter for converting MCP tools to LangChain tools
|
|
24
|
-
"""
|
|
25
|
-
self.client = client
|
|
26
|
-
self.adapter = adapter
|
|
27
|
-
self.active_server: str | None = None
|
|
28
|
-
self.initialized_servers: dict[str, bool] = {}
|
|
29
|
-
self._server_tools: dict[str, list[BaseTool]] = {}
|
|
30
|
-
|
|
31
|
-
async def initialize(self) -> None:
|
|
32
|
-
"""Initialize the server manager and prepare server management tools."""
|
|
33
|
-
# Make sure we have server configurations
|
|
34
|
-
if not self.client.get_server_names():
|
|
35
|
-
logger.warning("No MCP servers defined in client configuration")
|
|
36
|
-
|
|
37
|
-
async def _prefetch_server_tools(self) -> None:
|
|
38
|
-
"""Pre-fetch tools for all servers to populate the tool search index."""
|
|
39
|
-
servers = self.client.get_server_names()
|
|
40
|
-
for server_name in servers:
|
|
41
|
-
try:
|
|
42
|
-
# Only create session if needed, don't set active
|
|
43
|
-
session = None
|
|
44
|
-
try:
|
|
45
|
-
session = self.client.get_session(server_name)
|
|
46
|
-
logger.debug(f"Using existing session for server '{server_name}' to prefetch tools.")
|
|
47
|
-
except ValueError:
|
|
48
|
-
try:
|
|
49
|
-
session = await self.client.create_session(server_name)
|
|
50
|
-
logger.debug(f"Temporarily created session for '{server_name}' to prefetch tools")
|
|
51
|
-
except Exception:
|
|
52
|
-
logger.warning(f"Could not create session for '{server_name}' during prefetch")
|
|
53
|
-
continue
|
|
54
|
-
|
|
55
|
-
# Fetch tools if session is available
|
|
56
|
-
if session:
|
|
57
|
-
connector = session.connector
|
|
58
|
-
tools = await self.adapter._create_tools_from_connectors([connector])
|
|
59
|
-
|
|
60
|
-
# Check if this server's tools have changed
|
|
61
|
-
if server_name not in self._server_tools or self._server_tools[server_name] != tools:
|
|
62
|
-
self._server_tools[server_name] = tools # Cache tools
|
|
63
|
-
self.initialized_servers[server_name] = True # Mark as initialized
|
|
64
|
-
logger.debug(f"Prefetched {len(tools)} tools for server '{server_name}'.")
|
|
65
|
-
else:
|
|
66
|
-
logger.debug(f"Tools for server '{server_name}' unchanged, using cached version.")
|
|
67
|
-
except Exception as e:
|
|
68
|
-
logger.error(f"Error prefetching tools for server '{server_name}': {e}")
|
|
69
|
-
|
|
70
|
-
def get_active_server_tools(self) -> list[BaseTool]:
|
|
71
|
-
"""Get tools from the currently active server.
|
|
72
|
-
|
|
73
|
-
Returns:
|
|
74
|
-
List of tools from the active server, or empty list if no server is active
|
|
75
|
-
"""
|
|
76
|
-
if self.active_server and self.active_server in self._server_tools:
|
|
77
|
-
return self._server_tools[self.active_server]
|
|
78
|
-
return []
|
|
79
|
-
|
|
80
|
-
def get_management_tools(self) -> list[BaseTool]:
|
|
81
|
-
"""Get the server management tools.
|
|
82
|
-
|
|
83
|
-
Returns:
|
|
84
|
-
List of server management tools
|
|
85
|
-
"""
|
|
86
|
-
return [
|
|
87
|
-
ListServersTool(self),
|
|
88
|
-
ConnectServerTool(self),
|
|
89
|
-
GetActiveServerTool(self),
|
|
90
|
-
DisconnectServerTool(self),
|
|
91
|
-
SearchToolsTool(self),
|
|
92
|
-
]
|
|
93
|
-
|
|
94
|
-
def has_tool_changes(self, current_tool_names: set[str]) -> bool:
|
|
95
|
-
"""Check if the available tools have changed.
|
|
96
|
-
|
|
97
|
-
Args:
|
|
98
|
-
current_tool_names: Set of currently known tool names
|
|
99
|
-
|
|
100
|
-
Returns:
|
|
101
|
-
True if tools have changed, False otherwise
|
|
102
|
-
"""
|
|
103
|
-
new_tool_names = {tool.name for tool in self.tools}
|
|
104
|
-
return new_tool_names != current_tool_names
|
|
105
|
-
|
|
106
|
-
@property
|
|
107
|
-
def tools(self) -> list[BaseTool]:
|
|
108
|
-
"""Get all server management tools and tools from the active server.
|
|
109
|
-
|
|
110
|
-
Returns:
|
|
111
|
-
list of LangChain tools for server management plus tools from active server
|
|
112
|
-
"""
|
|
113
|
-
management_tools = self.get_management_tools()
|
|
114
|
-
|
|
115
|
-
# Add tools from the active server if available
|
|
116
|
-
if self.active_server and self.active_server in self._server_tools:
|
|
117
|
-
server_tools = self._server_tools[self.active_server]
|
|
118
|
-
logger.debug(f"Including {len(server_tools)} tools from active server '{self.active_server}'")
|
|
119
|
-
logger.debug(f"Server tools: {[tool.name for tool in server_tools]}")
|
|
120
|
-
return management_tools + server_tools
|
|
121
|
-
else:
|
|
122
|
-
logger.debug("No active server - returning only management tools")
|
|
123
|
-
|
|
124
|
-
return management_tools
|
|
17
|
+
@deprecated("Use mcp_use.agents.managers.server_manager.ServerManager")
|
|
18
|
+
class ServerManager(_ServerManager): ...
|
|
@@ -1,15 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
from
|
|
3
|
-
|
|
4
|
-
from .
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
# mcp_use/managers/tools/__init__.py
|
|
2
|
+
from typing_extensions import deprecated
|
|
3
|
+
|
|
4
|
+
from mcp_use.agents.managers.tools import (
|
|
5
|
+
ConnectServerTool as _ConnectServerTool,
|
|
6
|
+
)
|
|
7
|
+
from mcp_use.agents.managers.tools import (
|
|
8
|
+
DisconnectServerTool as _DisconnectServerTool,
|
|
9
|
+
)
|
|
10
|
+
from mcp_use.agents.managers.tools import (
|
|
11
|
+
GetActiveServerTool as _GetActiveServerTool,
|
|
12
|
+
)
|
|
13
|
+
from mcp_use.agents.managers.tools import (
|
|
14
|
+
ListServersTool as _ListServersTool,
|
|
15
|
+
)
|
|
16
|
+
from mcp_use.agents.managers.tools import (
|
|
17
|
+
MCPServerTool as _MCPServerTool,
|
|
18
|
+
)
|
|
19
|
+
from mcp_use.agents.managers.tools import (
|
|
20
|
+
SearchToolsTool as _SearchToolsTool,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@deprecated("Use mcp_use.agents.managers.tools.MCPServerTool")
|
|
25
|
+
class MCPServerTool(_MCPServerTool): ...
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@deprecated("Use mcp_use.agents.managers.tools.ConnectServerTool")
|
|
29
|
+
class ConnectServerTool(_ConnectServerTool): ...
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@deprecated("Use mcp_use.agents.managers.tools.DisconnectServerTool")
|
|
33
|
+
class DisconnectServerTool(_DisconnectServerTool): ...
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@deprecated("Use mcp_use.agents.managers.tools.GetActiveServerTool")
|
|
37
|
+
class GetActiveServerTool(_GetActiveServerTool): ...
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@deprecated("Use mcp_use.agents.managers.tools.ListServersTool")
|
|
41
|
+
class ListServersTool(_ListServersTool): ...
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@deprecated("Use mcp_use.agents.managers.tools.SearchToolsTool")
|
|
45
|
+
class SearchToolsTool(_SearchToolsTool): ...
|
|
@@ -1,19 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
# mcp_use/managers/tools/base_tool.py
|
|
2
|
+
from typing_extensions import deprecated
|
|
2
3
|
|
|
3
|
-
from
|
|
4
|
+
from mcp_use.agents.managers.tools.base_tool import MCPServerTool as _MCPServerTool
|
|
4
5
|
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
name: ClassVar[str] = "mcp_server_tool"
|
|
10
|
-
description: ClassVar[str] = "Base tool for MCP server operations."
|
|
11
|
-
|
|
12
|
-
def __init__(self, server_manager):
|
|
13
|
-
"""Initialize with server manager."""
|
|
14
|
-
super().__init__()
|
|
15
|
-
self._server_manager = server_manager
|
|
16
|
-
|
|
17
|
-
@property
|
|
18
|
-
def server_manager(self):
|
|
19
|
-
return self._server_manager
|
|
7
|
+
@deprecated("Use mcp_use.agents.managers.tools.base_tool.MCPServerTool")
|
|
8
|
+
class MCPServerTool(_MCPServerTool): ...
|
|
@@ -1,70 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
# mcp_use/managers/tools/connect_server.py
|
|
2
|
+
from typing_extensions import deprecated
|
|
2
3
|
|
|
3
|
-
from
|
|
4
|
+
from mcp_use.agents.managers.tools.connect_server import ConnectServerTool as _ConnectServerTool
|
|
4
5
|
|
|
5
|
-
from mcp_use.errors.error_formatting import format_error
|
|
6
|
-
from mcp_use.logging import logger
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class ServerActionInput(BaseModel):
|
|
12
|
-
"""Base input for server-related actions"""
|
|
13
|
-
|
|
14
|
-
server_name: str = Field(description="The name of the MCP server")
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class ConnectServerTool(MCPServerTool):
|
|
18
|
-
"""Tool for connecting to a specific MCP server."""
|
|
19
|
-
|
|
20
|
-
name: ClassVar[str] = "connect_to_mcp_server"
|
|
21
|
-
description: ClassVar[str] = (
|
|
22
|
-
"Connect to a specific MCP (Model Context Protocol) server to use its "
|
|
23
|
-
"tools. Use this tool to connect to a specific server and use its tools."
|
|
24
|
-
)
|
|
25
|
-
args_schema: ClassVar[type[BaseModel]] = ServerActionInput
|
|
26
|
-
|
|
27
|
-
async def _arun(self, server_name: str) -> str:
|
|
28
|
-
"""Connect to a specific MCP server."""
|
|
29
|
-
# Check if server exists
|
|
30
|
-
servers = self.server_manager.client.get_server_names()
|
|
31
|
-
if server_name not in servers:
|
|
32
|
-
available = ", ".join(servers) if servers else "none"
|
|
33
|
-
return f"Server '{server_name}' not found. Available servers: {available}"
|
|
34
|
-
|
|
35
|
-
# If we're already connected to this server, just return
|
|
36
|
-
if self.server_manager.active_server == server_name:
|
|
37
|
-
return f"Already connected to MCP server '{server_name}'"
|
|
38
|
-
|
|
39
|
-
try:
|
|
40
|
-
# Create or get session for this server
|
|
41
|
-
try:
|
|
42
|
-
session = self.server_manager.client.get_session(server_name)
|
|
43
|
-
logger.debug(f"Using existing session for server '{server_name}'")
|
|
44
|
-
except ValueError:
|
|
45
|
-
logger.debug(f"Creating new session for server '{server_name}'")
|
|
46
|
-
session = await self.server_manager.client.create_session(server_name)
|
|
47
|
-
|
|
48
|
-
# Set as active server
|
|
49
|
-
self.server_manager.active_server = server_name
|
|
50
|
-
|
|
51
|
-
# Initialize server tools if not already initialized
|
|
52
|
-
if server_name not in self.server_manager._server_tools:
|
|
53
|
-
connector = session.connector
|
|
54
|
-
self.server_manager._server_tools[
|
|
55
|
-
server_name
|
|
56
|
-
] = await self.server_manager.adapter._create_tools_from_connectors([connector])
|
|
57
|
-
self.server_manager.initialized_servers[server_name] = True
|
|
58
|
-
|
|
59
|
-
server_tools = self.server_manager._server_tools.get(server_name, [])
|
|
60
|
-
num_tools = len(server_tools)
|
|
61
|
-
|
|
62
|
-
return f"Connected to MCP server '{server_name}'. {num_tools} tools are now available."
|
|
63
|
-
|
|
64
|
-
except Exception as e:
|
|
65
|
-
logger.error(f"Error connecting to server '{server_name}': {e}")
|
|
66
|
-
return format_error(e, server_name=server_name)
|
|
67
|
-
|
|
68
|
-
def _run(self, server_name: str) -> str:
|
|
69
|
-
"""Synchronous version that raises a NotImplementedError - use _arun instead."""
|
|
70
|
-
raise NotImplementedError("ConnectServerTool requires async execution. Use _arun instead.")
|
|
7
|
+
@deprecated("Use mcp_use.agents.managers.tools.connect_server.ConnectServerTool")
|
|
8
|
+
class ConnectServerTool(_ConnectServerTool): ...
|
|
@@ -1,44 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
# mcp_use/managers/tools/disconnect_server.py
|
|
2
|
+
from typing_extensions import deprecated
|
|
2
3
|
|
|
3
|
-
from
|
|
4
|
+
from mcp_use.agents.managers.tools.disconnect_server import DisconnectServerTool as _DisconnectServerTool
|
|
4
5
|
|
|
5
|
-
from mcp_use.errors.error_formatting import format_error
|
|
6
|
-
from mcp_use.logging import logger
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class DisconnectServerInput(BaseModel):
|
|
12
|
-
"""Empty input for disconnecting from the current server"""
|
|
13
|
-
|
|
14
|
-
pass
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class DisconnectServerTool(MCPServerTool):
|
|
18
|
-
"""Tool for disconnecting from the currently active MCP server."""
|
|
19
|
-
|
|
20
|
-
name: ClassVar[str] = "disconnect_from_mcp_server"
|
|
21
|
-
description: ClassVar[str] = "Disconnect from the currently active MCP (Model Context Protocol) server"
|
|
22
|
-
args_schema: ClassVar[type[BaseModel]] = DisconnectServerInput
|
|
23
|
-
|
|
24
|
-
def _run(self, **kwargs) -> str:
|
|
25
|
-
"""Disconnect from the currently active MCP server."""
|
|
26
|
-
if not self.server_manager.active_server:
|
|
27
|
-
return "No MCP server is currently active, so there's nothing to disconnect from."
|
|
28
|
-
|
|
29
|
-
server_name = self.server_manager.active_server
|
|
30
|
-
try:
|
|
31
|
-
# Clear the active server
|
|
32
|
-
self.server_manager.active_server = None
|
|
33
|
-
|
|
34
|
-
# Note: We're not actually closing the session here, just 'deactivating'
|
|
35
|
-
# This way we keep the session cache without requiring reconnection if needed again
|
|
36
|
-
|
|
37
|
-
return f"Successfully disconnected from MCP server '{server_name}'."
|
|
38
|
-
except Exception as e:
|
|
39
|
-
logger.error(f"Error disconnecting from server '{server_name}': {e}")
|
|
40
|
-
return format_error(e, server_name=server_name)
|
|
41
|
-
|
|
42
|
-
async def _arun(self, **kwargs) -> str:
|
|
43
|
-
"""Async implementation of _run."""
|
|
44
|
-
return self._run(**kwargs)
|
|
7
|
+
@deprecated("Use mcp_use.agents.managers.tools.disconnect_server.DisconnectServerTool")
|
|
8
|
+
class DisconnectServerTool(_DisconnectServerTool): ...
|
|
@@ -1,29 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
# mcp_use/managers/tools/get_active_server.py
|
|
2
|
+
from typing_extensions import deprecated
|
|
2
3
|
|
|
3
|
-
from
|
|
4
|
+
from mcp_use.agents.managers.tools.get_active_server import GetActiveServerTool as _GetActiveServerTool
|
|
4
5
|
|
|
5
|
-
from .base_tool import MCPServerTool
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
class
|
|
9
|
-
"""Empty input for checking current server"""
|
|
10
|
-
|
|
11
|
-
pass
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class GetActiveServerTool(MCPServerTool):
|
|
15
|
-
"""Tool for getting the currently active MCP server."""
|
|
16
|
-
|
|
17
|
-
name: ClassVar[str] = "get_active_mcp_server"
|
|
18
|
-
description: ClassVar[str] = "Get the currently active MCP (Model Context Protocol) server"
|
|
19
|
-
args_schema: ClassVar[type[BaseModel]] = CurrentServerInput
|
|
20
|
-
|
|
21
|
-
def _run(self, **kwargs) -> str:
|
|
22
|
-
"""Get the currently active MCP server."""
|
|
23
|
-
if not self.server_manager.active_server:
|
|
24
|
-
return "No MCP server is currently active. Use connect_to_mcp_server to connect to a server."
|
|
25
|
-
return f"Currently active MCP server: {self.server_manager.active_server}"
|
|
26
|
-
|
|
27
|
-
async def _arun(self, **kwargs) -> str:
|
|
28
|
-
"""Async implementation of _run."""
|
|
29
|
-
return self._run(**kwargs)
|
|
7
|
+
@deprecated("Use mcp_use.agents.managers.tools.get_active_server.GetActiveServerTool")
|
|
8
|
+
class GetActiveServerTool(_GetActiveServerTool): ...
|
|
@@ -1,54 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
# mcp_use/managers/tools/list_servers_tool.py
|
|
2
|
+
from typing_extensions import deprecated
|
|
2
3
|
|
|
3
|
-
from
|
|
4
|
+
from mcp_use.agents.managers.tools.list_servers_tool import ListServersTool as _ListServersTool
|
|
4
5
|
|
|
5
|
-
from mcp_use.errors.error_formatting import format_error
|
|
6
|
-
from mcp_use.logging import logger
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class listServersInput(BaseModel):
|
|
12
|
-
"""Empty input for listing available servers"""
|
|
13
|
-
|
|
14
|
-
pass
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class ListServersTool(MCPServerTool):
|
|
18
|
-
"""Tool for listing available MCP servers."""
|
|
19
|
-
|
|
20
|
-
name: ClassVar[str] = "list_mcp_servers"
|
|
21
|
-
description: ClassVar[str] = (
|
|
22
|
-
"Lists all available MCP (Model Context Protocol) servers that can be "
|
|
23
|
-
"connected to, along with the tools available on each server. "
|
|
24
|
-
"Use this tool to discover servers and see what functionalities they offer."
|
|
25
|
-
)
|
|
26
|
-
args_schema: ClassVar[type[BaseModel]] = listServersInput
|
|
27
|
-
|
|
28
|
-
def _run(self, **kwargs) -> str:
|
|
29
|
-
"""List all available MCP servers along with their available tools."""
|
|
30
|
-
servers = self.server_manager.client.get_server_names()
|
|
31
|
-
if not servers:
|
|
32
|
-
return "No MCP servers are currently defined."
|
|
33
|
-
|
|
34
|
-
result = "Available MCP servers:\n"
|
|
35
|
-
for i, server_name in enumerate(servers):
|
|
36
|
-
active_marker = " (ACTIVE)" if server_name == self.server_manager.active_server else ""
|
|
37
|
-
result += f"{i + 1}. {server_name}{active_marker}\n"
|
|
38
|
-
|
|
39
|
-
tools: list = []
|
|
40
|
-
try:
|
|
41
|
-
# Check cache first
|
|
42
|
-
if server_name in self.server_manager._server_tools:
|
|
43
|
-
tools = self.server_manager._server_tools[server_name]
|
|
44
|
-
tool_count = len(tools)
|
|
45
|
-
result += f" {tool_count} tools available for this server\n"
|
|
46
|
-
except Exception as e:
|
|
47
|
-
logger.error(f"Unexpected error listing tools for server '{server_name}': {e}")
|
|
48
|
-
return format_error(e, server=server_name, operation="list_tools")
|
|
49
|
-
|
|
50
|
-
return result
|
|
51
|
-
|
|
52
|
-
async def _arun(self, **kwargs) -> str:
|
|
53
|
-
"""Async implementation of _run - calls the synchronous version."""
|
|
54
|
-
return self._run(**kwargs)
|
|
7
|
+
@deprecated("Use mcp_use.agents.managers.tools.list_servers_tool.ListServersTool")
|
|
8
|
+
class ListServersTool(_ListServersTool): ...
|