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.
- examples/patch_vstl_service.py +1 -1
- examples/test_package_3.1.4.py +4 -4
- mcp_proxy_adapter/api/app.py +21 -0
- mcp_proxy_adapter/commands/command_registry.py +15 -0
- mcp_proxy_adapter/commands/help_command.py +54 -65
- mcp_proxy_adapter/tests/commands/test_help_command.py +8 -5
- mcp_proxy_adapter/tests/integration/test_cmd_integration.py +4 -5
- mcp_proxy_adapter/tests/test_command_registry.py +37 -1
- mcp_proxy_adapter/version.py +1 -1
- {mcp_proxy_adapter-3.1.5.dist-info → mcp_proxy_adapter-3.1.6.dist-info}/METADATA +1 -1
- {mcp_proxy_adapter-3.1.5.dist-info → mcp_proxy_adapter-3.1.6.dist-info}/RECORD +14 -14
- {mcp_proxy_adapter-3.1.5.dist-info → mcp_proxy_adapter-3.1.6.dist-info}/WHEEL +1 -1
- {mcp_proxy_adapter-3.1.5.dist-info → mcp_proxy_adapter-3.1.6.dist-info}/licenses/LICENSE +0 -0
- {mcp_proxy_adapter-3.1.5.dist-info → mcp_proxy_adapter-3.1.6.dist-info}/top_level.txt +0 -0
examples/patch_vstl_service.py
CHANGED
@@ -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.
|
96
|
+
3. Обновите сервис до последней версии mcp_proxy_adapter 3.1.6 и перезапустите
|
97
97
|
|
98
98
|
4. Если это невозможно, используйте этот скрипт как промежуточное решение,
|
99
99
|
чтобы безопасно вызывать команды VSTL с корректной обработкой null.
|
examples/test_package_3.1.4.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
#!/usr/bin/env python3
|
2
2
|
"""
|
3
|
-
Скрипт для проверки работы улучшенной обработки null в версии 3.1.
|
3
|
+
Скрипт для проверки работы улучшенной обработки null в версии 3.1.6.
|
4
4
|
|
5
5
|
Этот скрипт:
|
6
|
-
1. Проверяет, что версия пакета 3.1.
|
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.
|
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.
|
149
|
+
print("=== Проверка MCP Proxy Adapter 3.1.6 ===")
|
150
150
|
|
151
151
|
# Проверяем версию пакета
|
152
152
|
version_ok = check_version()
|
mcp_proxy_adapter/api/app.py
CHANGED
@@ -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
|
-
|
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
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
"
|
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
|
-
|
219
|
-
|
220
|
-
|
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
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
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
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
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
|
-
|
256
|
-
|
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
|
100
|
+
# Execute command and check result fields
|
101
101
|
command = HelpCommand()
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
assert "
|
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
|
-
|
98
|
-
|
99
|
-
assert
|
100
|
-
assert "
|
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
|
mcp_proxy_adapter/version.py
CHANGED
@@ -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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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.
|
115
|
-
mcp_proxy_adapter-3.1.
|
116
|
-
mcp_proxy_adapter-3.1.
|
117
|
-
mcp_proxy_adapter-3.1.
|
118
|
-
mcp_proxy_adapter-3.1.
|
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,,
|
File without changes
|
File without changes
|