universal-mcp 0.1.8rc3__py3-none-any.whl → 0.1.8rc4__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.
Files changed (30) hide show
  1. universal_mcp/applications/ahrefs/README.md +76 -0
  2. universal_mcp/applications/ahrefs/__init__.py +0 -0
  3. universal_mcp/applications/ahrefs/app.py +2291 -0
  4. universal_mcp/applications/application.py +67 -0
  5. universal_mcp/applications/calendly/app.py +0 -12
  6. universal_mcp/applications/coda/app.py +0 -33
  7. universal_mcp/applications/e2b/app.py +2 -28
  8. universal_mcp/applications/figma/README.md +74 -0
  9. universal_mcp/applications/figma/__init__.py +0 -0
  10. universal_mcp/applications/figma/app.py +1261 -0
  11. universal_mcp/applications/firecrawl/app.py +2 -32
  12. universal_mcp/applications/google_calendar/app.py +0 -11
  13. universal_mcp/applications/google_docs/app.py +0 -18
  14. universal_mcp/applications/google_drive/app.py +0 -17
  15. universal_mcp/applications/google_mail/app.py +0 -16
  16. universal_mcp/applications/google_sheet/app.py +0 -18
  17. universal_mcp/applications/perplexity/app.py +0 -34
  18. universal_mcp/applications/resend/app.py +0 -18
  19. universal_mcp/applications/serpapi/app.py +2 -28
  20. universal_mcp/applications/tavily/app.py +0 -20
  21. universal_mcp/applications/wrike/app.py +0 -12
  22. universal_mcp/applications/youtube/app.py +0 -18
  23. universal_mcp/integrations/agentr.py +27 -4
  24. universal_mcp/integrations/integration.py +14 -6
  25. universal_mcp/servers/server.py +0 -3
  26. universal_mcp/utils/installation.py +199 -8
  27. {universal_mcp-0.1.8rc3.dist-info → universal_mcp-0.1.8rc4.dist-info}/METADATA +1 -1
  28. {universal_mcp-0.1.8rc3.dist-info → universal_mcp-0.1.8rc4.dist-info}/RECORD +30 -24
  29. {universal_mcp-0.1.8rc3.dist-info → universal_mcp-0.1.8rc4.dist-info}/WHEEL +0 -0
  30. {universal_mcp-0.1.8rc3.dist-info → universal_mcp-0.1.8rc4.dist-info}/entry_points.txt +0 -0
@@ -29,7 +29,7 @@ def create_file_if_not_exists(path: Path) -> None:
29
29
 
30
30
  def get_supported_apps() -> list[str]:
31
31
  """Get list of supported apps"""
32
- return ["claude", "cursor", "windsurf"]
32
+ return ["claude", "cursor", "cline", "continue", "goose", "windsurf", "zed"]
33
33
 
34
34
 
35
35
  def install_claude(api_key: str) -> None:
@@ -99,21 +99,212 @@ def install_cursor(api_key: str) -> None:
99
99
  print("[green]✓[/green] Cursor configuration installed successfully")
100
100
 
101
101
 
102
- def install_windsurf() -> None:
102
+ def install_cline(api_key: str) -> None:
103
+ """Install Cline"""
104
+ print("[bold blue]Installing Cline configuration...[/bold blue]")
105
+ # Set up Cline config path
106
+ config_path = Path.home() / ".config/cline/mcp.json"
107
+
108
+ # Create config directory if it doesn't exist
109
+ create_file_if_not_exists(config_path)
110
+
111
+ try:
112
+ config = json.loads(config_path.read_text())
113
+ except json.JSONDecodeError:
114
+ print(
115
+ "[yellow]Config file was empty or invalid, creating new configuration[/yellow]"
116
+ )
117
+ config = {}
118
+
119
+ if "mcpServers" not in config:
120
+ config["mcpServers"] = {}
121
+ config["mcpServers"]["universal_mcp"] = {
122
+ "command": get_uvx_path(),
123
+ "args": ["universal_mcp[all]@latest", "run"],
124
+ "env": {"AGENTR_API_KEY": api_key},
125
+ }
126
+
127
+ with open(config_path, "w") as f:
128
+ json.dump(config, f, indent=4)
129
+ print("[green]✓[/green] Cline configuration installed successfully")
130
+
131
+
132
+ def install_continue(api_key: str) -> None:
133
+ """Install Continue"""
134
+ print("[bold blue]Installing Continue configuration...[/bold blue]")
135
+
136
+ # Determine platform-specific config path
137
+ if sys.platform == "darwin": # macOS
138
+ config_path = Path.home() / "Library/Application Support/Continue/mcp.json"
139
+ elif sys.platform == "win32": # Windows
140
+ config_path = Path.home() / "AppData/Roaming/Continue/mcp.json"
141
+ else: # Linux and others
142
+ config_path = Path.home() / ".config/continue/mcp.json"
143
+
144
+ # Create config directory if it doesn't exist
145
+ create_file_if_not_exists(config_path)
146
+
147
+ try:
148
+ config = json.loads(config_path.read_text())
149
+ except json.JSONDecodeError:
150
+ print(
151
+ "[yellow]Config file was empty or invalid, creating new configuration[/yellow]"
152
+ )
153
+ config = {}
154
+
155
+ if "mcpServers" not in config:
156
+ config["mcpServers"] = {}
157
+ config["mcpServers"]["universal_mcp"] = {
158
+ "command": get_uvx_path(),
159
+ "args": ["universal_mcp[all]@latest", "run"],
160
+ "env": {"AGENTR_API_KEY": api_key},
161
+ }
162
+
163
+ with open(config_path, "w") as f:
164
+ json.dump(config, f, indent=4)
165
+ print("[green]✓[/green] Continue configuration installed successfully")
166
+
167
+
168
+ def install_goose(api_key: str) -> None:
169
+ """Install Goose"""
170
+ print("[bold blue]Installing Goose configuration...[/bold blue]")
171
+
172
+ # Determine platform-specific config path
173
+ if sys.platform == "darwin": # macOS
174
+ config_path = Path.home() / "Library/Application Support/Goose/mcp-config.json"
175
+ elif sys.platform == "win32": # Windows
176
+ config_path = Path.home() / "AppData/Roaming/Goose/mcp-config.json"
177
+ else: # Linux and others
178
+ config_path = Path.home() / ".config/goose/mcp-config.json"
179
+
180
+ # Create config directory if it doesn't exist
181
+ create_file_if_not_exists(config_path)
182
+
183
+ try:
184
+ config = json.loads(config_path.read_text())
185
+ except json.JSONDecodeError:
186
+ print(
187
+ "[yellow]Config file was empty or invalid, creating new configuration[/yellow]"
188
+ )
189
+ config = {}
190
+
191
+ if "mcpServers" not in config:
192
+ config["mcpServers"] = {}
193
+ config["mcpServers"]["universal_mcp"] = {
194
+ "command": get_uvx_path(),
195
+ "args": ["universal_mcp[all]@latest", "run"],
196
+ "env": {"AGENTR_API_KEY": api_key},
197
+ }
198
+
199
+ with open(config_path, "w") as f:
200
+ json.dump(config, f, indent=4)
201
+ print("[green]✓[/green] Goose configuration installed successfully")
202
+
203
+
204
+ def install_windsurf(api_key: str) -> None:
103
205
  """Install Windsurf"""
104
- print("[yellow]Windsurf installation not yet implemented[/yellow]")
105
- pass
206
+ print("[bold blue]Installing Windsurf configuration...[/bold blue]")
207
+
208
+ # Determine platform-specific config path
209
+ if sys.platform == "darwin": # macOS
210
+ config_path = Path.home() / "Library/Application Support/Windsurf/mcp.json"
211
+ elif sys.platform == "win32": # Windows
212
+ config_path = Path.home() / "AppData/Roaming/Windsurf/mcp.json"
213
+ else: # Linux and others
214
+ config_path = Path.home() / ".config/windsurf/mcp.json"
215
+
216
+ # Create config directory if it doesn't exist
217
+ create_file_if_not_exists(config_path)
218
+
219
+ try:
220
+ config = json.loads(config_path.read_text())
221
+ except json.JSONDecodeError:
222
+ print(
223
+ "[yellow]Config file was empty or invalid, creating new configuration[/yellow]"
224
+ )
225
+ config = {}
226
+
227
+ if "mcpServers" not in config:
228
+ config["mcpServers"] = {}
229
+ config["mcpServers"]["universal_mcp"] = {
230
+ "command": get_uvx_path(),
231
+ "args": ["universal_mcp[all]@latest", "run"],
232
+ "env": {"AGENTR_API_KEY": api_key},
233
+ }
234
+
235
+ with open(config_path, "w") as f:
236
+ json.dump(config, f, indent=4)
237
+ print("[green]✓[/green] Windsurf configuration installed successfully")
238
+
239
+
240
+ def install_zed(api_key: str) -> None:
241
+ """Install Zed"""
242
+ print("[bold blue]Installing Zed configuration...[/bold blue]")
243
+
244
+ # Set up Zed config path
245
+ config_dir = Path.home() / ".config/zed"
246
+ config_path = config_dir / "mcp_servers.json"
247
+
248
+ # Create config directory if it doesn't exist
249
+ create_file_if_not_exists(config_path)
250
+
251
+ try:
252
+ config = json.loads(config_path.read_text())
253
+ except json.JSONDecodeError:
254
+ print(
255
+ "[yellow]Config file was empty or invalid, creating new configuration[/yellow]"
256
+ )
257
+ config = {}
258
+
259
+ if not isinstance(config, list):
260
+ config = []
261
+
262
+ # Check if universal_mcp is already in the config
263
+ existing_config = False
264
+ for server in config:
265
+ if server.get("name") == "universal_mcp":
266
+ existing_config = True
267
+ server.update(
268
+ {
269
+ "command": get_uvx_path(),
270
+ "args": ["universal_mcp[all]@latest", "run"],
271
+ "env": {"AGENTR_API_KEY": api_key},
272
+ }
273
+ )
274
+ break
275
+
276
+ if not existing_config:
277
+ config.append(
278
+ {
279
+ "name": "universal_mcp",
280
+ "command": get_uvx_path(),
281
+ "args": ["universal_mcp[all]@latest", "run"],
282
+ "env": {"AGENTR_API_KEY": api_key},
283
+ }
284
+ )
285
+
286
+ with open(config_path, "w") as f:
287
+ json.dump(config, f, indent=4)
288
+ print("[green]✓[/green] Zed configuration installed successfully")
106
289
 
107
290
 
108
- def install_app(app_name: str) -> None:
291
+ def install_app(app_name: str, api_key: str) -> None:
109
292
  """Install an app"""
110
293
  print(f"[bold]Installing {app_name}...[/bold]")
111
294
  if app_name == "claude":
112
- install_claude()
295
+ install_claude(api_key)
113
296
  elif app_name == "cursor":
114
- install_cursor()
297
+ install_cursor(api_key)
298
+ elif app_name == "cline":
299
+ install_cline(api_key)
300
+ elif app_name == "continue":
301
+ install_continue(api_key)
302
+ elif app_name == "goose":
303
+ install_goose(api_key)
115
304
  elif app_name == "windsurf":
116
- install_windsurf()
305
+ install_windsurf(api_key)
306
+ elif app_name == "zed":
307
+ install_zed(api_key)
117
308
  else:
118
309
  print(f"[red]Error: App '{app_name}' not supported[/red]")
119
310
  raise ValueError(f"App '{app_name}' not supported")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: universal-mcp
3
- Version: 0.1.8rc3
3
+ Version: 0.1.8rc4
4
4
  Summary: Universal MCP acts as a middle ware for your API applications. It can store your credentials, authorize, enable disable apps on the fly and much more.
5
5
  Author-email: Manoj Bajaj <manojbajaj95@gmail.com>
6
6
  Requires-Python: >=3.11
@@ -6,56 +6,62 @@ universal_mcp/exceptions.py,sha256=WApedvzArNujD0gZfUofYBxjQo97ZDJLqDibtLWZoRk,3
6
6
  universal_mcp/logger.py,sha256=D947u1roUf6WqlcEsPpvmWDqGc8L41qF3MO1suK5O1Q,308
7
7
  universal_mcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  universal_mcp/applications/__init__.py,sha256=qeWnbdIudyMR7ST4XTc0gpEM9o6TsM1ZnZ92dMAPSBA,754
9
- universal_mcp/applications/application.py,sha256=lH5aIb0pip2Pa3vXm8_IbEPNfgehKxkV0OJ0O6f4NWE,3928
9
+ universal_mcp/applications/application.py,sha256=CUNUUfPl4JVmnFPBuYYhhlwRo63_SRvVw1HuKZ3u0js,6772
10
+ universal_mcp/applications/ahrefs/README.md,sha256=bQQ5AmPFxM52gL-tllIFWC_64f7KYkBiD1tYfdTwDu4,5370
11
+ universal_mcp/applications/ahrefs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ universal_mcp/applications/ahrefs/app.py,sha256=8iYYmQ5bD6nd_JmHOk4bcEPqG162FtQ14WrnJPeTrBQ,91468
10
13
  universal_mcp/applications/calendly/README.md,sha256=85m3XXLPhQ99oghl8SeazCZ2fjBR81-f1y_mjjhx2B0,5911
11
14
  universal_mcp/applications/calendly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- universal_mcp/applications/calendly/app.py,sha256=5IoPc-1kkPsAoWk2jwy-oM5iw9dEtkL4wfpupUZ0pf4,50293
15
+ universal_mcp/applications/calendly/app.py,sha256=ANuUfiXBwDZjQC-xfB06JoVu5ebQPEy12COBO5LY3DI,49874
13
16
  universal_mcp/applications/coda/README.md,sha256=4i6o_R-qtTuxfS1A7VoIb8_85FHAj-WVb8YG5fNvwL4,11411
14
17
  universal_mcp/applications/coda/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- universal_mcp/applications/coda/app.py,sha256=NJpIqKH_eTsMkS73dJX9azdtSiX8UTlUjRU-k_Kf2AE,156924
18
+ universal_mcp/applications/coda/app.py,sha256=47ZmtYF5A2Cn0rh3Dpc3VtkIHR1Xu2PCYe1JDH8kJbY,155862
16
19
  universal_mcp/applications/e2b/README.md,sha256=S4lTp-vEZ8VTCKPXqjUXu5nYlUMAF8lw8CQyBGPgxjs,700
17
- universal_mcp/applications/e2b/app.py,sha256=wjmPa2FKYXORmGiKCE1hSjO0D9T6ZiizFeNq8Y4vgrk,3156
20
+ universal_mcp/applications/e2b/app.py,sha256=4cMuGHm_QY4uh0JMh3HYzhaqtnfnXajRKFhoAGmRnBE,2252
21
+ universal_mcp/applications/figma/README.md,sha256=qA9UMf5PsPhfJrnteGVQOudhLuevwZ4-D_1xM6gAjgQ,4393
22
+ universal_mcp/applications/figma/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ universal_mcp/applications/figma/app.py,sha256=sr-ednZinHdIcXmDWuWAA_Ri21iBbAYPRZ0-uLeiEkM,50392
18
24
  universal_mcp/applications/firecrawl/README.md,sha256=KAWe_TQbrc9eA6bSyde5dapMP1CNvarVItV_YJH3d_0,1430
19
- universal_mcp/applications/firecrawl/app.py,sha256=3-dguTgYkfpR7DpyXqeHYB5f-Pm-y5NRT2SXPVsmdAw,10063
25
+ universal_mcp/applications/firecrawl/app.py,sha256=qO3XNH9nT2G-9yC1eN4ADZJCE_bxF0qQ3S_qtYoOa2o,8902
20
26
  universal_mcp/applications/github/README.md,sha256=6ID-__gUJ5ZxzAS_OjzmoUAag1LamSvEB75DHcj3m-g,1294
21
27
  universal_mcp/applications/github/app.py,sha256=73Y5ceM2BGRcLUO__xO0RO1NNf6Gf3ROtqTlFI5k0Fg,18162
22
- universal_mcp/applications/google_calendar/app.py,sha256=mKzbCdijwvuHJDJxmRF6f_BGocK0cwrzIJok93aSknc,19760
28
+ universal_mcp/applications/google_calendar/app.py,sha256=o2Mtto4zOIDtCUdXdEgXWhWsKRfzbHC7DAUuvyjUei4,19342
23
29
  universal_mcp/applications/google_docs/README.md,sha256=SyOgJG-XU0FXhrVukvg9mxwin73mpqaCOT6rDJ64Klk,909
24
- universal_mcp/applications/google_docs/app.py,sha256=tQVHBtb9PSPepsmXn0ISB1fSy75B3H9iUhDrOU4cRKo,4137
30
+ universal_mcp/applications/google_docs/app.py,sha256=f31nJ3tr9XF-1AbRI3DNVXgMXT4Y33gWMRlBoA-t630,3436
25
31
  universal_mcp/applications/google_drive/README.md,sha256=YlN8IT12oO8zVMib1MlTYRBGNP7rzW_KyVAZyyxKvME,1192
26
- universal_mcp/applications/google_drive/app.py,sha256=Gf_beIWZUiJ_HcRP_g992GnfxVdfhq2P5r1jVgEfQoU,11935
32
+ universal_mcp/applications/google_drive/app.py,sha256=4cJYvT_RSlqL2Vfm4cbrxJYl58gHWdNytVAQVu1amY8,11253
27
33
  universal_mcp/applications/google_mail/README.md,sha256=LL6TjjmwEqyuRVvIfCh-I_PlWp9ciCZOdJC0LafGZYc,1185
28
- universal_mcp/applications/google_mail/app.py,sha256=3KwvyOwoAIhebFFsDPybKmSF9-mUhqPNGf5Gk9s28LM,27899
34
+ universal_mcp/applications/google_mail/app.py,sha256=1XI1hve2FXOqkzgJNYu2ki5J1yGKfeMx3cO_Qyflp_o,27286
29
35
  universal_mcp/applications/google_sheet/README.md,sha256=yW1b_qlb_pbIJzCxZc58581kKzC5vyP8Mj4iwXgidtQ,1108
30
- universal_mcp/applications/google_sheet/app.py,sha256=jfTjDtN9hLwHcCmfYc2XMVbF05E_syvoYmiiFjDHGTA,7013
36
+ universal_mcp/applications/google_sheet/app.py,sha256=O6g8P697ve93CsljLK9ejWbIyzGbZ-_ThK_A_3cTpIk,6310
31
37
  universal_mcp/applications/markitdown/app.py,sha256=j1AidXGmDwEV4sBw0A-mEe8O4V4Yln4Atrqnk29AHiI,1836
32
38
  universal_mcp/applications/notion/README.md,sha256=45NmPOmSQv99qBvWdwmnV5vbaYc9_8vq8I-FA7veVAA,2600
33
39
  universal_mcp/applications/notion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
40
  universal_mcp/applications/notion/app.py,sha256=nc-p531L-L6gMFqOOkYu5Irn9SReWAYRmJ8ZOIv5LrQ,20834
35
41
  universal_mcp/applications/perplexity/README.md,sha256=QGV1iReH5p-Np7vvkZsVHxxDKQ0YaitHEwomNmGEyQs,732
36
- universal_mcp/applications/perplexity/app.py,sha256=g-BgGCU42yA6j-t3GCJZKQXfISdgHUV4KJMcJZBbdak,3808
42
+ universal_mcp/applications/perplexity/app.py,sha256=W2wXe2ltQKqKM6hKcVW0DczsULdmPhcsJdjx93wSXaM,2673
37
43
  universal_mcp/applications/reddit/README.md,sha256=YVbJ1RN6NWlB-P6w2LxCk_DuUWl7mwaKZScY-mIMnNc,1271
38
44
  universal_mcp/applications/reddit/app.py,sha256=Jd-Pr-IMhROun82kuLf0mNJ3P-LDfGfvj1bn_8qNIAI,15748
39
45
  universal_mcp/applications/resend/README.md,sha256=k-sb2UwbFvDPEz6qQPLWd2cJj8hDx5f3NW7dz2jAfjI,719
40
- universal_mcp/applications/resend/app.py,sha256=wF4Jje4vD4cPxnPLMYkDxGkl9IctaS2AzUxVAifpJ94,1976
46
+ universal_mcp/applications/resend/app.py,sha256=dWhijrx73hw2OLMAC01keVj7hVgu4CUZsURyRjxD7ew,1370
41
47
  universal_mcp/applications/serpapi/README.md,sha256=hX4VeT2iL_67ZsMhKd60DAujQCh9K3IdHroHIq808RY,691
42
- universal_mcp/applications/serpapi/app.py,sha256=STDsePi7wKyA-8bs6CtgmCFqyF3_pGC-qa1epiBLT64,3920
48
+ universal_mcp/applications/serpapi/app.py,sha256=krx9STkJI0vLarXo34emySv3fs9o9lmQ2qfjWbzxtg4,2918
43
49
  universal_mcp/applications/tavily/README.md,sha256=cNg4EwX5wBbkDpPtNBNC3A_GxglfSVhdAJuweSrXN20,721
44
- universal_mcp/applications/tavily/app.py,sha256=O9TUoqPn8-b_mMMCfiB5ypZZXAb4Xo8d3GLdN5PF4MQ,2602
50
+ universal_mcp/applications/tavily/app.py,sha256=rU9IRyhzYkchjs8rqQMU89hkBQy13W8yeQqpQhPCCFA,1924
45
51
  universal_mcp/applications/wrike/README.md,sha256=4EHVPlA8B_dzTA1-HQQqp89z6QL37RTyD2l6DD7vG9E,5156
46
52
  universal_mcp/applications/wrike/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
- universal_mcp/applications/wrike/app.py,sha256=Rjv2rYqEtfDOuW635QbPc1ajNDEOgtqGIQpU-atSe9M,60675
53
+ universal_mcp/applications/wrike/app.py,sha256=j0sfbVaRSBoWN0dnpscifg_mwwSsKulX6dy-2ac3R68,60259
48
54
  universal_mcp/applications/youtube/README.md,sha256=NHqIm6QvXQK7I2oZ8hUwfjLDS4_eSK9NPeFbuGIbmhg,5405
49
55
  universal_mcp/applications/youtube/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
- universal_mcp/applications/youtube/app.py,sha256=TP56LE3RGcbgeX0XglRa6ajUkLvzuZU52OshPntPde0,57583
56
+ universal_mcp/applications/youtube/app.py,sha256=EQgeLNJS8Spm8xB82hSIBANJ4HR2-ktcurgW9Cn_ebU,56885
51
57
  universal_mcp/applications/zenquotes/README.md,sha256=wA3hjqjrkrczQaffpwyolSKq6gXmkLgeHx6_EQrYEOY,709
52
58
  universal_mcp/applications/zenquotes/app.py,sha256=xp_nlW4LFi0Mw1GRWIde4k8eexXUJx1wNqNExJ0oeKA,1085
53
59
  universal_mcp/integrations/README.md,sha256=lTAPXO2nivcBe1q7JT6PRa6v9Ns_ZersQMIdw-nmwEA,996
54
60
  universal_mcp/integrations/__init__.py,sha256=YY8Uw0XGNUpAQ1j-qgCOrwHTcuSew4W92cEtYXMxry4,963
55
- universal_mcp/integrations/agentr.py,sha256=l0mo79oeDML19udFfoCo9lyhbDAf0X94_lnpOgbTrb0,3331
56
- universal_mcp/integrations/integration.py,sha256=KgiQ6I1uWx-8701tgjXwgei7EANYCr8riY-Uhb2AAOE,9739
61
+ universal_mcp/integrations/agentr.py,sha256=Bap4PA2-K4BkBhscgAVsBdvXNN19dkuCLO82sQFRvUM,3952
62
+ universal_mcp/integrations/integration.py,sha256=33i1-E4EMTZOhCcbLXSrJfnGUCmRROk7m7DxXUVCt5c,9985
57
63
  universal_mcp/servers/__init__.py,sha256=dDtvvMzbWskABlobTZHztrWMb3hbzgidza3BmEmIAD8,474
58
- universal_mcp/servers/server.py,sha256=ARlDS4nmlYI22t2YVdSOcjWDwzvR-azeimYhAKX2g2A,8141
64
+ universal_mcp/servers/server.py,sha256=azsUnzMwJXttNDBs4C6_yuds0A3gEsXkf0Dyc-vHeI8,7941
59
65
  universal_mcp/stores/__init__.py,sha256=quvuwhZnpiSLuojf0NfmBx2xpaCulv3fbKtKaSCEmuM,603
60
66
  universal_mcp/stores/store.py,sha256=8Hobd55WCXGXTJeADn7d_Qe-U8VkC6X3QDTgaKr3Saw,6774
61
67
  universal_mcp/tools/__init__.py,sha256=hVL-elJLwD_K87Gpw_s2_o43sQRPyRNOnxlzt0_Pfn8,72
@@ -67,9 +73,9 @@ universal_mcp/utils/api_generator.py,sha256=-wRBpLVfJQXy1R-8FpDNs6b8_eeekVDuPc_u
67
73
  universal_mcp/utils/docgen.py,sha256=yGBcBIr7dz3mNMGrCb_-JFsDf-ShmCKWWiPpuEj2SIU,21878
68
74
  universal_mcp/utils/docstring_parser.py,sha256=-QVW9u9i1_FlAMwSkFil6ZNaKIkXKI6gqOYtURdp5ak,6745
69
75
  universal_mcp/utils/dump_app_tools.py,sha256=9bQePJ4ZKzGtcIYrBgLxbKDOZmL7ajIAHhXljT_AlyA,2041
70
- universal_mcp/utils/installation.py,sha256=3vy9ZLjQj1xpSAOyWpOanBr7o5DtffzWB5JAjN0Jjtk,3757
76
+ universal_mcp/utils/installation.py,sha256=KPBojDlt2YfFY2DfJ9pUr5evFJ9QQGp99KQUsRkz9GQ,10235
71
77
  universal_mcp/utils/openapi.py,sha256=AgmcyntPyovic2mRqr-a7P4kEc7hU-yk9gRVIsO4078,20673
72
- universal_mcp-0.1.8rc3.dist-info/METADATA,sha256=mTty3iqc9lUsEUtM1CAfsWHdR1CGWwDuLyeMDK09IwU,11271
73
- universal_mcp-0.1.8rc3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
74
- universal_mcp-0.1.8rc3.dist-info/entry_points.txt,sha256=QlBrVKmA2jIM0q-C-3TQMNJTTWOsOFQvgedBq2rZTS8,56
75
- universal_mcp-0.1.8rc3.dist-info/RECORD,,
78
+ universal_mcp-0.1.8rc4.dist-info/METADATA,sha256=ird6s_0F2lBSsDljkytljaU7rRwLPgx_mGjeLDEfyrk,11271
79
+ universal_mcp-0.1.8rc4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
80
+ universal_mcp-0.1.8rc4.dist-info/entry_points.txt,sha256=QlBrVKmA2jIM0q-C-3TQMNJTTWOsOFQvgedBq2rZTS8,56
81
+ universal_mcp-0.1.8rc4.dist-info/RECORD,,