mcp-proxy-adapter 6.2.22__py3-none-any.whl → 6.2.24__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.
@@ -118,18 +118,24 @@ class Config:
118
118
  "auto_register_on_startup": True,
119
119
  "auto_unregister_on_shutdown": True
120
120
  },
121
+ "commands": {
122
+ "auto_discovery": True,
123
+ "enabled_commands": ["health", "echo", "list", "help"],
124
+ "disabled_commands": [],
125
+ "custom_commands_path": "./commands"
126
+ },
121
127
  "debug": {
122
128
  "enabled": False,
123
129
  "level": "WARNING"
124
130
  },
125
131
  "security": {
126
132
  "framework": "mcp_security_framework",
127
- "enabled": True,
133
+ "enabled": False,
128
134
  "debug": False,
129
135
  "environment": "dev",
130
136
  "version": "1.0.0",
131
137
  "auth": {
132
- "enabled": True,
138
+ "enabled": False,
133
139
  "methods": ["api_key"],
134
140
  "api_keys": {},
135
141
  "user_roles": {},
@@ -175,7 +181,7 @@ class Config:
175
181
  "renewal_threshold_days": 30
176
182
  },
177
183
  "permissions": {
178
- "enabled": True,
184
+ "enabled": False,
179
185
  "roles_file": None,
180
186
  "default_role": "guest",
181
187
  "admin_role": "admin",
@@ -187,7 +193,7 @@ class Config:
187
193
  "roles": None
188
194
  },
189
195
  "rate_limit": {
190
- "enabled": True,
196
+ "enabled": False,
191
197
  "default_requests_per_minute": 60,
192
198
  "default_requests_per_hour": 1000,
193
199
  "burst_limit": 2,
@@ -212,6 +218,12 @@ class Config:
212
218
  "include_level": True,
213
219
  "include_module": True
214
220
  }
221
+ },
222
+ "protocols": {
223
+ "enabled": True,
224
+ "allowed_protocols": ["http", "jsonrpc"],
225
+ "default_protocol": "http",
226
+ "auto_discovery": True
215
227
  }
216
228
  }
217
229
 
@@ -22,17 +22,18 @@ except ImportError:
22
22
  class SimpleCertificateCreator:
23
23
  """Create certificates using OpenSSL directly."""
24
24
  def __init__(self, certs_dir: str = None, keys_dir: str = None):
25
+ # Use current working directory as base
26
+ cwd = Path.cwd()
27
+
25
28
  if certs_dir:
26
29
  self.certs_dir = Path(certs_dir).resolve()
27
30
  else:
28
- self.project_root = Path(__file__).parent.parent.parent
29
- self.certs_dir = self.project_root / "mcp_proxy_adapter" / "examples" / "certs"
31
+ self.certs_dir = cwd / "certs"
32
+
30
33
  if keys_dir:
31
34
  self.keys_dir = Path(keys_dir).resolve()
32
35
  else:
33
- if not certs_dir:
34
- self.project_root = Path(__file__).parent.parent.parent
35
- self.keys_dir = self.project_root / "mcp_proxy_adapter" / "examples" / "keys"
36
+ self.keys_dir = cwd / "keys"
36
37
  # Create directories
37
38
  self.certs_dir.mkdir(parents=True, exist_ok=True)
38
39
  self.keys_dir.mkdir(parents=True, exist_ok=True)
@@ -450,6 +451,56 @@ class SimpleCertificateCreator:
450
451
  # 5. Validate certificates
451
452
  if not self.validate_certificates():
452
453
  success = False
454
+ # Create compatibility symlinks
455
+ if success:
456
+ # CA certificate symlink
457
+ ca_cert = self.certs_dir / "ca_cert.pem"
458
+ expected_ca_cert = self.certs_dir / "mcp_proxy_adapter_ca_ca.crt"
459
+ if ca_cert.exists() and not expected_ca_cert.exists():
460
+ try:
461
+ expected_ca_cert.symlink_to(ca_cert)
462
+ print(f"✅ Created CA certificate symlink: {expected_ca_cert}")
463
+ except OSError:
464
+ # On Windows, symlink might require admin privileges, copy instead
465
+ import shutil
466
+ shutil.copy2(ca_cert, expected_ca_cert)
467
+ print(f"✅ Created CA certificate copy: {expected_ca_cert}")
468
+
469
+ # Server certificate symlink
470
+ server_cert = self.certs_dir / "server_cert.pem"
471
+ expected_server_cert = self.certs_dir / "localhost_server.crt"
472
+ if server_cert.exists() and not expected_server_cert.exists():
473
+ try:
474
+ expected_server_cert.symlink_to(server_cert)
475
+ print(f"✅ Created server certificate symlink: {expected_server_cert}")
476
+ except OSError:
477
+ # On Windows, symlink might require admin privileges, copy instead
478
+ import shutil
479
+ shutil.copy2(server_cert, expected_server_cert)
480
+ print(f"✅ Created server certificate copy: {expected_server_cert}")
481
+
482
+ # Server key symlink - check if it's in certs or keys directory
483
+ server_key_certs = self.certs_dir / "server_key.pem"
484
+ server_key_keys = self.keys_dir / "server_key.pem"
485
+
486
+ if server_key_certs.exists():
487
+ # Server key is in certs directory, move it to keys directory
488
+ import shutil
489
+ shutil.move(str(server_key_certs), str(server_key_keys))
490
+ print(f"✅ Moved server key to keys directory: {server_key_keys}")
491
+
492
+ if server_key_keys.exists():
493
+ expected_server_key = self.keys_dir / "localhost_server.key"
494
+ if not expected_server_key.exists():
495
+ try:
496
+ expected_server_key.symlink_to(server_key_keys)
497
+ print(f"✅ Created server key symlink: {expected_server_key}")
498
+ except OSError:
499
+ # On Windows, symlink might require admin privileges, copy instead
500
+ import shutil
501
+ shutil.copy2(server_key_keys, expected_server_key)
502
+ print(f"✅ Created server key copy: {expected_server_key}")
503
+
453
504
  # Print summary
454
505
  print("\n" + "=" * 60)
455
506
  print("📊 CERTIFICATE CREATION SUMMARY")
@@ -472,12 +523,29 @@ class SimpleCertificateCreator:
472
523
  def main():
473
524
  """Main function."""
474
525
  parser = argparse.ArgumentParser(description="Create certificates for testing")
475
- parser.add_argument("--certs-dir", help="Directory for certificates")
476
- parser.add_argument("--keys-dir", help="Directory for keys")
526
+ parser.add_argument("--certs-dir", help="Directory for certificates (default: ./certs)")
527
+ parser.add_argument("--keys-dir", help="Directory for keys (default: ./keys)")
477
528
  args = parser.parse_args()
529
+
530
+ # If no directories specified, check if we're in a test environment
531
+ if not args.certs_dir and not args.keys_dir:
532
+ cwd = Path.cwd()
533
+ # Check if we're in a test environment by looking for typical directories
534
+ if (cwd / "configs").exists() and (cwd / "examples").exists():
535
+ # We're in a test environment, use current directory
536
+ certs_dir = cwd / "certs"
537
+ keys_dir = cwd / "keys"
538
+ else:
539
+ # Use default project structure
540
+ certs_dir = None
541
+ keys_dir = None
542
+ else:
543
+ certs_dir = args.certs_dir
544
+ keys_dir = args.keys_dir
545
+
478
546
  creator = SimpleCertificateCreator(
479
- certs_dir=args.certs_dir,
480
- keys_dir=args.keys_dir
547
+ certs_dir=certs_dir,
548
+ keys_dir=keys_dir
481
549
  )
482
550
  try:
483
551
  success = creator.create_all()
@@ -9,14 +9,14 @@ import json
9
9
  import os
10
10
  import argparse
11
11
  from typing import Dict, Any
12
- def generate_http_simple_config(port: int = 8000) -> Dict[str, Any]:
12
+ def generate_http_simple_config(port: int = 20000, certs_dir: str = "./certs", keys_dir: str = "./keys") -> Dict[str, Any]:
13
13
  """Generate HTTP configuration without authorization."""
14
14
  return {
15
15
  "server": {"host": "127.0.0.1", "port": port},
16
16
  "ssl": {"enabled": False},
17
17
  "security": {"enabled": False},
18
18
  "registration": {
19
- "enabled": True,
19
+ "enabled": False,
20
20
  "auth_method": "token",
21
21
  "server_url": "http://127.0.0.1:3004/proxy",
22
22
  "token": {"enabled": True, "token": "proxy_registration_token_123"},
@@ -29,7 +29,7 @@ def generate_http_simple_config(port: int = 8000) -> Dict[str, Any]:
29
29
  },
30
30
  "protocols": {"enabled": True, "allowed_protocols": ["http"]}
31
31
  }
32
- def generate_http_token_config(port: int = 8001) -> Dict[str, Any]:
32
+ def generate_http_token_config(port: int = 20001, certs_dir: str = "./certs", keys_dir: str = "./keys") -> Dict[str, Any]:
33
33
  """Generate HTTP configuration with token authorization."""
34
34
  return {
35
35
  "server": {"host": "127.0.0.1", "port": port},
@@ -61,7 +61,7 @@ def generate_http_token_config(port: int = 8001) -> Dict[str, Any]:
61
61
  },
62
62
  "protocols": {"enabled": True, "allowed_protocols": ["http"]}
63
63
  }
64
- def generate_https_simple_config(port: int = 8002) -> Dict[str, Any]:
64
+ def generate_https_simple_config(port: int = 20002, certs_dir: str = "./certs", keys_dir: str = "./keys") -> Dict[str, Any]:
65
65
  """Generate HTTPS configuration without client certificate verification and authorization."""
66
66
  return {
67
67
  "server": {"host": "127.0.0.1", "port": port},
@@ -82,7 +82,7 @@ def generate_https_simple_config(port: int = 8002) -> Dict[str, Any]:
82
82
  },
83
83
  "protocols": {"enabled": True, "allowed_protocols": ["http", "https"]}
84
84
  }
85
- def generate_https_token_config(port: int = 8003) -> Dict[str, Any]:
85
+ def generate_https_token_config(port: int = 20003, certs_dir: str = "./certs", keys_dir: str = "./keys") -> Dict[str, Any]:
86
86
  """Generate HTTPS configuration without client certificate verification with token authorization."""
87
87
  return {
88
88
  "server": {"host": "127.0.0.1", "port": port},
@@ -117,7 +117,7 @@ def generate_https_token_config(port: int = 8003) -> Dict[str, Any]:
117
117
  },
118
118
  "protocols": {"enabled": True, "allowed_protocols": ["http", "https"]}
119
119
  }
120
- def generate_mtls_no_roles_config(port: int = 8004) -> Dict[str, Any]:
120
+ def generate_mtls_no_roles_config(port: int = 20004, certs_dir: str = "./certs", keys_dir: str = "./keys") -> Dict[str, Any]:
121
121
  """Generate mTLS configuration without roles."""
122
122
  return {
123
123
  "server": {"host": "127.0.0.1", "port": port},
@@ -135,7 +135,7 @@ def generate_mtls_no_roles_config(port: int = 8004) -> Dict[str, Any]:
135
135
  },
136
136
  "protocols": {"enabled": True, "allowed_protocols": ["https", "mtls"]}
137
137
  }
138
- def generate_mtls_with_roles_config(port: int = 8005) -> Dict[str, Any]:
138
+ def generate_mtls_with_roles_config(port: int = 20005, certs_dir: str = "./certs", keys_dir: str = "./keys") -> Dict[str, Any]:
139
139
  """Generate mTLS configuration with roles."""
140
140
  return {
141
141
  "server": {"host": "127.0.0.1", "port": port},
@@ -222,15 +222,15 @@ def generate_roles_config() -> Dict[str, Any]:
222
222
  "tokens": ["proxy-token-123"]
223
223
  }
224
224
  }
225
- def generate_all_configs(output_dir: str) -> None:
225
+ def generate_all_configs(output_dir: str, certs_dir: str = "./certs", keys_dir: str = "./keys") -> None:
226
226
  """Generate all 6 configuration types and save them to files."""
227
227
  configs = {
228
- "http_simple": generate_http_simple_config(8000),
229
- "http_token": generate_http_token_config(8001),
230
- "https_simple": generate_https_simple_config(8002),
231
- "https_token": generate_https_token_config(8003),
232
- "mtls_no_roles": generate_mtls_no_roles_config(8004),
233
- "mtls_with_roles": generate_mtls_with_roles_config(8005)
228
+ "http_simple": generate_http_simple_config(20000, certs_dir, keys_dir),
229
+ "http_token": generate_http_token_config(20001, certs_dir, keys_dir),
230
+ "https_simple": generate_https_simple_config(20002, certs_dir, keys_dir),
231
+ "https_token": generate_https_token_config(20003, certs_dir, keys_dir),
232
+ "mtls_no_roles": generate_mtls_no_roles_config(20004, certs_dir, keys_dir),
233
+ "mtls_with_roles": generate_mtls_with_roles_config(20005, certs_dir, keys_dir)
234
234
  }
235
235
  # Ensure output directory exists
236
236
  os.makedirs(output_dir, exist_ok=True)
@@ -0,0 +1,125 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Full Test Suite Runner for MCP Proxy Adapter
4
+ This script automatically runs the complete test suite:
5
+ 1. Setup test environment
6
+ 2. Generate configurations
7
+ 3. Create certificates
8
+ 4. Run security tests
9
+
10
+ Author: Vasiliy Zdanovskiy
11
+ email: vasilyvz@gmail.com
12
+ """
13
+ import sys
14
+ import subprocess
15
+ import os
16
+ from pathlib import Path
17
+
18
+
19
+ def run_command(cmd: list, description: str) -> bool:
20
+ """Run a command and return success status."""
21
+ try:
22
+ print(f"\n🚀 {description}")
23
+ print("=" * 60)
24
+
25
+ # Change to script directory if running from package
26
+ script_dir = Path(__file__).parent
27
+ if script_dir.name == "examples":
28
+ os.chdir(script_dir)
29
+
30
+ result = subprocess.run(
31
+ cmd,
32
+ capture_output=False,
33
+ text=True,
34
+ check=True,
35
+ cwd=script_dir
36
+ )
37
+ print(f"✅ {description} completed successfully")
38
+ return True
39
+ except subprocess.CalledProcessError as e:
40
+ print(f"❌ {description} failed:")
41
+ print(f" Command: {' '.join(cmd)}")
42
+ print(f" Error: {e.stderr}")
43
+ return False
44
+ except Exception as e:
45
+ print(f"❌ {description} failed: {e}")
46
+ return False
47
+
48
+
49
+ def main():
50
+ """Run the complete test suite."""
51
+ print("🧪 MCP Proxy Adapter - Full Test Suite")
52
+ print("=" * 60)
53
+
54
+ # Check if we're in the right directory
55
+ current_dir = Path.cwd()
56
+ if not (current_dir / "setup_test_environment.py").exists():
57
+ print("❌ Please run this script from the examples directory")
58
+ return 1
59
+
60
+ success = True
61
+
62
+ # 1. Setup test environment
63
+ if not run_command([
64
+ sys.executable, "-m", "mcp_proxy_adapter.examples.setup_test_environment",
65
+ "--output-dir", "."
66
+ ], "Setting up test environment"):
67
+ success = False
68
+
69
+ # 2. Generate configurations
70
+ if success and not run_command([
71
+ sys.executable, "-m", "mcp_proxy_adapter.examples.generate_test_configs",
72
+ "--output-dir", "configs"
73
+ ], "Generating test configurations"):
74
+ success = False
75
+
76
+ # 3. Create certificates
77
+ if success and not run_command([
78
+ sys.executable, "-m", "mcp_proxy_adapter.examples.create_certificates_simple"
79
+ ], "Creating certificates"):
80
+ success = False
81
+
82
+ # 4. Copy roles.json to root directory
83
+ if success:
84
+ import shutil
85
+ from pathlib import Path
86
+ roles_file = Path("configs/roles.json")
87
+ if roles_file.exists():
88
+ shutil.copy2(roles_file, "roles.json")
89
+ print("✅ Copied roles.json to root directory")
90
+ else:
91
+ success = False
92
+ print("❌ roles.json not found in configs directory")
93
+
94
+ # 5. Run security tests
95
+ if success and not run_command([
96
+ sys.executable, "-m", "mcp_proxy_adapter.examples.run_security_tests"
97
+ ], "Running security tests"):
98
+ success = False
99
+
100
+ # Final result
101
+ print("\n" + "=" * 60)
102
+ if success:
103
+ print("🎉 FULL TEST SUITE COMPLETED SUCCESSFULLY!")
104
+ print("=" * 60)
105
+ print("\n📋 SUMMARY:")
106
+ print("✅ Test environment setup")
107
+ print("✅ Configuration generation")
108
+ print("✅ Certificate creation")
109
+ print("✅ Roles configuration")
110
+ print("✅ Security testing")
111
+ print("\n🚀 All systems are working correctly!")
112
+ return 0
113
+ else:
114
+ print("❌ FULL TEST SUITE FAILED!")
115
+ print("=" * 60)
116
+ print("\n🔧 TROUBLESHOOTING:")
117
+ print("1. Check the error messages above")
118
+ print("2. Ensure you have write permissions")
119
+ print("3. Make sure ports 20000-20010 are free")
120
+ print("4. Check if mcp_security_framework is installed")
121
+ return 1
122
+
123
+
124
+ if __name__ == "__main__":
125
+ exit(main())
@@ -99,6 +99,18 @@ def setup_test_environment(output_dir: Path) -> None:
99
99
  if cert_tokens_src.exists():
100
100
  shutil.copy2(cert_tokens_src, output_dir / "scripts/")
101
101
  print("✅ Copied generate_certificates_and_tokens.py")
102
+
103
+ # Copy roles.json to the root directory for compatibility
104
+ roles_src = examples_src_root / "roles.json"
105
+ if roles_src.exists():
106
+ shutil.copy2(roles_src, output_dir)
107
+ print("✅ Copied roles.json to root directory")
108
+
109
+ # Also copy from configs directory if it exists
110
+ roles_configs_src = output_dir / "configs" / "roles.json"
111
+ if roles_configs_src.exists():
112
+ shutil.copy2(roles_configs_src, output_dir / "roles.json")
113
+ print("✅ Updated roles.json from configs directory")
102
114
  print(
103
115
  "🎉 Test environment setup completed successfully at: {}".format(
104
116
  output_dir
@@ -2,5 +2,5 @@
2
2
  Version information for MCP Proxy Adapter.
3
3
  """
4
4
 
5
- __version__ = "6.2.22"
5
+ __version__ = "6.2.24"
6
6
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-proxy-adapter
3
- Version: 6.2.22
3
+ Version: 6.2.24
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=syjTmiWh66rXcmgK6X2KSzbUkwTQC2W5FfMUpO5bjmo,12866
3
+ mcp_proxy_adapter/config.py,sha256=MgomeGL3XBO0tYOA6VIIP1hizUuTYpF9Bs2tp3cesMY,13333
4
4
  mcp_proxy_adapter/custom_openapi.py,sha256=jYUrCy8C1mShh3sjKj-JkzSMLAvxDLTvtzSJFj5HUNg,15023
5
5
  mcp_proxy_adapter/main.py,sha256=cm67W6RU-rL1-zEcTLz_yT7AyoZeqhMbQ4_2qMHlueE,2975
6
6
  mcp_proxy_adapter/openapi.py,sha256=36vOEbJjGnVZR6hUhl6mHCD29HYOEFKo2bL0JdGSm-4,13952
7
- mcp_proxy_adapter/version.py,sha256=UTgOwFKQ1KSDWuh3LP3uzJxRtoxqBjlUV_gnnZfhWCM,76
7
+ mcp_proxy_adapter/version.py,sha256=he5ZytTjuzxFCrKQ9AxOJw6hhMuKvgK4oyLQ4ErooZQ,76
8
8
  mcp_proxy_adapter/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  mcp_proxy_adapter/api/app.py,sha256=g0zHST8xY7xTjMxkCIJEFPck5lD5LyhNzO1hM4S9FhU,29136
10
10
  mcp_proxy_adapter/api/handlers.py,sha256=DcZT7MVBV33q-0EJ0iFqxE0VgBkFt6d_SqoRkntwyvc,8477
@@ -81,21 +81,22 @@ mcp_proxy_adapter/core/transport_manager.py,sha256=ppcgjO-7Ulrk1ovlzlXVM89Iw4VOG
81
81
  mcp_proxy_adapter/core/unified_config_adapter.py,sha256=cpN_VrliIFGDH3JsfRkTlFdQvLcmuMYYedq0QEzlb0Y,22857
82
82
  mcp_proxy_adapter/core/utils.py,sha256=ly8Ttg2v1OBukThJLxudRvmttU1hxJFLJUfat4b2dOI,3268
83
83
  mcp_proxy_adapter/examples/__init__.py,sha256=k1F-EotAFbJ3JvK_rNgiH4bUztmxIWtYn0AfbAZ1ZGs,450
84
- mcp_proxy_adapter/examples/create_certificates_simple.py,sha256=2KS-s3amvAqasvdh-cxY7ARuFAHVjtbtr_EJF2SKVQ0,23221
84
+ mcp_proxy_adapter/examples/create_certificates_simple.py,sha256=xkIvUYl6hbKlWImQmenG0k_CvIsOsc9ZHICiKY3rtI8,26380
85
85
  mcp_proxy_adapter/examples/debug_request_state.py,sha256=x_H3NIlkmIS6lZimvEM6kCXxGdpgFw99Sdui8qa_qeU,4347
86
86
  mcp_proxy_adapter/examples/debug_role_chain.py,sha256=33l2Tk5mrcnwPFwqm2NTHcrWaJrXUU2wxW2I6Y4uIg4,8344
87
87
  mcp_proxy_adapter/examples/demo_client.py,sha256=inic-FP5qG8oQXUaCrtEhmhac_PDZ1pcxp-M1cxSzwA,10240
88
88
  mcp_proxy_adapter/examples/generate_all_certificates.py,sha256=rgcwqIkQ1eDfEIRFRXGIOz-jOSS1w0GPBRhYvMl6Vjc,16948
89
89
  mcp_proxy_adapter/examples/generate_certificates.py,sha256=A34OHUEiFvINOHrm3_JiDSbp-WG-eQXIvKCsE8JAeXQ,6616
90
90
  mcp_proxy_adapter/examples/generate_certificates_and_tokens.py,sha256=J0qHm_BMY8RYqfuwf7V7xKsHcsRJx8E7x-8JxmW5sPw,15988
91
- mcp_proxy_adapter/examples/generate_test_configs.py,sha256=DZmG2ogGPxierbl-KgdiTu8f7WCiIHobwEckVq0QI0Y,11518
91
+ mcp_proxy_adapter/examples/generate_test_configs.py,sha256=EnwhtadwcAWs3dtkVSWUG2Xhw7VHb9i0WQbVCvxGR14,12035
92
92
  mcp_proxy_adapter/examples/proxy_registration_example.py,sha256=g59_QG2D1CCqhIXEvgy2XmgXI3toLmLyH7hL3uHZwC8,12647
93
93
  mcp_proxy_adapter/examples/run_example.py,sha256=o8rcy9Xo0UuZG4MpKdex3pFWYdtAi6uW8dEBQE6Yzbw,2539
94
+ mcp_proxy_adapter/examples/run_full_test_suite.py,sha256=hREBb4vzT3dWEU0G5rh6XSMykmQ5xeIxb-01i4BMEQQ,3815
94
95
  mcp_proxy_adapter/examples/run_proxy_server.py,sha256=vkEjqREcOSw2elH_VOBLa0cFjL8gCZp9nkRa8YLsndI,5119
95
96
  mcp_proxy_adapter/examples/run_security_tests.py,sha256=wxt3gbcJbg34QtAB2RNXsZsE69O0hK9IsfyOlx0qjUU,22277
96
97
  mcp_proxy_adapter/examples/run_security_tests_fixed.py,sha256=fNQsbALf9548xJ0OGPKYx5Crzg1GbcL8CSh1x_oKu_A,10540
97
98
  mcp_proxy_adapter/examples/security_test_client.py,sha256=0j0-RGg9kppt_IAuYeT8cbXr3N5gqBdzEyPd3RW0bs8,35558
98
- mcp_proxy_adapter/examples/setup_test_environment.py,sha256=Y6oNaR95Rmn2csupYoGV-_mMF6AtqJ31vwLhY0TQtMk,11319
99
+ mcp_proxy_adapter/examples/setup_test_environment.py,sha256=fAfz1U7qERY-Z9ly15Wld8Zci-5_e9zSrvYJ56Rjowo,11839
99
100
  mcp_proxy_adapter/examples/test_config.py,sha256=1X9X8lNlWOcM1ZbIzteeMvLdgxnJEK_ev1BYTZiA9ws,6451
100
101
  mcp_proxy_adapter/examples/test_config_generator.py,sha256=SBKL0bv-kUwUUbwrFVbxuA_6pDvK2573Jxm9wPiyI8s,3927
101
102
  mcp_proxy_adapter/examples/test_examples.py,sha256=KH095FFEQDMKYZglclr5qy3cW__t3H8VX1l8dvCkQos,12132
@@ -115,9 +116,9 @@ mcp_proxy_adapter/examples/full_application/hooks/__init__.py,sha256=ORG4cL8cSXE
115
116
  mcp_proxy_adapter/examples/full_application/hooks/application_hooks.py,sha256=TYXuHI-KW_mH5r8mSKgNMJCr3moeEKrqC4Eex0U298k,3457
116
117
  mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py,sha256=IaskSrckZS6bE3aGxSBL8aTj-iJTSI2ysfsFjhjncyM,2975
117
118
  mcp_proxy_adapter/utils/config_generator.py,sha256=4qruYxQ2kGLVOukLX2JOW5kslJ06RhkNqTobAgh4rfw,32801
118
- mcp_proxy_adapter-6.2.22.dist-info/licenses/LICENSE,sha256=6KdtUcTwmTRbJrAmYjVn7e6S-V42ubeDJ-AiVEzZ510,1075
119
- mcp_proxy_adapter-6.2.22.dist-info/METADATA,sha256=rRvRZpdQy86OOIGS9DsmHB1QSLf75daNW5b5MCfsXh0,22348
120
- mcp_proxy_adapter-6.2.22.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
121
- mcp_proxy_adapter-6.2.22.dist-info/entry_points.txt,sha256=J3eV6ID0lt_VSp4lIdIgBFTqLCThgObNNxRCbyfiMHw,70
122
- mcp_proxy_adapter-6.2.22.dist-info/top_level.txt,sha256=JZT7vPLBYrtroX-ij68JBhJYbjDdghcV-DFySRy-Nnw,18
123
- mcp_proxy_adapter-6.2.22.dist-info/RECORD,,
119
+ mcp_proxy_adapter-6.2.24.dist-info/licenses/LICENSE,sha256=6KdtUcTwmTRbJrAmYjVn7e6S-V42ubeDJ-AiVEzZ510,1075
120
+ mcp_proxy_adapter-6.2.24.dist-info/METADATA,sha256=lIjPq7ZZ49McnqICU1mif1sMyOBfgxHdaEhYp6P9zSc,22348
121
+ mcp_proxy_adapter-6.2.24.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
122
+ mcp_proxy_adapter-6.2.24.dist-info/entry_points.txt,sha256=J3eV6ID0lt_VSp4lIdIgBFTqLCThgObNNxRCbyfiMHw,70
123
+ mcp_proxy_adapter-6.2.24.dist-info/top_level.txt,sha256=JZT7vPLBYrtroX-ij68JBhJYbjDdghcV-DFySRy-Nnw,18
124
+ mcp_proxy_adapter-6.2.24.dist-info/RECORD,,