mcp-proxy-adapter 3.1.5__py3-none-any.whl → 3.1.6__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.
@@ -93,7 +93,7 @@ def test_vstl_commands():
93
93
  - Поиск: if value == null
94
94
  - Замена: if value is None
95
95
 
96
- 3. Обновите сервис до последней версии mcp_proxy_adapter 3.1.4 и перезапустите
96
+ 3. Обновите сервис до последней версии mcp_proxy_adapter 3.1.6 и перезапустите
97
97
 
98
98
  4. Если это невозможно, используйте этот скрипт как промежуточное решение,
99
99
  чтобы безопасно вызывать команды VSTL с корректной обработкой null.
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env python3
2
2
  """
3
- Скрипт для проверки работы улучшенной обработки null в версии 3.1.4.
3
+ Скрипт для проверки работы улучшенной обработки null в версии 3.1.6.
4
4
 
5
5
  Этот скрипт:
6
- 1. Проверяет, что версия пакета 3.1.4
6
+ 1. Проверяет, что версия пакета 3.1.6
7
7
  2. Тестирует улучшенный метод validate_params
8
8
  3. Проверяет, что команда help правильно обрабатывает null значения
9
9
  """
@@ -26,7 +26,7 @@ def check_version():
26
26
  """
27
27
  Проверяет версию установленного пакета mcp_proxy_adapter.
28
28
  """
29
- expected_version = "3.1.4"
29
+ expected_version = "3.1.6"
30
30
 
31
31
  print(f"\n=== Проверка версии ===")
32
32
  print(f"Установленная версия: {__version__}")
@@ -146,7 +146,7 @@ def main():
146
146
  """
147
147
  Основная функция для запуска тестов.
148
148
  """
149
- print("=== Проверка MCP Proxy Adapter 3.1.4 ===")
149
+ print("=== Проверка MCP Proxy Adapter 3.1.6 ===")
150
150
 
151
151
  # Проверяем версию пакета
152
152
  version_ok = check_version()
@@ -200,6 +200,27 @@ def create_app() -> FastAPI:
200
200
  "error": e.to_dict()
201
201
  }
202
202
  )
203
+ except NotFoundError as e:
204
+ # Специальная обработка для help-команды: возвращаем result с пустым commands и error
205
+ if command_name == "help":
206
+ return {
207
+ "result": {
208
+ "success": False,
209
+ "commands": {},
210
+ "error": str(e),
211
+ "note": "To get detailed information about a specific command, call help with parameter: POST /cmd {\"command\": \"help\", \"params\": {\"cmdname\": \"<command_name>\"}}"
212
+ }
213
+ }
214
+ # Для остальных команд — стандартная ошибка
215
+ return JSONResponse(
216
+ status_code=200,
217
+ content={
218
+ "error": {
219
+ "code": e.code,
220
+ "message": str(e)
221
+ }
222
+ }
223
+ )
203
224
 
204
225
  except json.JSONDecodeError:
205
226
  req_logger.error("JSON decode error")
@@ -1,5 +1,20 @@
1
1
  """
2
2
  Module for registering and managing commands.
3
+
4
+ Example: Registering a command instance (for dependency injection)
5
+ ---------------------------------------------------------------
6
+
7
+ .. code-block:: python
8
+
9
+ from mcp_proxy_adapter.commands.command_registry import registry
10
+ from my_commands import MyCommand
11
+
12
+ # Suppose MyCommand requires a service dependency
13
+ service = MyService()
14
+ my_command_instance = MyCommand(service=service)
15
+ registry.register(my_command_instance)
16
+
17
+ # Now, when the command is executed, the same instance (with dependencies) will be used
3
18
  """
4
19
 
5
20
  import importlib
@@ -183,11 +183,10 @@ class HelpCommand(Command):
183
183
  Raises:
184
184
  NotFoundError: If specified command not found
185
185
  """
186
- try:
187
- logger.debug(f"HelpCommand.execute начало: cmdname={cmdname}, kwargs={kwargs}")
186
+ logger.debug(f"HelpCommand.execute начало: cmdname={cmdname}, kwargs={kwargs}")
188
187
 
188
+ try:
189
189
  # Handle case when cmdname is provided
190
- # Important: explicitly check for None or empty string
191
190
  if cmdname is not None and cmdname != "":
192
191
  logger.debug(f"Обработка запроса для конкретной команды: {cmdname}")
193
192
  try:
@@ -196,77 +195,67 @@ class HelpCommand(Command):
196
195
  logger.debug(f"Получены метаданные для команды {cmdname}")
197
196
  return HelpResult(command_info=command_metadata)
198
197
  except NotFoundError:
199
- # If command not found, raise error
200
198
  logger.warning(f"Команда '{cmdname}' не найдена")
201
- raise NotFoundError(f"Command '{cmdname}' not found")
202
- except Exception as e:
203
- logger.error(f"Ошибка при получении метаданных команды {cmdname}: {e}")
204
- logger.debug(f"Трассировка: {traceback.format_exc()}")
205
- # Создаем пустой результат вместо ошибки
206
- return HelpResult(command_info={
207
- "name": cmdname,
208
- "summary": "Command information unavailable",
209
- "description": f"Error retrieving metadata: {str(e)}",
210
- "params": {},
211
- "examples": []
199
+ # Получаем список всех команд
200
+ all_commands = list(registry.get_all_metadata().keys())
201
+ if all_commands:
202
+ example_cmd = all_commands[0]
203
+ example = {
204
+ "command": "help",
205
+ "params": {"cmdname": example_cmd}
206
+ }
207
+ note = f"Use help with an existing command name to get detailed info. For example: help with cmdname '{example_cmd}'. To list all commands: call help without parameters."
208
+ else:
209
+ example = {"command": "help"}
210
+ note = "No commands registered. To list all commands: call help without parameters."
211
+ return HelpResult(commands_info={
212
+ "commands": {},
213
+ "error": f"Command '{cmdname}' not found",
214
+ "example": example,
215
+ "note": note
212
216
  })
213
217
 
214
218
  # Otherwise, return information about all available commands
215
- # and tool metadata
216
219
  logger.debug("Обработка запроса для всех команд")
217
220
 
218
- try:
219
- # Get metadata for all commands
220
- all_metadata = registry.get_all_metadata()
221
- logger.debug(f"Получены метаданные для {len(all_metadata)} команд")
221
+ # Get metadata for all commands
222
+ all_metadata = registry.get_all_metadata()
223
+ logger.debug(f"Получены метаданные для {len(all_metadata)} команд")
222
224
 
223
- # Prepare response format with tool metadata
224
- result = {
225
- "tool_info": {
226
- "name": "MCP-Proxy API Service",
227
- "description": "JSON-RPC API for microservice command execution",
228
- "version": "1.0.0"
229
- },
230
- "help_usage": {
231
- "description": "Get information about commands",
232
- "examples": [
233
- {"command": "help", "description": "List of all available commands"},
234
- {"command": "help", "params": {"cmdname": "command_name"}, "description": "Get detailed information about a specific command"}
235
- ]
236
- },
237
- "commands": {}
238
- }
225
+ # Prepare response format with tool metadata
226
+ result = {
227
+ "tool_info": {
228
+ "name": "MCP-Proxy API Service",
229
+ "description": "JSON-RPC API for microservice command execution",
230
+ "version": "1.0.0"
231
+ },
232
+ "help_usage": {
233
+ "description": "Get information about commands",
234
+ "examples": [
235
+ {"command": "help", "description": "List of all available commands"},
236
+ {"command": "help", "params": {"cmdname": "command_name"}, "description": "Get detailed information about a specific command"}
237
+ ]
238
+ },
239
+ "commands": {}
240
+ }
239
241
 
240
- # Add brief information about commands
241
- for name, metadata in all_metadata.items():
242
- try:
243
- logger.debug(f"Обработка метаданных команды {name}")
244
- # Безопасное получение параметров с проверкой на наличие ключей
245
- result["commands"][name] = {
246
- "summary": metadata.get("summary", ""),
247
- "params_count": len(metadata.get("params", {}))
248
- }
249
- except Exception as e:
250
- logger.error(f"Ошибка при обработке метаданных команды {name}: {e}")
251
- logger.debug(f"Метаданные команды {name}: {metadata}")
252
- # Пропускаем проблемную команду
253
- continue
242
+ # Add brief information about commands
243
+ for name, metadata in all_metadata.items():
244
+ try:
245
+ logger.debug(f"Обработка метаданных команды {name}")
246
+ # Безопасное получение параметров с проверкой на наличие ключей
247
+ result["commands"][name] = {
248
+ "summary": metadata.get("summary", ""),
249
+ "params_count": len(metadata.get("params", {}))
250
+ }
251
+ except Exception as e:
252
+ logger.error(f"Ошибка при обработке метаданных команды {name}: {e}")
253
+ logger.debug(f"Метаданные команды {name}: {metadata}")
254
+ # Пропускаем проблемную команду
255
+ continue
254
256
 
255
- logger.debug(f"HelpCommand.execute завершение: возвращаем результат с {len(result['commands'])} командами")
256
- return HelpResult(commands_info=result)
257
- except Exception as e:
258
- logger.error(f"Ошибка при получении списка команд: {e}")
259
- logger.debug(f"Трассировка: {traceback.format_exc()}")
260
- # Создаем пустой результат вместо ошибки
261
- return HelpResult(commands_info={
262
- "tool_info": {
263
- "name": "MCP-Proxy API Service",
264
- "description": "JSON-RPC API for microservice command execution",
265
- "version": "1.0.0"
266
- },
267
- "commands": {},
268
- "error": str(e)
269
- })
257
+ logger.debug(f"HelpCommand.execute завершение: возвращаем результат с {len(result['commands'])} командами")
258
+ return HelpResult(commands_info=result)
270
259
  except Exception as e:
271
260
  logger.error(f"Неожиданная ошибка в HelpCommand.execute: {e}")
272
261
  logger.debug(f"Трассировка: {traceback.format_exc()}")
@@ -97,12 +97,15 @@ async def test_help_command_with_invalid_cmdname(mock_registry):
97
97
  # Setup mocks
98
98
  mock_registry.get_command_metadata.side_effect = NotFoundError("Command not found")
99
99
 
100
- # Execute command and check exception
100
+ # Execute command and check result fields
101
101
  command = HelpCommand()
102
- with pytest.raises(NotFoundError) as excinfo:
103
- await command.execute(cmdname="non_existent")
104
-
105
- assert "not found" in str(excinfo.value)
102
+ result = await command.execute(cmdname="non_existent")
103
+ result_dict = result.to_dict()
104
+ assert "error" in result_dict
105
+ assert "example" in result_dict
106
+ assert "note" in result_dict
107
+ assert result_dict["error"].startswith("Command")
108
+ assert result_dict["example"]["command"] == "help"
106
109
 
107
110
 
108
111
  def test_help_result_schema():
@@ -92,12 +92,11 @@ def test_cmd_help_unknown_command(client):
92
92
  assert "result" in response.json()
93
93
  result = response.json()["result"]
94
94
 
95
- assert "success" in result and result["success"] is False
96
95
  assert "error" in result
97
- error = result["error"]
98
-
99
- assert error["code"] == -32601
100
- assert "not found" in error["message"]
96
+ assert "example" in result
97
+ assert "note" in result
98
+ assert result["error"].startswith("Command")
99
+ assert result["example"]["command"] == "help"
101
100
 
102
101
 
103
102
  def test_cmd_unknown_command(client):
@@ -242,4 +242,40 @@ def test_clear_registry():
242
242
 
243
243
  # Clear registry
244
244
  registry.clear()
245
- assert len(registry._commands) == 0
245
+ assert len(registry._commands) == 0
246
+
247
+
248
+ def test_register_command_instance():
249
+ """Test registering a command instance (with dependencies)."""
250
+ registry = CommandRegistry()
251
+
252
+ class Service:
253
+ def __init__(self, value):
254
+ self.value = value
255
+
256
+ class CommandWithDependency(Command):
257
+ name = "command_with_dep"
258
+ result_class = MockResult
259
+ def __init__(self, service: Service):
260
+ self.service = service
261
+ async def execute(self, **kwargs):
262
+ # Return the value from the injected service
263
+ result = MockResult()
264
+ result.service_value = self.service.value
265
+ return result
266
+
267
+ service = Service(value=42)
268
+ command_instance = CommandWithDependency(service=service)
269
+ registry.register(command_instance)
270
+
271
+ # Проверяем, что экземпляр зарегистрирован
272
+ assert registry.has_instance("command_with_dep")
273
+ # Проверяем, что get_command_instance возвращает именно этот экземпляр
274
+ assert registry.get_command_instance("command_with_dep") is command_instance
275
+ # Проверяем, что execute использует внедрённый сервис
276
+ import asyncio
277
+ result = asyncio.run(
278
+ registry.get_command_instance("command_with_dep").execute()
279
+ )
280
+ assert hasattr(result, "service_value")
281
+ assert result.service_value == 42
@@ -1,3 +1,3 @@
1
1
  """Version information for MCP Microservice."""
2
2
 
3
- __version__ = "3.1.5"
3
+ __version__ = "3.1.6"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 3.1.5
3
+ Version: 3.1.6
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
@@ -1,11 +1,11 @@
1
1
  examples/__init__.py,sha256=sLYNpeoiE-X5q7fmJb7NFMmhiIn0543mgJj16q1qmk0,593
2
2
  examples/check_vstl_schema.py,sha256=s-VVoY8ysuvVr64JAX6uvxuwjEB7FjbJf0ek7XYc1Nc,4320
3
3
  examples/fix_vstl_help.py,sha256=GvFepKbCD-a2O2LEflMGeXnsgNMUNfNezPFU6QB_7tI,5208
4
- examples/patch_vstl_service.py,sha256=Su98KpRtcflsS8l-z22ECkWzquOv8VRtfUTxTHqS-oQ,4715
4
+ examples/patch_vstl_service.py,sha256=MU-PxZ9gAQx-gT0tyxoWIswDbdV4cYd-r-T9gq4aziw,4715
5
5
  examples/patch_vstl_service_mcp.py,sha256=jiMKzx8hANFVtM0Yv-DJbThwM4r81z9dslF_v9tkAf4,5254
6
6
  examples/server.py,sha256=gnRTE_k7C0A255dLyaJWyA4YU0H6Elc7osr_JQvsQhQ,2286
7
7
  examples/simple_server.py,sha256=Bkczmz5Qs473xJ0_AJjBpqWT-oWctwED98A067z05zQ,3768
8
- examples/test_package_3.1.4.py,sha256=OnEC4N4QOfqrh7DPsQrUV9L9TEG240CwkdM9NY2HBXU,7180
8
+ examples/test_package_3.1.4.py,sha256=GZZANEIrZkw0gfsFK-PKi4lGZ6Fen25RFHSHrOOhR4w,7180
9
9
  examples/test_server.py,sha256=cKWJ4tlHqZsRKyeuXbZ1dQ7TU9riJWcDan__wK7YH_Y,3729
10
10
  examples/tool_description_example.py,sha256=blamrx_1oHCG4NnvIiYnQxphAEDqb7-TALPALJFj51s,3280
11
11
  examples/anti_patterns/README.md,sha256=1-Hby6Wf3kAC0XOV_jOvuHL-kmTypWOUfE_rEU3Knu8,2045
@@ -55,9 +55,9 @@ mcp_proxy_adapter/config.py,sha256=MjgZAld6TiD0F5oCyEaJhYhfEXVZxc5G5ke2SLKCV9A,5
55
55
  mcp_proxy_adapter/custom_openapi.py,sha256=tAE289B76nUdd2tjbiyow2Jftj0Yd-A8I2ndTD6R-5c,11706
56
56
  mcp_proxy_adapter/openapi.py,sha256=jyl5EPXcFhzFKEEMXxHeqF1U-SsYvtdlaKGU2QrekpU,13889
57
57
  mcp_proxy_adapter/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
- mcp_proxy_adapter/version.py,sha256=4XNuKvyAcEOBhQOCskqTf1rAV8LbxArH1vRWL0Vso04,71
58
+ mcp_proxy_adapter/version.py,sha256=VRQ07cLW2F_OHDoYAsBuYZHDoj1M-ztVO8Joii9m1Iw,71
59
59
  mcp_proxy_adapter/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- mcp_proxy_adapter/api/app.py,sha256=q3yYsNEBFXYr2TOJFxfh6bbF53NkmmgfzSFOtVq7xdc,14353
60
+ mcp_proxy_adapter/api/app.py,sha256=TdsZjAwdMr_tYGjmmH3D2voVmQOU_Lw9raKbbYhXkk0,15424
61
61
  mcp_proxy_adapter/api/handlers.py,sha256=lc_4eakQgQVlnGjnVkOY-mIMkfyLk4iRfwdrWTyvuvM,7194
62
62
  mcp_proxy_adapter/api/schemas.py,sha256=xOmiSwHaapY6myEFnLu7o-LWVPM7vwmLYZXFo2c6NfE,12381
63
63
  mcp_proxy_adapter/api/tool_integration.py,sha256=mQNFiCkd4plY_A3fkG6auaM8D_1XiC9Jxp4Zrm1ngYE,10161
@@ -71,11 +71,11 @@ mcp_proxy_adapter/api/middleware/performance.py,sha256=dHBxTF43LEGXMKHMH3A8ybKmw
71
71
  mcp_proxy_adapter/api/middleware/rate_limit.py,sha256=DIv_-ZUVmL-jEo_A5BlfnasZf25zT84AiIJDUUnXkpM,5041
72
72
  mcp_proxy_adapter/commands/__init__.py,sha256=bHZZcVYkXVL9g-YZOnWkHOxSP2WzT-I4_OleYycQhbw,610
73
73
  mcp_proxy_adapter/commands/base.py,sha256=lKKoN_9tJYIeOFKgQRGwWZHy_EvWP8bVB1EhIouTbi0,13740
74
- mcp_proxy_adapter/commands/command_registry.py,sha256=x55k4guzOlm7fVRolJ_iSFPRx2Snq4yBaMQdzVmsK0A,10460
74
+ mcp_proxy_adapter/commands/command_registry.py,sha256=3KNmG1Blg1UrThZNU3vGj_2I4ZTFBjUgYZmk7QBOb4w,10998
75
75
  mcp_proxy_adapter/commands/config_command.py,sha256=-Z6BGaEQTf859l56zZpHYBeZFeIVdpMYybDrd7LOPIg,3553
76
76
  mcp_proxy_adapter/commands/dependency_container.py,sha256=Uz9OPRAUZN7tsVrMVgXgPQcsRD2N-e2Ixg9XarPOlnY,3410
77
77
  mcp_proxy_adapter/commands/health_command.py,sha256=_tzxHwB_8vo53VBC6HnBv5fSfZL1pEuwlbrCcy_K78c,4087
78
- mcp_proxy_adapter/commands/help_command.py,sha256=f1DUJNCiVFyTHAi1ztcAo1TKYopmkJPNRYZsJTpTGvI,13769
78
+ mcp_proxy_adapter/commands/help_command.py,sha256=dfqNt1h2H6vQJ9rLySWa_-0-QzesnN-Mgx0cz-uFlIo,13051
79
79
  mcp_proxy_adapter/commands/result.py,sha256=2WjftiAuhlyzOKmPJlQHo_b08ZCzWoK7cquUHFLVE-E,5534
80
80
  mcp_proxy_adapter/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
81
  mcp_proxy_adapter/core/errors.py,sha256=s34OxiIR4NCJu_pYSigKXqrIvRjUUK2OWw0X4dpDjIA,5151
@@ -89,7 +89,7 @@ mcp_proxy_adapter/tests/test_api_endpoints.py,sha256=ePtWCf0szD1JeY9WdHAhcKnuOzo
89
89
  mcp_proxy_adapter/tests/test_api_handlers.py,sha256=LeHO0o6eCxan6mt_8ZkUwSbeY7qYfoYMJ-bT_sSgdxc,11011
90
90
  mcp_proxy_adapter/tests/test_base_command.py,sha256=nSIi_mfjux8TL--65pMBfyg91EiLjJhI2P_ASWqyW-U,3779
91
91
  mcp_proxy_adapter/tests/test_batch_requests.py,sha256=9-gvhPq48AcEwGlhwgn3DWNhpleLA0f4luZNYMrqlXY,4103
92
- mcp_proxy_adapter/tests/test_command_registry.py,sha256=o5HHxlQ-D2ML0ufJK-lXQv-qYWccvalOHGVvpc8QFTU,6285
92
+ mcp_proxy_adapter/tests/test_command_registry.py,sha256=ywi5gM7D7NHcNOkdwXOgpJqHjwGADZEaB3ueM3nR0gM,7683
93
93
  mcp_proxy_adapter/tests/test_config.py,sha256=i4YbFhB3WI1wWKCxkG6l-UpFv2LAbhh4hmGipmYG1d0,3928
94
94
  mcp_proxy_adapter/tests/test_utils.py,sha256=K8DqdWDAV-cXjjeykehHpG5phfq5ydu2HLJzaAL282Y,1653
95
95
  mcp_proxy_adapter/tests/api/__init__.py,sha256=QzjeBIhrRLqfUKYmxVSCbMOoni5MAXgyAx9HxxB6JRs,27
@@ -98,11 +98,11 @@ mcp_proxy_adapter/tests/api/test_middleware.py,sha256=3Rgc09VJ7JG6_06oIgAVq6u7qJ
98
98
  mcp_proxy_adapter/tests/commands/__init__.py,sha256=DZxhtyr__AleyXN1s8Ef887tK5nsoHKfW4QXyzLaP0E,36
99
99
  mcp_proxy_adapter/tests/commands/test_config_command.py,sha256=ud0Y57xUhFiyrUKDyA0eBZ8IOKiGDpioijtwY-detC4,6522
100
100
  mcp_proxy_adapter/tests/commands/test_echo_command.py,sha256=c2dmqfx3ZfvDedy5vuxArFv7iHsReepMmD2Lchg4l3E,3437
101
- mcp_proxy_adapter/tests/commands/test_help_command.py,sha256=OJCZMS0BqUUNNSecipd3dOFokUATiET3gpCoVAxPXPA,4116
101
+ mcp_proxy_adapter/tests/commands/test_help_command.py,sha256=0kylFDGSYV-YStVCf_j7_4EF8VDaClIZbJz3V2V2-DI,4272
102
102
  mcp_proxy_adapter/tests/functional/__init__.py,sha256=muVNR6LD5o7DsDaLrbLTFsavUNcnyM608-mr-dqzgDU,59
103
103
  mcp_proxy_adapter/tests/functional/test_api.py,sha256=OaGB-WAWVyX4b0b-mCdXBNhwwYABYeBPO3IDnA3I00c,7114
104
104
  mcp_proxy_adapter/tests/integration/__init__.py,sha256=JZpeNG1PBRZ3k5zfq6NH3GyzDc1Yx1ZUgwi6eLBxs1o,60
105
- mcp_proxy_adapter/tests/integration/test_cmd_integration.py,sha256=OqBxh52WPijKaRrIHA54QDJQLBz_nwlCywF9k5jxa_Y,3430
105
+ mcp_proxy_adapter/tests/integration/test_cmd_integration.py,sha256=BS3lA6ayveMckHcy1WJjyqR7l7WTcjmGiCYSnMjVfO0,3415
106
106
  mcp_proxy_adapter/tests/integration/test_integration.py,sha256=Rf8GTxdZOvZzrtgqWN2fp-36qUU5rpHdV9zhN1JxNw8,6619
107
107
  mcp_proxy_adapter/tests/performance/__init__.py,sha256=2kHf6g4LmYnFuV4EALXzo7Qk9vHGA9DXZFt7nORRFjM,60
108
108
  mcp_proxy_adapter/tests/performance/test_performance.py,sha256=Djrnu-SsXRrc_Prj1Aw8OoPzPUwHJds-Itk3aX6o01w,5730
@@ -111,8 +111,8 @@ mcp_proxy_adapter/tests/stubs/echo_command.py,sha256=Y7SA4IB5Lo_ncn78SDm9iRZvJSK
111
111
  mcp_proxy_adapter/tests/unit/__init__.py,sha256=RS-5UoSCcLKtr2jrAaZw_NG9MquA6BZmxq-P6cTw9ok,53
112
112
  mcp_proxy_adapter/tests/unit/test_base_command.py,sha256=ldDXQYk2eijbTgZioSBAhHzSAa_SuBKYqCutCEzUYTE,3924
113
113
  mcp_proxy_adapter/tests/unit/test_config.py,sha256=SZ62LXFOv_fsV0fmSIBdHWvapEyexKrioFRQo0I4pkg,5900
114
- mcp_proxy_adapter-3.1.5.dist-info/licenses/LICENSE,sha256=OkApFEwdgMCt_mbvUI-eIwKMSTe38K3XnU2DT5ub-wI,1072
115
- mcp_proxy_adapter-3.1.5.dist-info/METADATA,sha256=9qjNRrAc0HgwtNMl3q-I0ZzyBiOsapDMIJZN3SJTcOo,7537
116
- mcp_proxy_adapter-3.1.5.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
117
- mcp_proxy_adapter-3.1.5.dist-info/top_level.txt,sha256=kxq3OC7vBtsFdy9dDVse4cOl-SV_QlvcTeSkuw_jw3I,27
118
- mcp_proxy_adapter-3.1.5.dist-info/RECORD,,
114
+ mcp_proxy_adapter-3.1.6.dist-info/licenses/LICENSE,sha256=OkApFEwdgMCt_mbvUI-eIwKMSTe38K3XnU2DT5ub-wI,1072
115
+ mcp_proxy_adapter-3.1.6.dist-info/METADATA,sha256=RbYESwlltxLaJLm8rVosrLljcIEkI1IT9VAVpWave9g,7537
116
+ mcp_proxy_adapter-3.1.6.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
117
+ mcp_proxy_adapter-3.1.6.dist-info/top_level.txt,sha256=kxq3OC7vBtsFdy9dDVse4cOl-SV_QlvcTeSkuw_jw3I,27
118
+ mcp_proxy_adapter-3.1.6.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.4.0)
2
+ Generator: setuptools (80.7.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5