mcp-proxy-adapter 3.1.1__py3-none-any.whl → 3.1.3__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.
@@ -81,9 +81,27 @@ class Command(ABC):
81
81
  Raises:
82
82
  ValidationError: If parameters are invalid.
83
83
  """
84
+ # Ensure params is a dictionary, even if None was passed
85
+ if params is None:
86
+ params = {}
87
+
88
+ # Create a copy to avoid modifying the input dictionary during iteration
89
+ validated_params = params.copy()
90
+
91
+ # Handle None values and empty strings in parameters
92
+ for key, value in list(validated_params.items()):
93
+ # Process None values or empty strings - this helps with JavaScript null/undefined conversions
94
+ if value is None or (isinstance(value, str) and value == ""):
95
+ # For commands that specifically handle None values (like help), keep the parameter
96
+ if key in ["cmdname"]: # список параметров, для которых None является допустимым значением
97
+ pass
98
+ else:
99
+ # For most parameters, remove None values to avoid issues
100
+ del validated_params[key]
101
+
84
102
  # This is a simple implementation that can be overridden by subclasses
85
103
  # In real implementation this method would validate parameters against the schema
86
- return params
104
+ return validated_params
87
105
 
88
106
  @classmethod
89
107
  async def run(cls, **kwargs) -> CommandResult:
@@ -109,6 +127,10 @@ class Command(ABC):
109
127
  command_name = command_name[:-7]
110
128
  else:
111
129
  command_name = cls.name
130
+
131
+ # Ensure kwargs is never None
132
+ if kwargs is None:
133
+ kwargs = {}
112
134
 
113
135
  # Parameters validation
114
136
  validated_params = cls.validate_params(kwargs)
@@ -118,12 +118,13 @@ class HelpCommand(Command):
118
118
  name = "help"
119
119
  result_class = HelpResult
120
120
 
121
- async def execute(self, cmdname: Optional[str] = None) -> HelpResult:
121
+ async def execute(self, cmdname: Optional[str] = None, **kwargs) -> HelpResult:
122
122
  """
123
123
  Execute help command.
124
124
 
125
125
  Args:
126
126
  cmdname: Name of the command to get information about (optional)
127
+ **kwargs: Any additional parameters (will be ignored)
127
128
 
128
129
  Returns:
129
130
  HelpResult: Help command result
@@ -131,8 +132,9 @@ class HelpCommand(Command):
131
132
  Raises:
132
133
  NotFoundError: If specified command not found
133
134
  """
134
- # If cmdname is provided, return information about specific command
135
- if cmdname:
135
+ # Handle case when cmdname is provided
136
+ # Important: explicitly check for None or empty string
137
+ if cmdname is not None and cmdname != "":
136
138
  try:
137
139
  # Get command metadata from registry
138
140
  command_metadata = registry.get_command_metadata(cmdname)
@@ -1,3 +1,3 @@
1
1
  """Version information for MCP Microservice."""
2
2
 
3
- __version__ = "3.1.1"
3
+ __version__ = "3.1.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 3.1.1
3
+ Version: 3.1.3
4
4
  Summary: Reliable microservice with unified JSON-RPC endpoint
5
5
  Home-page: https://github.com/yourusername/mcp-proxy-adapter
6
6
  Author: MCP Team
@@ -50,7 +50,7 @@ mcp_proxy_adapter/config.py,sha256=MjgZAld6TiD0F5oCyEaJhYhfEXVZxc5G5ke2SLKCV9A,5
50
50
  mcp_proxy_adapter/custom_openapi.py,sha256=tAE289B76nUdd2tjbiyow2Jftj0Yd-A8I2ndTD6R-5c,11706
51
51
  mcp_proxy_adapter/openapi.py,sha256=jyl5EPXcFhzFKEEMXxHeqF1U-SsYvtdlaKGU2QrekpU,13889
52
52
  mcp_proxy_adapter/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
- mcp_proxy_adapter/version.py,sha256=pvFpUfXgTTa0ZcIe_hZmTUj1tPG9zEd2jBq-_KC9PNU,71
53
+ mcp_proxy_adapter/version.py,sha256=0qNMWytNAXlNNfpN1BZMoMhsK8wp4zfWXOOFOViwLZU,71
54
54
  mcp_proxy_adapter/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
55
  mcp_proxy_adapter/api/app.py,sha256=q3yYsNEBFXYr2TOJFxfh6bbF53NkmmgfzSFOtVq7xdc,14353
56
56
  mcp_proxy_adapter/api/handlers.py,sha256=lc_4eakQgQVlnGjnVkOY-mIMkfyLk4iRfwdrWTyvuvM,7194
@@ -65,12 +65,12 @@ mcp_proxy_adapter/api/middleware/logging.py,sha256=wGtw4BqKMLgn5zqYd84DnVPtO3evf
65
65
  mcp_proxy_adapter/api/middleware/performance.py,sha256=dHBxTF43LEGXMKHMH3A8ybKmwAWURd_zswqq_oC4xbw,2454
66
66
  mcp_proxy_adapter/api/middleware/rate_limit.py,sha256=DIv_-ZUVmL-jEo_A5BlfnasZf25zT84AiIJDUUnXkpM,5041
67
67
  mcp_proxy_adapter/commands/__init__.py,sha256=bHZZcVYkXVL9g-YZOnWkHOxSP2WzT-I4_OleYycQhbw,610
68
- mcp_proxy_adapter/commands/base.py,sha256=Se9abE0LNgXJ0aSDKyK6cXGtDVVowBX1PAPYsF69rnY,12482
68
+ mcp_proxy_adapter/commands/base.py,sha256=vgFhH5u3GwNs0c5FvJUf2csahzTyH5fKnYLWiqKix9o,13615
69
69
  mcp_proxy_adapter/commands/command_registry.py,sha256=x55k4guzOlm7fVRolJ_iSFPRx2Snq4yBaMQdzVmsK0A,10460
70
70
  mcp_proxy_adapter/commands/config_command.py,sha256=-Z6BGaEQTf859l56zZpHYBeZFeIVdpMYybDrd7LOPIg,3553
71
71
  mcp_proxy_adapter/commands/dependency_container.py,sha256=Uz9OPRAUZN7tsVrMVgXgPQcsRD2N-e2Ixg9XarPOlnY,3410
72
72
  mcp_proxy_adapter/commands/health_command.py,sha256=_tzxHwB_8vo53VBC6HnBv5fSfZL1pEuwlbrCcy_K78c,4087
73
- mcp_proxy_adapter/commands/help_command.py,sha256=UguKpvnmyW6qXZZyzdcJSVqKzLYi-AvaXo_UKyLR8js,6836
73
+ mcp_proxy_adapter/commands/help_command.py,sha256=TzJEtGX9zcGkCX3H-qZgms_eEfP7Xkt1x3YNRhmXfWM,6976
74
74
  mcp_proxy_adapter/commands/result.py,sha256=2WjftiAuhlyzOKmPJlQHo_b08ZCzWoK7cquUHFLVE-E,5534
75
75
  mcp_proxy_adapter/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
76
  mcp_proxy_adapter/core/errors.py,sha256=s34OxiIR4NCJu_pYSigKXqrIvRjUUK2OWw0X4dpDjIA,5151
@@ -106,8 +106,8 @@ mcp_proxy_adapter/tests/stubs/echo_command.py,sha256=Y7SA4IB5Lo_ncn78SDm9iRZvJSK
106
106
  mcp_proxy_adapter/tests/unit/__init__.py,sha256=RS-5UoSCcLKtr2jrAaZw_NG9MquA6BZmxq-P6cTw9ok,53
107
107
  mcp_proxy_adapter/tests/unit/test_base_command.py,sha256=ldDXQYk2eijbTgZioSBAhHzSAa_SuBKYqCutCEzUYTE,3924
108
108
  mcp_proxy_adapter/tests/unit/test_config.py,sha256=SZ62LXFOv_fsV0fmSIBdHWvapEyexKrioFRQo0I4pkg,5900
109
- mcp_proxy_adapter-3.1.1.dist-info/licenses/LICENSE,sha256=OkApFEwdgMCt_mbvUI-eIwKMSTe38K3XnU2DT5ub-wI,1072
110
- mcp_proxy_adapter-3.1.1.dist-info/METADATA,sha256=1TAQ_fEBXOi9Fc1kLmBmyA-8wYP7GhrEB6vv5dyjCiE,7537
111
- mcp_proxy_adapter-3.1.1.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
112
- mcp_proxy_adapter-3.1.1.dist-info/top_level.txt,sha256=kxq3OC7vBtsFdy9dDVse4cOl-SV_QlvcTeSkuw_jw3I,27
113
- mcp_proxy_adapter-3.1.1.dist-info/RECORD,,
109
+ mcp_proxy_adapter-3.1.3.dist-info/licenses/LICENSE,sha256=OkApFEwdgMCt_mbvUI-eIwKMSTe38K3XnU2DT5ub-wI,1072
110
+ mcp_proxy_adapter-3.1.3.dist-info/METADATA,sha256=kRq0QbeD-BFX5Wz4BgflzuwOojpACvvBl3t85YZl8UU,7537
111
+ mcp_proxy_adapter-3.1.3.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
112
+ mcp_proxy_adapter-3.1.3.dist-info/top_level.txt,sha256=kxq3OC7vBtsFdy9dDVse4cOl-SV_QlvcTeSkuw_jw3I,27
113
+ mcp_proxy_adapter-3.1.3.dist-info/RECORD,,