mcp-proxy-adapter 6.2.32__py3-none-any.whl → 6.2.34__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 +65 -23
- mcp_proxy_adapter/config.py +1 -1
- mcp_proxy_adapter/core/client.py +7 -3
- mcp_proxy_adapter/core/proxy_registration.py +1 -1
- mcp_proxy_adapter/examples/universal_client.py +6 -3
- mcp_proxy_adapter/version.py +1 -1
- {mcp_proxy_adapter-6.2.32.dist-info → mcp_proxy_adapter-6.2.34.dist-info}/METADATA +1 -1
- {mcp_proxy_adapter-6.2.32.dist-info → mcp_proxy_adapter-6.2.34.dist-info}/RECORD +12 -12
- {mcp_proxy_adapter-6.2.32.dist-info → mcp_proxy_adapter-6.2.34.dist-info}/WHEEL +0 -0
- {mcp_proxy_adapter-6.2.32.dist-info → mcp_proxy_adapter-6.2.34.dist-info}/entry_points.txt +0 -0
- {mcp_proxy_adapter-6.2.32.dist-info → mcp_proxy_adapter-6.2.34.dist-info}/licenses/LICENSE +0 -0
- {mcp_proxy_adapter-6.2.32.dist-info → mcp_proxy_adapter-6.2.34.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,6 +55,7 @@ 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
|
|
58
60
|
# Create AuthConfig for mcp_security_framework
|
59
61
|
mcp_auth_config = AuthConfig(
|
@@ -62,8 +64,34 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
62
64
|
api_keys=auth_config.get("api_keys", {})
|
63
65
|
)
|
64
66
|
|
65
|
-
|
66
|
-
|
67
|
+
# Create PermissionConfig for mcp_security_framework
|
68
|
+
mcp_permission_config = PermissionConfig(
|
69
|
+
roles_file=permissions_config.get("roles_file"),
|
70
|
+
default_role=permissions_config.get("default_role", "guest"),
|
71
|
+
admin_role=permissions_config.get("admin_role", "admin"),
|
72
|
+
role_hierarchy=permissions_config.get("role_hierarchy", {}),
|
73
|
+
permission_cache_enabled=permissions_config.get(
|
74
|
+
"permission_cache_enabled", True
|
75
|
+
),
|
76
|
+
permission_cache_ttl=permissions_config.get(
|
77
|
+
"permission_cache_ttl", 300
|
78
|
+
),
|
79
|
+
wildcard_permissions=permissions_config.get(
|
80
|
+
"wildcard_permissions", False
|
81
|
+
),
|
82
|
+
strict_mode=permissions_config.get("strict_mode", True),
|
83
|
+
roles=permissions_config.get("roles", {})
|
84
|
+
)
|
85
|
+
|
86
|
+
# Initialize PermissionManager first
|
87
|
+
self.permission_manager = PermissionManager(mcp_permission_config)
|
88
|
+
|
89
|
+
# Initialize AuthManager with permission_manager
|
90
|
+
self.auth_manager = AuthManager(
|
91
|
+
mcp_auth_config, self.permission_manager
|
92
|
+
)
|
93
|
+
logger.info("✅ User info middleware initialized with "
|
94
|
+
"mcp_security_framework")
|
67
95
|
except Exception as e:
|
68
96
|
logger.warning(f"⚠️ Failed to initialize AuthManager: {e}")
|
69
97
|
self._security_available = False
|
@@ -74,21 +102,23 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
74
102
|
auth_config = security_config.get("auth", {})
|
75
103
|
self.api_keys = auth_config.get("api_keys", {})
|
76
104
|
logger.info("ℹ️ User info middleware initialized with basic auth")
|
77
|
-
|
78
|
-
async def dispatch(
|
105
|
+
|
106
|
+
async def dispatch(
|
107
|
+
self, request: Request,
|
108
|
+
call_next: Callable[[Request], Awaitable[Response]]
|
109
|
+
) -> Response:
|
79
110
|
"""
|
80
111
|
Process request and set user info in request.state.
|
81
|
-
|
112
|
+
|
82
113
|
Args:
|
83
114
|
request: Request object
|
84
115
|
call_next: Next handler
|
85
|
-
|
116
|
+
|
86
117
|
Returns:
|
87
118
|
Response object
|
88
119
|
"""
|
89
120
|
# Extract API key from headers
|
90
121
|
api_key = request.headers.get("X-API-Key")
|
91
|
-
|
92
122
|
if api_key:
|
93
123
|
if self.auth_manager and self._security_available:
|
94
124
|
try:
|
@@ -99,11 +129,16 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
99
129
|
# Set user info from AuthManager result
|
100
130
|
request.state.user = {
|
101
131
|
"id": api_key,
|
102
|
-
"role": auth_result.roles[0]
|
132
|
+
"role": (auth_result.roles[0]
|
133
|
+
if auth_result.roles else "guest"),
|
103
134
|
"roles": auth_result.roles or ["guest"],
|
104
|
-
"permissions": getattr(
|
135
|
+
"permissions": getattr(
|
136
|
+
auth_result, 'permissions', ["read"]
|
137
|
+
)
|
105
138
|
}
|
106
|
-
logger.debug(f"✅ Authenticated user with
|
139
|
+
logger.debug(f"✅ Authenticated user with "
|
140
|
+
f"mcp_security_framework: "
|
141
|
+
f"{request.state.user}")
|
107
142
|
else:
|
108
143
|
# Authentication failed
|
109
144
|
request.state.user = {
|
@@ -112,9 +147,11 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
112
147
|
"roles": ["guest"],
|
113
148
|
"permissions": ["read"]
|
114
149
|
}
|
115
|
-
logger.debug(f"❌ Authentication failed for API key:
|
150
|
+
logger.debug(f"❌ Authentication failed for API key: "
|
151
|
+
f"{api_key[:8]}...")
|
116
152
|
except Exception as e:
|
117
|
-
logger.warning(f"⚠️ AuthManager error: {e},
|
153
|
+
logger.warning(f"⚠️ AuthManager error: {e}, "
|
154
|
+
f"falling back to basic auth")
|
118
155
|
self._security_available = False
|
119
156
|
|
120
157
|
if not self._security_available:
|
@@ -124,8 +161,12 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
124
161
|
|
125
162
|
# Get permissions for this role from roles file if available
|
126
163
|
role_permissions = ["read"] # default permissions
|
127
|
-
if hasattr(self, 'roles_config') and
|
128
|
-
|
164
|
+
if (hasattr(self, 'roles_config') and
|
165
|
+
self.roles_config and
|
166
|
+
user_role in self.roles_config):
|
167
|
+
role_permissions = self.roles_config[user_role].get(
|
168
|
+
"permissions", ["read"]
|
169
|
+
)
|
129
170
|
|
130
171
|
# Set user info in request.state
|
131
172
|
request.state.user = {
|
@@ -135,7 +176,8 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
135
176
|
"permissions": role_permissions
|
136
177
|
}
|
137
178
|
|
138
|
-
logger.debug(f"✅ Authenticated user with basic auth:
|
179
|
+
logger.debug(f"✅ Authenticated user with basic auth: "
|
180
|
+
f"{request.state.user}")
|
139
181
|
else:
|
140
182
|
# API key not found
|
141
183
|
request.state.user = {
|
@@ -154,5 +196,5 @@ class UserInfoMiddleware(BaseHTTPMiddleware):
|
|
154
196
|
"permissions": ["read"]
|
155
197
|
}
|
156
198
|
logger.debug("ℹ️ No API key provided, using guest access")
|
157
|
-
|
199
|
+
|
158
200
|
return await call_next(request)
|
mcp_proxy_adapter/config.py
CHANGED
@@ -119,7 +119,7 @@ class Config:
|
|
119
119
|
"server_id": "mcp_proxy_adapter",
|
120
120
|
"server_name": "MCP Proxy Adapter",
|
121
121
|
"description": "JSON-RPC API for interacting with MCP Proxy",
|
122
|
-
"version": "6.2.
|
122
|
+
"version": "6.2.33",
|
123
123
|
"registration_timeout": 30,
|
124
124
|
"retry_attempts": 3,
|
125
125
|
"retry_delay": 5,
|
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", {})
|
@@ -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"))
|
@@ -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.34
|
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
|
@@ -1,10 +1,10 @@
|
|
1
1
|
mcp_proxy_adapter/__init__.py,sha256=B7m1YWyv_Wb87-Q-JqVpHQgwajnfIgDyZ_iIxzdTbBY,1021
|
2
2
|
mcp_proxy_adapter/__main__.py,sha256=-Wp1myP9DzJNB9j97mj62C8kFk5YUbCmd0e7Rnwte0A,769
|
3
|
-
mcp_proxy_adapter/config.py,sha256=
|
3
|
+
mcp_proxy_adapter/config.py,sha256=QIOV57A_hwDH2z_BVEBJKDsPpa3IUKlqhRAij4bpQik,21600
|
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=8Rv-tnRMFu7W1xVGrsKl9PqMpFzjts8hLs89BkGcJHw,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=gJX5WUMa-ByWpbvbFUftymH3BuQNaj1h1lGDqq9VU6g,8134
|
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,7 +57,7 @@ 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
|
@@ -68,7 +68,7 @@ mcp_proxy_adapter/core/mtls_asgi.py,sha256=X2lAj3wk3L85amRCp_-10sqvZa5wJf_diXhwr
|
|
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
|
@@ -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.34.dist-info/licenses/LICENSE,sha256=6KdtUcTwmTRbJrAmYjVn7e6S-V42ubeDJ-AiVEzZ510,1075
|
138
|
+
mcp_proxy_adapter-6.2.34.dist-info/METADATA,sha256=l0uENuXxZKqEOdMXaaMBnEWWegRTQDO9CJYiNGWGIhA,22348
|
139
|
+
mcp_proxy_adapter-6.2.34.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
140
|
+
mcp_proxy_adapter-6.2.34.dist-info/entry_points.txt,sha256=J3eV6ID0lt_VSp4lIdIgBFTqLCThgObNNxRCbyfiMHw,70
|
141
|
+
mcp_proxy_adapter-6.2.34.dist-info/top_level.txt,sha256=JZT7vPLBYrtroX-ij68JBhJYbjDdghcV-DFySRy-Nnw,18
|
142
|
+
mcp_proxy_adapter-6.2.34.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|