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.
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/PKG-INFO +40 -1
- universal_mcp-0.1.13rc3/pyproject.toml +241 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/agents/react.py +1 -1
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/streamlit.py +0 -1
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/installation.py +8 -8
- universal_mcp-0.1.13rc2/pyproject.toml +0 -161
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/.gitignore +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/README.md +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/README.md +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/__init__.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/__main__.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/client.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/memory/__init__.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/memory/sqlite.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/schema.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/settings.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/playground/utils.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/__init__.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/conftest.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_api_generator.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_api_integration.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_applications.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_localserver.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_stores.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_tool.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/tests/test_zenquotes.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/__init__.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/analytics.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/applications/__init__.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/applications/application.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/cli.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/config.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/exceptions.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/integrations/README.md +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/integrations/__init__.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/integrations/integration.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/logger.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/py.typed +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/servers/README.md +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/servers/__init__.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/servers/server.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/stores/README.md +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/stores/__init__.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/stores/store.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/templates/README.md.j2 +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/templates/api_client.py.j2 +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/tools/README.md +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/tools/__init__.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/tools/adapters.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/tools/func_metadata.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/tools/tools.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/__init__.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/agentr.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/api_generator.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/docgen.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/docstring_parser.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/dump_app_tools.py +0 -0
- {universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/openapi.py +0 -0
- {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.
|
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" }
|
@@ -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[
|
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[
|
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[
|
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[
|
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[
|
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[
|
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[
|
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[
|
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"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/applications/__init__.py
RENAMED
File without changes
|
{universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/applications/application.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/integrations/README.md
RENAMED
File without changes
|
{universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/integrations/__init__.py
RENAMED
File without changes
|
{universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/integrations/integration.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/templates/README.md.j2
RENAMED
File without changes
|
{universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/templates/api_client.py.j2
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/tools/func_metadata.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/api_generator.py
RENAMED
File without changes
|
File without changes
|
{universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/docstring_parser.py
RENAMED
File without changes
|
{universal_mcp-0.1.13rc2 → universal_mcp-0.1.13rc3}/src/universal_mcp/utils/dump_app_tools.py
RENAMED
File without changes
|
File without changes
|
File without changes
|