mcp-proxy-adapter 6.4.42__py3-none-any.whl → 6.4.44__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/app.py +9 -3
- mcp_proxy_adapter/core/proxy_registration.py +80 -43
- mcp_proxy_adapter/examples/create_test_configs.py +51 -16
- mcp_proxy_adapter/examples/run_full_test_suite.py +22 -4
- mcp_proxy_adapter/examples/run_security_tests_fixed.py +1 -1
- mcp_proxy_adapter/examples/security_test_client.py +31 -13
- mcp_proxy_adapter/examples/setup_test_environment.py +164 -15
- mcp_proxy_adapter/examples/simple_protocol_test.py +125 -0
- mcp_proxy_adapter/examples/test_protocol_examples.py +338 -0
- mcp_proxy_adapter/version.py +1 -1
- {mcp_proxy_adapter-6.4.42.dist-info → mcp_proxy_adapter-6.4.44.dist-info}/METADATA +1 -1
- {mcp_proxy_adapter-6.4.42.dist-info → mcp_proxy_adapter-6.4.44.dist-info}/RECORD +15 -22
- mcp_proxy_adapter/examples/create_certificates_simple.py +0 -661
- mcp_proxy_adapter/examples/generate_certificates.py +0 -192
- mcp_proxy_adapter/examples/generate_certificates_and_tokens.py +0 -515
- mcp_proxy_adapter/examples/generate_test_configs.py +0 -393
- mcp_proxy_adapter/examples/run_security_tests.py +0 -677
- mcp_proxy_adapter/examples/scripts/config_generator.py +0 -842
- mcp_proxy_adapter/examples/scripts/create_certificates_simple.py +0 -673
- mcp_proxy_adapter/examples/scripts/generate_certificates_and_tokens.py +0 -515
- mcp_proxy_adapter/examples/test_config_generator.py +0 -102
- {mcp_proxy_adapter-6.4.42.dist-info → mcp_proxy_adapter-6.4.44.dist-info}/WHEEL +0 -0
- {mcp_proxy_adapter-6.4.42.dist-info → mcp_proxy_adapter-6.4.44.dist-info}/entry_points.txt +0 -0
- {mcp_proxy_adapter-6.4.42.dist-info → mcp_proxy_adapter-6.4.44.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,338 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
"""
|
3
|
+
Author: Vasiliy Zdanovskiy
|
4
|
+
email: vasilyvz@gmail.com
|
5
|
+
|
6
|
+
Test script for HTTP and HTTPS protocol examples with proxy registration.
|
7
|
+
"""
|
8
|
+
|
9
|
+
import asyncio
|
10
|
+
import json
|
11
|
+
import os
|
12
|
+
import subprocess
|
13
|
+
import sys
|
14
|
+
import time
|
15
|
+
import requests
|
16
|
+
from pathlib import Path
|
17
|
+
|
18
|
+
|
19
|
+
class ProtocolTester:
|
20
|
+
"""Test HTTP and HTTPS protocol examples with proxy registration."""
|
21
|
+
|
22
|
+
def __init__(self):
|
23
|
+
self.base_dir = Path(__file__).parent
|
24
|
+
self.http_config = self.base_dir / "http_proxy_example.json"
|
25
|
+
self.https_config = self.base_dir / "https_proxy_example.json"
|
26
|
+
self.proxy_process = None
|
27
|
+
self.http_server_process = None
|
28
|
+
self.https_server_process = None
|
29
|
+
|
30
|
+
def check_ports_available(self):
|
31
|
+
"""Check if required ports are available."""
|
32
|
+
# Check server ports (20021, 20022) - these should be free
|
33
|
+
server_ports = [20021, 20022]
|
34
|
+
occupied_ports = []
|
35
|
+
|
36
|
+
for port in server_ports:
|
37
|
+
try:
|
38
|
+
import socket
|
39
|
+
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
40
|
+
s.settimeout(1)
|
41
|
+
result = s.connect_ex(('127.0.0.1', port))
|
42
|
+
if result == 0:
|
43
|
+
occupied_ports.append(port)
|
44
|
+
except Exception:
|
45
|
+
pass
|
46
|
+
|
47
|
+
# Check if proxy port (20005) is available or already running
|
48
|
+
proxy_port = 20005
|
49
|
+
proxy_running = False
|
50
|
+
try:
|
51
|
+
import socket
|
52
|
+
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
53
|
+
s.settimeout(1)
|
54
|
+
result = s.connect_ex(('127.0.0.1', proxy_port))
|
55
|
+
if result == 0:
|
56
|
+
proxy_running = True
|
57
|
+
except Exception:
|
58
|
+
pass
|
59
|
+
|
60
|
+
if occupied_ports:
|
61
|
+
print(f"❌ Server ports {occupied_ports} are already in use")
|
62
|
+
print("Please stop services using these ports and try again")
|
63
|
+
return False
|
64
|
+
|
65
|
+
if proxy_running:
|
66
|
+
print(f"✅ Proxy server already running on port {proxy_port}")
|
67
|
+
else:
|
68
|
+
print(f"⚠️ Proxy server not running on port {proxy_port} - will start it")
|
69
|
+
|
70
|
+
print(f"✅ Server ports {server_ports} are available")
|
71
|
+
return True
|
72
|
+
|
73
|
+
def start_proxy_server(self):
|
74
|
+
"""Start the proxy server if not already running."""
|
75
|
+
# Check if proxy is already running
|
76
|
+
if self.test_proxy_health():
|
77
|
+
print("✅ Proxy server already running")
|
78
|
+
return True
|
79
|
+
|
80
|
+
print("🚀 Starting proxy server...")
|
81
|
+
try:
|
82
|
+
self.proxy_process = subprocess.Popen([
|
83
|
+
sys.executable, "-m", "mcp_proxy_adapter.examples.run_proxy_server",
|
84
|
+
"--host", "127.0.0.1",
|
85
|
+
"--port", "20005",
|
86
|
+
"--log-level", "info"
|
87
|
+
], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
|
88
|
+
|
89
|
+
# Wait for proxy to start
|
90
|
+
time.sleep(3)
|
91
|
+
|
92
|
+
# Test proxy health
|
93
|
+
if self.test_proxy_health():
|
94
|
+
print("✅ Proxy server started successfully")
|
95
|
+
return True
|
96
|
+
else:
|
97
|
+
print("❌ Proxy server failed to start")
|
98
|
+
return False
|
99
|
+
|
100
|
+
except Exception as e:
|
101
|
+
print(f"❌ Failed to start proxy server: {e}")
|
102
|
+
return False
|
103
|
+
|
104
|
+
def test_proxy_health(self):
|
105
|
+
"""Test proxy server health on both HTTP and HTTPS."""
|
106
|
+
print("🔍 Testing proxy server health...")
|
107
|
+
|
108
|
+
# Try HTTP first
|
109
|
+
try:
|
110
|
+
response = requests.get(
|
111
|
+
"https://127.0.0.1:20005/health",
|
112
|
+
verify=False,
|
113
|
+
timeout=5
|
114
|
+
)
|
115
|
+
if response.status_code == 200:
|
116
|
+
print("✅ Proxy server responding on HTTP")
|
117
|
+
return True
|
118
|
+
except Exception as e:
|
119
|
+
print(f"⚠️ HTTP health check failed: {e}")
|
120
|
+
|
121
|
+
# Try HTTPS
|
122
|
+
try:
|
123
|
+
response = requests.get(
|
124
|
+
"https://127.0.0.1:20005/health",
|
125
|
+
verify=False,
|
126
|
+
timeout=5
|
127
|
+
)
|
128
|
+
if response.status_code == 200:
|
129
|
+
print("✅ Proxy server responding on HTTPS")
|
130
|
+
return True
|
131
|
+
except Exception as e:
|
132
|
+
print(f"⚠️ HTTPS health check failed: {e}")
|
133
|
+
|
134
|
+
print("❌ Proxy server not responding on either protocol")
|
135
|
+
return False
|
136
|
+
|
137
|
+
def start_http_server(self):
|
138
|
+
"""Start HTTP test server."""
|
139
|
+
print("🚀 Starting HTTP test server...")
|
140
|
+
try:
|
141
|
+
self.http_server_process = subprocess.Popen([
|
142
|
+
sys.executable, "-m", "mcp_proxy_adapter",
|
143
|
+
"--config", str(self.http_config)
|
144
|
+
], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
|
145
|
+
|
146
|
+
# Wait for server to start
|
147
|
+
time.sleep(5)
|
148
|
+
|
149
|
+
# Test server health
|
150
|
+
if self.test_server_health("http", 20021):
|
151
|
+
print("✅ HTTP server started successfully")
|
152
|
+
return True
|
153
|
+
else:
|
154
|
+
print("❌ HTTP server failed to start")
|
155
|
+
return False
|
156
|
+
|
157
|
+
except Exception as e:
|
158
|
+
print(f"❌ Failed to start HTTP server: {e}")
|
159
|
+
return False
|
160
|
+
|
161
|
+
def start_https_server(self):
|
162
|
+
"""Start HTTPS test server."""
|
163
|
+
print("🚀 Starting HTTPS test server...")
|
164
|
+
try:
|
165
|
+
self.https_server_process = subprocess.Popen([
|
166
|
+
sys.executable, "-m", "mcp_proxy_adapter",
|
167
|
+
"--config", str(self.https_config)
|
168
|
+
], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
|
169
|
+
|
170
|
+
# Wait for server to start
|
171
|
+
time.sleep(5)
|
172
|
+
|
173
|
+
# Test server health
|
174
|
+
if self.test_server_health("https", 20022):
|
175
|
+
print("✅ HTTPS server started successfully")
|
176
|
+
return True
|
177
|
+
else:
|
178
|
+
print("❌ HTTPS server failed to start")
|
179
|
+
return False
|
180
|
+
|
181
|
+
except Exception as e:
|
182
|
+
print(f"❌ Failed to start HTTPS server: {e}")
|
183
|
+
return False
|
184
|
+
|
185
|
+
def test_server_health(self, protocol, port):
|
186
|
+
"""Test server health."""
|
187
|
+
# Try the specified protocol first
|
188
|
+
try:
|
189
|
+
url = f"{protocol}://127.0.0.1:{port}/health"
|
190
|
+
response = requests.get(
|
191
|
+
url,
|
192
|
+
verify=False if protocol == "https" else True,
|
193
|
+
timeout=5
|
194
|
+
)
|
195
|
+
if response.status_code == 200:
|
196
|
+
print(f"✅ {protocol.upper()} server responding on port {port}")
|
197
|
+
return True
|
198
|
+
else:
|
199
|
+
print(f"⚠️ {protocol.upper()} server health check failed: {response.status_code}")
|
200
|
+
except Exception as e:
|
201
|
+
print(f"⚠️ {protocol.upper()} server health check failed: {e}")
|
202
|
+
|
203
|
+
# If HTTPS failed, try HTTP as fallback
|
204
|
+
if protocol == "https":
|
205
|
+
try:
|
206
|
+
url = f"http://127.0.0.1:{port}/health"
|
207
|
+
response = requests.get(url, timeout=5)
|
208
|
+
if response.status_code == 200:
|
209
|
+
print(f"✅ Server responding on HTTP (fallback) on port {port}")
|
210
|
+
return True
|
211
|
+
else:
|
212
|
+
print(f"⚠️ HTTP fallback health check failed: {response.status_code}")
|
213
|
+
except Exception as e:
|
214
|
+
print(f"⚠️ HTTP fallback health check failed: {e}")
|
215
|
+
|
216
|
+
return False
|
217
|
+
|
218
|
+
def test_api_key_auth(self, protocol, port, token):
|
219
|
+
"""Test API key authentication."""
|
220
|
+
try:
|
221
|
+
url = f"{protocol}://127.0.0.1:{port}/api/test"
|
222
|
+
headers = {"Authorization": f"Bearer {token}"}
|
223
|
+
response = requests.get(
|
224
|
+
url,
|
225
|
+
headers=headers,
|
226
|
+
verify=False if protocol == "https" else True,
|
227
|
+
timeout=5
|
228
|
+
)
|
229
|
+
if response.status_code == 200:
|
230
|
+
print(f"✅ {protocol.upper()} API key auth successful with token {token}")
|
231
|
+
return True
|
232
|
+
else:
|
233
|
+
print(f"⚠️ {protocol.upper()} API key auth failed: {response.status_code}")
|
234
|
+
return False
|
235
|
+
except Exception as e:
|
236
|
+
print(f"⚠️ {protocol.upper()} API key auth failed: {e}")
|
237
|
+
return False
|
238
|
+
|
239
|
+
def test_proxy_registration(self, protocol, port, server_id):
|
240
|
+
"""Test proxy registration."""
|
241
|
+
try:
|
242
|
+
# Check if server is registered with proxy
|
243
|
+
response = requests.get(
|
244
|
+
"https://127.0.0.1:20005/list",
|
245
|
+
verify=False,
|
246
|
+
timeout=5
|
247
|
+
)
|
248
|
+
if response.status_code == 200:
|
249
|
+
registered_servers = response.json()
|
250
|
+
for server in registered_servers.get("adapters", []):
|
251
|
+
if server.get("name") == server_id:
|
252
|
+
print(f"✅ {protocol.upper()} server {server_id} registered with proxy")
|
253
|
+
return True
|
254
|
+
|
255
|
+
print(f"⚠️ {protocol.upper()} server {server_id} not found in proxy registry")
|
256
|
+
return False
|
257
|
+
else:
|
258
|
+
print(f"⚠️ Failed to get proxy registry: {response.status_code}")
|
259
|
+
return False
|
260
|
+
except Exception as e:
|
261
|
+
print(f"⚠️ Proxy registration check failed: {e}")
|
262
|
+
return False
|
263
|
+
|
264
|
+
def cleanup(self):
|
265
|
+
"""Clean up all processes."""
|
266
|
+
print("🧹 Cleaning up processes...")
|
267
|
+
|
268
|
+
for process, name in [
|
269
|
+
(self.http_server_process, "HTTP server"),
|
270
|
+
(self.https_server_process, "HTTPS server"),
|
271
|
+
(self.proxy_process, "Proxy server")
|
272
|
+
]:
|
273
|
+
if process and process.poll() is None:
|
274
|
+
print(f"🛑 Stopping {name}...")
|
275
|
+
process.terminate()
|
276
|
+
try:
|
277
|
+
process.wait(timeout=5)
|
278
|
+
except subprocess.TimeoutExpired:
|
279
|
+
process.kill()
|
280
|
+
process.wait()
|
281
|
+
|
282
|
+
def run_tests(self):
|
283
|
+
"""Run all protocol tests."""
|
284
|
+
print("🧪 Starting Protocol Examples Test Suite")
|
285
|
+
print("=" * 50)
|
286
|
+
|
287
|
+
# Check ports
|
288
|
+
if not self.check_ports_available():
|
289
|
+
return False
|
290
|
+
|
291
|
+
try:
|
292
|
+
# Start proxy server
|
293
|
+
if not self.start_proxy_server():
|
294
|
+
return False
|
295
|
+
|
296
|
+
# Start HTTP server
|
297
|
+
if not self.start_http_server():
|
298
|
+
return False
|
299
|
+
|
300
|
+
# Start HTTPS server
|
301
|
+
if not self.start_https_server():
|
302
|
+
return False
|
303
|
+
|
304
|
+
print("\n🔍 Running tests...")
|
305
|
+
print("-" * 30)
|
306
|
+
|
307
|
+
# Test API key authentication
|
308
|
+
print("\n📋 Testing API Key Authentication:")
|
309
|
+
self.test_api_key_auth("http", 20021, "admin-secret-key")
|
310
|
+
self.test_api_key_auth("https", 20022, "admin-secret-key")
|
311
|
+
|
312
|
+
# Test proxy registration
|
313
|
+
print("\n📋 Testing Proxy Registration:")
|
314
|
+
self.test_proxy_registration("http", 20021, "http_test_server")
|
315
|
+
self.test_proxy_registration("https", 20022, "https_test_server")
|
316
|
+
|
317
|
+
print("\n✅ Protocol examples test completed!")
|
318
|
+
return True
|
319
|
+
|
320
|
+
except KeyboardInterrupt:
|
321
|
+
print("\n🛑 Test interrupted by user")
|
322
|
+
return False
|
323
|
+
except Exception as e:
|
324
|
+
print(f"\n❌ Test failed with error: {e}")
|
325
|
+
return False
|
326
|
+
finally:
|
327
|
+
self.cleanup()
|
328
|
+
|
329
|
+
|
330
|
+
def main():
|
331
|
+
"""Main function."""
|
332
|
+
tester = ProtocolTester()
|
333
|
+
success = tester.run_tests()
|
334
|
+
sys.exit(0 if success else 1)
|
335
|
+
|
336
|
+
|
337
|
+
if __name__ == "__main__":
|
338
|
+
main()
|
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.4.
|
3
|
+
Version: 6.4.44
|
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,9 +4,9 @@ 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=
|
7
|
+
mcp_proxy_adapter/version.py,sha256=ZUYbYaOQxzP4Lwj_rg4bEAfo6_4VZlnD4LO8bZbmyOk,75
|
8
8
|
mcp_proxy_adapter/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
|
-
mcp_proxy_adapter/api/app.py,sha256=
|
9
|
+
mcp_proxy_adapter/api/app.py,sha256=cxjavhNTtaYg2ea-UeHSDnKh8edKVNQ2NbXUDYbufFU,34183
|
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
|
@@ -70,7 +70,7 @@ mcp_proxy_adapter/core/mtls_asgi_app.py,sha256=DT_fTUH1RkvBa3ThbyCyNb-XUHyCb4Dqa
|
|
70
70
|
mcp_proxy_adapter/core/mtls_server.py,sha256=_hj6QWuExKX2LRohYvjPGFC2qTutS7ObegpEc09QijM,10117
|
71
71
|
mcp_proxy_adapter/core/protocol_manager.py,sha256=3sWOAiMniQY5nu9CHkitIOGN4CXH28hOTwY92D0yasM,15268
|
72
72
|
mcp_proxy_adapter/core/proxy_client.py,sha256=CB6KBhV3vH2GU5nZ27VZ_xlNbYTAU_tnYFrkuK5He58,6094
|
73
|
-
mcp_proxy_adapter/core/proxy_registration.py,sha256=
|
73
|
+
mcp_proxy_adapter/core/proxy_registration.py,sha256=jV1jqsplNLs7gRQnXr37jkC8j3l2imIIo7CEq-qgylY,33683
|
74
74
|
mcp_proxy_adapter/core/role_utils.py,sha256=YwRenGoXI5YrHVbFjKFAH2DJs2miyqhcr9LWF7mxieg,12284
|
75
75
|
mcp_proxy_adapter/core/security_adapter.py,sha256=MAtNthsp7Qj4-oLFzSi7Pr3vWQbWS_uelqa5LGgrXIE,12957
|
76
76
|
mcp_proxy_adapter/core/security_factory.py,sha256=M-1McwUOmuV7Eo-m_P2undtJVNK_KIjDx8o_uRY8rLo,8005
|
@@ -83,26 +83,22 @@ mcp_proxy_adapter/core/transport_manager.py,sha256=eJbGa3gDVFUBFUzMK5KEmpbUDXOOS
|
|
83
83
|
mcp_proxy_adapter/core/unified_config_adapter.py,sha256=zBGYdLDZ3G8f3Y9tmtm0Ne0UXIfEaNHR4Ik2W3ErkLc,22814
|
84
84
|
mcp_proxy_adapter/core/utils.py,sha256=wBdDYBDWQ6zbwrnl9tykHjo0FjJVsLT_x8Bjk1lZX60,3270
|
85
85
|
mcp_proxy_adapter/examples/__init__.py,sha256=k1F-EotAFbJ3JvK_rNgiH4bUztmxIWtYn0AfbAZ1ZGs,450
|
86
|
-
mcp_proxy_adapter/examples/
|
87
|
-
mcp_proxy_adapter/examples/create_test_configs.py,sha256=k7-GycHP96CZFry7EXwkQCViPlr_7jq-f18I9kVWN6c,11253
|
86
|
+
mcp_proxy_adapter/examples/create_test_configs.py,sha256=G27Ia7EyX7p2gAknI7Gi3CSovWm7cCEdORkBXuPg4VY,13360
|
88
87
|
mcp_proxy_adapter/examples/debug_request_state.py,sha256=Z3Gy2-fWtu7KIV9OkzGDLVz7TpL_h9V_99ica40uQBU,4489
|
89
88
|
mcp_proxy_adapter/examples/debug_role_chain.py,sha256=GLVXC2fJUwP8UJnXHchd1t-H53cjWLJI3RqTPrKmaak,8750
|
90
89
|
mcp_proxy_adapter/examples/demo_client.py,sha256=en2Rtb70B1sQmhL-vdQ4PDpKNNl_mfll2YCFT_jFCAg,10191
|
91
90
|
mcp_proxy_adapter/examples/generate_all_certificates.py,sha256=lLP5RKmJwpSyprvrxQXFt_xcN4aiUzlIxk5WVdXx2Fk,19024
|
92
|
-
mcp_proxy_adapter/examples/generate_certificates.py,sha256=VRJnT9Za2Wk_oKRT5g2SA7qcGeBSxZm9wPMOM5i50T0,6707
|
93
|
-
mcp_proxy_adapter/examples/generate_certificates_and_tokens.py,sha256=hUCoJH3fy5WeR_YMHj-_W0mR0ZKUWqewH4FVN3yWyrM,17972
|
94
|
-
mcp_proxy_adapter/examples/generate_test_configs.py,sha256=FWg_QFJAWinI1lw05RccX4_VbhsCBEKPpZA6I9v6KAs,14379
|
95
91
|
mcp_proxy_adapter/examples/proxy_registration_example.py,sha256=vemRhftnjbiOBCJkmtDGqlWQ8syTG0a8755GCOnaQsg,12503
|
96
92
|
mcp_proxy_adapter/examples/run_example.py,sha256=yp-a6HIrSk3ddQmbn0KkuKwErId0aNfj028TE6U-zmY,2626
|
97
|
-
mcp_proxy_adapter/examples/run_full_test_suite.py,sha256=
|
93
|
+
mcp_proxy_adapter/examples/run_full_test_suite.py,sha256=KNlyAiHWvz2Cd3tMeg-ZRVbmgKs2c9A-n1df5sbzMtI,20964
|
98
94
|
mcp_proxy_adapter/examples/run_proxy_server.py,sha256=SBLSSY2F_VEBQD3MsCE_Pa9xFE6Sszr3vHdE9QOEN4Y,5242
|
99
|
-
mcp_proxy_adapter/examples/
|
100
|
-
mcp_proxy_adapter/examples/
|
101
|
-
mcp_proxy_adapter/examples/
|
102
|
-
mcp_proxy_adapter/examples/
|
95
|
+
mcp_proxy_adapter/examples/run_security_tests_fixed.py,sha256=BjY2B4BzPdyK87KiVkkuXJG-iANg15U9563983K0hM0,10935
|
96
|
+
mcp_proxy_adapter/examples/security_test_client.py,sha256=I8JW3fa6eru_f5Yg1bQLz_PglWOPtkftXvaGTcoLWJA,36194
|
97
|
+
mcp_proxy_adapter/examples/setup_test_environment.py,sha256=JkMqLpH5ZmkNKE7-WT52_kYMxEKLFOyQWbtip29TeiU,51629
|
98
|
+
mcp_proxy_adapter/examples/simple_protocol_test.py,sha256=BzFUZvK9Fih3aG4IFLQTZPyPe_s6YjpZfB6uZmQ76rw,3969
|
103
99
|
mcp_proxy_adapter/examples/test_config.py,sha256=ekEoUZe9q484vU_0IxOVhQdNMVJXG3IpmQpP--VmuDI,6491
|
104
|
-
mcp_proxy_adapter/examples/test_config_generator.py,sha256=PBXk1V_awJ-iBlbE66Pme5sQwu6CJDxkmqgm8uPtM58,4091
|
105
100
|
mcp_proxy_adapter/examples/test_examples.py,sha256=CYlVatdHUVC_rwv4NsvxFG3GXiKIyxPDUH43BOJHjrU,12330
|
101
|
+
mcp_proxy_adapter/examples/test_protocol_examples.py,sha256=yCZzZrJ9ICXMkF1bAMozpin2QeTMI653bggPAZTRAUE,12138
|
106
102
|
mcp_proxy_adapter/examples/universal_client.py,sha256=n1-cBPOiCipA86Zcc_mI_jMywDMZS1p3u5JT3AqTsrQ,27577
|
107
103
|
mcp_proxy_adapter/examples/basic_framework/__init__.py,sha256=4aYD--R6hy9n9CUxj7Osb9HcdVUMJ6_cfpu4ujkbCwI,345
|
108
104
|
mcp_proxy_adapter/examples/basic_framework/main.py,sha256=XdGrD_52hhCVHwqx4XmfVmd7tlfp6WE-qZ0gw05SyB0,1792
|
@@ -118,11 +114,8 @@ mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.
|
|
118
114
|
mcp_proxy_adapter/examples/full_application/hooks/__init__.py,sha256=ORG4cL8cSXEMmZ0CEPz75OVuwg54pdDm2GIBpP4dtcs,200
|
119
115
|
mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py,sha256=vcMHakKOt9pvJDZ6XfgvcYJfrrxg-RnIC8wX6LPqKvA,3500
|
120
116
|
mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py,sha256=P5KjODcVPier-nxjWWpG7yO7ppSjSx-6BJ9FxArD-ps,2988
|
121
|
-
mcp_proxy_adapter/
|
122
|
-
mcp_proxy_adapter/
|
123
|
-
mcp_proxy_adapter/
|
124
|
-
mcp_proxy_adapter-6.4.
|
125
|
-
mcp_proxy_adapter-6.4.
|
126
|
-
mcp_proxy_adapter-6.4.42.dist-info/entry_points.txt,sha256=J3eV6ID0lt_VSp4lIdIgBFTqLCThgObNNxRCbyfiMHw,70
|
127
|
-
mcp_proxy_adapter-6.4.42.dist-info/top_level.txt,sha256=JZT7vPLBYrtroX-ij68JBhJYbjDdghcV-DFySRy-Nnw,18
|
128
|
-
mcp_proxy_adapter-6.4.42.dist-info/RECORD,,
|
117
|
+
mcp_proxy_adapter-6.4.44.dist-info/METADATA,sha256=e3voGBXttY4RexlVJ_mhRJiAPiB4Os97Uq2Xl1-uPdM,6087
|
118
|
+
mcp_proxy_adapter-6.4.44.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
119
|
+
mcp_proxy_adapter-6.4.44.dist-info/entry_points.txt,sha256=J3eV6ID0lt_VSp4lIdIgBFTqLCThgObNNxRCbyfiMHw,70
|
120
|
+
mcp_proxy_adapter-6.4.44.dist-info/top_level.txt,sha256=JZT7vPLBYrtroX-ij68JBhJYbjDdghcV-DFySRy-Nnw,18
|
121
|
+
mcp_proxy_adapter-6.4.44.dist-info/RECORD,,
|