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.
Files changed (24) hide show
  1. mcp_proxy_adapter/api/app.py +9 -3
  2. mcp_proxy_adapter/core/proxy_registration.py +80 -43
  3. mcp_proxy_adapter/examples/create_test_configs.py +51 -16
  4. mcp_proxy_adapter/examples/run_full_test_suite.py +22 -4
  5. mcp_proxy_adapter/examples/run_security_tests_fixed.py +1 -1
  6. mcp_proxy_adapter/examples/security_test_client.py +31 -13
  7. mcp_proxy_adapter/examples/setup_test_environment.py +164 -15
  8. mcp_proxy_adapter/examples/simple_protocol_test.py +125 -0
  9. mcp_proxy_adapter/examples/test_protocol_examples.py +338 -0
  10. mcp_proxy_adapter/version.py +1 -1
  11. {mcp_proxy_adapter-6.4.42.dist-info → mcp_proxy_adapter-6.4.44.dist-info}/METADATA +1 -1
  12. {mcp_proxy_adapter-6.4.42.dist-info → mcp_proxy_adapter-6.4.44.dist-info}/RECORD +15 -22
  13. mcp_proxy_adapter/examples/create_certificates_simple.py +0 -661
  14. mcp_proxy_adapter/examples/generate_certificates.py +0 -192
  15. mcp_proxy_adapter/examples/generate_certificates_and_tokens.py +0 -515
  16. mcp_proxy_adapter/examples/generate_test_configs.py +0 -393
  17. mcp_proxy_adapter/examples/run_security_tests.py +0 -677
  18. mcp_proxy_adapter/examples/scripts/config_generator.py +0 -842
  19. mcp_proxy_adapter/examples/scripts/create_certificates_simple.py +0 -673
  20. mcp_proxy_adapter/examples/scripts/generate_certificates_and_tokens.py +0 -515
  21. mcp_proxy_adapter/examples/test_config_generator.py +0 -102
  22. {mcp_proxy_adapter-6.4.42.dist-info → mcp_proxy_adapter-6.4.44.dist-info}/WHEEL +0 -0
  23. {mcp_proxy_adapter-6.4.42.dist-info → mcp_proxy_adapter-6.4.44.dist-info}/entry_points.txt +0 -0
  24. {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()
@@ -2,4 +2,4 @@
2
2
  Version information for MCP Proxy Adapter.
3
3
  """
4
4
 
5
- __version__ = "6.4.42"
5
+ __version__ = "6.4.44"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.4.42
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=33zTUZ2ttWW80c-QfXHT__Wm95n_BM7SnlfFw4HrFsU,75
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=UQ7_m-LbUzKuuPJPxS_69ahANUQ5rnPwoddQ2MMXNkg,33941
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=qgNtdYPXZ6F1oXRXIXCICCL9NYkOteGrTVPQAI8P5mg,31483
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/create_certificates_simple.py,sha256=xoa4VtKzb9y7Mn8VqcK-uH2q7Bf89vrWG6G3LQmhJng,27086
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=QI4a7vTDovHTVd8BDeRAWsCNZp5aTtrlp7NE2LZU5bA,20143
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/run_security_tests.py,sha256=3mgp6fbPknI2fljpuedvtwoY1DzT_-UlOR45fHrkO0A,26215
100
- mcp_proxy_adapter/examples/run_security_tests_fixed.py,sha256=2BKMT0_-FhmcZA73hdQOt2XR7Cgb9Sq8qBI88BkwAAA,10934
101
- mcp_proxy_adapter/examples/security_test_client.py,sha256=dtV3KZaF0txesbEZSsX5WMyWe2VnAg52H50_QLdWhsw,35316
102
- mcp_proxy_adapter/examples/setup_test_environment.py,sha256=jZC9-F17FnuzormazXBmKSa-BgXusfZdYO7aZZlsDrg,45328
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/examples/scripts/config_generator.py,sha256=SKFlRRCE_pEHGbfjDuzfKpvV2DMwG6lRfK90uJwRlJM,33410
122
- mcp_proxy_adapter/examples/scripts/create_certificates_simple.py,sha256=yCWdUIhMSDPwoPhuLR9rhPdf7jLN5hCjzNfYYgVyHnw,27769
123
- mcp_proxy_adapter/examples/scripts/generate_certificates_and_tokens.py,sha256=hUCoJH3fy5WeR_YMHj-_W0mR0ZKUWqewH4FVN3yWyrM,17972
124
- mcp_proxy_adapter-6.4.42.dist-info/METADATA,sha256=NVre6t2TSNlds1BB6c-j95VryA6Ayd20iYFIpr-iIf0,6087
125
- mcp_proxy_adapter-6.4.42.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
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,,