mcp-proxy-adapter 6.4.10__py3-none-any.whl → 6.4.11__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.
@@ -235,6 +235,123 @@ class FullTestSuiteRunner:
235
235
  self.print_error(f"Failed to run security tests: {e}")
236
236
  return False
237
237
 
238
+ def run_mtls_registration_test(self) -> bool:
239
+ """Run mTLS with proxy registration test."""
240
+ self.print_step("6", "mTLS Proxy Registration Testing")
241
+
242
+ try:
243
+ # Check if test_proxy_registration.py exists
244
+ test_script = self.working_dir / "test_proxy_registration.py"
245
+ if not test_script.exists():
246
+ self.print_error(f"Test script not found: {test_script}")
247
+ return False
248
+
249
+ # Create test_proxy_registration.json config if it doesn't exist
250
+ test_config = self.configs_dir / "test_proxy_registration.json"
251
+ if not test_config.exists():
252
+ self.print_info("Creating test_proxy_registration.json configuration...")
253
+ test_config_content = {
254
+ "uuid": "550e8400-e29b-41d4-a716-446655440001",
255
+ "server": {
256
+ "host": "127.0.0.1",
257
+ "port": 20005
258
+ },
259
+ "ssl": {
260
+ "enabled": True,
261
+ "cert_file": "certs/localhost_server.crt",
262
+ "key_file": "keys/localhost_server.key",
263
+ "ca_cert": "certs/mcp_proxy_adapter_ca_ca.crt",
264
+ "client_cert_file": "certs/admin_cert.pem",
265
+ "client_key_file": "certs/admin_key.pem",
266
+ "verify_client": True
267
+ },
268
+ "registration": {
269
+ "enabled": True,
270
+ "auth_method": "token",
271
+ "server_url": "http://127.0.0.1:3006/proxy",
272
+ "token": {
273
+ "enabled": True,
274
+ "token": "proxy_registration_token_123"
275
+ },
276
+ "proxy_info": {
277
+ "name": "mcp_test_server",
278
+ "capabilities": [
279
+ "jsonrpc",
280
+ "rest",
281
+ "security",
282
+ "proxy_registration"
283
+ ],
284
+ "endpoints": {
285
+ "jsonrpc": "/api/jsonrpc",
286
+ "rest": "/cmd",
287
+ "health": "/health"
288
+ }
289
+ },
290
+ "heartbeat": {
291
+ "enabled": True,
292
+ "interval": 30
293
+ }
294
+ },
295
+ "security": {
296
+ "enabled": True,
297
+ "auth": {
298
+ "enabled": True,
299
+ "methods": [
300
+ "certificate"
301
+ ]
302
+ },
303
+ "permissions": {
304
+ "enabled": True,
305
+ "roles_file": "configs/roles.json"
306
+ }
307
+ },
308
+ "protocols": {
309
+ "enabled": True,
310
+ "default_protocol": "mtls",
311
+ "allowed_protocols": [
312
+ "https",
313
+ "mtls"
314
+ ]
315
+ }
316
+ }
317
+
318
+ import json
319
+ with open(test_config, 'w', encoding='utf-8') as f:
320
+ json.dump(test_config_content, f, indent=2)
321
+ self.print_success(f"Created test configuration: {test_config}")
322
+
323
+ self.print_info("Running mTLS proxy registration test...")
324
+ self.print_info("This test verifies:")
325
+ self.print_info(" - mTLS server startup with client certificate verification")
326
+ self.print_info(" - Proxy registration functionality")
327
+ self.print_info(" - SSL configuration validation")
328
+
329
+ # Run the test
330
+ cmd = [sys.executable, "test_proxy_registration.py"]
331
+ result = subprocess.run(
332
+ cmd, capture_output=True, text=True, cwd=self.working_dir
333
+ )
334
+
335
+ if result.returncode == 0:
336
+ self.print_success("mTLS proxy registration test completed successfully!")
337
+ if result.stdout:
338
+ print("Test output:")
339
+ print(result.stdout)
340
+ return True
341
+ else:
342
+ self.print_error("mTLS proxy registration test failed!")
343
+ if result.stdout:
344
+ print("Test output:")
345
+ print(result.stdout)
346
+ if result.stderr:
347
+ print("Error output:")
348
+ print(result.stderr)
349
+ return False
350
+
351
+ except Exception as e:
352
+ self.print_error(f"Failed to run mTLS registration test: {e}")
353
+ return False
354
+
238
355
  def cleanup(self):
239
356
  """Clean up temporary files and processes."""
240
357
  self.print_info("Cleaning up...")
@@ -305,6 +422,10 @@ class FullTestSuiteRunner:
305
422
  if not self.run_security_tests():
306
423
  return False
307
424
 
425
+ # Step 6: mTLS proxy registration testing
426
+ if not self.run_mtls_registration_test():
427
+ return False
428
+
308
429
  # All steps completed successfully
309
430
  print(f"\n{'='*60}")
310
431
  print("🎉 FULL TEST SUITE COMPLETED SUCCESSFULLY!")
@@ -315,6 +436,7 @@ class FullTestSuiteRunner:
315
436
  print("✅ Certificates generated")
316
437
  print("✅ Configurations generated")
317
438
  print("✅ Security tests passed")
439
+ print("✅ mTLS proxy registration test passed")
318
440
  print(f"\n📁 Test artifacts created in: {self.working_dir}")
319
441
  print(f"📁 Configurations: {self.configs_dir}")
320
442
  print(f"📁 Certificates: {self.certs_dir}")
@@ -420,7 +420,8 @@ import asyncio
420
420
  import ssl
421
421
  from fastapi import FastAPI, Request
422
422
  from fastapi.responses import JSONResponse
423
- import uvicorn
423
+ from hypercorn.asyncio import serve
424
+ from hypercorn.config import Config
424
425
 
425
426
 
426
427
  app = FastAPI(title="Test mTLS Proxy Server", version="1.0.0")
@@ -472,7 +473,7 @@ async def health_check():
472
473
  )
473
474
 
474
475
 
475
- def main():
476
+ async def main():
476
477
  """Run the mTLS proxy server."""
477
478
  print("🚀 Starting Test mTLS Proxy Server...")
478
479
  print("📡 Server URL: https://127.0.0.1:3004")
@@ -482,19 +483,19 @@ def main():
482
483
  print(" GET /health - Health check")
483
484
  print("⚡ Press Ctrl+C to stop\\n")
484
485
 
486
+ # Configure hypercorn
487
+ config = Config()
488
+ config.bind = ["127.0.0.1:3004"]
489
+ config.keyfile = "mtls_certificates/server/mcp-proxy.key"
490
+ config.certfile = "mtls_certificates/server/mcp-proxy.pem"
491
+ config.loglevel = "info"
492
+
485
493
  # Run server with mTLS
486
- uvicorn.run(
487
- app,
488
- host="127.0.0.1",
489
- port=3004,
490
- ssl_keyfile="mtls_certificates/server/mcp-proxy.key",
491
- ssl_certfile="mtls_certificates/server/mcp-proxy.pem",
492
- log_level="info"
493
- )
494
+ await serve(app, config)
494
495
 
495
496
 
496
497
  if __name__ == "__main__":
497
- main()
498
+ asyncio.run(main())
498
499
  '''
499
500
  )
500
501
 
@@ -2,4 +2,4 @@
2
2
  Version information for MCP Proxy Adapter.
3
3
  """
4
4
 
5
- __version__ = "6.4.10"
5
+ __version__ = "6.4.11"
@@ -0,0 +1,156 @@
1
+ Metadata-Version: 2.4
2
+ Name: mcp-proxy-adapter
3
+ Version: 6.4.11
4
+ Summary: Powerful JSON-RPC microservices framework with built-in security, authentication, and proxy registration
5
+ Home-page: https://github.com/maverikod/mcp-proxy-adapter
6
+ Author: Vasiliy Zdanovskiy
7
+ Author-email: Vasiliy Zdanovskiy <vasilyvz@gmail.com>
8
+ Maintainer: Vasiliy Zdanovskiy
9
+ Maintainer-email: Vasiliy Zdanovskiy <vasilyvz@gmail.com>
10
+ License: MIT
11
+ Project-URL: Homepage, https://github.com/maverikod/mcp-proxy-adapter
12
+ Project-URL: Documentation, https://github.com/maverikod/mcp-proxy-adapter#readme
13
+ Project-URL: Source, https://github.com/maverikod/mcp-proxy-adapter
14
+ Project-URL: Tracker, https://github.com/maverikod/mcp-proxy-adapter/issues
15
+ Project-URL: PyPI, https://pypi.org/project/mcp-proxy-adapter/
16
+ Keywords: json-rpc,microservices,fastapi,security,authentication,authorization,proxy,mcp,mtls,ssl,rest,api
17
+ Classifier: Development Status :: 4 - Beta
18
+ Classifier: Intended Audience :: Developers
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.9
22
+ Classifier: Programming Language :: Python :: 3.10
23
+ Classifier: Programming Language :: Python :: 3.11
24
+ Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Framework :: FastAPI
26
+ Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
27
+ Classifier: Topic :: Security
28
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
+ Requires-Python: >=3.9
30
+ Description-Content-Type: text/markdown
31
+ Requires-Dist: fastapi<1.0.0,>=0.95.0
32
+ Requires-Dist: pydantic>=2.0.0
33
+ Requires-Dist: hypercorn<1.0.0,>=0.15.0
34
+ Requires-Dist: docstring-parser<1.0.0,>=0.15
35
+ Requires-Dist: typing-extensions<5.0.0,>=4.5.0
36
+ Requires-Dist: jsonrpc>=1.2.0
37
+ Requires-Dist: psutil>=5.9.0
38
+ Requires-Dist: mcp_security_framework>=1.1.2
39
+ Requires-Dist: packaging>=20.0
40
+ Requires-Dist: aiohttp<4.0.0,>=3.8.0
41
+ Requires-Dist: requests<3.0.0,>=2.28.0
42
+ Provides-Extra: dev
43
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
44
+ Requires-Dist: pytest-asyncio>=0.20.0; extra == "dev"
45
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
46
+ Requires-Dist: black>=23.0.0; extra == "dev"
47
+ Requires-Dist: isort>=5.12.0; extra == "dev"
48
+ Provides-Extra: test
49
+ Requires-Dist: pytest>=7.0.0; extra == "test"
50
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
51
+ Requires-Dist: pytest-cov>=4.0.0; extra == "test"
52
+ Requires-Dist: httpx>=0.24.0; extra == "test"
53
+ Requires-Dist: pytest-mock>=3.10.0; extra == "test"
54
+ Provides-Extra: examples
55
+ Dynamic: author
56
+ Dynamic: home-page
57
+ Dynamic: maintainer
58
+ Dynamic: requires-python
59
+
60
+ # MCP Proxy Adapter
61
+
62
+ **Author:** Vasiliy Zdanovskiy
63
+ **Email:** vasilyvz@gmail.com
64
+
65
+ ## Overview
66
+
67
+ MCP Proxy Adapter is a comprehensive framework for building JSON-RPC API servers with built-in security, SSL/TLS support, and proxy registration capabilities. It provides a unified interface for command execution, protocol management, and security enforcement.
68
+
69
+ ## Features
70
+
71
+ - **JSON-RPC API**: Full JSON-RPC 2.0 support with built-in commands
72
+ - **Security Framework**: Integrated authentication, authorization, and SSL/TLS
73
+ - **Protocol Management**: HTTP, HTTPS, and mTLS protocol support
74
+ - **Proxy Registration**: Automatic registration with proxy servers
75
+ - **Command System**: Extensible command registry with built-in commands
76
+ - **Configuration Management**: Comprehensive configuration with environment variable overrides
77
+
78
+ ## Quick Start
79
+
80
+ 1. **Installation**:
81
+ ```bash
82
+ pip install mcp-proxy-adapter
83
+ ```
84
+
85
+ 2. **Basic Configuration**:
86
+ ```bash
87
+ # Use the comprehensive config with all options disabled by default
88
+ python -m mcp_proxy_adapter --config config.json
89
+ ```
90
+
91
+ 3. **Access the API**:
92
+ - Health check: `GET http://localhost:8000/health`
93
+ - JSON-RPC: `POST http://localhost:8000/api/jsonrpc`
94
+ - REST API: `POST http://localhost:8000/cmd`
95
+ - Documentation: `http://localhost:8000/docs`
96
+
97
+ ## Configuration
98
+
99
+ The adapter uses a comprehensive JSON configuration file (`config.json`) that includes all available options with sensible defaults. All features are disabled by default and can be enabled as needed:
100
+
101
+ - **Server settings**: Host, port, debug mode
102
+ - **Security**: Authentication methods, SSL/TLS, permissions
103
+ - **Protocols**: HTTP/HTTPS/mTLS configuration
104
+ - **Proxy registration**: Automatic server registration
105
+ - **Logging**: Comprehensive logging configuration
106
+ - **Commands**: Built-in and custom command management
107
+
108
+ See `docs/EN/configuration.md` for complete configuration documentation.
109
+
110
+ ## Built-in Commands
111
+
112
+ - `health` - Server health check
113
+ - `echo` - Echo test command
114
+ - `config` - Configuration management
115
+ - `help` - Command help and documentation
116
+ - `reload` - Configuration reload
117
+ - `settings` - Settings management
118
+ - `load`/`unload` - Command loading/unloading
119
+ - `plugins` - Plugin management
120
+ - `proxy_registration` - Proxy registration control
121
+ - `transport_management` - Transport protocol management
122
+ - `role_test` - Role-based access testing
123
+
124
+ ## Security Features
125
+
126
+ - **Authentication**: API keys, JWT tokens, certificate-based auth
127
+ - **Authorization**: Role-based permissions with wildcard support
128
+ - **SSL/TLS**: Full SSL/TLS and mTLS support
129
+ - **Rate Limiting**: Configurable request rate limiting
130
+ - **Security Headers**: Automatic security header injection
131
+
132
+ ## Examples
133
+
134
+ The `mcp_proxy_adapter/examples/` directory contains comprehensive examples for different use cases:
135
+
136
+ - **Basic Framework**: Simple HTTP server setup
137
+ - **Full Application**: Complete application with custom commands and hooks
138
+ - **Security Testing**: Comprehensive security test suite
139
+ - **Certificate Generation**: SSL/TLS certificate management
140
+
141
+ ## Development
142
+
143
+ The project follows a modular architecture:
144
+
145
+ - `mcp_proxy_adapter/api/` - FastAPI application and handlers
146
+ - `mcp_proxy_adapter/commands/` - Command system and built-in commands
147
+ - `mcp_proxy_adapter/core/` - Core functionality and utilities
148
+ - `mcp_proxy_adapter/config.py` - Configuration management
149
+
150
+ ## License
151
+
152
+ This project is licensed under the MIT License.
153
+
154
+ ## Support
155
+
156
+ For issues and questions, please contact vasilyvz@gmail.com.
@@ -4,7 +4,7 @@ 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=E7a9EvvIi7nGCXD9YGIYsXph3lwb-FpkErVADQecO9s,75
7
+ mcp_proxy_adapter/version.py,sha256=QSqFIalgBU1t8DL-yxneIQ7zVK8-re5PzA9QaBZSRjw,75
8
8
  mcp_proxy_adapter/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  mcp_proxy_adapter/api/app.py,sha256=UQ7_m-LbUzKuuPJPxS_69ahANUQ5rnPwoddQ2MMXNkg,33941
10
10
  mcp_proxy_adapter/api/handlers.py,sha256=iyFGoEuUS1wxbV1ELA0zmaxIyQR7j4zw-4MrD-uIO6E,8294
@@ -89,24 +89,21 @@ mcp_proxy_adapter/examples/demo_client.py,sha256=en2Rtb70B1sQmhL-vdQ4PDpKNNl_mfl
89
89
  mcp_proxy_adapter/examples/generate_all_certificates.py,sha256=lLP5RKmJwpSyprvrxQXFt_xcN4aiUzlIxk5WVdXx2Fk,19024
90
90
  mcp_proxy_adapter/examples/generate_certificates.py,sha256=VRJnT9Za2Wk_oKRT5g2SA7qcGeBSxZm9wPMOM5i50T0,6707
91
91
  mcp_proxy_adapter/examples/generate_certificates_and_tokens.py,sha256=hUCoJH3fy5WeR_YMHj-_W0mR0ZKUWqewH4FVN3yWyrM,17972
92
- mcp_proxy_adapter/examples/generate_comprehensive_config.py,sha256=2UyTGIUKxw3EdCFaOMwO1vB-OZjOQV0senU44JPuyH0,4787
93
92
  mcp_proxy_adapter/examples/generate_test_configs.py,sha256=FWg_QFJAWinI1lw05RccX4_VbhsCBEKPpZA6I9v6KAs,14379
94
93
  mcp_proxy_adapter/examples/proxy_registration_example.py,sha256=vemRhftnjbiOBCJkmtDGqlWQ8syTG0a8755GCOnaQsg,12503
95
94
  mcp_proxy_adapter/examples/run_example.py,sha256=yp-a6HIrSk3ddQmbn0KkuKwErId0aNfj028TE6U-zmY,2626
96
- mcp_proxy_adapter/examples/run_full_test_suite.py,sha256=bR25OOrmWnLQccZno9cZhi_Ltk_6k8DFR2vXPCj1XQ4,12468
95
+ mcp_proxy_adapter/examples/run_full_test_suite.py,sha256=5tdmTKcgfUMfl_ZTaY0xBly3sTXXTjJJcpja_LN7V-0,17685
97
96
  mcp_proxy_adapter/examples/run_proxy_server.py,sha256=SBLSSY2F_VEBQD3MsCE_Pa9xFE6Sszr3vHdE9QOEN4Y,5242
98
97
  mcp_proxy_adapter/examples/run_security_tests.py,sha256=0vjaUdWC-rLyviQuNxM3PtfiU9TzSRuxGxWMehrFA_w,23311
99
98
  mcp_proxy_adapter/examples/run_security_tests_fixed.py,sha256=2BKMT0_-FhmcZA73hdQOt2XR7Cgb9Sq8qBI88BkwAAA,10934
100
99
  mcp_proxy_adapter/examples/security_test_client.py,sha256=K5gEVat1SJS2pBVxqLl5c9-uiiG12k8UT3ULQDXZ2Uc,35713
101
- mcp_proxy_adapter/examples/setup_test_environment.py,sha256=LR4kGneHELgk4lHMfA9k1yFZ1o3KEQelqOXua5oT88Q,34540
100
+ mcp_proxy_adapter/examples/setup_test_environment.py,sha256=4aYYwtEsUhjLWXTY5l_xklspJYdL3LYA3tD98SxTAdg,34658
102
101
  mcp_proxy_adapter/examples/test_config.py,sha256=ekEoUZe9q484vU_0IxOVhQdNMVJXG3IpmQpP--VmuDI,6491
103
102
  mcp_proxy_adapter/examples/test_config_generator.py,sha256=PBXk1V_awJ-iBlbE66Pme5sQwu6CJDxkmqgm8uPtM58,4091
104
103
  mcp_proxy_adapter/examples/test_examples.py,sha256=CYlVatdHUVC_rwv4NsvxFG3GXiKIyxPDUH43BOJHjrU,12330
105
- mcp_proxy_adapter/examples/test_mcp_adapter.py,sha256=hwxWwIiXXvyZuLrYB0SiKURRwqCXEmPGfl0mWIfvvz8,7830
106
104
  mcp_proxy_adapter/examples/universal_client.py,sha256=n1-cBPOiCipA86Zcc_mI_jMywDMZS1p3u5JT3AqTsrQ,27577
107
105
  mcp_proxy_adapter/examples/basic_framework/__init__.py,sha256=4aYD--R6hy9n9CUxj7Osb9HcdVUMJ6_cfpu4ujkbCwI,345
108
106
  mcp_proxy_adapter/examples/basic_framework/main.py,sha256=AkGUXW05_AK8SEKwlS_0isJKKqjulKBDPp7t36t9QJk,1787
109
- mcp_proxy_adapter/examples/basic_framework/roles.json,sha256=I0lSP3hfq1DESv3xsZ7-xOEdzaQGCb8b9YMK_AOPDsE,510
110
107
  mcp_proxy_adapter/examples/basic_framework/commands/__init__.py,sha256=_VQNLUEdsxUG-4yt9BZI_vtOxHAdGG0OUSsP6Wj-Vz4,76
111
108
  mcp_proxy_adapter/examples/basic_framework/hooks/__init__.py,sha256=IE_EIXMnkdXuakZn7wLD9kBFyfDF5lYi56ejgiBeb-A,70
112
109
  mcp_proxy_adapter/examples/commands/__init__.py,sha256=zvY_OpH_B1bVc_khrNIl6O8vqCw1FH6gGMAsJAkGWGY,170
@@ -126,7 +123,6 @@ mcp_proxy_adapter/examples/examples/full_application/hooks/builtin_command_hooks
126
123
  mcp_proxy_adapter/examples/full_application/__init__.py,sha256=xGiPYhRAzs1Fh9wA8HoowV-Gg9QMLaMZn-OamExq1TI,320
127
124
  mcp_proxy_adapter/examples/full_application/main.py,sha256=ogL3Bil_5puGnwvMh3YNOjrW76FIzzoggKEp-04HSfo,7855
128
125
  mcp_proxy_adapter/examples/full_application/proxy_endpoints.py,sha256=Kt_WAsG61HLTMkKQ1mQqjvlX9I4TcfwYq0NaRR9HKvM,6179
129
- mcp_proxy_adapter/examples/full_application/roles.json,sha256=I0lSP3hfq1DESv3xsZ7-xOEdzaQGCb8b9YMK_AOPDsE,510
130
126
  mcp_proxy_adapter/examples/full_application/commands/__init__.py,sha256=yQHxVSFkAyFLUOdk42QOebUODPlQV9IbydPgF3UKsGM,217
131
127
  mcp_proxy_adapter/examples/full_application/commands/custom_echo_command.py,sha256=H7FPJmVJNWT61rPWxep06-7hsYRt8XYBUSBiwqpBurU,3096
132
128
  mcp_proxy_adapter/examples/full_application/commands/dynamic_calculator_command.py,sha256=DFTqVnIDt6nBdZ27-vD_f1X2cFcDInVQiCEq9ltw4lA,3428
@@ -136,12 +132,8 @@ mcp_proxy_adapter/examples/full_application/hooks/builtin_command_hooks.py,sha25
136
132
  mcp_proxy_adapter/examples/scripts/config_generator.py,sha256=SKFlRRCE_pEHGbfjDuzfKpvV2DMwG6lRfK90uJwRlJM,33410
137
133
  mcp_proxy_adapter/examples/scripts/create_certificates_simple.py,sha256=yCWdUIhMSDPwoPhuLR9rhPdf7jLN5hCjzNfYYgVyHnw,27769
138
134
  mcp_proxy_adapter/examples/scripts/generate_certificates_and_tokens.py,sha256=hUCoJH3fy5WeR_YMHj-_W0mR0ZKUWqewH4FVN3yWyrM,17972
139
- mcp_proxy_adapter/schemas/base_schema.json,sha256=v9G9cGMd4dRhCZsOQ_FMqOi5VFyVbI6Cf3fyIvOT9dc,2881
140
- mcp_proxy_adapter/schemas/openapi_schema.json,sha256=C3yLkwmDsvnLW9B5gnKKdBGl4zxkeU-rEmjTrNVsQU0,8405
141
- mcp_proxy_adapter/utils/config_generator.py,sha256=UXxuxxAyKTesAS3DOofQ26e20v771inA7EfBV8PZD1c,47543
142
- mcp_proxy_adapter_issue_package/demonstrate_issue.py,sha256=O54fwWQvUAjEGiHhQGm1JLnARkhVCwAqjBk_89HyRbY,7894
143
- mcp_proxy_adapter-6.4.10.dist-info/METADATA,sha256=s52yRyw2Hy5bjEvEa_pQl9cYooORmxbXBPU4CEOmllA,22404
144
- mcp_proxy_adapter-6.4.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
145
- mcp_proxy_adapter-6.4.10.dist-info/entry_points.txt,sha256=J3eV6ID0lt_VSp4lIdIgBFTqLCThgObNNxRCbyfiMHw,70
146
- mcp_proxy_adapter-6.4.10.dist-info/top_level.txt,sha256=CHk-Mc-AxjO-tRheegA2qLiQnU4vZRnxuTF81So6SAc,50
147
- mcp_proxy_adapter-6.4.10.dist-info/RECORD,,
135
+ mcp_proxy_adapter-6.4.11.dist-info/METADATA,sha256=wMmu8wxnHQ5yesrOKSu-Aapi8J4xmOnvC5AfTvGQYV8,6087
136
+ mcp_proxy_adapter-6.4.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
137
+ mcp_proxy_adapter-6.4.11.dist-info/entry_points.txt,sha256=J3eV6ID0lt_VSp4lIdIgBFTqLCThgObNNxRCbyfiMHw,70
138
+ mcp_proxy_adapter-6.4.11.dist-info/top_level.txt,sha256=JZT7vPLBYrtroX-ij68JBhJYbjDdghcV-DFySRy-Nnw,18
139
+ mcp_proxy_adapter-6.4.11.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ mcp_proxy_adapter
@@ -1,21 +0,0 @@
1
- {
2
- "roles": {
3
- "admin": {
4
- "permissions": ["*"],
5
- "description": "Administrator with full access"
6
- },
7
- "user": {
8
- "permissions": ["read", "write"],
9
- "description": "Regular user with read/write access"
10
- },
11
- "readonly": {
12
- "permissions": ["read"],
13
- "description": "Read-only user"
14
- }
15
- },
16
- "user_roles": {
17
- "admin": "admin",
18
- "user": "user",
19
- "readonly": "readonly"
20
- }
21
- }
@@ -1,21 +0,0 @@
1
- {
2
- "roles": {
3
- "admin": {
4
- "permissions": ["*"],
5
- "description": "Administrator with full access"
6
- },
7
- "user": {
8
- "permissions": ["read", "write"],
9
- "description": "Regular user with read/write access"
10
- },
11
- "readonly": {
12
- "permissions": ["read"],
13
- "description": "Read-only user"
14
- }
15
- },
16
- "user_roles": {
17
- "admin": "admin",
18
- "user": "user",
19
- "readonly": "readonly"
20
- }
21
- }
@@ -1,177 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Author: Vasiliy Zdanovskiy
4
- email: vasilyvz@gmail.com
5
- Script for generating comprehensive HTTP configuration for MCP Proxy Adapter.
6
- Generates single comprehensive configuration with all features enabled.
7
- """
8
- import json
9
- import os
10
- import argparse
11
- import uuid
12
- from typing import Dict, Any
13
-
14
-
15
- def generate_comprehensive_http_config(
16
- port: int = 20001,
17
- roles_file: str = "configs/roles.json",
18
- ) -> Dict[str, Any]:
19
- """Generate comprehensive HTTP configuration with all features."""
20
- return {
21
- "uuid": str(uuid.uuid4()),
22
- "server": {
23
- "host": "127.0.0.1",
24
- "port": port,
25
- "debug": False,
26
- "log_level": "INFO",
27
- "workers": 1,
28
- "reload": False
29
- },
30
- "ssl": {
31
- "enabled": False
32
- },
33
- "security": {
34
- "enabled": True,
35
- "auth": {
36
- "enabled": True,
37
- "methods": [
38
- "api_key"
39
- ],
40
- "api_keys": {
41
- "admin-token-123": "admin",
42
- "user-token-456": "user",
43
- "readonly-token-789": "readonly",
44
- "guest-token-abc": "guest",
45
- "proxy-token-def": "proxy"
46
- }
47
- },
48
- "permissions": {
49
- "enabled": True,
50
- "roles_file": roles_file
51
- }
52
- },
53
- "registration": {
54
- "enabled": True,
55
- "url": "http://127.0.0.1:3004/proxy",
56
- "name": "comprehensive_http_adapter",
57
- "capabilities": [
58
- "http",
59
- "token_auth",
60
- "roles",
61
- "registration",
62
- "heartbeat"
63
- ],
64
- "retry_count": 3,
65
- "retry_delay": 5,
66
- "heartbeat": {
67
- "enabled": True,
68
- "interval": 30
69
- }
70
- },
71
- "protocols": {
72
- "enabled": True,
73
- "allowed_protocols": [
74
- "http"
75
- ]
76
- }
77
- }
78
-
79
-
80
- def generate_roles_config() -> Dict[str, Any]:
81
- """Generate comprehensive roles configuration."""
82
- return {
83
- "admin": {
84
- "description": "Full administrative access",
85
- "permissions": [
86
- "read",
87
- "write",
88
- "execute",
89
- "delete",
90
- "admin"
91
- ],
92
- "inherits": []
93
- },
94
- "user": {
95
- "description": "Standard user access",
96
- "permissions": [
97
- "read",
98
- "write",
99
- "execute"
100
- ],
101
- "inherits": []
102
- },
103
- "readonly": {
104
- "description": "Read-only access",
105
- "permissions": [
106
- "read"
107
- ],
108
- "inherits": []
109
- },
110
- "guest": {
111
- "description": "Limited guest access",
112
- "permissions": [
113
- "read"
114
- ],
115
- "inherits": []
116
- },
117
- "proxy": {
118
- "description": "Proxy registration access",
119
- "permissions": [
120
- "read",
121
- "register",
122
- "heartbeat"
123
- ],
124
- "inherits": []
125
- }
126
- }
127
-
128
-
129
- def main():
130
- """Generate comprehensive configuration."""
131
- parser = argparse.ArgumentParser(description="Generate comprehensive HTTP configuration")
132
- parser.add_argument(
133
- "--output-dir",
134
- default="configs",
135
- help="Output directory for configuration files"
136
- )
137
- parser.add_argument(
138
- "--port",
139
- type=int,
140
- default=20001,
141
- help="Server port"
142
- )
143
-
144
- args = parser.parse_args()
145
-
146
- # Create output directory
147
- os.makedirs(args.output_dir, exist_ok=True)
148
-
149
- # Generate comprehensive HTTP configuration
150
- config = generate_comprehensive_http_config(port=args.port)
151
- config_file = os.path.join(args.output_dir, "comprehensive_http.json")
152
-
153
- with open(config_file, 'w') as f:
154
- json.dump(config, f, indent=2)
155
-
156
- print(f"Generated: {config_file}")
157
-
158
- # Generate roles configuration
159
- roles = generate_roles_config()
160
- roles_file = os.path.join(args.output_dir, "roles.json")
161
-
162
- with open(roles_file, 'w') as f:
163
- json.dump(roles, f, indent=2)
164
-
165
- print(f"Generated: {roles_file}")
166
-
167
- print(f"\nGenerated comprehensive configuration in {args.output_dir}/")
168
- print("Configuration includes:")
169
- print("- HTTP server with token authentication")
170
- print("- Role-based permissions")
171
- print("- Proxy registration")
172
- print("- Heartbeat monitoring")
173
- print("- 5 predefined tokens with roles")
174
-
175
-
176
- if __name__ == "__main__":
177
- main()