mcp-proxy-adapter 6.3.16__py3-none-any.whl → 6.3.19__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.
- mcp_proxy_adapter/api/middleware/base.py +11 -1
- mcp_proxy_adapter/api/middleware/error_handling.py +5 -1
- mcp_proxy_adapter/api/middleware/logging.py +5 -0
- mcp_proxy_adapter/api/middleware/user_info_middleware.py +16 -2
- mcp_proxy_adapter/commands/command_registry.py +5 -2
- mcp_proxy_adapter/main.py +9 -1
- mcp_proxy_adapter/version.py +1 -1
- {mcp_proxy_adapter-6.3.16.dist-info → mcp_proxy_adapter-6.3.19.dist-info}/METADATA +1 -1
- {mcp_proxy_adapter-6.3.16.dist-info → mcp_proxy_adapter-6.3.19.dist-info}/RECORD +12 -12
- {mcp_proxy_adapter-6.3.16.dist-info → mcp_proxy_adapter-6.3.19.dist-info}/WHEEL +0 -0
- {mcp_proxy_adapter-6.3.16.dist-info → mcp_proxy_adapter-6.3.19.dist-info}/entry_points.txt +0 -0
- {mcp_proxy_adapter-6.3.16.dist-info → mcp_proxy_adapter-6.3.19.dist-info}/top_level.txt +0 -0
@@ -29,19 +29,29 @@ class BaseMiddleware(BaseHTTPMiddleware):
|
|
29
29
|
Returns:
|
30
30
|
Response.
|
31
31
|
"""
|
32
|
+
middleware_name = self.__class__.__name__
|
33
|
+
logger.debug(f"🔍 {middleware_name}.dispatch START - {request.method} {request.url.path}")
|
34
|
+
|
32
35
|
try:
|
33
36
|
# Process request before calling the main handler
|
37
|
+
logger.debug(f"🔍 {middleware_name}.before_request START")
|
34
38
|
await self.before_request(request)
|
39
|
+
logger.debug(f"🔍 {middleware_name}.before_request COMPLETED")
|
35
40
|
|
36
41
|
# Call the next middleware or main handler
|
42
|
+
logger.debug(f"🔍 {middleware_name}.call_next START")
|
37
43
|
response = await call_next(request)
|
44
|
+
logger.debug(f"🔍 {middleware_name}.call_next COMPLETED - Status: {response.status_code}")
|
38
45
|
|
39
46
|
# Process response after calling the main handler
|
47
|
+
logger.debug(f"🔍 {middleware_name}.after_response START")
|
40
48
|
response = await self.after_response(request, response)
|
49
|
+
logger.debug(f"🔍 {middleware_name}.after_response COMPLETED")
|
41
50
|
|
51
|
+
logger.debug(f"🔍 {middleware_name}.dispatch COMPLETED SUCCESSFULLY")
|
42
52
|
return response
|
43
53
|
except Exception as e:
|
44
|
-
logger.
|
54
|
+
logger.error(f"❌ {middleware_name}.dispatch ERROR: {str(e)}", exc_info=True)
|
45
55
|
# If an error occurred, call the error handler
|
46
56
|
return await self.handle_error(request, e)
|
47
57
|
|
@@ -44,9 +44,13 @@ class ErrorHandlingMiddleware(BaseMiddleware):
|
|
44
44
|
Returns:
|
45
45
|
Response.
|
46
46
|
"""
|
47
|
+
logger.debug(f"🔍 ErrorHandlingMiddleware.dispatch START - {request.method} {request.url.path}")
|
47
48
|
try:
|
48
49
|
# Call the next middleware or main handler
|
49
|
-
|
50
|
+
logger.debug(f"🔍 ErrorHandlingMiddleware - About to call next handler")
|
51
|
+
response = await call_next(request)
|
52
|
+
logger.debug(f"🔍 ErrorHandlingMiddleware - Next handler completed with status: {response.status_code}")
|
53
|
+
return response
|
50
54
|
|
51
55
|
except CommandError as e:
|
52
56
|
# Command error
|
@@ -42,9 +42,12 @@ class LoggingMiddleware(BaseMiddleware):
|
|
42
42
|
Returns:
|
43
43
|
Response.
|
44
44
|
"""
|
45
|
+
logger.debug(f"🔍 LoggingMiddleware.dispatch START - {request.method} {request.url.path}")
|
46
|
+
|
45
47
|
# Generate unique ID for request
|
46
48
|
request_id = str(uuid.uuid4())
|
47
49
|
request.state.request_id = request_id
|
50
|
+
logger.debug(f"🔍 LoggingMiddleware - Generated request ID: {request_id}")
|
48
51
|
|
49
52
|
# Create context logger for this request
|
50
53
|
req_logger = RequestLogger("mcp_proxy_adapter.api.middleware", request_id)
|
@@ -98,7 +101,9 @@ class LoggingMiddleware(BaseMiddleware):
|
|
98
101
|
|
99
102
|
# Call the next middleware or main handler
|
100
103
|
try:
|
104
|
+
logger.debug(f"🔍 LoggingMiddleware - About to call next handler")
|
101
105
|
response = await call_next(request)
|
106
|
+
logger.debug(f"🔍 LoggingMiddleware - Next handler completed with status: {response.status_code}")
|
102
107
|
|
103
108
|
# Log request completion
|
104
109
|
process_time = time.time() - start_time
|
@@ -69,8 +69,13 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
69
69
|
# Initialize PermissionManager only if permissions are enabled
|
70
70
|
if permissions_enabled:
|
71
71
|
# Create PermissionConfig for mcp_security_framework
|
72
|
+
roles_file = permissions_config.get("roles_file")
|
73
|
+
if roles_file is None:
|
74
|
+
logger.warning("⚠️ Permissions enabled but no roles_file specified, using default configuration")
|
75
|
+
roles_file = None
|
76
|
+
|
72
77
|
mcp_permission_config = PermissionConfig(
|
73
|
-
roles_file=
|
78
|
+
roles_file=roles_file,
|
74
79
|
default_role=permissions_config.get("default_role", "guest"),
|
75
80
|
admin_role=permissions_config.get("admin_role", "admin"),
|
76
81
|
role_hierarchy=permissions_config.get("role_hierarchy", {}),
|
@@ -135,8 +140,14 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
135
140
|
Returns:
|
136
141
|
Response object
|
137
142
|
"""
|
143
|
+
logger.debug(f"🔍 UserInfoMiddleware.dispatch START - {request.method} {request.url.path}")
|
144
|
+
logger.debug(f"🔍 UserInfoMiddleware - Headers: {dict(request.headers)}")
|
145
|
+
logger.debug(f"🔍 UserInfoMiddleware - AuthManager available: {self.auth_manager is not None}")
|
146
|
+
logger.debug(f"🔍 UserInfoMiddleware - Security available: {self._security_available}")
|
147
|
+
|
138
148
|
# Extract API key from headers
|
139
149
|
api_key = request.headers.get("X-API-Key")
|
150
|
+
logger.debug(f"🔍 UserInfoMiddleware - API Key: {api_key[:8] + '...' if api_key else 'None'}")
|
140
151
|
if api_key:
|
141
152
|
if self.auth_manager and self._security_available:
|
142
153
|
try:
|
@@ -225,4 +236,7 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
225
236
|
}
|
226
237
|
logger.debug("ℹ️ No API key provided, using guest access")
|
227
238
|
|
228
|
-
|
239
|
+
logger.debug(f"🔍 UserInfoMiddleware - About to call next handler")
|
240
|
+
response = await call_next(request)
|
241
|
+
logger.debug(f"🔍 UserInfoMiddleware - Next handler completed with status: {response.status_code}")
|
242
|
+
return response
|
@@ -701,8 +701,11 @@ class CommandRegistry:
|
|
701
701
|
try:
|
702
702
|
from mcp_proxy_adapter.core.protocol_manager import protocol_manager
|
703
703
|
|
704
|
-
protocol_manager
|
705
|
-
|
704
|
+
if protocol_manager is not None:
|
705
|
+
protocol_manager.reload_config()
|
706
|
+
logger.info("✅ Protocol manager configuration reloaded")
|
707
|
+
else:
|
708
|
+
logger.debug("ℹ️ Protocol manager is None, skipping reload")
|
706
709
|
except Exception as e:
|
707
710
|
logger.error(f"❌ Failed to reload protocol manager: {e}")
|
708
711
|
|
mcp_proxy_adapter/main.py
CHANGED
@@ -57,8 +57,16 @@ def main():
|
|
57
57
|
ssl_enabled = config.get("ssl.enabled", False)
|
58
58
|
ssl_cert_file = config.get("ssl.cert_file")
|
59
59
|
ssl_key_file = config.get("ssl.key_file")
|
60
|
-
ssl_ca_cert = config.get("ssl.
|
60
|
+
ssl_ca_cert = config.get("ssl.ca_cert_file")
|
61
61
|
verify_client = config.get("ssl.verify_client", False)
|
62
|
+
|
63
|
+
# Debug SSL configuration
|
64
|
+
print(f"🔍 Debug SSL config:")
|
65
|
+
print(f" ssl_enabled: {ssl_enabled}")
|
66
|
+
print(f" ssl_cert_file: {ssl_cert_file}")
|
67
|
+
print(f" ssl_key_file: {ssl_key_file}")
|
68
|
+
print(f" ssl_ca_cert: {ssl_ca_cert}")
|
69
|
+
print(f" verify_client: {verify_client}")
|
62
70
|
|
63
71
|
print(f"🚀 Starting MCP Proxy Adapter")
|
64
72
|
print(f"🌐 Server: {host}:{port}")
|
mcp_proxy_adapter/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mcp-proxy-adapter
|
3
|
-
Version: 6.3.
|
3
|
+
Version: 6.3.19
|
4
4
|
Summary: Powerful JSON-RPC microservices framework with built-in security, authentication, and proxy registration
|
5
5
|
Home-page: https://github.com/maverikod/mcp-proxy-adapter
|
6
6
|
Author: Vasiliy Zdanovskiy
|
@@ -2,9 +2,9 @@ mcp_proxy_adapter/__init__.py,sha256=iH0EBBsRj_cfZJpAIsgN_8tTdfefhnl6uUKHjLHhWDQ
|
|
2
2
|
mcp_proxy_adapter/__main__.py,sha256=sq3tANRuTd18euamt0Bmn1sJeAyzXENZ5VvsMwbrDFA,579
|
3
3
|
mcp_proxy_adapter/config.py,sha256=-7iVS0mUWWKNeao7nqTAFlUD6FcMwRlDkchN7OwYsr0,21662
|
4
4
|
mcp_proxy_adapter/custom_openapi.py,sha256=yLle4CntYK9wpivgn9NflZyJhy-YNrmWjJzt0ai5nP0,14672
|
5
|
-
mcp_proxy_adapter/main.py,sha256=
|
5
|
+
mcp_proxy_adapter/main.py,sha256=DyfMp0d5FtkzgFQUOPWr8D5UDolL1uVElePJq_OX7qI,3708
|
6
6
|
mcp_proxy_adapter/openapi.py,sha256=2UZOI09ZDRJuBYBjKbMyb2U4uASszoCMD5o_4ktRpvg,13480
|
7
|
-
mcp_proxy_adapter/version.py,sha256=
|
7
|
+
mcp_proxy_adapter/version.py,sha256=BrRQJcOxuXZvaP02Gz-lQhDi0GkS5-ZuTR7LsWCSPkY,75
|
8
8
|
mcp_proxy_adapter/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
9
|
mcp_proxy_adapter/api/app.py,sha256=22NIDGo6pGkOZnvBWeKv_-RIRye4YaYkIskVGIsCCMs,28600
|
10
10
|
mcp_proxy_adapter/api/handlers.py,sha256=iyFGoEuUS1wxbV1ELA0zmaxIyQR7j4zw-4MrD-uIO6E,8294
|
@@ -12,16 +12,16 @@ mcp_proxy_adapter/api/schemas.py,sha256=mevUvQnYgWQfkJAs3-vq3HalBzh6-Saa-Au1VVf0
|
|
12
12
|
mcp_proxy_adapter/api/tool_integration.py,sha256=AeUyvJVN-c3FrX5fHdagHL51saRH5d1ZKqc2YEx0rTE,10147
|
13
13
|
mcp_proxy_adapter/api/tools.py,sha256=nDQkxwgn11e1tR7kNfdYWsLAUogKmkEv8cVOYUtOq9U,8025
|
14
14
|
mcp_proxy_adapter/api/middleware/__init__.py,sha256=0E3gJ8kRWdlSIbtkuG68pInE-FsOnLj67hTcvN9jJqE,2168
|
15
|
-
mcp_proxy_adapter/api/middleware/base.py,sha256=
|
15
|
+
mcp_proxy_adapter/api/middleware/base.py,sha256=x5vaekh0grLkgSOCQWSytS47Nyagl-Powvb0uk_bKqg,2922
|
16
16
|
mcp_proxy_adapter/api/middleware/command_permission_middleware.py,sha256=dIzcvUDaO3etAM8xXVKza4tiakplppe8fTKuV36NaXU,4936
|
17
|
-
mcp_proxy_adapter/api/middleware/error_handling.py,sha256=
|
17
|
+
mcp_proxy_adapter/api/middleware/error_handling.py,sha256=bXui9rUn4Gem3PoXuxldSBUpaCoXtCH6gUPD6Th94BY,6867
|
18
18
|
mcp_proxy_adapter/api/middleware/factory.py,sha256=r0BXntUOxF6DiCVqqmAUb3JjargdR28aj2d9X5z-zX4,7987
|
19
|
-
mcp_proxy_adapter/api/middleware/logging.py,sha256=
|
19
|
+
mcp_proxy_adapter/api/middleware/logging.py,sha256=iME87hrbvyTjI-RJro5Cwao7VlHUIuWubpVUabv-s1M,5229
|
20
20
|
mcp_proxy_adapter/api/middleware/performance.py,sha256=-EvA7YIcTlxn8RuxlWlScJvX2EIoeEp3P5dKVWZHYRY,2357
|
21
21
|
mcp_proxy_adapter/api/middleware/protocol_middleware.py,sha256=zm-Q0KnCzbAB3ue8dwnEkb-OyCuIbqu01s2_GE2rtH0,11094
|
22
22
|
mcp_proxy_adapter/api/middleware/transport_middleware.py,sha256=VG1rWyuh-O2pdc0kQ3SADFvyh286o5Wrnkt8OFQ0WQw,4274
|
23
23
|
mcp_proxy_adapter/api/middleware/unified_security.py,sha256=PMbJxVzGNlb-IPAqvIeEo1st-jykYX9Mns6lXIfdtAE,7764
|
24
|
-
mcp_proxy_adapter/api/middleware/user_info_middleware.py,sha256=
|
24
|
+
mcp_proxy_adapter/api/middleware/user_info_middleware.py,sha256=94oItW3uyNhLvp6p1Sl7EhY_gC4MqrbR9KyAJWreTwk,10326
|
25
25
|
mcp_proxy_adapter/commands/__init__.py,sha256=eStfu2UrLfMvMTY6x20GD8sMPmPB1so-0QZQYV53nqo,1565
|
26
26
|
mcp_proxy_adapter/commands/auth_validation_command.py,sha256=p4UrAaHyoCxMy98G1BUUlFJWjoelEJzX3OAWIiQaGls,14593
|
27
27
|
mcp_proxy_adapter/commands/base.py,sha256=0_hu8t89-2vWBPFpEMokr27A-IifKI32rkQwZfc2Grk,15162
|
@@ -29,7 +29,7 @@ mcp_proxy_adapter/commands/builtin_commands.py,sha256=8kYLWIr4JvhZtqaVM9Jhqr_-yS
|
|
29
29
|
mcp_proxy_adapter/commands/catalog_manager.py,sha256=1DLvjt9RVMmeNZyynd-frk8gYkdgGJYyBXg6uWTJ16k,34873
|
30
30
|
mcp_proxy_adapter/commands/cert_monitor_command.py,sha256=phSms8EYOn1RqSp7na6jw0S1bLRrilmYZIFXVepVFyU,23687
|
31
31
|
mcp_proxy_adapter/commands/certificate_management_command.py,sha256=TDoGV2mnEz1HaJiHsxAO_IvtSinVwp0s_av5oIgmRqk,23225
|
32
|
-
mcp_proxy_adapter/commands/command_registry.py,sha256=
|
32
|
+
mcp_proxy_adapter/commands/command_registry.py,sha256=abQPOAzS_zIj4SPsOxsZeQS9pjLxyzlMUt9kI_AYT7E,35288
|
33
33
|
mcp_proxy_adapter/commands/config_command.py,sha256=PWX1OhKAmjlc8CSy4-sImdvGeSNgDNyv30Y-P5iZp9g,3767
|
34
34
|
mcp_proxy_adapter/commands/dependency_container.py,sha256=mvPob62lQ-mKRbAA9aL3L5gOT9_4V2Vy2cGoup2S840,3239
|
35
35
|
mcp_proxy_adapter/commands/dependency_manager.py,sha256=JWdmQ0de6rQAv8GYDToFIlpomBBXqT61XMygWcggYSQ,7366
|
@@ -137,8 +137,8 @@ mcp_proxy_adapter/schemas/base_schema.json,sha256=v9G9cGMd4dRhCZsOQ_FMqOi5VFyVbI
|
|
137
137
|
mcp_proxy_adapter/schemas/openapi_schema.json,sha256=C3yLkwmDsvnLW9B5gnKKdBGl4zxkeU-rEmjTrNVsQU0,8405
|
138
138
|
mcp_proxy_adapter/utils/config_generator.py,sha256=UXxuxxAyKTesAS3DOofQ26e20v771inA7EfBV8PZD1c,47543
|
139
139
|
mcp_proxy_adapter_issue_package/demonstrate_issue.py,sha256=O54fwWQvUAjEGiHhQGm1JLnARkhVCwAqjBk_89HyRbY,7894
|
140
|
-
mcp_proxy_adapter-6.3.
|
141
|
-
mcp_proxy_adapter-6.3.
|
142
|
-
mcp_proxy_adapter-6.3.
|
143
|
-
mcp_proxy_adapter-6.3.
|
144
|
-
mcp_proxy_adapter-6.3.
|
140
|
+
mcp_proxy_adapter-6.3.19.dist-info/METADATA,sha256=cylcyMn4jKDHTTwhSJmEvmYKV1immuvobVB-CAYPRIY,22266
|
141
|
+
mcp_proxy_adapter-6.3.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
142
|
+
mcp_proxy_adapter-6.3.19.dist-info/entry_points.txt,sha256=J3eV6ID0lt_VSp4lIdIgBFTqLCThgObNNxRCbyfiMHw,70
|
143
|
+
mcp_proxy_adapter-6.3.19.dist-info/top_level.txt,sha256=CHk-Mc-AxjO-tRheegA2qLiQnU4vZRnxuTF81So6SAc,50
|
144
|
+
mcp_proxy_adapter-6.3.19.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|