langchain-mcp-tools 0.0.7__py3-none-any.whl → 0.0.9__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.
- langchain_mcp_tools/langchain_mcp_tools.py +10 -7
- langchain_mcp_tools/py.typed +0 -0
- {langchain_mcp_tools-0.0.7.dist-info → langchain_mcp_tools-0.0.9.dist-info}/METADATA +13 -14
- langchain_mcp_tools-0.0.9.dist-info/RECORD +8 -0
- langchain_mcp_tools-0.0.7.dist-info/RECORD +0 -7
- {langchain_mcp_tools-0.0.7.dist-info → langchain_mcp_tools-0.0.9.dist-info}/LICENSE +0 -0
- {langchain_mcp_tools-0.0.7.dist-info → langchain_mcp_tools-0.0.9.dist-info}/WHEEL +0 -0
- {langchain_mcp_tools-0.0.7.dist-info → langchain_mcp_tools-0.0.9.dist-info}/top_level.txt +0 -0
@@ -43,16 +43,17 @@ The key aspects are:
|
|
43
43
|
- Initializing multiple MCP servers in parallel requires a dedicated
|
44
44
|
`asyncio.Task` per server
|
45
45
|
- Necessity of keeping sessions alive for later use after initialization
|
46
|
-
- Ensuring proper cleanup in the same task that created them
|
46
|
+
- Ensuring proper cleanup later in the same task that created them
|
47
47
|
|
48
48
|
2. Solution Strategy:
|
49
49
|
A key requirement for parallel initialization is that each server must be
|
50
|
-
initialized in its own dedicated task - there's no way around this
|
51
|
-
|
52
|
-
|
50
|
+
initialized in its own dedicated task - there's no way around this as far
|
51
|
+
as I understand. However, this creates a challenge since we also need to
|
52
|
+
maintain long-lived sessions and handle cleanup properly.
|
53
53
|
|
54
54
|
The key insight is to keep the initialization tasks alive throughout the
|
55
55
|
session lifetime, rather than letting them complete after initialization.
|
56
|
+
|
56
57
|
By using `asyncio.Event`s for coordination, we can:
|
57
58
|
- Allow parallel initialization while maintaining proper context management
|
58
59
|
- Keep each initialization task running until explicit cleanup is requested
|
@@ -69,7 +70,9 @@ The key aspects are:
|
|
69
70
|
called from the same task that created the context
|
70
71
|
|
71
72
|
3. Task Lifecycle:
|
73
|
+
|
72
74
|
To allow the initialization task to stay alive waiting for cleanup:
|
75
|
+
```
|
73
76
|
[Task starts]
|
74
77
|
↓
|
75
78
|
Initialize server & convert tools
|
@@ -80,7 +83,7 @@ The key aspects are:
|
|
80
83
|
↓
|
81
84
|
When cleanup_event is set:
|
82
85
|
exit_stack.aclose() (cleanup in original task)
|
83
|
-
|
86
|
+
```
|
84
87
|
This approach indeed enables parallel initialization while maintaining proper
|
85
88
|
async resource lifecycle management through context managers.
|
86
89
|
However, I'm afraid I'm twisting things around too much.
|
@@ -89,8 +92,8 @@ It usually means I'm doing something very worng...
|
|
89
92
|
I think it is a natural assumption that MCP SDK is designed with consideration
|
90
93
|
for parallel server initialization.
|
91
94
|
I'm not sure what I'm missing...
|
92
|
-
(FYI, with the TypeScript SDK, parallel
|
93
|
-
|
95
|
+
(FYI, with the TypeScript MCP SDK, parallel initialization was
|
96
|
+
pretty straightforward.
|
94
97
|
"""
|
95
98
|
|
96
99
|
|
File without changes
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
|
-
Name:
|
3
|
-
Version: 0.0.
|
2
|
+
Name: langchain-mcp-tools
|
3
|
+
Version: 0.0.9
|
4
4
|
Summary: Model Context Protocol (MCP) To LangChain Tools Conversion Utility
|
5
5
|
Project-URL: Bug Tracker, https://github.com/hideya/langchain-mcp-tools-py/issues
|
6
6
|
Project-URL: Source Code, https://github.com/hideya/langchain-mcp-tools-py
|
@@ -19,7 +19,7 @@ Requires-Dist: pyjson5>=1.6.8
|
|
19
19
|
Requires-Dist: pympler>=1.1
|
20
20
|
Requires-Dist: python-dotenv>=1.0.1
|
21
21
|
|
22
|
-
# MCP To LangChain Tools Conversion Utility [](https://github.com/hideya/mcp-
|
22
|
+
# MCP To LangChain Tools Conversion Utility [](https://github.com/hideya/langchain-mcp-tools-py/blob/main/LICENSE) [](https://pypi.org/project/langchain-mcp-tools/)
|
23
23
|
|
24
24
|
This package is intended to simplify the use of
|
25
25
|
[Model Context Protocol (MCP)](https://modelcontextprotocol.io/)
|
@@ -27,7 +27,7 @@ server tools with LangChain / Python.
|
|
27
27
|
|
28
28
|
It contains a utility function `convertMcpToLangchainTools()`.
|
29
29
|
This function handles parallel initialization of specified multiple MCP servers
|
30
|
-
and converts their available tools into
|
30
|
+
and converts their available tools into a list of
|
31
31
|
[LangChain-compatible tools](https://js.langchain.com/docs/how_to/tool_calling/).
|
32
32
|
|
33
33
|
A typescript equivalent of this utility library is available
|
@@ -90,15 +90,13 @@ The returned tools can be used with LangChain, e.g.:
|
|
90
90
|
tools
|
91
91
|
)
|
92
92
|
```
|
93
|
-
|
94
|
-
[here](https://github.com/hideya/langchain-mcp-tools-
|
93
|
+
A simple and experimentable usage example can be found
|
94
|
+
[here](https://github.com/hideya/langchain-mcp-tools-py-usage/blob/main/src/example.py)
|
95
95
|
|
96
|
-
|
97
|
-
[here](https://github.com/hideya/langchain-mcp-client-ts) -->
|
98
|
-
|
99
|
-
An usage example can be found
|
96
|
+
A more realistic usage example can be found
|
100
97
|
[here](https://github.com/hideya/mcp-client-langchain-py)
|
101
98
|
|
99
|
+
|
102
100
|
## Limitations
|
103
101
|
|
104
102
|
Currently, only text results of tool calls are supported.
|
@@ -110,7 +108,7 @@ to work successfully...
|
|
110
108
|
|
111
109
|
I'm new to Python, so it is very possible that my ignorance is playing
|
112
110
|
a big role here...
|
113
|
-
I'
|
111
|
+
I'll summarize the difficulties I faced below.
|
114
112
|
Any comments pointing out something I am missing would be greatly appreciated!
|
115
113
|
[(comment here)](https://github.com/hideya/langchain-mcp-tools-ts/issues)
|
116
114
|
|
@@ -124,10 +122,11 @@ Any comments pointing out something I am missing would be greatly appreciated!
|
|
124
122
|
- Ensuring proper cleanup later in the same task that created them
|
125
123
|
|
126
124
|
2. Solution Strategy:
|
125
|
+
|
127
126
|
A key requirement for parallel initialization is that each server must be
|
128
|
-
initialized in its own dedicated task - there's no way around this
|
129
|
-
|
130
|
-
|
127
|
+
initialized in its own dedicated task - there's no way around this as far
|
128
|
+
as I understand. However, this creates a challenge since we also need to
|
129
|
+
maintain long-lived sessions and handle cleanup properly.
|
131
130
|
|
132
131
|
The key insight is to keep the initialization tasks alive throughout the
|
133
132
|
session lifetime, rather than letting them complete after initialization.
|
@@ -0,0 +1,8 @@
|
|
1
|
+
langchain_mcp_tools/__init__.py,sha256=Xtv2VphhrWB_KlxTIofHZqtCIGtNEl0MxugnrNXTERA,94
|
2
|
+
langchain_mcp_tools/langchain_mcp_tools.py,sha256=ysss7r51Adc5reyui2Zw2qB3RtUDRmc0IeEPTKvRHaM,10453
|
3
|
+
langchain_mcp_tools/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
+
langchain_mcp_tools-0.0.9.dist-info/LICENSE,sha256=CRC91e8v116gCpnp7h49oIa6_zjhxqnHFTREeoZFJwA,1072
|
5
|
+
langchain_mcp_tools-0.0.9.dist-info/METADATA,sha256=0K11Ip9o6CpwjewPP4iZyAjv5Y397yvQvNK5MFinm5A,6560
|
6
|
+
langchain_mcp_tools-0.0.9.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
7
|
+
langchain_mcp_tools-0.0.9.dist-info/top_level.txt,sha256=aR_9V2A1Yt-Bca60KmndmGLUWb2wiM5IOG-Gkaf1dxY,20
|
8
|
+
langchain_mcp_tools-0.0.9.dist-info/RECORD,,
|
@@ -1,7 +0,0 @@
|
|
1
|
-
langchain_mcp_tools/__init__.py,sha256=Xtv2VphhrWB_KlxTIofHZqtCIGtNEl0MxugnrNXTERA,94
|
2
|
-
langchain_mcp_tools/langchain_mcp_tools.py,sha256=0vIjVWyK5Ps7p3rxHVOEjbTywuLY3ON5G-hHJj-XkF0,10451
|
3
|
-
langchain_mcp_tools-0.0.7.dist-info/LICENSE,sha256=CRC91e8v116gCpnp7h49oIa6_zjhxqnHFTREeoZFJwA,1072
|
4
|
-
langchain_mcp_tools-0.0.7.dist-info/METADATA,sha256=7OiMRUSrJjEFlni0IODryRH0TknzoXazAtSy4XlTmzo,6687
|
5
|
-
langchain_mcp_tools-0.0.7.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
6
|
-
langchain_mcp_tools-0.0.7.dist-info/top_level.txt,sha256=aR_9V2A1Yt-Bca60KmndmGLUWb2wiM5IOG-Gkaf1dxY,20
|
7
|
-
langchain_mcp_tools-0.0.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|