mcp-proxy-adapter 6.4.28__py3-none-any.whl → 6.4.32__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.
@@ -12,6 +12,13 @@ from .base import BaseMiddleware
12
12
  from .factory import MiddlewareFactory
13
13
  from .protocol_middleware import setup_protocol_middleware
14
14
 
15
+ # Export mcp_security_framework availability
16
+ try:
17
+ from .user_info_middleware import _MCP_SECURITY_AVAILABLE
18
+ mcp_security_framework = _MCP_SECURITY_AVAILABLE
19
+ except ImportError:
20
+ mcp_security_framework = False
21
+
15
22
 
16
23
  def setup_middleware(app: FastAPI, app_config: Optional[Dict[str, Any]] = None) -> None:
17
24
  """
@@ -119,12 +119,16 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
119
119
  logger.warning(f"⚠️ Failed to initialize AuthManager: {e}")
120
120
  self._security_available = False
121
121
 
122
+ # Always initialize api_keys for fallback
123
+ security_config = config.get("security", {})
124
+ auth_config = security_config.get("auth", {})
125
+ self.api_keys = auth_config.get("api_keys", {})
126
+
122
127
  if not self._security_available:
123
128
  # Fallback to basic API key handling
124
- security_config = config.get("security", {})
125
- auth_config = security_config.get("auth", {})
126
- self.api_keys = auth_config.get("api_keys", {})
127
129
  logger.info("ℹ️ User info middleware initialized with basic auth")
130
+ else:
131
+ logger.info("ℹ️ User info middleware initialized with mcp_security_framework (fallback enabled)")
128
132
 
129
133
  async def dispatch(
130
134
  self, request: Request, call_next: Callable[[Request], Awaitable[Response]]
@@ -190,9 +194,15 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
190
194
 
191
195
  if not self._security_available:
192
196
  # Fallback to basic API key handling
193
- if api_key in getattr(self, "api_keys", {}):
194
- user_role = self.api_keys[api_key]
195
-
197
+ api_keys_dict = getattr(self, "api_keys", {})
198
+ # Find role by API key value (not key)
199
+ user_role = None
200
+ for role, key_value in api_keys_dict.items():
201
+ if key_value == api_key:
202
+ user_role = role
203
+ break
204
+
205
+ if user_role:
196
206
  # Get permissions for this role from roles file if available
197
207
  role_permissions = ["read"] # default permissions
198
208
  if (
@@ -211,10 +221,9 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
211
221
  "roles": [user_role],
212
222
  "permissions": role_permissions,
213
223
  }
214
-
215
224
  logger.debug(
216
- f"✅ Authenticated user with basic auth: "
217
- f"{request.state.user}"
225
+ f"✅ User authenticated with API key: "
226
+ f"{api_key[:8]}..."
218
227
  )
219
228
  else:
220
229
  # API key not found
@@ -2,4 +2,4 @@
2
2
  Version information for MCP Proxy Adapter.
3
3
  """
4
4
 
5
- __version__ = "6.4.28"
5
+ __version__ = "6.4.32"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.4.28
3
+ Version: 6.4.32
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
@@ -4,14 +4,14 @@ mcp_proxy_adapter/config.py,sha256=-7iVS0mUWWKNeao7nqTAFlUD6FcMwRlDkchN7OwYsr0,2
4
4
  mcp_proxy_adapter/custom_openapi.py,sha256=yLle4CntYK9wpivgn9NflZyJhy-YNrmWjJzt0ai5nP0,14672
5
5
  mcp_proxy_adapter/main.py,sha256=idp3KUR7CT7kTXLVPvvclJlNnt8d_HYl8_jY98uknmo,4677
6
6
  mcp_proxy_adapter/openapi.py,sha256=2UZOI09ZDRJuBYBjKbMyb2U4uASszoCMD5o_4ktRpvg,13480
7
- mcp_proxy_adapter/version.py,sha256=0sJ-HJatdY58_Ru_0XfTgRWj2PaPkeFut2b_WjAHB_A,75
7
+ mcp_proxy_adapter/version.py,sha256=G8Mkv1ON69SwlRpVikxEDT03qz6aIVBcCRYSeHSyiik,75
8
8
  mcp_proxy_adapter/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  mcp_proxy_adapter/api/app.py,sha256=UQ7_m-LbUzKuuPJPxS_69ahANUQ5rnPwoddQ2MMXNkg,33941
10
10
  mcp_proxy_adapter/api/handlers.py,sha256=iyFGoEuUS1wxbV1ELA0zmaxIyQR7j4zw-4MrD-uIO6E,8294
11
11
  mcp_proxy_adapter/api/schemas.py,sha256=mevUvQnYgWQfkJAs3-vq3HalBzh6-Saa-Au1VVf0peE,12377
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
- mcp_proxy_adapter/api/middleware/__init__.py,sha256=0E3gJ8kRWdlSIbtkuG68pInE-FsOnLj67hTcvN9jJqE,2168
14
+ mcp_proxy_adapter/api/middleware/__init__.py,sha256=wbjJFrjx7M00-nCHdW2S7r9WeFrpMyWgQTMFD63B0iU,2389
15
15
  mcp_proxy_adapter/api/middleware/base.py,sha256=tmvcYbTA7aK4y-5wo7jlSAuhhddRWduRzyQUOiBkAAU,3413
16
16
  mcp_proxy_adapter/api/middleware/command_permission_middleware.py,sha256=dIzcvUDaO3etAM8xXVKza4tiakplppe8fTKuV36NaXU,4936
17
17
  mcp_proxy_adapter/api/middleware/error_handling.py,sha256=bXui9rUn4Gem3PoXuxldSBUpaCoXtCH6gUPD6Th94BY,6867
@@ -21,7 +21,7 @@ mcp_proxy_adapter/api/middleware/performance.py,sha256=-EvA7YIcTlxn8RuxlWlScJvX2
21
21
  mcp_proxy_adapter/api/middleware/protocol_middleware.py,sha256=lFqGuT5M-USCTIVvZMH6Fgh3hxQNAmAoDeyYOBPpcbk,9161
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=qjNPOCusMimXjEtjwyG6CgFieLm2T7O2e2QghqE_s3M,8313
24
- mcp_proxy_adapter/api/middleware/user_info_middleware.py,sha256=sUHHyy33xvZKRDtOWfzbndrIxDYLUFeVYfUbPIKawR8,10652
24
+ mcp_proxy_adapter/api/middleware/user_info_middleware.py,sha256=-N6cZOc7z6FUE7xRZ8xGgI4PnMyrJq0Jzpde9VNq6Zs,11077
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
@@ -121,8 +121,8 @@ mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py,sha25
121
121
  mcp_proxy_adapter/examples/scripts/config_generator.py,sha256=SKFlRRCE_pEHGbfjDuzfKpvV2DMwG6lRfK90uJwRlJM,33410
122
122
  mcp_proxy_adapter/examples/scripts/create_certificates_simple.py,sha256=yCWdUIhMSDPwoPhuLR9rhPdf7jLN5hCjzNfYYgVyHnw,27769
123
123
  mcp_proxy_adapter/examples/scripts/generate_certificates_and_tokens.py,sha256=hUCoJH3fy5WeR_YMHj-_W0mR0ZKUWqewH4FVN3yWyrM,17972
124
- mcp_proxy_adapter-6.4.28.dist-info/METADATA,sha256=tQmvP6RL73GR0jsVM8U_iuDMzP7gaRwCNdlzTfUI-J4,6087
125
- mcp_proxy_adapter-6.4.28.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
126
- mcp_proxy_adapter-6.4.28.dist-info/entry_points.txt,sha256=J3eV6ID0lt_VSp4lIdIgBFTqLCThgObNNxRCbyfiMHw,70
127
- mcp_proxy_adapter-6.4.28.dist-info/top_level.txt,sha256=JZT7vPLBYrtroX-ij68JBhJYbjDdghcV-DFySRy-Nnw,18
128
- mcp_proxy_adapter-6.4.28.dist-info/RECORD,,
124
+ mcp_proxy_adapter-6.4.32.dist-info/METADATA,sha256=l7MvcMPoyBl-F3SMW31RQYnRb0OlIYK0Ejig1AkavBo,6087
125
+ mcp_proxy_adapter-6.4.32.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
126
+ mcp_proxy_adapter-6.4.32.dist-info/entry_points.txt,sha256=J3eV6ID0lt_VSp4lIdIgBFTqLCThgObNNxRCbyfiMHw,70
127
+ mcp_proxy_adapter-6.4.32.dist-info/top_level.txt,sha256=JZT7vPLBYrtroX-ij68JBhJYbjDdghcV-DFySRy-Nnw,18
128
+ mcp_proxy_adapter-6.4.32.dist-info/RECORD,,