mcp-proxy-adapter 6.2.33__py3-none-any.whl → 6.2.35__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/user_info_middleware.py +84 -23
- mcp_proxy_adapter/core/client.py +7 -3
- mcp_proxy_adapter/core/config_validator.py +17 -0
- mcp_proxy_adapter/core/proxy_registration.py +1 -1
- mcp_proxy_adapter/core/security_integration.py +35 -18
- mcp_proxy_adapter/examples/universal_client.py +6 -3
- mcp_proxy_adapter/version.py +1 -1
- {mcp_proxy_adapter-6.2.33.dist-info → mcp_proxy_adapter-6.2.35.dist-info}/METADATA +1 -1
- {mcp_proxy_adapter-6.2.33.dist-info → mcp_proxy_adapter-6.2.35.dist-info}/RECORD +13 -13
- {mcp_proxy_adapter-6.2.33.dist-info → mcp_proxy_adapter-6.2.35.dist-info}/WHEEL +0 -0
- {mcp_proxy_adapter-6.2.33.dist-info → mcp_proxy_adapter-6.2.35.dist-info}/entry_points.txt +0 -0
- {mcp_proxy_adapter-6.2.33.dist-info → mcp_proxy_adapter-6.2.35.dist-info}/licenses/LICENSE +0 -0
- {mcp_proxy_adapter-6.2.33.dist-info → mcp_proxy_adapter-6.2.35.dist-info}/top_level.txt +0 -0
@@ -8,8 +8,7 @@ Author: Vasiliy Zdanovskiy
|
|
8
8
|
email: vasilyvz@gmail.com
|
9
9
|
"""
|
10
10
|
|
11
|
-
import
|
12
|
-
from typing import Dict, Any, Optional, Callable, Awaitable
|
11
|
+
from typing import Dict, Any, Callable, Awaitable
|
13
12
|
from fastapi import Request, Response
|
14
13
|
from starlette.middleware.base import BaseHTTPMiddleware
|
15
14
|
|
@@ -17,23 +16,25 @@ from mcp_proxy_adapter.core.logging import logger
|
|
17
16
|
|
18
17
|
# Import mcp_security_framework components
|
19
18
|
try:
|
20
|
-
from mcp_security_framework import AuthManager
|
21
|
-
from mcp_security_framework.schemas.config import
|
19
|
+
from mcp_security_framework import AuthManager, PermissionManager
|
20
|
+
from mcp_security_framework.schemas.config import (
|
21
|
+
AuthConfig, PermissionConfig
|
22
|
+
)
|
22
23
|
_MCP_SECURITY_AVAILABLE = True
|
23
24
|
print("✅ mcp_security_framework available in middleware")
|
24
25
|
except ImportError:
|
25
26
|
_MCP_SECURITY_AVAILABLE = False
|
26
|
-
print("⚠️ mcp_security_framework not available in middleware,
|
27
|
+
print("⚠️ mcp_security_framework not available in middleware, "
|
28
|
+
"using basic auth")
|
27
29
|
|
28
30
|
|
29
31
|
class UserInfoMiddleware(BaseHTTPMiddleware):
|
30
32
|
"""
|
31
33
|
Middleware for setting user information in request.state.
|
32
|
-
|
34
|
+
|
33
35
|
This middleware extracts user information from authentication headers
|
34
36
|
and sets it in request.state for use by commands.
|
35
37
|
"""
|
36
|
-
|
37
38
|
def __init__(self, app, config: Dict[str, Any]):
|
38
39
|
"""
|
39
40
|
Initialize user info middleware.
|
@@ -54,7 +55,11 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
54
55
|
# Get API keys configuration
|
55
56
|
security_config = config.get("security", {})
|
56
57
|
auth_config = security_config.get("auth", {})
|
58
|
+
permissions_config = security_config.get("permissions", {})
|
57
59
|
|
60
|
+
# Check if permissions are enabled
|
61
|
+
permissions_enabled = permissions_config.get("enabled", False)
|
62
|
+
|
58
63
|
# Create AuthConfig for mcp_security_framework
|
59
64
|
mcp_auth_config = AuthConfig(
|
60
65
|
enabled=True,
|
@@ -62,8 +67,50 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
62
67
|
api_keys=auth_config.get("api_keys", {})
|
63
68
|
)
|
64
69
|
|
65
|
-
|
66
|
-
|
70
|
+
# Initialize PermissionManager only if permissions are enabled
|
71
|
+
if permissions_enabled:
|
72
|
+
# Create PermissionConfig for mcp_security_framework
|
73
|
+
mcp_permission_config = PermissionConfig(
|
74
|
+
roles_file=permissions_config.get("roles_file"),
|
75
|
+
default_role=permissions_config.get("default_role", "guest"),
|
76
|
+
admin_role=permissions_config.get("admin_role", "admin"),
|
77
|
+
role_hierarchy=permissions_config.get("role_hierarchy", {}),
|
78
|
+
permission_cache_enabled=permissions_config.get(
|
79
|
+
"permission_cache_enabled", True
|
80
|
+
),
|
81
|
+
permission_cache_ttl=permissions_config.get(
|
82
|
+
"permission_cache_ttl", 300
|
83
|
+
),
|
84
|
+
wildcard_permissions=permissions_config.get(
|
85
|
+
"wildcard_permissions", False
|
86
|
+
),
|
87
|
+
strict_mode=permissions_config.get("strict_mode", True),
|
88
|
+
roles=permissions_config.get("roles", {})
|
89
|
+
)
|
90
|
+
|
91
|
+
# Initialize PermissionManager first
|
92
|
+
self.permission_manager = PermissionManager(mcp_permission_config)
|
93
|
+
else:
|
94
|
+
# Create a minimal PermissionManager when permissions are disabled
|
95
|
+
mcp_permission_config = PermissionConfig(
|
96
|
+
roles_file=None,
|
97
|
+
default_role="guest",
|
98
|
+
admin_role="admin",
|
99
|
+
role_hierarchy={},
|
100
|
+
permission_cache_enabled=False,
|
101
|
+
permission_cache_ttl=300,
|
102
|
+
wildcard_permissions=False,
|
103
|
+
strict_mode=False,
|
104
|
+
roles={}
|
105
|
+
)
|
106
|
+
self.permission_manager = PermissionManager(mcp_permission_config)
|
107
|
+
|
108
|
+
# Initialize AuthManager with permission_manager
|
109
|
+
self.auth_manager = AuthManager(
|
110
|
+
mcp_auth_config, self.permission_manager
|
111
|
+
)
|
112
|
+
logger.info("✅ User info middleware initialized with "
|
113
|
+
"mcp_security_framework")
|
67
114
|
except Exception as e:
|
68
115
|
logger.warning(f"⚠️ Failed to initialize AuthManager: {e}")
|
69
116
|
self._security_available = False
|
@@ -74,21 +121,23 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
74
121
|
auth_config = security_config.get("auth", {})
|
75
122
|
self.api_keys = auth_config.get("api_keys", {})
|
76
123
|
logger.info("ℹ️ User info middleware initialized with basic auth")
|
77
|
-
|
78
|
-
async def dispatch(
|
124
|
+
|
125
|
+
async def dispatch(
|
126
|
+
self, request: Request,
|
127
|
+
call_next: Callable[[Request], Awaitable[Response]]
|
128
|
+
) -> Response:
|
79
129
|
"""
|
80
130
|
Process request and set user info in request.state.
|
81
|
-
|
131
|
+
|
82
132
|
Args:
|
83
133
|
request: Request object
|
84
134
|
call_next: Next handler
|
85
|
-
|
135
|
+
|
86
136
|
Returns:
|
87
137
|
Response object
|
88
138
|
"""
|
89
139
|
# Extract API key from headers
|
90
140
|
api_key = request.headers.get("X-API-Key")
|
91
|
-
|
92
141
|
if api_key:
|
93
142
|
if self.auth_manager and self._security_available:
|
94
143
|
try:
|
@@ -99,11 +148,16 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
99
148
|
# Set user info from AuthManager result
|
100
149
|
request.state.user = {
|
101
150
|
"id": api_key,
|
102
|
-
"role": auth_result.roles[0]
|
151
|
+
"role": (auth_result.roles[0]
|
152
|
+
if auth_result.roles else "guest"),
|
103
153
|
"roles": auth_result.roles or ["guest"],
|
104
|
-
"permissions": getattr(
|
154
|
+
"permissions": getattr(
|
155
|
+
auth_result, 'permissions', ["read"]
|
156
|
+
)
|
105
157
|
}
|
106
|
-
logger.debug(f"✅ Authenticated user with
|
158
|
+
logger.debug(f"✅ Authenticated user with "
|
159
|
+
f"mcp_security_framework: "
|
160
|
+
f"{request.state.user}")
|
107
161
|
else:
|
108
162
|
# Authentication failed
|
109
163
|
request.state.user = {
|
@@ -112,9 +166,11 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
112
166
|
"roles": ["guest"],
|
113
167
|
"permissions": ["read"]
|
114
168
|
}
|
115
|
-
logger.debug(f"❌ Authentication failed for API key:
|
169
|
+
logger.debug(f"❌ Authentication failed for API key: "
|
170
|
+
f"{api_key[:8]}...")
|
116
171
|
except Exception as e:
|
117
|
-
logger.warning(f"⚠️ AuthManager error: {e},
|
172
|
+
logger.warning(f"⚠️ AuthManager error: {e}, "
|
173
|
+
f"falling back to basic auth")
|
118
174
|
self._security_available = False
|
119
175
|
|
120
176
|
if not self._security_available:
|
@@ -124,8 +180,12 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
124
180
|
|
125
181
|
# Get permissions for this role from roles file if available
|
126
182
|
role_permissions = ["read"] # default permissions
|
127
|
-
if hasattr(self, 'roles_config') and
|
128
|
-
|
183
|
+
if (hasattr(self, 'roles_config') and
|
184
|
+
self.roles_config and
|
185
|
+
user_role in self.roles_config):
|
186
|
+
role_permissions = self.roles_config[user_role].get(
|
187
|
+
"permissions", ["read"]
|
188
|
+
)
|
129
189
|
|
130
190
|
# Set user info in request.state
|
131
191
|
request.state.user = {
|
@@ -135,7 +195,8 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
135
195
|
"permissions": role_permissions
|
136
196
|
}
|
137
197
|
|
138
|
-
logger.debug(f"✅ Authenticated user with basic auth:
|
198
|
+
logger.debug(f"✅ Authenticated user with basic auth: "
|
199
|
+
f"{request.state.user}")
|
139
200
|
else:
|
140
201
|
# API key not found
|
141
202
|
request.state.user = {
|
@@ -154,5 +215,5 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
154
215
|
"permissions": ["read"]
|
155
216
|
}
|
156
217
|
logger.debug("ℹ️ No API key provided, using guest access")
|
157
|
-
|
218
|
+
|
158
219
|
return await call_next(request)
|
mcp_proxy_adapter/core/client.py
CHANGED
@@ -24,7 +24,7 @@ from requests.exceptions import RequestException
|
|
24
24
|
|
25
25
|
# Import security framework components
|
26
26
|
try:
|
27
|
-
from mcp_security_framework import SecurityManager, AuthManager, CertificateManager
|
27
|
+
from mcp_security_framework import SecurityManager, AuthManager, CertificateManager, PermissionManager
|
28
28
|
from mcp_security_framework.utils import generate_api_key, create_jwt_token, validate_jwt_token
|
29
29
|
from mcp_security_framework.utils import extract_roles_from_cert, validate_certificate_chain
|
30
30
|
from mcp_security_framework.utils import create_ssl_context, validate_server_certificate
|
@@ -85,9 +85,13 @@ class UniversalClient:
|
|
85
85
|
# Initialize security manager
|
86
86
|
self.security_manager = SecurityManager(self.security_config)
|
87
87
|
|
88
|
-
# Initialize
|
88
|
+
# Initialize permission manager first
|
89
|
+
permissions_config = self.security_config.get("permissions", {})
|
90
|
+
self.permission_manager = PermissionManager(permissions_config)
|
91
|
+
|
92
|
+
# Initialize auth manager with permission_manager
|
89
93
|
auth_config = self.security_config.get("auth", {})
|
90
|
-
self.auth_manager = AuthManager(auth_config)
|
94
|
+
self.auth_manager = AuthManager(auth_config, self.permission_manager)
|
91
95
|
|
92
96
|
# Initialize certificate manager
|
93
97
|
cert_config = self.security_config.get("certificates", {})
|
@@ -108,6 +108,23 @@ class ConfigValidator:
|
|
108
108
|
security_enabled = security_config.get("enabled", True)
|
109
109
|
auth_enabled = self.config.get("auth_enabled", False)
|
110
110
|
|
111
|
+
# Validate permissions configuration
|
112
|
+
permissions_config = security_config.get("permissions", {})
|
113
|
+
permissions_enabled = permissions_config.get("enabled", False)
|
114
|
+
|
115
|
+
if permissions_enabled:
|
116
|
+
# Permissions require authentication to identify users
|
117
|
+
auth_config = security_config.get("auth", {})
|
118
|
+
if not auth_config.get("enabled", False):
|
119
|
+
self.errors.append("Permissions are enabled but authentication is disabled. Permissions require authentication to identify users.")
|
120
|
+
return False
|
121
|
+
|
122
|
+
# Check if there are any authentication methods available
|
123
|
+
auth_methods = auth_config.get("methods", [])
|
124
|
+
if not auth_methods:
|
125
|
+
self.errors.append("Permissions are enabled but no authentication methods are configured. At least one authentication method is required.")
|
126
|
+
return False
|
127
|
+
|
111
128
|
if security_enabled and auth_enabled:
|
112
129
|
# Validate auth configuration
|
113
130
|
auth_config = security_config.get("auth", {})
|
@@ -49,7 +49,7 @@ class ProxyRegistrationManager:
|
|
49
49
|
self.registration_config = config.get("registration", config.get("proxy_registration", {}))
|
50
50
|
|
51
51
|
# Basic registration settings
|
52
|
-
self.proxy_url = self.registration_config.get("proxy_url",
|
52
|
+
self.proxy_url = self.registration_config.get("proxy_url", "https://proxy-registry.example.com")
|
53
53
|
self.server_id = self.registration_config.get("server_id", self.registration_config.get("proxy_info", {}).get("name", "mcp_proxy_adapter"))
|
54
54
|
self.server_name = self.registration_config.get("server_name", self.registration_config.get("proxy_info", {}).get("name", "MCP Proxy Adapter"))
|
55
55
|
self.description = self.registration_config.get("description", self.registration_config.get("proxy_info", {}).get("description", "JSON-RPC API for interacting with MCP Proxy"))
|
@@ -105,25 +105,42 @@ class SecurityIntegration:
|
|
105
105
|
|
106
106
|
# Create permission config - handle null values properly
|
107
107
|
permissions_section = security_section.get("permissions", {})
|
108
|
-
|
109
|
-
|
110
|
-
# If roles_file is None or empty string, don't pass it to avoid framework errors
|
111
|
-
if roles_file is None or roles_file == "":
|
112
|
-
logger.warning("roles_file is None or empty, permissions will use default configuration")
|
113
|
-
roles_file = None
|
108
|
+
permissions_enabled = permissions_section.get("enabled", True)
|
114
109
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
110
|
+
if permissions_enabled:
|
111
|
+
roles_file = permissions_section.get("roles_file")
|
112
|
+
|
113
|
+
# If roles_file is None or empty string, don't pass it to avoid framework errors
|
114
|
+
if roles_file is None or roles_file == "":
|
115
|
+
logger.warning("roles_file is None or empty, permissions will use default configuration")
|
116
|
+
roles_file = None
|
117
|
+
|
118
|
+
permission_config = PermissionConfig(
|
119
|
+
enabled=True,
|
120
|
+
roles_file=roles_file,
|
121
|
+
default_role=permissions_section.get("default_role", "guest"),
|
122
|
+
admin_role=permissions_section.get("admin_role", "admin"),
|
123
|
+
role_hierarchy=permissions_section.get("role_hierarchy", {}),
|
124
|
+
permission_cache_enabled=permissions_section.get("permission_cache_enabled", True),
|
125
|
+
permission_cache_ttl=permissions_section.get("permission_cache_ttl", 300),
|
126
|
+
wildcard_permissions=permissions_section.get("wildcard_permissions", False),
|
127
|
+
strict_mode=permissions_section.get("strict_mode", True),
|
128
|
+
roles=permissions_section.get("roles")
|
129
|
+
)
|
130
|
+
else:
|
131
|
+
# Create minimal permission config when permissions are disabled
|
132
|
+
permission_config = PermissionConfig(
|
133
|
+
enabled=False,
|
134
|
+
roles_file=None,
|
135
|
+
default_role="guest",
|
136
|
+
admin_role="admin",
|
137
|
+
role_hierarchy={},
|
138
|
+
permission_cache_enabled=False,
|
139
|
+
permission_cache_ttl=300,
|
140
|
+
wildcard_permissions=False,
|
141
|
+
strict_mode=False,
|
142
|
+
roles={}
|
143
|
+
)
|
127
144
|
|
128
145
|
# Create rate limit config
|
129
146
|
rate_limit_config = RateLimitConfig(
|
@@ -19,7 +19,7 @@ import requests
|
|
19
19
|
from requests.exceptions import RequestException
|
20
20
|
# Import security framework components
|
21
21
|
try:
|
22
|
-
from mcp_security_framework import SecurityManager, AuthManager, CertificateManager
|
22
|
+
from mcp_security_framework import SecurityManager, AuthManager, CertificateManager, PermissionManager
|
23
23
|
from mcp_security_framework.utils import generate_api_key, create_jwt_token, validate_jwt_token
|
24
24
|
from mcp_security_framework.utils import extract_roles_from_cert, validate_certificate_chain
|
25
25
|
from mcp_security_framework.utils import create_ssl_context, validate_server_certificate
|
@@ -69,9 +69,12 @@ class UniversalClient:
|
|
69
69
|
try:
|
70
70
|
# Initialize security manager
|
71
71
|
self.security_manager = SecurityManager(self.security_config)
|
72
|
-
# Initialize
|
72
|
+
# Initialize permission manager first
|
73
|
+
permissions_config = self.security_config.get("permissions", {})
|
74
|
+
self.permission_manager = PermissionManager(permissions_config)
|
75
|
+
# Initialize auth manager with permission_manager
|
73
76
|
auth_config = self.security_config.get("auth", {})
|
74
|
-
self.auth_manager = AuthManager(auth_config)
|
77
|
+
self.auth_manager = AuthManager(auth_config, self.permission_manager)
|
75
78
|
# Initialize certificate manager
|
76
79
|
cert_config = self.security_config.get("certificates", {})
|
77
80
|
self.cert_manager = CertificateManager(cert_config)
|
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.2.
|
3
|
+
Version: 6.2.35
|
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,7 +4,7 @@ mcp_proxy_adapter/config.py,sha256=QIOV57A_hwDH2z_BVEBJKDsPpa3IUKlqhRAij4bpQik,2
|
|
4
4
|
mcp_proxy_adapter/custom_openapi.py,sha256=jYUrCy8C1mShh3sjKj-JkzSMLAvxDLTvtzSJFj5HUNg,15023
|
5
5
|
mcp_proxy_adapter/main.py,sha256=9qt_pEQdq8roUc73CumfDn6jDWP_NyfdE1lCGEynv5I,2841
|
6
6
|
mcp_proxy_adapter/openapi.py,sha256=36vOEbJjGnVZR6hUhl6mHCD29HYOEFKo2bL0JdGSm-4,13952
|
7
|
-
mcp_proxy_adapter/version.py,sha256=
|
7
|
+
mcp_proxy_adapter/version.py,sha256=Ejo8js-6RkuGhTLDydUfW-ZiZvYdAHVlTD1lhcEpGmE,76
|
8
8
|
mcp_proxy_adapter/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
9
|
mcp_proxy_adapter/api/app.py,sha256=khl4kaI4mJ6dNbfAK7hR97Ek-eWC9NBeuXHr6GVbLoU,28911
|
10
10
|
mcp_proxy_adapter/api/handlers.py,sha256=DcZT7MVBV33q-0EJ0iFqxE0VgBkFt6d_SqoRkntwyvc,8477
|
@@ -21,7 +21,7 @@ mcp_proxy_adapter/api/middleware/performance.py,sha256=dHBxTF43LEGXMKHMH3A8ybKmw
|
|
21
21
|
mcp_proxy_adapter/api/middleware/protocol_middleware.py,sha256=iVjJrTEfKy15ZchQUo-Mu0hBg9kEP6vgzee_3PtWd6M,8115
|
22
22
|
mcp_proxy_adapter/api/middleware/transport_middleware.py,sha256=Esy2gGKpEV5RoUTilr1YKKTDc5jh5RxsomD0VXyR2pE,4396
|
23
23
|
mcp_proxy_adapter/api/middleware/unified_security.py,sha256=fDWUeIuHjYUngVnB8gVR9ES3IQSaY9VP2YPZGXATJlU,7617
|
24
|
-
mcp_proxy_adapter/api/middleware/user_info_middleware.py,sha256=
|
24
|
+
mcp_proxy_adapter/api/middleware/user_info_middleware.py,sha256=YGtt_1Q4GkvdFopMC2wTfC3OZZXDiOU4v5BxlD1Ge9w,9168
|
25
25
|
mcp_proxy_adapter/commands/__init__.py,sha256=r791wg4FKhWSi5rqA3vekDcGf5kr18pwF1woX-dnZKo,1525
|
26
26
|
mcp_proxy_adapter/commands/auth_validation_command.py,sha256=z612WJDVgZwaCrxdQhATwRc5i3qxH37MPuIV6SuZPn8,15083
|
27
27
|
mcp_proxy_adapter/commands/base.py,sha256=tunyrmt-LYJMQZslAZQor3KZvOrn1IYNpL5uOAnSdxc,15791
|
@@ -57,22 +57,22 @@ mcp_proxy_adapter/core/app_factory.py,sha256=Xwyz40GNOWWa7ThArweawNBY4WI4bEI3_cj
|
|
57
57
|
mcp_proxy_adapter/core/app_runner.py,sha256=JPpx9rKmaHAVdFnHRl2rXycptQkTSQ13Er7Qf1KZIA4,10614
|
58
58
|
mcp_proxy_adapter/core/auth_validator.py,sha256=lJxBVkoQWSk5CNtnPYMEJSsz4FhcXK-gB5QJ_OP9jEE,20937
|
59
59
|
mcp_proxy_adapter/core/certificate_utils.py,sha256=7VOhjRcygCToYgPTUt_MgcNILdpRBRBNZSFpeS_QrfA,39541
|
60
|
-
mcp_proxy_adapter/core/client.py,sha256=
|
60
|
+
mcp_proxy_adapter/core/client.py,sha256=AeNjMyaTnnR0g6Sw_c28X_le8o5SbEi-_PaRtVttGWQ,21624
|
61
61
|
mcp_proxy_adapter/core/client_manager.py,sha256=sKEhapMpogqb54WIWEpz2bMjrX3wvYooX-a844IfCTU,9164
|
62
62
|
mcp_proxy_adapter/core/client_security.py,sha256=8isHpvv-7H85QzI8K3Pfyr_KdvpE2xYyIT4wqWrttNU,13575
|
63
63
|
mcp_proxy_adapter/core/config_converter.py,sha256=FAA2zx-yRgqMgzg73o9Aq5CEEfodNCeaA8Yluto4wAs,16985
|
64
|
-
mcp_proxy_adapter/core/config_validator.py,sha256=
|
64
|
+
mcp_proxy_adapter/core/config_validator.py,sha256=fRN0D727FYlka-Yn0x3-tABJFrXjXorWR1fAD97e02c,8722
|
65
65
|
mcp_proxy_adapter/core/errors.py,sha256=s34OxiIR4NCJu_pYSigKXqrIvRjUUK2OWw0X4dpDjIA,5151
|
66
66
|
mcp_proxy_adapter/core/logging.py,sha256=jQlFz52Xwapef6UD4p0acmaGFumD9XuexwW4frDN_ZM,9626
|
67
67
|
mcp_proxy_adapter/core/mtls_asgi.py,sha256=X2lAj3wk3L85amRCp_-10sqvZa5wJf_diXhwrrQReSo,5311
|
68
68
|
mcp_proxy_adapter/core/mtls_asgi_app.py,sha256=VeolP08TTaqYU5fGeaZexj6EBWBDugoVrEGXzJW4PuM,6406
|
69
69
|
mcp_proxy_adapter/core/protocol_manager.py,sha256=ISFRXjUuK4Q3uMbVB8-O_ozQSsDEH0PQA_HAKGeUrrw,14763
|
70
70
|
mcp_proxy_adapter/core/proxy_client.py,sha256=n44T5iBS29y6E2lQLGKpOQxPYVrxIl98OAs6mMuhEsM,22916
|
71
|
-
mcp_proxy_adapter/core/proxy_registration.py,sha256=
|
71
|
+
mcp_proxy_adapter/core/proxy_registration.py,sha256=Mmh-hWVJKkADLP8361Nx_SGFp9JRwtWnQtjuOhGx5Ss,19785
|
72
72
|
mcp_proxy_adapter/core/role_utils.py,sha256=wMoTVz3gF5fM7jozNMwsEwPkp1tui26M-t_KH1Oz8gs,12880
|
73
73
|
mcp_proxy_adapter/core/security_adapter.py,sha256=wZ3OH1WzhUdpN8N8CrGJSFFVNi474DqdazIqQ1T8PN4,13343
|
74
74
|
mcp_proxy_adapter/core/security_factory.py,sha256=4r7qvBq30XfosGD_b1ZHyNVLN8rOQ3NAKuaCOCEK8jA,8262
|
75
|
-
mcp_proxy_adapter/core/security_integration.py,sha256=
|
75
|
+
mcp_proxy_adapter/core/security_integration.py,sha256=axeNotm4DZBZhbVXIfHHV0TsX4KVhvf1shbIAHEEkZI,14385
|
76
76
|
mcp_proxy_adapter/core/server_adapter.py,sha256=8dhUlLxuYjaoNgMHieFCFgDRjxskP--Y5uoAhbN6RLw,9823
|
77
77
|
mcp_proxy_adapter/core/server_engine.py,sha256=SFENSDrVMlBD--HgKSRVklhrtLKSRSZhs_3UHxFCGbg,9540
|
78
78
|
mcp_proxy_adapter/core/settings.py,sha256=ZfUnmqD1tjAuaQo2VAF8evC1oHUit7gTu4WkTF0IMYI,10628
|
@@ -100,7 +100,7 @@ mcp_proxy_adapter/examples/setup_test_environment.py,sha256=fAfz1U7qERY-Z9ly15Wl
|
|
100
100
|
mcp_proxy_adapter/examples/test_config.py,sha256=1X9X8lNlWOcM1ZbIzteeMvLdgxnJEK_ev1BYTZiA9ws,6451
|
101
101
|
mcp_proxy_adapter/examples/test_config_generator.py,sha256=SBKL0bv-kUwUUbwrFVbxuA_6pDvK2573Jxm9wPiyI8s,3927
|
102
102
|
mcp_proxy_adapter/examples/test_examples.py,sha256=KH095FFEQDMKYZglclr5qy3cW__t3H8VX1l8dvCkQos,12132
|
103
|
-
mcp_proxy_adapter/examples/universal_client.py,sha256=
|
103
|
+
mcp_proxy_adapter/examples/universal_client.py,sha256=qPwDWE33b_WMZCdNE25wRRxvSsMr2syOdeUlF1gUY-I,27219
|
104
104
|
mcp_proxy_adapter/examples/basic_framework/__init__.py,sha256=4aYD--R6hy9n9CUxj7Osb9HcdVUMJ6_cfpu4ujkbCwI,345
|
105
105
|
mcp_proxy_adapter/examples/basic_framework/main.py,sha256=cDmqeUN1lDBBwuwLjmnP3qIyofCZ3Jr5Ct7Im-qCsUU,1728
|
106
106
|
mcp_proxy_adapter/examples/basic_framework/commands/__init__.py,sha256=_VQNLUEdsxUG-4yt9BZI_vtOxHAdGG0OUSsP6Wj-Vz4,76
|
@@ -134,9 +134,9 @@ mcp_proxy_adapter/examples/scripts/generate_certificates_and_tokens.py,sha256=J0
|
|
134
134
|
mcp_proxy_adapter/schemas/base_schema.json,sha256=v9G9cGMd4dRhCZsOQ_FMqOi5VFyVbI6Cf3fyIvOT9dc,2881
|
135
135
|
mcp_proxy_adapter/schemas/openapi_schema.json,sha256=C3yLkwmDsvnLW9B5gnKKdBGl4zxkeU-rEmjTrNVsQU0,8405
|
136
136
|
mcp_proxy_adapter/utils/config_generator.py,sha256=2dxwBh9k_nUw9kgytZso5TNOQpBqd3c-RpKSTLoHlLE,46465
|
137
|
-
mcp_proxy_adapter-6.2.
|
138
|
-
mcp_proxy_adapter-6.2.
|
139
|
-
mcp_proxy_adapter-6.2.
|
140
|
-
mcp_proxy_adapter-6.2.
|
141
|
-
mcp_proxy_adapter-6.2.
|
142
|
-
mcp_proxy_adapter-6.2.
|
137
|
+
mcp_proxy_adapter-6.2.35.dist-info/licenses/LICENSE,sha256=6KdtUcTwmTRbJrAmYjVn7e6S-V42ubeDJ-AiVEzZ510,1075
|
138
|
+
mcp_proxy_adapter-6.2.35.dist-info/METADATA,sha256=Zb9ZBBx8q337nWqYhTiRrgjAvTxpKVWdpY5ozjwtI5o,22348
|
139
|
+
mcp_proxy_adapter-6.2.35.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
140
|
+
mcp_proxy_adapter-6.2.35.dist-info/entry_points.txt,sha256=J3eV6ID0lt_VSp4lIdIgBFTqLCThgObNNxRCbyfiMHw,70
|
141
|
+
mcp_proxy_adapter-6.2.35.dist-info/top_level.txt,sha256=JZT7vPLBYrtroX-ij68JBhJYbjDdghcV-DFySRy-Nnw,18
|
142
|
+
mcp_proxy_adapter-6.2.35.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|