mcp-use 1.3.0__py3-none-any.whl → 1.3.1__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.

@@ -0,0 +1,214 @@
1
+ import logging
2
+ import os
3
+ import platform
4
+ import uuid
5
+ from collections.abc import Callable
6
+ from functools import wraps
7
+ from pathlib import Path
8
+ from typing import Any
9
+
10
+ from posthog import Posthog
11
+
12
+ from mcp_use.logging import MCP_USE_DEBUG
13
+ from mcp_use.telemetry.events import (
14
+ BaseTelemetryEvent,
15
+ MCPAgentExecutionEvent,
16
+ )
17
+ from mcp_use.telemetry.utils import get_package_version
18
+ from mcp_use.utils import singleton
19
+
20
+ logger = logging.getLogger(__name__)
21
+
22
+
23
+ def requires_telemetry(func: Callable) -> Callable:
24
+ """Decorator that skips function execution if telemetry is disabled"""
25
+
26
+ @wraps(func)
27
+ def wrapper(self, *args, **kwargs):
28
+ if not self._posthog_client:
29
+ return None
30
+ return func(self, *args, **kwargs)
31
+
32
+ return wrapper
33
+
34
+
35
+ def get_cache_home() -> Path:
36
+ """Get platform-appropriate cache directory."""
37
+ # XDG_CACHE_HOME for Linux and manually set envs
38
+ env_var: str | None = os.getenv("XDG_CACHE_HOME")
39
+ if env_var and (path := Path(env_var)).is_absolute():
40
+ return path
41
+
42
+ system = platform.system()
43
+ if system == "Windows":
44
+ appdata = os.getenv("LOCALAPPDATA") or os.getenv("APPDATA")
45
+ if appdata:
46
+ return Path(appdata)
47
+ return Path.home() / "AppData" / "Local"
48
+ elif system == "Darwin": # macOS
49
+ return Path.home() / "Library" / "Caches"
50
+ else: # Linux or other Unix
51
+ return Path.home() / ".cache"
52
+
53
+
54
+ @singleton
55
+ class Telemetry:
56
+ """
57
+ Service for capturing anonymized telemetry data.
58
+ If the environment variable `MCP_USE_ANONYMIZED_TELEMETRY=false`, telemetry will be disabled.
59
+ """
60
+
61
+ USER_ID_PATH = str(get_cache_home() / "mcp_use" / "telemetry_user_id")
62
+ PROJECT_API_KEY = "phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI"
63
+ HOST = "https://eu.i.posthog.com"
64
+ UNKNOWN_USER_ID = "UNKNOWN_USER_ID"
65
+
66
+ _curr_user_id = None
67
+
68
+ def __init__(self):
69
+ telemetry_disabled = os.getenv("MCP_USE_ANONYMIZED_TELEMETRY", "true").lower() == "false"
70
+
71
+ if telemetry_disabled:
72
+ self._posthog_client = None
73
+ logger.debug("Telemetry disabled")
74
+ else:
75
+ logger.info(
76
+ "Anonymized telemetry enabled. Set MCP_USE_ANONYMIZED_TELEMETRY=false to disable."
77
+ )
78
+ try:
79
+ self._posthog_client = Posthog(
80
+ project_api_key=self.PROJECT_API_KEY,
81
+ host=self.HOST,
82
+ disable_geoip=False,
83
+ enable_exception_autocapture=True,
84
+ )
85
+
86
+ # Silence posthog's logging unless debug mode (level 2)
87
+ if MCP_USE_DEBUG < 2:
88
+ posthog_logger = logging.getLogger("posthog")
89
+ posthog_logger.disabled = True
90
+
91
+ except Exception as e:
92
+ logger.warning(f"Failed to initialize telemetry: {e}")
93
+ self._posthog_client = None
94
+
95
+ @property
96
+ def user_id(self) -> str:
97
+ """Get or create a persistent anonymous user ID"""
98
+ if self._curr_user_id:
99
+ return self._curr_user_id
100
+
101
+ try:
102
+ if not os.path.exists(self.USER_ID_PATH):
103
+ os.makedirs(os.path.dirname(self.USER_ID_PATH), exist_ok=True)
104
+ with open(self.USER_ID_PATH, "w") as f:
105
+ new_user_id = str(uuid.uuid4())
106
+ f.write(new_user_id)
107
+ self._curr_user_id = new_user_id
108
+ else:
109
+ with open(self.USER_ID_PATH) as f:
110
+ self._curr_user_id = f.read().strip()
111
+ except Exception as e:
112
+ logger.debug(f"Failed to get/create user ID: {e}")
113
+ self._curr_user_id = self.UNKNOWN_USER_ID
114
+
115
+ return self._curr_user_id
116
+
117
+ @requires_telemetry
118
+ def capture(self, event: BaseTelemetryEvent) -> None:
119
+ """Capture a telemetry event"""
120
+ try:
121
+ # Add package version to all events
122
+ properties = event.properties.copy()
123
+ properties["mcp_use_version"] = get_package_version()
124
+
125
+ self._posthog_client.capture(
126
+ distinct_id=self.user_id, event=event.name, properties=properties
127
+ )
128
+ except Exception as e:
129
+ logger.debug(f"Failed to track event {event.name}: {e}")
130
+
131
+ @requires_telemetry
132
+ def track_event(self, event_name: str, properties: dict[str, Any] | None = None) -> None:
133
+ """Track a telemetry event with optional properties (legacy method)"""
134
+ try:
135
+ # Add package version to all events
136
+ event_properties = (properties or {}).copy()
137
+ event_properties["mcp_use_version"] = get_package_version()
138
+
139
+ self._posthog_client.capture(
140
+ distinct_id=self.user_id, event=event_name, properties=event_properties
141
+ )
142
+ except Exception as e:
143
+ logger.debug(f"Failed to track event {event_name}: {e}")
144
+
145
+ @requires_telemetry
146
+ def track_agent_execution(
147
+ self,
148
+ execution_method: str,
149
+ query: str,
150
+ success: bool,
151
+ model_provider: str,
152
+ model_name: str,
153
+ server_count: int,
154
+ server_identifiers: list[dict[str, str]],
155
+ total_tools_available: int,
156
+ tools_available_names: list[str],
157
+ max_steps_configured: int,
158
+ memory_enabled: bool,
159
+ use_server_manager: bool,
160
+ max_steps_used: int | None,
161
+ manage_connector: bool,
162
+ external_history_used: bool,
163
+ steps_taken: int | None = None,
164
+ tools_used_count: int | None = None,
165
+ tools_used_names: list[str] | None = None,
166
+ response: str | None = None,
167
+ execution_time_ms: int | None = None,
168
+ error_type: str | None = None,
169
+ conversation_history_length: int | None = None,
170
+ ) -> None:
171
+ """Track comprehensive agent execution"""
172
+ event = MCPAgentExecutionEvent(
173
+ execution_method=execution_method,
174
+ query=query,
175
+ success=success,
176
+ model_provider=model_provider,
177
+ model_name=model_name,
178
+ server_count=server_count,
179
+ server_identifiers=server_identifiers,
180
+ total_tools_available=total_tools_available,
181
+ tools_available_names=tools_available_names,
182
+ max_steps_configured=max_steps_configured,
183
+ memory_enabled=memory_enabled,
184
+ use_server_manager=use_server_manager,
185
+ max_steps_used=max_steps_used,
186
+ manage_connector=manage_connector,
187
+ external_history_used=external_history_used,
188
+ steps_taken=steps_taken,
189
+ tools_used_count=tools_used_count,
190
+ tools_used_names=tools_used_names,
191
+ response=response,
192
+ execution_time_ms=execution_time_ms,
193
+ error_type=error_type,
194
+ conversation_history_length=conversation_history_length,
195
+ )
196
+ self.capture(event)
197
+
198
+ @requires_telemetry
199
+ def flush(self) -> None:
200
+ """Flush any queued telemetry events"""
201
+ try:
202
+ self._posthog_client.flush()
203
+ logger.debug("PostHog client telemetry queue flushed")
204
+ except Exception as e:
205
+ logger.debug(f"Failed to flush PostHog client: {e}")
206
+
207
+ @requires_telemetry
208
+ def shutdown(self) -> None:
209
+ """Shutdown telemetry client and flush remaining events"""
210
+ try:
211
+ self._posthog_client.shutdown()
212
+ logger.debug("PostHog client shutdown successfully")
213
+ except Exception as e:
214
+ logger.debug(f"Error shutting down telemetry: {e}")
@@ -0,0 +1,48 @@
1
+ """
2
+ Utility functions for extracting model information from LangChain LLMs.
3
+
4
+ This module provides utilities to extract provider and model information
5
+ from LangChain language models for telemetry purposes.
6
+ """
7
+
8
+ import importlib.metadata
9
+
10
+ from langchain_core.language_models.base import BaseLanguageModel
11
+
12
+
13
+ def get_package_version() -> str:
14
+ """Get the current mcp-use package version."""
15
+ try:
16
+ return importlib.metadata.version("mcp-use")
17
+ except importlib.metadata.PackageNotFoundError:
18
+ return "unknown"
19
+
20
+
21
+ def get_model_provider(llm: BaseLanguageModel) -> str:
22
+ """Extract the model provider from LangChain LLM using BaseChatModel standards."""
23
+ # Use LangChain's standard _llm_type property for identification
24
+ return getattr(llm, "_llm_type", llm.__class__.__name__.lower())
25
+
26
+
27
+ def get_model_name(llm: BaseLanguageModel) -> str:
28
+ """Extract the model name from LangChain LLM using BaseChatModel standards."""
29
+ # First try _identifying_params which may contain model info
30
+ if hasattr(llm, "_identifying_params"):
31
+ identifying_params = llm._identifying_params
32
+ if isinstance(identifying_params, dict):
33
+ # Common keys that contain model names
34
+ for key in ["model", "model_name", "model_id", "deployment_name"]:
35
+ if key in identifying_params:
36
+ return str(identifying_params[key])
37
+
38
+ # Fallback to direct model attributes
39
+ return getattr(llm, "model", getattr(llm, "model_name", llm.__class__.__name__))
40
+
41
+
42
+ def extract_model_info(llm: BaseLanguageModel) -> tuple[str, str]:
43
+ """Extract both provider and model name from LangChain LLM.
44
+
45
+ Returns:
46
+ Tuple of (provider, model_name)
47
+ """
48
+ return get_model_provider(llm), get_model_name(llm)
mcp_use/utils.py ADDED
@@ -0,0 +1,27 @@
1
+ def singleton(cls):
2
+ """A decorator that implements the singleton pattern for a class.
3
+
4
+ This decorator ensures that only one instance of a class is ever created.
5
+ Subsequent attempts to create a new instance will return the existing one.
6
+
7
+ Usage:
8
+ @singleton
9
+ class MySingletonClass:
10
+ def __init__(self):
11
+ # ... initialization ...
12
+ pass
13
+
14
+ Args:
15
+ cls: The class to be decorated.
16
+
17
+ Returns:
18
+ A wrapper function that handles instance creation.
19
+ """
20
+ instance = [None]
21
+
22
+ def wrapper(*args, **kwargs):
23
+ if instance[0] is None:
24
+ instance[0] = cls(*args, **kwargs)
25
+ return instance[0]
26
+
27
+ return wrapper
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-use
3
- Version: 1.3.0
3
+ Version: 1.3.1
4
4
  Summary: MCP Library for LLMs
5
5
  Author-email: Pietro Zullo <pietro.zullo@gmail.com>
6
6
  License: MIT
@@ -18,7 +18,8 @@ Requires-Dist: aiohttp>=3.9.0
18
18
  Requires-Dist: jsonschema-pydantic>=0.1.0
19
19
  Requires-Dist: langchain-community>=0.0.10
20
20
  Requires-Dist: langchain>=0.1.0
21
- Requires-Dist: mcp>=1.5.0
21
+ Requires-Dist: mcp>=1.9.3
22
+ Requires-Dist: posthog>=4.8.0
22
23
  Requires-Dist: pydantic>=2.0.0
23
24
  Requires-Dist: python-dotenv>=1.0.0
24
25
  Requires-Dist: typing-extensions>=4.8.0
@@ -27,6 +28,7 @@ Provides-Extra: anthropic
27
28
  Requires-Dist: anthropic>=0.15.0; extra == 'anthropic'
28
29
  Provides-Extra: dev
29
30
  Requires-Dist: black>=23.9.0; extra == 'dev'
31
+ Requires-Dist: fastmcp; extra == 'dev'
30
32
  Requires-Dist: isort>=5.12.0; extra == 'dev'
31
33
  Requires-Dist: mypy>=1.5.0; extra == 'dev'
32
34
  Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
@@ -614,7 +616,7 @@ You'll also need an E2B API key. You can sign up at [e2b.dev](https://e2b.dev) t
614
616
 
615
617
  ## Configuration
616
618
 
617
- To enable sandboxed execution, use the `ClientOptions` parameter when creating your `MCPClient`:
619
+ To enable sandboxed execution, use the sandbox parameter when creating your `MCPClient`:
618
620
 
619
621
  ```python
620
622
  import asyncio
@@ -623,7 +625,6 @@ from dotenv import load_dotenv
623
625
  from langchain_openai import ChatOpenAI
624
626
  from mcp_use import MCPAgent, MCPClient
625
627
  from mcp_use.types.sandbox import SandboxOptions
626
- from mcp_use.types.clientoptions import ClientOptions
627
628
 
628
629
  async def main():
629
630
  # Load environment variables (needs E2B_API_KEY)
@@ -645,16 +646,12 @@ async def main():
645
646
  "sandbox_template_id": "base", # Use base template
646
647
  }
647
648
 
648
- # Create client options for sandboxed mode
649
- client_options: ClientOptions = {
650
- "is_sandboxed": True,
651
- "sandbox_options": sandbox_options
652
- }
653
-
654
649
  # Create client with sandboxed mode enabled
655
650
  client = MCPClient(
656
651
  config=server_config,
657
- options=client_options
652
+ sandbox=True,
653
+ sandbox_options=sandbox_options,
654
+
658
655
  )
659
656
 
660
657
  # Create agent with the sandboxed client
@@ -780,14 +777,6 @@ agent = MCPAgent(
780
777
 
781
778
  This is useful when you only need to see the agent's steps and decision-making process without all the low-level debug information from other components.
782
779
 
783
- # Roadmap
784
-
785
- <ul>
786
- <li>[x] Multiple Servers at once </li>
787
- <li>[x] Test remote connectors (http, ws)</li>
788
- <li>[ ] ... </li>
789
- </ul>
790
-
791
780
  ## Star History
792
781
 
793
782
  [![Star History Chart](https://api.star-history.com/svg?repos=pietrozullo/mcp-use&type=Date)](https://www.star-history.com/#pietrozullo/mcp-use&Date)
@@ -796,12 +785,77 @@ This is useful when you only need to see the agent's steps and decision-making p
796
785
 
797
786
  We love contributions! Feel free to open issues for bugs or feature requests. Look at [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
798
787
 
788
+ ## Contributors
789
+
790
+ Thanks to all our amazing contributors!
791
+
792
+ <a href="https://github.com/mcp-use/mcp-use/graphs/contributors">
793
+ <img src="https://contrib.rocks/image?repo=mcp-use/mcp-use" />
794
+ </a>
795
+
796
+
797
+ ## Top Starred Dependents
798
+
799
+ <!-- gh-dependents-info-used-by-start -->
800
+
801
+ <table>
802
+ <tr>
803
+ <th width="400">Repository</th>
804
+ <th>Stars</th>
805
+ </tr>
806
+ <tr>
807
+ <td><img src="https://avatars.githubusercontent.com/u/170207473?s=40&v=4" width="20" height="20" style="vertical-align: middle; margin-right: 8px;"> <a href="https://github.com/tavily-ai/meeting-prep-agent"><strong>tavily-ai/meeting-prep-agent</strong></a></td>
808
+ <td>⭐ 112</td>
809
+ </tr>
810
+ <tr>
811
+ <td><img src="https://avatars.githubusercontent.com/u/20041231?s=40&v=4" width="20" height="20" style="vertical-align: middle; margin-right: 8px;"> <a href="https://github.com/krishnaik06/MCP-CRASH-Course"><strong>krishnaik06/MCP-CRASH-Course</strong></a></td>
812
+ <td>⭐ 37</td>
813
+ </tr>
814
+ <tr>
815
+ <td><img src="https://avatars.githubusercontent.com/u/892404?s=40&v=4" width="20" height="20" style="vertical-align: middle; margin-right: 8px;"> <a href="https://github.com/truemagic-coder/solana-agent-app"><strong>truemagic-coder/solana-agent-app</strong></a></td>
816
+ <td>⭐ 29</td>
817
+ </tr>
818
+ <tr>
819
+ <td><img src="https://avatars.githubusercontent.com/u/8344498?s=40&v=4" width="20" height="20" style="vertical-align: middle; margin-right: 8px;"> <a href="https://github.com/schogini/techietalksai"><strong>schogini/techietalksai</strong></a></td>
820
+ <td>⭐ 21</td>
821
+ </tr>
822
+ <tr>
823
+ <td><img src="https://avatars.githubusercontent.com/u/201161342?s=40&v=4" width="20" height="20" style="vertical-align: middle; margin-right: 8px;"> <a href="https://github.com/autometa-dev/whatsapp-mcp-voice-agent"><strong>autometa-dev/whatsapp-mcp-voice-agent</strong></a></td>
824
+ <td>⭐ 18</td>
825
+ </tr>
826
+ <tr>
827
+ <td><img src="https://avatars.githubusercontent.com/u/100749943?s=40&v=4" width="20" height="20" style="vertical-align: middle; margin-right: 8px;"> <a href="https://github.com/Deniscartin/mcp-cli"><strong>Deniscartin/mcp-cli</strong></a></td>
828
+ <td>⭐ 17</td>
829
+ </tr>
830
+ <tr>
831
+ <td><img src="https://avatars.githubusercontent.com/u/6764390?s=40&v=4" width="20" height="20" style="vertical-align: middle; margin-right: 8px;"> <a href="https://github.com/elastic/genai-workshops"><strong>elastic/genai-workshops</strong></a></td>
832
+ <td>⭐ 9</td>
833
+ </tr>
834
+ <tr>
835
+ <td><img src="https://avatars.githubusercontent.com/u/6688805?s=40&v=4" width="20" height="20" style="vertical-align: middle; margin-right: 8px;"> <a href="https://github.com/innovaccer/Healthcare-MCP"><strong>innovaccer/Healthcare-MCP</strong></a></td>
836
+ <td>⭐ 6</td>
837
+ </tr>
838
+ <tr>
839
+ <td><img src="https://avatars.githubusercontent.com/u/205593730?s=40&v=4" width="20" height="20" style="vertical-align: middle; margin-right: 8px;"> <a href="https://github.com/Qingyon-AI/Revornix"><strong>Qingyon-AI/Revornix</strong></a></td>
840
+ <td>⭐ 5</td>
841
+ </tr>
842
+ <tr>
843
+ <td><img src="https://avatars.githubusercontent.com/u/68845761?s=40&v=4" width="20" height="20" style="vertical-align: middle; margin-right: 8px;"> <a href="https://github.com/entbappy/MCP-Tutorials"><strong>entbappy/MCP-Tutorials</strong></a></td>
844
+ <td>⭐ 5</td>
845
+ </tr>
846
+ </table>
847
+
848
+ <!-- gh-dependents-info-used-by-end -->
849
+
799
850
  # Requirements
800
851
 
801
852
  - Python 3.11+
802
853
  - MCP implementation (like Playwright MCP)
803
854
  - LangChain and appropriate model libraries (OpenAI, Anthropic, etc.)
804
855
 
856
+ # License
857
+
858
+ MIT
805
859
  # Citation
806
860
 
807
861
  If you use MCP-Use in your research or project, please cite:
@@ -815,7 +869,3 @@ If you use MCP-Use in your research or project, please cite:
815
869
  url = {https://github.com/pietrozullo/mcp-use}
816
870
  }
817
871
  ```
818
-
819
- # License
820
-
821
- MIT
@@ -1,23 +1,24 @@
1
1
  mcp_use/__init__.py,sha256=FikKagS6u8mugJOeslN3xfSA-tBLhjOywZSEcQ-y23g,1006
2
- mcp_use/client.py,sha256=n0sJtRmntJtsVnmI1qCSTY8iuY9xYFybmA7V8rn09bE,8863
3
- mcp_use/config.py,sha256=ks-aX1Kzk_iUBbUAA2_-BRGN4oltYU3CN5CKanMfPUs,2564
2
+ mcp_use/client.py,sha256=wQLpd5pRL3D4w9IqUTAr8-vndLtxXnpQqZrFF1K7n_s,9498
3
+ mcp_use/config.py,sha256=jRjTVNMxi7pkqFHMJhzSWpwukE4PbdYU8Pe_IZ33sYI,2433
4
4
  mcp_use/logging.py,sha256=UhQdMx0H0q08-ZPjY_hAJVErkEUAkU1oahHqwdfdK_U,4274
5
- mcp_use/session.py,sha256=IPVzYASFMZx7-xpK4X_MR5chcsIwGvcs6vYXiO1hutM,2604
5
+ mcp_use/session.py,sha256=4kwcB_IkTt_3FiBSTI1H17KhL1W_6N5oai3HTxFrTH4,2496
6
+ mcp_use/utils.py,sha256=QavJcVq2WxUUUCCpPCUeOB5bqIS0FFmpK-RAZkGc6aA,720
6
7
  mcp_use/adapters/__init__.py,sha256=-xCrgPThuX7x0PHGFDdjb7M-mgw6QV3sKu5PM7ShnRg,275
7
8
  mcp_use/adapters/base.py,sha256=bPVjHERySX6Vw16mEmgFaJuy4Yc_sM8JPtOAqJrP6Rg,7164
8
9
  mcp_use/adapters/langchain_adapter.py,sha256=nrsOYDQu-nlLw14f2uNHM-pH8l-yQfZelWXZLhBSMeQ,11008
9
10
  mcp_use/agents/__init__.py,sha256=N3eVYP2PxqNO2KcQv5fY8UMUX2W3eLTNkkzuFIJ1DUA,261
10
11
  mcp_use/agents/base.py,sha256=bfuldi_89AbSbNc8KeTiCArRT9V62CNxHOWYkLHWjyA,1605
11
- mcp_use/agents/mcpagent.py,sha256=1T6ZJkuMvXdR9dP-59V-m40wJ0dgO0Hxoz14jaTYPCE,26913
12
+ mcp_use/agents/mcpagent.py,sha256=do2eUtBLYATZV6SbXcpUuTrTUYcaenuKIQ_RP73gKdE,31351
12
13
  mcp_use/agents/prompts/system_prompt_builder.py,sha256=GH5Pvl49IBpKpZA9YTI83xMsdYSkRN_hw4LFHkKtxbg,4122
13
14
  mcp_use/agents/prompts/templates.py,sha256=AZKrGWuI516C-PmyOPvxDBibNdqJtN24sOHTGR06bi4,1933
14
15
  mcp_use/connectors/__init__.py,sha256=cUF4yT0bNr8qeLkSzg28SHueiV5qDaHEB1l1GZ2K0dc,536
15
- mcp_use/connectors/base.py,sha256=uJFU80kIpr0bVRAHDXTWRziIwdb_5Yjf2HsDNokZw-M,7731
16
- mcp_use/connectors/http.py,sha256=2ZG5JxcK1WZ4jkTfTir6bEQLMxXBTPHyi0s42RHGeFs,2837
17
- mcp_use/connectors/sandbox.py,sha256=SxSOOLOCDPtlVTCxxZSRbVfvva6rzDWfBLa56ne7esc,10902
18
- mcp_use/connectors/stdio.py,sha256=MTzsqmVVihACUKngE-g5BignK3jAFds2CFv3aSzbJfs,2608
16
+ mcp_use/connectors/base.py,sha256=5l5KrfCYCXdbSUMRlT9nvNLMwvZMSDP-C7vK0P4xlYY,12229
17
+ mcp_use/connectors/http.py,sha256=g6FJJDTpGpBZ5JGrK1mgb2t8_woFxLo7LpCWPZQ_vN0,6416
18
+ mcp_use/connectors/sandbox.py,sha256=PtSPHC6rPErAl5GBhnS-f1IWeyEYZY_dQ-UyExKRm0A,11102
19
+ mcp_use/connectors/stdio.py,sha256=h9PQ2vn4q4VXroL42USRqOf5y789l1raIFDsJxZCt7M,2821
19
20
  mcp_use/connectors/utils.py,sha256=zQ8GdNQx0Twz3by90BoU1RsWPf9wODGof4K3-NxPXeA,366
20
- mcp_use/connectors/websocket.py,sha256=LeU53YI3zjbwKq5GzFRziqA_z9Dn5qACiNyxWDrn2ns,9540
21
+ mcp_use/connectors/websocket.py,sha256=pcv1g9JnJLc8kY5IlZkCCGZngCucYG6NBLXxIGeYrPQ,9680
21
22
  mcp_use/managers/__init__.py,sha256=rzsJbOhtlmxNQLGcdmtmHaiExEXmiQiUuzPrAgKhAJw,439
22
23
  mcp_use/managers/server_manager.py,sha256=YVl5ciNIQfVzP-BR9hA0ac6YSwq0WChpA_Lxvh2e9HE,3984
23
24
  mcp_use/managers/tools/__init__.py,sha256=JrA5iTRdtbgwROJE8pQ7GH1sYnqBRcgj4NzFVADKbQ4,510
@@ -28,14 +29,18 @@ mcp_use/managers/tools/get_active_server.py,sha256=LRcHbKZopMl1PiO4D4JS4s0fwtrvt
28
29
  mcp_use/managers/tools/list_servers_tool.py,sha256=OPDSMNe-VuAhlUyhDnR4CiuZFpoMhnhWpAablwO5S0k,1897
29
30
  mcp_use/managers/tools/search_tools.py,sha256=sT2fe66IyOeASTGjdTsjyzSpqkIGKLVXBF8wXUtWXd4,12055
30
31
  mcp_use/managers/tools/use_tool.py,sha256=r7k7uMYzrk353qw7M5h1utu_IR2G85uMZkrNcg2RyZA,6824
31
- mcp_use/task_managers/__init__.py,sha256=4dgW5N61iiPLpwjU2rrn_uqrL8mmDJFDaF9Lukzk65A,486
32
- mcp_use/task_managers/base.py,sha256=xBrS9_GdlR0tr6sKN5pyMGUrQVGKRD6Qlk6hhOFcxRE,4806
32
+ mcp_use/task_managers/__init__.py,sha256=LkXOjiDq5JcyB2tNJuSzyjbxZTl1Ordr_NKKD77Nb7g,557
33
+ mcp_use/task_managers/base.py,sha256=mvLFTVyOfvBWFmkx5l8DZVZUezbhsRARDDfMS2AuFLE,5031
33
34
  mcp_use/task_managers/sse.py,sha256=nLKt99OiqoJxFT62zCeNwSZUmdPPg4SD7M1pCEPOa3c,2391
34
35
  mcp_use/task_managers/stdio.py,sha256=MJcW03lUZUs_HEUxwFPaqy7m8QLbmdn6LagpcfZdjc8,2130
35
- mcp_use/task_managers/websocket.py,sha256=POB4YwCff6IJ0vj4eGpYqfDwLiqA0_fEUS4hbborGa4,1848
36
- mcp_use/types/clientoptions.py,sha256=COzZPg19OlVm5F5ou6RhgzDVkPRs88Jz4c4uBanq5Ko,687
36
+ mcp_use/task_managers/streamable_http.py,sha256=Zky821Ston5CX0DQVyeRxc2uUqALD8soonRSe09cHcE,2683
37
+ mcp_use/task_managers/websocket.py,sha256=9JTw705rhYbP6x2xAPF6PwtNgF5yEWTQhx-dYSPMoaI,2154
38
+ mcp_use/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ mcp_use/telemetry/events.py,sha256=K5xqbmkum30r4gM2PWtTiUWGF8oZzGZw2DYwco1RfOQ,3113
40
+ mcp_use/telemetry/posthog.py,sha256=oJNBK3UoXXoqkq7MBIH32b3tgBB7Ai4tu3ZT6ZzjdMw,7592
41
+ mcp_use/telemetry/utils.py,sha256=kDVTqt2oSeWNJbnTOlXOehr2yFO0PMyx2UGkrWkfJiw,1769
37
42
  mcp_use/types/sandbox.py,sha256=opJ9r56F1FvaqVvPovfAj5jZbsOexgwYx5wLgSlN8_U,712
38
- mcp_use-1.3.0.dist-info/METADATA,sha256=45e-TFXg17LD7sE8kyBgUqCYaeDVebgn63fED2vEznI,25427
39
- mcp_use-1.3.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
40
- mcp_use-1.3.0.dist-info/licenses/LICENSE,sha256=7Pw7dbwJSBw8zH-WE03JnR5uXvitRtaGTP9QWPcexcs,1068
41
- mcp_use-1.3.0.dist-info/RECORD,,
43
+ mcp_use-1.3.1.dist-info/METADATA,sha256=FpGowckufkEfTnIE4Cex1arG4sOAJcWmeh3HQpjnPAo,28515
44
+ mcp_use-1.3.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
45
+ mcp_use-1.3.1.dist-info/licenses/LICENSE,sha256=7Pw7dbwJSBw8zH-WE03JnR5uXvitRtaGTP9QWPcexcs,1068
46
+ mcp_use-1.3.1.dist-info/RECORD,,
@@ -1,23 +0,0 @@
1
- """
2
- Options for MCP client configuration.
3
-
4
- This module provides data classes and type definitions for configuring the MCP client.
5
- """
6
-
7
- from typing import NotRequired, TypedDict
8
-
9
- from .sandbox import SandboxOptions
10
-
11
-
12
- class ClientOptions(TypedDict):
13
- """Options for configuring the MCP client.
14
-
15
- This class encapsulates all configuration options for the MCPClient,
16
- making it easier to extend the API without breaking backward compatibility.
17
- """
18
-
19
- is_sandboxed: NotRequired[bool]
20
- """Whether to use sandboxed execution mode for running MCP servers."""
21
-
22
- sandbox_options: NotRequired[SandboxOptions]
23
- """Options for sandbox configuration when is_sandboxed=True."""