mcp-security-framework 0.1.0__tar.gz

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 (81) hide show
  1. mcp_security_framework-0.1.0/PKG-INFO +411 -0
  2. mcp_security_framework-0.1.0/README.md +349 -0
  3. mcp_security_framework-0.1.0/mcp_security_framework/__init__.py +96 -0
  4. mcp_security_framework-0.1.0/mcp_security_framework/cli/__init__.py +18 -0
  5. mcp_security_framework-0.1.0/mcp_security_framework/cli/cert_cli.py +511 -0
  6. mcp_security_framework-0.1.0/mcp_security_framework/cli/security_cli.py +791 -0
  7. mcp_security_framework-0.1.0/mcp_security_framework/constants.py +209 -0
  8. mcp_security_framework-0.1.0/mcp_security_framework/core/__init__.py +61 -0
  9. mcp_security_framework-0.1.0/mcp_security_framework/core/auth_manager.py +1011 -0
  10. mcp_security_framework-0.1.0/mcp_security_framework/core/cert_manager.py +1663 -0
  11. mcp_security_framework-0.1.0/mcp_security_framework/core/permission_manager.py +735 -0
  12. mcp_security_framework-0.1.0/mcp_security_framework/core/rate_limiter.py +602 -0
  13. mcp_security_framework-0.1.0/mcp_security_framework/core/security_manager.py +943 -0
  14. mcp_security_framework-0.1.0/mcp_security_framework/core/ssl_manager.py +735 -0
  15. mcp_security_framework-0.1.0/mcp_security_framework/examples/__init__.py +75 -0
  16. mcp_security_framework-0.1.0/mcp_security_framework/examples/django_example.py +615 -0
  17. mcp_security_framework-0.1.0/mcp_security_framework/examples/fastapi_example.py +472 -0
  18. mcp_security_framework-0.1.0/mcp_security_framework/examples/flask_example.py +506 -0
  19. mcp_security_framework-0.1.0/mcp_security_framework/examples/gateway_example.py +803 -0
  20. mcp_security_framework-0.1.0/mcp_security_framework/examples/microservice_example.py +690 -0
  21. mcp_security_framework-0.1.0/mcp_security_framework/examples/standalone_example.py +576 -0
  22. mcp_security_framework-0.1.0/mcp_security_framework/middleware/__init__.py +250 -0
  23. mcp_security_framework-0.1.0/mcp_security_framework/middleware/auth_middleware.py +292 -0
  24. mcp_security_framework-0.1.0/mcp_security_framework/middleware/fastapi_auth_middleware.py +447 -0
  25. mcp_security_framework-0.1.0/mcp_security_framework/middleware/fastapi_middleware.py +757 -0
  26. mcp_security_framework-0.1.0/mcp_security_framework/middleware/flask_auth_middleware.py +465 -0
  27. mcp_security_framework-0.1.0/mcp_security_framework/middleware/flask_middleware.py +591 -0
  28. mcp_security_framework-0.1.0/mcp_security_framework/middleware/mtls_middleware.py +439 -0
  29. mcp_security_framework-0.1.0/mcp_security_framework/middleware/rate_limit_middleware.py +403 -0
  30. mcp_security_framework-0.1.0/mcp_security_framework/middleware/security_middleware.py +507 -0
  31. mcp_security_framework-0.1.0/mcp_security_framework/schemas/__init__.py +109 -0
  32. mcp_security_framework-0.1.0/mcp_security_framework/schemas/config.py +694 -0
  33. mcp_security_framework-0.1.0/mcp_security_framework/schemas/models.py +709 -0
  34. mcp_security_framework-0.1.0/mcp_security_framework/schemas/responses.py +686 -0
  35. mcp_security_framework-0.1.0/mcp_security_framework/tests/__init__.py +0 -0
  36. mcp_security_framework-0.1.0/mcp_security_framework/utils/__init__.py +121 -0
  37. mcp_security_framework-0.1.0/mcp_security_framework/utils/cert_utils.py +525 -0
  38. mcp_security_framework-0.1.0/mcp_security_framework/utils/crypto_utils.py +475 -0
  39. mcp_security_framework-0.1.0/mcp_security_framework/utils/validation_utils.py +571 -0
  40. mcp_security_framework-0.1.0/mcp_security_framework.egg-info/PKG-INFO +411 -0
  41. mcp_security_framework-0.1.0/mcp_security_framework.egg-info/SOURCES.txt +79 -0
  42. mcp_security_framework-0.1.0/mcp_security_framework.egg-info/dependency_links.txt +1 -0
  43. mcp_security_framework-0.1.0/mcp_security_framework.egg-info/entry_points.txt +3 -0
  44. mcp_security_framework-0.1.0/mcp_security_framework.egg-info/requires.txt +39 -0
  45. mcp_security_framework-0.1.0/mcp_security_framework.egg-info/top_level.txt +8 -0
  46. mcp_security_framework-0.1.0/pyproject.toml +214 -0
  47. mcp_security_framework-0.1.0/setup.cfg +4 -0
  48. mcp_security_framework-0.1.0/tests/__init__.py +0 -0
  49. mcp_security_framework-0.1.0/tests/test_cli/__init__.py +0 -0
  50. mcp_security_framework-0.1.0/tests/test_cli/test_cert_cli.py +379 -0
  51. mcp_security_framework-0.1.0/tests/test_cli/test_security_cli.py +657 -0
  52. mcp_security_framework-0.1.0/tests/test_core/__init__.py +0 -0
  53. mcp_security_framework-0.1.0/tests/test_core/test_auth_manager.py +582 -0
  54. mcp_security_framework-0.1.0/tests/test_core/test_cert_manager.py +795 -0
  55. mcp_security_framework-0.1.0/tests/test_core/test_permission_manager.py +395 -0
  56. mcp_security_framework-0.1.0/tests/test_core/test_rate_limiter.py +626 -0
  57. mcp_security_framework-0.1.0/tests/test_core/test_security_manager.py +841 -0
  58. mcp_security_framework-0.1.0/tests/test_core/test_ssl_manager.py +532 -0
  59. mcp_security_framework-0.1.0/tests/test_examples/__init__.py +8 -0
  60. mcp_security_framework-0.1.0/tests/test_examples/test_fastapi_example.py +264 -0
  61. mcp_security_framework-0.1.0/tests/test_examples/test_flask_example.py +238 -0
  62. mcp_security_framework-0.1.0/tests/test_examples/test_standalone_example.py +292 -0
  63. mcp_security_framework-0.1.0/tests/test_integration/__init__.py +0 -0
  64. mcp_security_framework-0.1.0/tests/test_integration/test_auth_flow.py +502 -0
  65. mcp_security_framework-0.1.0/tests/test_integration/test_certificate_flow.py +527 -0
  66. mcp_security_framework-0.1.0/tests/test_integration/test_fastapi_integration.py +341 -0
  67. mcp_security_framework-0.1.0/tests/test_integration/test_flask_integration.py +398 -0
  68. mcp_security_framework-0.1.0/tests/test_integration/test_standalone_integration.py +493 -0
  69. mcp_security_framework-0.1.0/tests/test_middleware/__init__.py +0 -0
  70. mcp_security_framework-0.1.0/tests/test_middleware/test_fastapi_middleware.py +523 -0
  71. mcp_security_framework-0.1.0/tests/test_middleware/test_flask_middleware.py +582 -0
  72. mcp_security_framework-0.1.0/tests/test_middleware/test_security_middleware.py +493 -0
  73. mcp_security_framework-0.1.0/tests/test_schemas/__init__.py +0 -0
  74. mcp_security_framework-0.1.0/tests/test_schemas/test_config.py +811 -0
  75. mcp_security_framework-0.1.0/tests/test_schemas/test_models.py +879 -0
  76. mcp_security_framework-0.1.0/tests/test_schemas/test_responses.py +1054 -0
  77. mcp_security_framework-0.1.0/tests/test_schemas/test_serialization.py +493 -0
  78. mcp_security_framework-0.1.0/tests/test_utils/__init__.py +0 -0
  79. mcp_security_framework-0.1.0/tests/test_utils/test_cert_utils.py +510 -0
  80. mcp_security_framework-0.1.0/tests/test_utils/test_crypto_utils.py +603 -0
  81. mcp_security_framework-0.1.0/tests/test_utils/test_validation_utils.py +477 -0
@@ -0,0 +1,411 @@
1
+ Metadata-Version: 2.4
2
+ Name: mcp-security-framework
3
+ Version: 0.1.0
4
+ Summary: Universal security framework for microservices with SSL/TLS, authentication, authorization, and rate limiting
5
+ Author-email: Vasiliy Zdanovskiy <vasilyvz@gmail.com>
6
+ Maintainer-email: Vasiliy Zdanovskiy <vasilyvz@gmail.com>
7
+ License: MIT
8
+ Project-URL: Homepage, https://github.com/maverikod/mcp-security-framework
9
+ Project-URL: Documentation, https://mcp-security-framework.readthedocs.io/
10
+ Project-URL: Repository, https://github.com/maverikod/mcp-security-framework
11
+ Project-URL: Bug Tracker, https://github.com/maverikod/mcp-security-framework/issues
12
+ Project-URL: Security Policy, https://github.com/maverikod/mcp-security-framework/security/policy
13
+ Keywords: security,authentication,authorization,ssl,tls,microservices,fastapi,flask
14
+ Classifier: Development Status :: 3 - Alpha
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.8
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Topic :: Security
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Classifier: Topic :: System :: Systems Administration :: Authentication/Directory
27
+ Requires-Python: >=3.8
28
+ Description-Content-Type: text/markdown
29
+ Requires-Dist: cryptography>=3.4.0
30
+ Requires-Dist: pydantic<3.0.0,>=1.8.0
31
+ Requires-Dist: PyJWT>=2.0.0
32
+ Requires-Dist: click>=8.0.0
33
+ Requires-Dist: typing-extensions>=4.0.0
34
+ Provides-Extra: fastapi
35
+ Requires-Dist: fastapi>=0.68.0; extra == "fastapi"
36
+ Requires-Dist: uvicorn[standard]>=0.15.0; extra == "fastapi"
37
+ Provides-Extra: flask
38
+ Requires-Dist: flask>=2.0.0; extra == "flask"
39
+ Requires-Dist: werkzeug>=2.0.0; extra == "flask"
40
+ Provides-Extra: django
41
+ Requires-Dist: django>=3.2.0; extra == "django"
42
+ Provides-Extra: dev
43
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
44
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
45
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
46
+ Requires-Dist: black>=22.0.0; extra == "dev"
47
+ Requires-Dist: isort>=5.10.0; extra == "dev"
48
+ Requires-Dist: flake8>=5.0.0; extra == "dev"
49
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
50
+ Requires-Dist: pre-commit>=2.20.0; extra == "dev"
51
+ Requires-Dist: tox>=4.0.0; extra == "dev"
52
+ Provides-Extra: docs
53
+ Requires-Dist: sphinx>=5.0.0; extra == "docs"
54
+ Requires-Dist: sphinx-rtd-theme>=1.0.0; extra == "docs"
55
+ Requires-Dist: myst-parser>=0.18.0; extra == "docs"
56
+ Provides-Extra: test
57
+ Requires-Dist: pytest>=7.0.0; extra == "test"
58
+ Requires-Dist: pytest-cov>=4.0.0; extra == "test"
59
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
60
+ Requires-Dist: pytest-mock>=3.8.0; extra == "test"
61
+ Requires-Dist: httpx>=0.24.0; extra == "test"
62
+
63
+ # MCP Security Framework
64
+
65
+ [![PyPI version](https://badge.fury.io/py/mcp-security-framework.svg)](https://badge.fury.io/py/mcp-security-framework)
66
+ [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
67
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
68
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
69
+ [![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://pycqa.github.io/isort/)
70
+
71
+ Universal security framework for microservices with SSL/TLS, authentication, authorization, and rate limiting.
72
+
73
+ ## Features
74
+
75
+ - 🔐 **Multi-method Authentication**: API keys, JWT tokens, X.509 certificates
76
+ - 🛡️ **SSL/TLS Management**: Server and client certificate handling
77
+ - 🔑 **Role-based Authorization**: Flexible permission system with role hierarchy
78
+ - ⚡ **Rate Limiting**: Configurable request rate limiting
79
+ - 🚀 **Framework Agnostic**: Works with FastAPI, Flask, Django, and standalone
80
+ - 🛠️ **CLI Tools**: Certificate management and security testing
81
+ - 📊 **Comprehensive Logging**: Security event logging and monitoring
82
+
83
+ ## Quick Start
84
+
85
+ ### Installation
86
+
87
+ ```bash
88
+ # Basic installation
89
+ pip install mcp-security-framework
90
+
91
+ # With framework support
92
+ pip install mcp-security-framework[fastapi]
93
+ pip install mcp-security-framework[flask]
94
+ pip install mcp-security-framework[django]
95
+
96
+ # Development installation
97
+ pip install mcp-security-framework[dev]
98
+ ```
99
+
100
+ ### Basic Usage
101
+
102
+ ```python
103
+ from mcp_security_framework import SecurityManager, SecurityConfig
104
+ from mcp_security_framework.schemas.config import AuthConfig, PermissionConfig
105
+
106
+ # Create configuration
107
+ config = SecurityConfig(
108
+ auth=AuthConfig(
109
+ enabled=True,
110
+ methods=["api_key"],
111
+ api_keys={"admin": "admin_key_123"}
112
+ ),
113
+ permissions=PermissionConfig(roles_file="roles.json")
114
+ )
115
+
116
+ # Create security manager
117
+ security_manager = SecurityManager(config)
118
+
119
+ # Validate request
120
+ result = security_manager.validate_request({
121
+ "api_key": "admin_key_123",
122
+ "required_permissions": ["read", "write"]
123
+ })
124
+
125
+ if result.is_valid:
126
+ print("Access granted!")
127
+ else:
128
+ print(f"Access denied: {result.error_message}")
129
+ ```
130
+
131
+ ### FastAPI Integration
132
+
133
+ ```python
134
+ from fastapi import FastAPI
135
+ from mcp_security_framework import create_fastapi_security_middleware, SecurityConfig
136
+
137
+ # Configuration
138
+ config = SecurityConfig(
139
+ auth=AuthConfig(
140
+ enabled=True,
141
+ methods=["api_key", "jwt"],
142
+ api_keys={"user": "user_key_456"}
143
+ ),
144
+ permissions=PermissionConfig(roles_file="roles.json")
145
+ )
146
+
147
+ # Create FastAPI app
148
+ app = FastAPI()
149
+
150
+ # Add security middleware
151
+ security_middleware = create_fastapi_security_middleware(config)
152
+ app.add_middleware(security_middleware)
153
+
154
+ @app.get("/secure")
155
+ async def secure_endpoint():
156
+ return {"message": "Access granted"}
157
+
158
+ @app.get("/public")
159
+ async def public_endpoint():
160
+ return {"message": "Public access"}
161
+ ```
162
+
163
+ ### Flask Integration
164
+
165
+ ```python
166
+ from flask import Flask
167
+ from mcp_security_framework import create_flask_security_middleware, SecurityConfig
168
+
169
+ # Configuration
170
+ config = SecurityConfig(
171
+ auth=AuthConfig(
172
+ enabled=True,
173
+ methods=["api_key"]
174
+ ),
175
+ permissions=PermissionConfig(roles_file="roles.json")
176
+ )
177
+
178
+ # Create Flask app
179
+ app = Flask(__name__)
180
+
181
+ # Add security middleware
182
+ security_middleware = create_flask_security_middleware(config)
183
+ app.wsgi_app = security_middleware(app.wsgi_app)
184
+
185
+ @app.route("/secure")
186
+ def secure_endpoint():
187
+ return {"message": "Access granted"}
188
+ ```
189
+
190
+ ## CLI Tools
191
+
192
+ ### Certificate Management
193
+
194
+ ```bash
195
+ # Create root CA
196
+ mcp-cert create-ca --ca-name "My Root CA" --output-dir ./certs
197
+
198
+ # Create client certificate
199
+ mcp-cert create-client-cert --name "client1" --roles "user,admin" --permissions "read,write"
200
+
201
+ # Create server certificate
202
+ mcp-cert create-server-cert --name "api-server" --domains "api.example.com"
203
+ ```
204
+
205
+ ### Security Testing
206
+
207
+ ```bash
208
+ # Validate configuration
209
+ mcp-security validate-config --config-file security_config.json
210
+
211
+ # Test authentication
212
+ mcp-security test-auth --config-file security_config.json --api-key "test_key"
213
+ ```
214
+
215
+ ## Configuration
216
+
217
+ ### Basic Configuration File
218
+
219
+ ```json
220
+ {
221
+ "ssl": {
222
+ "enabled": true,
223
+ "cert_file": "server.crt",
224
+ "key_file": "server.key",
225
+ "ca_cert_file": "ca.crt",
226
+ "verify_mode": "CERT_REQUIRED",
227
+ "min_version": "TLSv1.2"
228
+ },
229
+ "auth": {
230
+ "enabled": true,
231
+ "methods": ["api_key", "jwt", "certificate"],
232
+ "api_keys": {
233
+ "admin": "admin_key_123",
234
+ "user": "user_key_456"
235
+ },
236
+ "jwt_secret": "your_jwt_secret_key",
237
+ "jwt_expiry_hours": 24,
238
+ "public_paths": ["/docs", "/health"]
239
+ },
240
+ "certificates": {
241
+ "ca_dir": "./certs",
242
+ "roles_oid": "1.3.6.1.4.1.99999.1.1",
243
+ "permissions_oid": "1.3.6.1.4.1.99999.1.2",
244
+ "verify_certificates": true,
245
+ "check_revocation": true
246
+ },
247
+ "permissions": {
248
+ "roles_file": "roles.json",
249
+ "deny_by_default": true,
250
+ "case_sensitive": false,
251
+ "allow_wildcard": true
252
+ },
253
+ "rate_limit": {
254
+ "enabled": true,
255
+ "rate_limit": 100,
256
+ "time_window": 60,
257
+ "by_ip": true,
258
+ "by_user": true
259
+ }
260
+ }
261
+ ```
262
+
263
+ ### Roles and Permissions
264
+
265
+ ```json
266
+ {
267
+ "roles": {
268
+ "admin": {
269
+ "name": "admin",
270
+ "description": "Administrator role",
271
+ "permissions": ["read", "write", "delete", "admin"],
272
+ "priority": 100
273
+ },
274
+ "user": {
275
+ "name": "user",
276
+ "description": "Regular user role",
277
+ "permissions": ["read", "write"],
278
+ "priority": 50
279
+ },
280
+ "guest": {
281
+ "name": "guest",
282
+ "description": "Guest role",
283
+ "permissions": ["read"],
284
+ "priority": 10
285
+ }
286
+ },
287
+ "role_hierarchy": {
288
+ "roles": {
289
+ "admin": ["user"],
290
+ "user": ["guest"]
291
+ }
292
+ },
293
+ "default_policy": {
294
+ "deny_by_default": true,
295
+ "require_role_match": true,
296
+ "case_sensitive": false,
297
+ "allow_wildcard": true
298
+ }
299
+ }
300
+ ```
301
+
302
+ ## Documentation
303
+
304
+ - [Installation Guide](docs/installation.md)
305
+ - [Configuration Reference](docs/configuration.md)
306
+ - [API Reference](docs/api_reference.md)
307
+ - [Examples](docs/examples/)
308
+ - [FastAPI Integration](docs/examples/fastapi_integration.md)
309
+ - [Flask Integration](docs/examples/flask_integration.md)
310
+ - [Standalone Usage](docs/examples/standalone_usage.md)
311
+ - [Security Guide](docs/security/)
312
+ - [SSL/TLS Setup](docs/security/ssl_tls.md)
313
+ - [Authentication Methods](docs/security/authentication.md)
314
+ - [Authorization and Roles](docs/security/authorization.md)
315
+ - [Certificate Management](docs/security/certificates.md)
316
+ - [Troubleshooting](docs/troubleshooting.md)
317
+
318
+ ## Development
319
+
320
+ ### Setup Development Environment
321
+
322
+ ```bash
323
+ # Clone repository
324
+ git clone https://github.com/mcp-security/mcp-security-framework.git
325
+ cd mcp-security-framework
326
+
327
+ # Create virtual environment
328
+ python -m venv .venv
329
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
330
+
331
+ # Install development dependencies
332
+ pip install -e ".[dev]"
333
+
334
+ # Install pre-commit hooks
335
+ pre-commit install
336
+ ```
337
+
338
+ ### Running Tests
339
+
340
+ ```bash
341
+ # Run all tests
342
+ pytest
343
+
344
+ # Run with coverage
345
+ pytest --cov=mcp_security_framework --cov-report=html
346
+
347
+ # Run specific test categories
348
+ pytest -m unit
349
+ pytest -m integration
350
+ pytest -m "not slow"
351
+ ```
352
+
353
+ ### Code Quality
354
+
355
+ ```bash
356
+ # Format code
357
+ black src tests
358
+ isort src tests
359
+
360
+ # Lint code
361
+ flake8 src tests
362
+ mypy src
363
+
364
+ # Run all quality checks
365
+ tox
366
+ ```
367
+
368
+ ### Building Documentation
369
+
370
+ ```bash
371
+ # Install documentation dependencies
372
+ pip install -e ".[docs]"
373
+
374
+ # Build documentation
375
+ sphinx-build -b html docs docs/_build/html
376
+ ```
377
+
378
+ ## Contributing
379
+
380
+ We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
381
+
382
+ ### Development Workflow
383
+
384
+ 1. Fork the repository
385
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
386
+ 3. Make your changes
387
+ 4. Add tests for new functionality
388
+ 5. Ensure all tests pass (`pytest`)
389
+ 6. Format and lint your code (`black`, `isort`, `flake8`, `mypy`)
390
+ 7. Commit your changes (`git commit -m 'Add amazing feature'`)
391
+ 8. Push to the branch (`git push origin feature/amazing-feature`)
392
+ 9. Open a Pull Request
393
+
394
+ ## Security
395
+
396
+ If you discover a security vulnerability, please report it to us at security@mcp.example.com.
397
+
398
+ ## License
399
+
400
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
401
+
402
+ ## Support
403
+
404
+ - 📖 [Documentation](https://mcp-security-framework.readthedocs.io/)
405
+ - 🐛 [Issue Tracker](https://github.com/mcp-security/mcp-security-framework/issues)
406
+ - 💬 [Discussions](https://github.com/mcp-security/mcp-security-framework/discussions)
407
+ - 📧 [Email Support](mailto:support@mcp.example.com)
408
+
409
+ ## Changelog
410
+
411
+ See [CHANGELOG.md](CHANGELOG.md) for a list of changes and version history.