mcp-proxy-adapter 2.1.6__tar.gz → 2.1.8__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 (50) hide show
  1. {mcp_proxy_adapter-2.1.6/mcp_proxy_adapter.egg-info → mcp_proxy_adapter-2.1.8}/PKG-INFO +1 -1
  2. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/examples/openapi_server.py +1 -1
  3. mcp_proxy_adapter-2.1.8/mcp_proxy_adapter/testing_utils.py +112 -0
  4. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8/mcp_proxy_adapter.egg-info}/PKG-INFO +1 -1
  5. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter.egg-info/SOURCES.txt +1 -0
  6. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/pyproject.toml +1 -1
  7. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/setup.py +2 -2
  8. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/LICENSE +0 -0
  9. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/MANIFEST.in +0 -0
  10. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/README.md +0 -0
  11. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/code_index.yaml +0 -0
  12. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/__init__.py +0 -0
  13. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/adapter.py +0 -0
  14. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/analyzers/__init__.py +0 -0
  15. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/analyzers/docstring_analyzer.py +0 -0
  16. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/analyzers/type_analyzer.py +0 -0
  17. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/dispatchers/__init__.py +0 -0
  18. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/dispatchers/base_dispatcher.py +0 -0
  19. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/dispatchers/json_rpc_dispatcher.py +0 -0
  20. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/examples/analyze_config.py +0 -0
  21. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/examples/basic_integration.py +0 -0
  22. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/examples/docstring_and_schema_example.py +0 -0
  23. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/examples/extension_example.py +0 -0
  24. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/examples/help_best_practices.py +0 -0
  25. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/examples/help_usage.py +0 -0
  26. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/examples/mcp_proxy_client.py +0 -0
  27. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/examples/project_structure_example.py +0 -0
  28. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/examples/testing_example.py +0 -0
  29. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/models.py +0 -0
  30. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/registry.py +0 -0
  31. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/schema.py +0 -0
  32. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/validators/docstring_validator.py +0 -0
  33. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter/validators/metadata_validator.py +0 -0
  34. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter.egg-info/dependency_links.txt +0 -0
  35. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter.egg-info/requires.txt +0 -0
  36. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/mcp_proxy_adapter.egg-info/top_level.txt +0 -0
  37. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/requirements.txt +0 -0
  38. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/setup.cfg +0 -0
  39. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/tests/conftest.py +0 -0
  40. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/tests/test_adapter.py +0 -0
  41. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/tests/test_adapter_coverage.py +0 -0
  42. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/tests/test_basic_dispatcher.py +0 -0
  43. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/tests/test_command_registry.py +0 -0
  44. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/tests/test_examples.py +0 -0
  45. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/tests/test_mcp_proxy_adapter.py +0 -0
  46. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/tests/test_mcp_proxy_adapter_basic.py +0 -0
  47. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/tests/test_part1.py +0 -0
  48. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/tests/test_part2.py +0 -0
  49. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/tests/test_schema.py +0 -0
  50. {mcp_proxy_adapter-2.1.6 → mcp_proxy_adapter-2.1.8}/tests/test_simple_adapter.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 2.1.6
3
+ Version: 2.1.8
4
4
  Summary: Adapter for exposing Command Registry commands as tools for AI models via MCP Proxy.
5
5
  Home-page: https://github.com/vasilyvz/mcp-proxy-adapter
6
6
  Author: Vasiliy VZ
@@ -26,7 +26,7 @@ from mcp_proxy_adapter.models import JsonRpcRequest, JsonRpcResponse
26
26
 
27
27
  # Import MockRegistry from tests for example
28
28
  # (in a real project, CommandRegistry would be used)
29
- from tests.test_mcp_proxy_adapter import MockRegistry
29
+ from mcp_proxy_adapter.testing_utils import MockRegistry
30
30
 
31
31
  # Configure logging
32
32
  logging.basicConfig(level=logging.DEBUG)
@@ -0,0 +1,112 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Test utilities for MCP Proxy Adapter: mock dispatcher, registry, and OpenAPI generator.
4
+ Can be used in examples and tests.
5
+ """
6
+
7
+ def success_command(value: int = 1) -> dict:
8
+ return {"result": value * 2}
9
+
10
+ def error_command() -> None:
11
+ raise ValueError("Test error")
12
+
13
+ def param_command(required_param: str, optional_param: int = 0) -> dict:
14
+ return {"required": required_param, "optional": optional_param}
15
+
16
+ def complex_param_command(array_param: list, object_param: dict, bool_param: bool = True) -> dict:
17
+ return {
18
+ "array_length": len(array_param),
19
+ "object_keys": list(object_param.keys()),
20
+ "bool_value": bool_param
21
+ }
22
+
23
+ def type_error_command(param: int) -> dict:
24
+ return {"param": param + 1}
25
+
26
+ class MockDispatcher:
27
+ def __init__(self):
28
+ self.commands = {
29
+ "success": success_command,
30
+ "error": error_command,
31
+ "param": param_command,
32
+ "execute": self.execute_from_params
33
+ }
34
+ self.commands_info = {
35
+ "success": {
36
+ "description": "Successful command",
37
+ "params": {"value": {"type": "integer", "description": "Input value", "required": False, "default": 1}}
38
+ },
39
+ "error": {"description": "Command with error", "params": {}},
40
+ "param": {
41
+ "description": "Command with parameters",
42
+ "params": {
43
+ "required_param": {"type": "string", "description": "Required parameter", "required": True},
44
+ "optional_param": {"type": "integer", "description": "Optional parameter", "required": False, "default": 0}
45
+ }
46
+ },
47
+ "execute": {
48
+ "description": "Universal command for executing other commands",
49
+ "params": {"query": {"type": "string", "description": "Command or query to execute", "required": False}}
50
+ },
51
+ "complex_param": {
52
+ "description": "Command with complex parameters",
53
+ "params": {
54
+ "array_param": {"type": "array", "description": "Array of values", "required": True},
55
+ "object_param": {"type": "object", "description": "Object", "required": True},
56
+ "bool_param": {"type": "boolean", "description": "Boolean value", "required": False, "default": True}
57
+ }
58
+ },
59
+ "type_error": {
60
+ "description": "Command that will raise TypeError",
61
+ "params": {"param": {"type": "integer", "description": "Integer parameter", "required": True}}
62
+ }
63
+ }
64
+
65
+ def execute_from_params(self, **params):
66
+ if "query" in params and params["query"] in self.commands:
67
+ command = params.pop("query")
68
+ return self.execute(command, **params)
69
+ return {"available_commands": self.get_valid_commands(), "received_params": params}
70
+
71
+ def execute(self, command, **params):
72
+ if command not in self.commands:
73
+ raise KeyError(f"Unknown command: {command}")
74
+ return self.commands[command](**params)
75
+
76
+ def get_valid_commands(self):
77
+ return list(self.commands.keys())
78
+
79
+ def get_command_info(self, command):
80
+ return self.commands_info.get(command)
81
+
82
+ def get_commands_info(self):
83
+ return self.commands_info
84
+
85
+ class MockRegistry:
86
+ def __init__(self, use_openapi_generator=False):
87
+ self.dispatcher = MockDispatcher()
88
+ self.generators = []
89
+ self.use_openapi_generator = use_openapi_generator
90
+
91
+ def get_commands_info(self):
92
+ return self.dispatcher.get_commands_info()
93
+
94
+ def add_generator(self, generator):
95
+ self.generators.append(generator)
96
+ if hasattr(generator, 'set_dispatcher'):
97
+ generator.set_dispatcher(self.dispatcher)
98
+
99
+ class MockOpenApiGenerator:
100
+ def __init__(self, **kwargs):
101
+ self.dispatcher = None
102
+ self.kwargs = kwargs
103
+
104
+ def set_dispatcher(self, dispatcher):
105
+ self.dispatcher = dispatcher
106
+
107
+ def generate_schema(self):
108
+ return {
109
+ "openapi": "3.0.0",
110
+ "info": {"title": "Mock API", "version": "1.0.0"},
111
+ "paths": {}
112
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 2.1.6
3
+ Version: 2.1.8
4
4
  Summary: Adapter for exposing Command Registry commands as tools for AI models via MCP Proxy.
5
5
  Home-page: https://github.com/vasilyvz/mcp-proxy-adapter
6
6
  Author: Vasiliy VZ
@@ -10,6 +10,7 @@ mcp_proxy_adapter/adapter.py
10
10
  mcp_proxy_adapter/models.py
11
11
  mcp_proxy_adapter/registry.py
12
12
  mcp_proxy_adapter/schema.py
13
+ mcp_proxy_adapter/testing_utils.py
13
14
  mcp_proxy_adapter.egg-info/PKG-INFO
14
15
  mcp_proxy_adapter.egg-info/SOURCES.txt
15
16
  mcp_proxy_adapter.egg-info/dependency_links.txt
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mcp-proxy-adapter"
7
- version = "2.1.6"
7
+ version = "2.1.8"
8
8
  description = "Adapter for exposing Command Registry commands as tools for AI models via MCP Proxy."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -14,7 +14,7 @@ with open(os.path.join(here, 'requirements.txt'), encoding='utf-8') as f:
14
14
 
15
15
  setup(
16
16
  name="mcp-proxy-adapter",
17
- version="2.1.6",
17
+ version="2.1.8",
18
18
  description="Adapter for exposing Command Registry commands as tools for AI models via MCP Proxy.",
19
19
  long_description=long_description,
20
20
  long_description_content_type="text/markdown",
@@ -42,6 +42,6 @@ setup(
42
42
  },
43
43
  include_package_data=True,
44
44
  package_data={
45
- 'mcp_proxy_adapter': ['examples/*.py', 'examples/*.json', 'docs/*.md', '../README.md'],
45
+ 'mcp_proxy_adapter': ['examples/*.py', 'examples/*.json', 'docs/*.md', '../README.md', 'testing_utils.py'],
46
46
  },
47
47
  )