universal-mcp 0.1.13rc2__tar.gz → 0.1.13rc3__tar.gz

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 (59) hide show
  1. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/PKG-INFO +40 -1
  2. universal_mcp-0.1.13rc3/pyproject.toml +241 -0
  3. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/agents/react.py +1 -1
  4. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/streamlit.py +0 -1
  5. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/installation.py +8 -8
  6. universal_mcp-0.1.13rc2/pyproject.toml +0 -161
  7. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/.gitignore +0 -0
  8. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/README.md +0 -0
  9. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/README.md +0 -0
  10. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/__init__.py +0 -0
  11. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/__main__.py +0 -0
  12. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/client.py +0 -0
  13. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/memory/__init__.py +0 -0
  14. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/memory/sqlite.py +0 -0
  15. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/schema.py +0 -0
  16. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/settings.py +0 -0
  17. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/utils.py +0 -0
  18. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/__init__.py +0 -0
  19. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/conftest.py +0 -0
  20. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_api_generator.py +0 -0
  21. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_api_integration.py +0 -0
  22. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_applications.py +0 -0
  23. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_localserver.py +0 -0
  24. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_stores.py +0 -0
  25. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_tool.py +0 -0
  26. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_zenquotes.py +0 -0
  27. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/__init__.py +0 -0
  28. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/analytics.py +0 -0
  29. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/applications/__init__.py +0 -0
  30. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/applications/application.py +0 -0
  31. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/cli.py +0 -0
  32. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/config.py +0 -0
  33. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/exceptions.py +0 -0
  34. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/integrations/README.md +0 -0
  35. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/integrations/__init__.py +0 -0
  36. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/integrations/integration.py +0 -0
  37. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/logger.py +0 -0
  38. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/py.typed +0 -0
  39. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/servers/README.md +0 -0
  40. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/servers/__init__.py +0 -0
  41. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/servers/server.py +0 -0
  42. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/stores/README.md +0 -0
  43. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/stores/__init__.py +0 -0
  44. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/stores/store.py +0 -0
  45. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/templates/README.md.j2 +0 -0
  46. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/templates/api_client.py.j2 +0 -0
  47. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/tools/README.md +0 -0
  48. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/tools/__init__.py +0 -0
  49. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/tools/adapters.py +0 -0
  50. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/tools/func_metadata.py +0 -0
  51. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/tools/tools.py +0 -0
  52. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/__init__.py +0 -0
  53. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/agentr.py +0 -0
  54. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/api_generator.py +0 -0
  55. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/docgen.py +0 -0
  56. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/docstring_parser.py +0 -0
  57. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/dump_app_tools.py +0 -0
  58. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/openapi.py +0 -0
  59. {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/singleton.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: universal-mcp
3
- Version: 0.1.13rc2
3
+ Version: 0.1.13rc3
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
  License: MIT
@@ -31,6 +31,45 @@ Requires-Dist: python-dotenv>=1.0.1; extra == 'all'
31
31
  Requires-Dist: ruff>=0.11.4; extra == 'all'
32
32
  Requires-Dist: streamlit>=1.44.1; extra == 'all'
33
33
  Requires-Dist: watchdog>=6.0.0; extra == 'all'
34
+ Provides-Extra: applications
35
+ Requires-Dist: universal-mcp-ahrefs; extra == 'applications'
36
+ Requires-Dist: universal-mcp-cal-com-v2; extra == 'applications'
37
+ Requires-Dist: universal-mcp-calendly; extra == 'applications'
38
+ Requires-Dist: universal-mcp-clickup; extra == 'applications'
39
+ Requires-Dist: universal-mcp-coda; extra == 'applications'
40
+ Requires-Dist: universal-mcp-crustdata; extra == 'applications'
41
+ Requires-Dist: universal-mcp-e2b; extra == 'applications'
42
+ Requires-Dist: universal-mcp-elevenlabs; extra == 'applications'
43
+ Requires-Dist: universal-mcp-falai; extra == 'applications'
44
+ Requires-Dist: universal-mcp-figma; extra == 'applications'
45
+ Requires-Dist: universal-mcp-firecrawl; extra == 'applications'
46
+ Requires-Dist: universal-mcp-github; extra == 'applications'
47
+ Requires-Dist: universal-mcp-gong; extra == 'applications'
48
+ Requires-Dist: universal-mcp-google-calendar; extra == 'applications'
49
+ Requires-Dist: universal-mcp-google-docs; extra == 'applications'
50
+ Requires-Dist: universal-mcp-google-drive; extra == 'applications'
51
+ Requires-Dist: universal-mcp-google-mail; extra == 'applications'
52
+ Requires-Dist: universal-mcp-google-sheet; extra == 'applications'
53
+ Requires-Dist: universal-mcp-hashnode; extra == 'applications'
54
+ Requires-Dist: universal-mcp-heygen; extra == 'applications'
55
+ Requires-Dist: universal-mcp-mailchimp; extra == 'applications'
56
+ Requires-Dist: universal-mcp-markitdown; extra == 'applications'
57
+ Requires-Dist: universal-mcp-neon; extra == 'applications'
58
+ Requires-Dist: universal-mcp-notion; extra == 'applications'
59
+ Requires-Dist: universal-mcp-perplexity; extra == 'applications'
60
+ Requires-Dist: universal-mcp-reddit; extra == 'applications'
61
+ Requires-Dist: universal-mcp-replicate; extra == 'applications'
62
+ Requires-Dist: universal-mcp-resend; extra == 'applications'
63
+ Requires-Dist: universal-mcp-retell; extra == 'applications'
64
+ Requires-Dist: universal-mcp-rocketlane; extra == 'applications'
65
+ Requires-Dist: universal-mcp-serpapi; extra == 'applications'
66
+ Requires-Dist: universal-mcp-shortcut; extra == 'applications'
67
+ Requires-Dist: universal-mcp-spotify; extra == 'applications'
68
+ Requires-Dist: universal-mcp-supabase; extra == 'applications'
69
+ Requires-Dist: universal-mcp-tavily; extra == 'applications'
70
+ Requires-Dist: universal-mcp-wrike; extra == 'applications'
71
+ Requires-Dist: universal-mcp-youtube; extra == 'applications'
72
+ Requires-Dist: universal-mcp-zenquotes; extra == 'applications'
34
73
  Provides-Extra: dev
35
74
  Requires-Dist: litellm>=1.30.7; extra == 'dev'
36
75
  Requires-Dist: pyright>=1.1.398; extra == 'dev'
@@ -0,0 +1,241 @@
1
+ [project]
2
+ name = "universal-mcp"
3
+ version = "0.1.13-rc3"
4
+ description = "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
+ readme = "README.md"
6
+ authors = [
7
+ { name = "Manoj Bajaj", email = "manojbajaj95@gmail.com" }
8
+ ]
9
+ requires-python = ">=3.11"
10
+ license = { text = "MIT" }
11
+ dependencies = [
12
+ "pydantic>=2.11.1",
13
+ "pydantic-settings>=2.8.1",
14
+ "loguru>=0.7.3",
15
+ "pyyaml>=6.0.2",
16
+ "typer>=0.15.2",
17
+ "keyring>=25.6.0",
18
+ "litellm>=1.30.7",
19
+ "rich>=14.0.0",
20
+ "posthog>=3.24.0",
21
+ "mcp>=1.6.0",
22
+ "gql[all]>=3.5.2",
23
+ "cookiecutter>=2.6.0",
24
+ "Jinja2>=3.1.3",
25
+ ]
26
+
27
+ [project.optional-dependencies]
28
+ playground = [
29
+ "langchain-mcp-adapters>=0.0.3",
30
+ "langgraph>=0.3.24",
31
+ "langgraph-checkpoint-sqlite>=2.0.6",
32
+ "streamlit>=1.44.1",
33
+ "python-dotenv>=1.0.1",
34
+ "langchain-openai>=0.3.12",
35
+ "watchdog>=6.0.0",
36
+ ]
37
+ dev = [
38
+ "ruff>=0.11.4",
39
+ "pytest>=8.3.5",
40
+ "pytest-asyncio>=0.26.0",
41
+ "pyright>=1.1.398",
42
+ "litellm>=1.30.7",
43
+ ]
44
+ all = [
45
+ # Playground dependencies
46
+ "langchain-mcp-adapters>=0.0.3",
47
+ "langgraph>=0.3.24",
48
+ "langgraph-checkpoint-sqlite>=2.0.6",
49
+ "streamlit>=1.44.1",
50
+ "python-dotenv>=1.0.1",
51
+ "langchain-openai>=0.3.12",
52
+ "watchdog>=6.0.0",
53
+ # Development dependencies
54
+ "ruff>=0.11.4",
55
+ "pytest>=8.3.5",
56
+ "pytest-asyncio>=0.26.0",
57
+ "pyright>=1.1.398",
58
+ "litellm>=1.30.7",
59
+ ]
60
+ applications = [
61
+ "universal-mcp-ahrefs",
62
+ "universal-mcp-cal-com-v2",
63
+ "universal-mcp-calendly",
64
+ "universal-mcp-clickup",
65
+ "universal-mcp-coda",
66
+ "universal-mcp-crustdata",
67
+ "universal-mcp-e2b",
68
+ "universal-mcp-elevenlabs",
69
+ "universal-mcp-falai",
70
+ "universal-mcp-figma",
71
+ "universal-mcp-firecrawl",
72
+ "universal-mcp-github",
73
+ "universal-mcp-gong",
74
+ "universal-mcp-google-calendar",
75
+ "universal-mcp-google-docs",
76
+ "universal-mcp-google-drive",
77
+ "universal-mcp-google-mail",
78
+ "universal-mcp-google-sheet",
79
+ "universal-mcp-hashnode",
80
+ "universal-mcp-heygen",
81
+ "universal-mcp-mailchimp",
82
+ "universal-mcp-markitdown",
83
+ "universal-mcp-neon",
84
+ "universal-mcp-notion",
85
+ "universal-mcp-perplexity",
86
+ "universal-mcp-reddit",
87
+ "universal-mcp-replicate",
88
+ "universal-mcp-resend",
89
+ "universal-mcp-retell",
90
+ "universal-mcp-rocketlane",
91
+ "universal-mcp-serpapi",
92
+ "universal-mcp-shortcut",
93
+ "universal-mcp-spotify",
94
+ "universal-mcp-supabase",
95
+ "universal-mcp-tavily",
96
+ "universal-mcp-wrike",
97
+ "universal-mcp-youtube",
98
+ "universal-mcp-zenquotes",
99
+ ]
100
+
101
+ [project.scripts]
102
+ universal_mcp = "universal_mcp.cli:app"
103
+
104
+ [build-system]
105
+ requires = ["hatchling"]
106
+ build-backend = "hatchling.build"
107
+
108
+ [tool.hatch.build.targets.sdist]
109
+ include = [
110
+ "/src",
111
+ "/templates", # Important: Include the templates directory!
112
+ ]
113
+ [tool.hatch.build.targets.wheel]
114
+ packages = ["src/universal_mcp"]
115
+ # Ensure templates are included in the wheel data
116
+ [tool.hatch.build.targets.wheel.shared-data]
117
+ "templates" = "universal_mcp/templates"
118
+
119
+ [tool.ruff]
120
+ # Exclude a variety of commonly ignored directories.
121
+ exclude = [
122
+ ".bzr",
123
+ ".direnv",
124
+ ".eggs",
125
+ ".git",
126
+ ".git-rewrite",
127
+ ".hg",
128
+ ".ipynb_checkpoints",
129
+ ".mypy_cache",
130
+ ".nox",
131
+ ".pants.d",
132
+ ".pyenv",
133
+ ".pytest_cache",
134
+ ".pytype",
135
+ ".ruff_cache",
136
+ ".svn",
137
+ ".tox",
138
+ ".venv",
139
+ ".vscode",
140
+ "__pypackages__",
141
+ "_build",
142
+ "buck-out",
143
+ "build",
144
+ "dist",
145
+ "node_modules",
146
+ "site-packages",
147
+ "venv",
148
+ ]
149
+
150
+ # Same as Black.
151
+ line-length = 88
152
+ indent-width = 4
153
+
154
+ # Assume Python 3.12
155
+ target-version = "py312"
156
+
157
+ [tool.ruff.lint]
158
+ # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default.
159
+ # Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or
160
+ # McCabe complexity (`C901`) by default.
161
+ select = [
162
+ # pycodestyle
163
+ "E",
164
+ # Pyflakes
165
+ "F",
166
+ # pyupgrade
167
+ "UP",
168
+ # flake8-bugbear
169
+ "B",
170
+ # flake8-simplify
171
+ "SIM",
172
+ # isort
173
+ "I",
174
+ ]
175
+ ignore = ['E501', 'B008']
176
+
177
+ # Allow fix for all enabled rules (when `--fix`) is provided.
178
+ fixable = ["ALL"]
179
+ unfixable = []
180
+
181
+ # Allow unused variables when underscore-prefixed.
182
+ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
183
+
184
+ [tool.ruff.format]
185
+ # Like Black, use double quotes for strings.
186
+ quote-style = "double"
187
+
188
+ # Like Black, indent with spaces, rather than tabs.
189
+ indent-style = "space"
190
+
191
+ # Like Black, respect magic trailing commas.
192
+ skip-magic-trailing-comma = false
193
+
194
+ # Like Black, automatically detect the appropriate line ending.
195
+ line-ending = "auto"
196
+
197
+ docstring-code-line-length = "dynamic"
198
+
199
+ [tool.pytest.ini_options]
200
+ asyncio_mode = "strict"
201
+ asyncio_default_fixture_loop_scope = "function"
202
+
203
+ [tool.uv.sources]
204
+ universal-mcp-ahrefs = { git = "https://github.com/universal-mcp/ahrefs" }
205
+ universal-mcp-cal-com-v2 = { git = "https://github.com/universal-mcp/cal-com-v2" }
206
+ universal-mcp-calendly = { git = "https://github.com/universal-mcp/calendly" }
207
+ universal-mcp-clickup = { git = "https://github.com/universal-mcp/clickup" }
208
+ universal-mcp-coda = { git = "https://github.com/universal-mcp/coda" }
209
+ universal-mcp-crustdata = { git = "https://github.com/universal-mcp/crustdata" }
210
+ universal-mcp-e2b = { git = "https://github.com/universal-mcp/e2b" }
211
+ universal-mcp-elevenlabs = { git = "https://github.com/universal-mcp/elevenlabs" }
212
+ universal-mcp-falai = { git = "https://github.com/universal-mcp/falai" }
213
+ universal-mcp-figma = { git = "https://github.com/universal-mcp/figma" }
214
+ universal-mcp-firecrawl = { git = "https://github.com/universal-mcp/firecrawl" }
215
+ universal-mcp-github = { git = "https://github.com/universal-mcp/github" }
216
+ universal-mcp-gong = { git = "https://github.com/universal-mcp/gong" }
217
+ universal-mcp-google-calendar = { git = "https://github.com/universal-mcp/google-calendar" }
218
+ universal-mcp-google-docs = { git = "https://github.com/universal-mcp/google-docs" }
219
+ universal-mcp-google-drive = { git = "https://github.com/universal-mcp/google-drive" }
220
+ universal-mcp-google-mail = { git = "https://github.com/universal-mcp/google-mail" }
221
+ universal-mcp-google-sheet = { git = "https://github.com/universal-mcp/google-sheet" }
222
+ universal-mcp-hashnode = { git = "https://github.com/universal-mcp/hashnode" }
223
+ universal-mcp-heygen = { git = "https://github.com/universal-mcp/heygen" }
224
+ universal-mcp-mailchimp = { git = "https://github.com/universal-mcp/mailchimp" }
225
+ universal-mcp-markitdown = { git = "https://github.com/universal-mcp/markitdown" }
226
+ universal-mcp-neon = { git = "https://github.com/universal-mcp/neon" }
227
+ universal-mcp-notion = { git = "https://github.com/universal-mcp/notion" }
228
+ universal-mcp-perplexity = { git = "https://github.com/universal-mcp/perplexity" }
229
+ universal-mcp-reddit = { git = "https://github.com/universal-mcp/reddit" }
230
+ universal-mcp-replicate = { git = "https://github.com/universal-mcp/replicate" }
231
+ universal-mcp-resend = { git = "https://github.com/universal-mcp/resend" }
232
+ universal-mcp-retell = { git = "https://github.com/universal-mcp/retell" }
233
+ universal-mcp-rocketlane = { git = "https://github.com/universal-mcp/rocketlane" }
234
+ universal-mcp-serpapi = { git = "https://github.com/universal-mcp/serpapi" }
235
+ universal-mcp-shortcut = { git = "https://github.com/universal-mcp/shortcut" }
236
+ universal-mcp-spotify = { git = "https://github.com/universal-mcp/spotify" }
237
+ universal-mcp-supabase = { git = "https://github.com/universal-mcp/supabase" }
238
+ universal-mcp-tavily = { git = "https://github.com/universal-mcp/tavily" }
239
+ universal-mcp-wrike = { git = "https://github.com/universal-mcp/wrike" }
240
+ universal-mcp-youtube = { git = "https://github.com/universal-mcp/youtube" }
241
+ universal-mcp-zenquotes = { git = "https://github.com/universal-mcp/zenquotes" }
@@ -12,7 +12,7 @@ async def load_tools():
12
12
  async with MultiServerMCPClient(
13
13
  {
14
14
  "agentr": {
15
- "url": "http://localhost:8000/sse",
15
+ "url": "http://localhost:8005/sse",
16
16
  "transport": "sse",
17
17
  },
18
18
  }
@@ -6,7 +6,6 @@ from collections.abc import AsyncGenerator
6
6
  from pathlib import Path
7
7
 
8
8
  import streamlit as st
9
- from dotenv import load_dotenv
10
9
  from pydantic import ValidationError
11
10
  from streamlit.runtime.scriptrunner import get_script_run_ctx
12
11
 
@@ -61,7 +61,7 @@ def install_claude(api_key: str) -> None:
61
61
  config["mcpServers"] = {}
62
62
  config["mcpServers"]["universal_mcp"] = {
63
63
  "command": get_uvx_path(),
64
- "args": ["universal_mcp[all]@latest", "run"],
64
+ "args": ["universal_mcp[applications]@latest", "run"],
65
65
  "env": {"AGENTR_API_KEY": api_key},
66
66
  }
67
67
  with open(config_path, "w") as f:
@@ -90,7 +90,7 @@ def install_cursor(api_key: str) -> None:
90
90
  config["mcpServers"] = {}
91
91
  config["mcpServers"]["universal_mcp"] = {
92
92
  "command": get_uvx_path(),
93
- "args": ["universal_mcp[all]@latest", "run"],
93
+ "args": ["universal_mcp[applications]@latest", "run"],
94
94
  "env": {"AGENTR_API_KEY": api_key},
95
95
  }
96
96
 
@@ -120,7 +120,7 @@ def install_cline(api_key: str) -> None:
120
120
  config["mcpServers"] = {}
121
121
  config["mcpServers"]["universal_mcp"] = {
122
122
  "command": get_uvx_path(),
123
- "args": ["universal_mcp[all]@latest", "run"],
123
+ "args": ["universal_mcp[applications]@latest", "run"],
124
124
  "env": {"AGENTR_API_KEY": api_key},
125
125
  }
126
126
 
@@ -156,7 +156,7 @@ def install_continue(api_key: str) -> None:
156
156
  config["mcpServers"] = {}
157
157
  config["mcpServers"]["universal_mcp"] = {
158
158
  "command": get_uvx_path(),
159
- "args": ["universal_mcp[all]@latest", "run"],
159
+ "args": ["universal_mcp[applications]@latest", "run"],
160
160
  "env": {"AGENTR_API_KEY": api_key},
161
161
  }
162
162
 
@@ -192,7 +192,7 @@ def install_goose(api_key: str) -> None:
192
192
  config["mcpServers"] = {}
193
193
  config["mcpServers"]["universal_mcp"] = {
194
194
  "command": get_uvx_path(),
195
- "args": ["universal_mcp[all]@latest", "run"],
195
+ "args": ["universal_mcp[applications]@latest", "run"],
196
196
  "env": {"AGENTR_API_KEY": api_key},
197
197
  }
198
198
 
@@ -228,7 +228,7 @@ def install_windsurf(api_key: str) -> None:
228
228
  config["mcpServers"] = {}
229
229
  config["mcpServers"]["universal_mcp"] = {
230
230
  "command": get_uvx_path(),
231
- "args": ["universal_mcp[all]@latest", "run"],
231
+ "args": ["universal_mcp[applications]@latest", "run"],
232
232
  "env": {"AGENTR_API_KEY": api_key},
233
233
  }
234
234
 
@@ -267,7 +267,7 @@ def install_zed(api_key: str) -> None:
267
267
  server.update(
268
268
  {
269
269
  "command": get_uvx_path(),
270
- "args": ["universal_mcp[all]@latest", "run"],
270
+ "args": ["universal_mcp[applications]@latest", "run"],
271
271
  "env": {"AGENTR_API_KEY": api_key},
272
272
  }
273
273
  )
@@ -278,7 +278,7 @@ def install_zed(api_key: str) -> None:
278
278
  {
279
279
  "name": "universal_mcp",
280
280
  "command": get_uvx_path(),
281
- "args": ["universal_mcp[all]@latest", "run"],
281
+ "args": ["universal_mcp[applications]@latest", "run"],
282
282
  "env": {"AGENTR_API_KEY": api_key},
283
283
  }
284
284
  )
@@ -1,161 +0,0 @@
1
- [project]
2
- name = "universal-mcp"
3
- version = "0.1.13-rc2"
4
- description = "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
- readme = "README.md"
6
- authors = [
7
- { name = "Manoj Bajaj", email = "manojbajaj95@gmail.com" }
8
- ]
9
- requires-python = ">=3.11"
10
- license = { text = "MIT" }
11
- dependencies = [
12
- "pydantic>=2.11.1",
13
- "pydantic-settings>=2.8.1",
14
- "loguru>=0.7.3",
15
- "pyyaml>=6.0.2",
16
- "typer>=0.15.2",
17
- "keyring>=25.6.0",
18
- "litellm>=1.30.7",
19
- "rich>=14.0.0",
20
- "posthog>=3.24.0",
21
- "mcp>=1.6.0",
22
- "gql[all]>=3.5.2",
23
- "cookiecutter>=2.6.0",
24
- "Jinja2>=3.1.3",
25
- ]
26
-
27
- [project.optional-dependencies]
28
- playground = [
29
- "langchain-mcp-adapters>=0.0.3",
30
- "langgraph>=0.3.24",
31
- "langgraph-checkpoint-sqlite>=2.0.6",
32
- "streamlit>=1.44.1",
33
- "python-dotenv>=1.0.1",
34
- "langchain-openai>=0.3.12",
35
- "watchdog>=6.0.0",
36
- ]
37
- dev = [
38
- "ruff>=0.11.4",
39
- "pytest>=8.3.5",
40
- "pytest-asyncio>=0.26.0",
41
- "pyright>=1.1.398",
42
- "litellm>=1.30.7",
43
- ]
44
- all = [
45
- # Playground dependencies
46
- "langchain-mcp-adapters>=0.0.3",
47
- "langgraph>=0.3.24",
48
- "langgraph-checkpoint-sqlite>=2.0.6",
49
- "streamlit>=1.44.1",
50
- "python-dotenv>=1.0.1",
51
- "langchain-openai>=0.3.12",
52
- "watchdog>=6.0.0",
53
- # Development dependencies
54
- "ruff>=0.11.4",
55
- "pytest>=8.3.5",
56
- "pytest-asyncio>=0.26.0",
57
- "pyright>=1.1.398",
58
- "litellm>=1.30.7",
59
- ]
60
-
61
- [project.scripts]
62
- universal_mcp = "universal_mcp.cli:app"
63
-
64
- [build-system]
65
- requires = ["hatchling"]
66
- build-backend = "hatchling.build"
67
-
68
- [tool.hatch.build.targets.sdist]
69
- include = [
70
- "/src",
71
- "/templates", # Important: Include the templates directory!
72
- ]
73
- [tool.hatch.build.targets.wheel]
74
- packages = ["src/universal_mcp"]
75
- # Ensure templates are included in the wheel data
76
- [tool.hatch.build.targets.wheel.shared-data]
77
- "templates" = "universal_mcp/templates"
78
-
79
- [tool.ruff]
80
- # Exclude a variety of commonly ignored directories.
81
- exclude = [
82
- ".bzr",
83
- ".direnv",
84
- ".eggs",
85
- ".git",
86
- ".git-rewrite",
87
- ".hg",
88
- ".ipynb_checkpoints",
89
- ".mypy_cache",
90
- ".nox",
91
- ".pants.d",
92
- ".pyenv",
93
- ".pytest_cache",
94
- ".pytype",
95
- ".ruff_cache",
96
- ".svn",
97
- ".tox",
98
- ".venv",
99
- ".vscode",
100
- "__pypackages__",
101
- "_build",
102
- "buck-out",
103
- "build",
104
- "dist",
105
- "node_modules",
106
- "site-packages",
107
- "venv",
108
- ]
109
-
110
- # Same as Black.
111
- line-length = 88
112
- indent-width = 4
113
-
114
- # Assume Python 3.12
115
- target-version = "py312"
116
-
117
- [tool.ruff.lint]
118
- # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default.
119
- # Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or
120
- # McCabe complexity (`C901`) by default.
121
- select = [
122
- # pycodestyle
123
- "E",
124
- # Pyflakes
125
- "F",
126
- # pyupgrade
127
- "UP",
128
- # flake8-bugbear
129
- "B",
130
- # flake8-simplify
131
- "SIM",
132
- # isort
133
- "I",
134
- ]
135
- ignore = ['E501', 'B008']
136
-
137
- # Allow fix for all enabled rules (when `--fix`) is provided.
138
- fixable = ["ALL"]
139
- unfixable = []
140
-
141
- # Allow unused variables when underscore-prefixed.
142
- dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
143
-
144
- [tool.ruff.format]
145
- # Like Black, use double quotes for strings.
146
- quote-style = "double"
147
-
148
- # Like Black, indent with spaces, rather than tabs.
149
- indent-style = "space"
150
-
151
- # Like Black, respect magic trailing commas.
152
- skip-magic-trailing-comma = false
153
-
154
- # Like Black, automatically detect the appropriate line ending.
155
- line-ending = "auto"
156
-
157
- docstring-code-line-length = "dynamic"
158
-
159
- [tool.pytest.ini_options]
160
- asyncio_mode = "strict"
161
- asyncio_default_fixture_loop_scope = "function"