universal-mcp 0.1.24rc27__tar.gz → 0.1.24rc29__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 (65) hide show
  1. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/PKG-INFO +1 -1
  2. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/pyproject.toml +1 -1
  3. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/applications/application.py +18 -0
  4. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/tools/adapters.py +8 -3
  5. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/.gitignore +0 -0
  6. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/LICENSE +0 -0
  7. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/README.md +0 -0
  8. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/tests/__init__.py +0 -0
  9. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/tests/conftest.py +0 -0
  10. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/tests/test_api_generator.py +0 -0
  11. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/tests/test_apps.py +0 -0
  12. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/tests/test_local_registry.py +0 -0
  13. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/tests/test_localserver.py +0 -0
  14. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/tests/test_stores.py +0 -0
  15. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/tests/test_tool.py +0 -0
  16. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/tests/test_tool_manager.py +0 -0
  17. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/agentr/README.md +0 -0
  18. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/agentr/__init__.py +0 -0
  19. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/agentr/client.py +0 -0
  20. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/agentr/integration.py +0 -0
  21. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/agentr/registry.py +0 -0
  22. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/agentr/server.py +0 -0
  23. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/applications/sample/app.py +0 -0
  24. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/applications/utils.py +0 -0
  25. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/cli.py +0 -0
  26. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/client/oauth.py +0 -0
  27. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/client/token_store.py +0 -0
  28. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/client/transport.py +0 -0
  29. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/config.py +0 -0
  30. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/exceptions.py +0 -0
  31. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/integrations/__init__.py +0 -0
  32. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/integrations/integration.py +0 -0
  33. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/logger.py +0 -0
  34. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/py.typed +0 -0
  35. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/servers/__init__.py +0 -0
  36. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/servers/server.py +0 -0
  37. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/stores/__init__.py +0 -0
  38. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/stores/store.py +0 -0
  39. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/tools/__init__.py +0 -0
  40. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/tools/docstring_parser.py +0 -0
  41. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/tools/func_metadata.py +0 -0
  42. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/tools/local_registry.py +0 -0
  43. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/tools/manager.py +0 -0
  44. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/tools/registry.py +0 -0
  45. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/tools/tools.py +0 -0
  46. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/tools/utils.py +0 -0
  47. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/types.py +0 -0
  48. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/__init__.py +0 -0
  49. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/installation.py +0 -0
  50. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/openapi/__inti__.py +0 -0
  51. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/openapi/api_generator.py +0 -0
  52. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/openapi/api_splitter.py +0 -0
  53. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/openapi/cli.py +0 -0
  54. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/openapi/docgen.py +0 -0
  55. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/openapi/filters.py +0 -0
  56. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/openapi/openapi.py +0 -0
  57. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/openapi/postprocessor.py +0 -0
  58. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/openapi/preprocessor.py +0 -0
  59. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/openapi/readme.py +0 -0
  60. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/openapi/test_generator.py +0 -0
  61. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/prompts.py +0 -0
  62. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/singleton.py +0 -0
  63. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/templates/README.md.j2 +0 -0
  64. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/templates/api_client.py.j2 +0 -0
  65. {universal_mcp-0.1.24rc27 → universal_mcp-0.1.24rc29}/src/universal_mcp/utils/testing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: universal-mcp
3
- Version: 0.1.24rc27
3
+ Version: 0.1.24rc29
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "universal-mcp"
7
- version = "0.1.24-rc27"
7
+ version = "0.1.24-rc29"
8
8
  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."
9
9
  readme = "README.md"
10
10
  authors = [
@@ -39,6 +39,24 @@ class BaseApplication(ABC):
39
39
  self.name = name
40
40
  logger.debug(f"Initializing Application '{name}' with kwargs: {kwargs}")
41
41
 
42
+ def __getstate__(self) -> dict[str, Any]:
43
+ """Returns the state of the application for pickling.
44
+
45
+ Returns:
46
+ dict[str, Any]: An empty dictionary because the application cannot be pickled.
47
+ """
48
+ logger.debug("Application cannot be pickled because it contains a httpx.Client instance")
49
+ return {}
50
+
51
+ def __setstate__(self, state: dict[str, Any]) -> None:
52
+ """Sets the state of the application for unpickling.
53
+
54
+ Args:
55
+ state (dict[str, Any]): The state of the application.
56
+ """
57
+ logger.debug("Application cannot be unpickled because it contains a httpx.Client instance")
58
+ pass
59
+
42
60
  @abstractmethod
43
61
  def list_tools(self) -> list[Callable]:
44
62
  """Lists all tools provided by this application.
@@ -28,9 +28,14 @@ def convert_to_native_tool(tool: Tool) -> Callable[..., Any]:
28
28
  """Decorator to convert a Tool object to a native tool."""
29
29
 
30
30
  def decorator(func):
31
- @wraps(func)
32
- def wrapper(*args, **kwargs):
33
- return func(*args, **kwargs)
31
+ if inspect.iscoroutinefunction(func):
32
+ @wraps(func)
33
+ async def wrapper(*args, **kwargs):
34
+ return await func(*args, **kwargs)
35
+ else:
36
+ @wraps(func)
37
+ def wrapper(*args, **kwargs):
38
+ return func(*args, **kwargs)
34
39
 
35
40
  wrapper.__name__ = tool.name
36
41
  wrapper.__doc__ = tool.fn.__doc__