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.
- universal_mcp/applications/ahrefs/README.md +76 -0
- universal_mcp/applications/ahrefs/__init__.py +0 -0
- universal_mcp/applications/ahrefs/app.py +2291 -0
- universal_mcp/applications/application.py +67 -0
- universal_mcp/applications/calendly/app.py +0 -12
- universal_mcp/applications/coda/app.py +0 -33
- universal_mcp/applications/e2b/app.py +2 -28
- universal_mcp/applications/figma/README.md +74 -0
- universal_mcp/applications/figma/__init__.py +0 -0
- universal_mcp/applications/figma/app.py +1261 -0
- universal_mcp/applications/firecrawl/app.py +2 -32
- universal_mcp/applications/google_calendar/app.py +0 -11
- universal_mcp/applications/google_docs/app.py +0 -18
- universal_mcp/applications/google_drive/app.py +0 -17
- universal_mcp/applications/google_mail/app.py +0 -16
- universal_mcp/applications/google_sheet/app.py +0 -18
- universal_mcp/applications/perplexity/app.py +0 -34
- universal_mcp/applications/resend/app.py +0 -18
- universal_mcp/applications/serpapi/app.py +2 -28
- universal_mcp/applications/tavily/app.py +0 -20
- universal_mcp/applications/wrike/app.py +0 -12
- universal_mcp/applications/youtube/app.py +0 -18
- universal_mcp/integrations/agentr.py +27 -4
- universal_mcp/integrations/integration.py +14 -6
- universal_mcp/servers/server.py +0 -3
- universal_mcp/utils/installation.py +199 -8
- {universal_mcp-0.1.8rc3.dist-info → universal_mcp-0.1.8rc4.dist-info}/METADATA +1 -1
- {universal_mcp-0.1.8rc3.dist-info → universal_mcp-0.1.8rc4.dist-info}/RECORD +30 -24
- {universal_mcp-0.1.8rc3.dist-info → universal_mcp-0.1.8rc4.dist-info}/WHEEL +0 -0
- {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
|
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("[
|
105
|
-
|
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.
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
56
|
-
universal_mcp/integrations/integration.py,sha256=
|
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=
|
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=
|
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.
|
73
|
-
universal_mcp-0.1.
|
74
|
-
universal_mcp-0.1.
|
75
|
-
universal_mcp-0.1.
|
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,,
|
File without changes
|
File without changes
|