mcp-security-framework


Namemcp-security-framework JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryUniversal security framework for microservices with SSL/TLS, authentication, authorization, and rate limiting
upload_time2025-08-19 11:50:20
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords security authentication authorization ssl tls microservices fastapi flask
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # MCP Security Framework

[![PyPI version](https://badge.fury.io/py/mcp-security-framework.svg)](https://badge.fury.io/py/mcp-security-framework)
[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://pycqa.github.io/isort/)

Universal security framework for microservices with SSL/TLS, authentication, authorization, and rate limiting.

## Features

- 🔐 **Multi-method Authentication**: API keys, JWT tokens, X.509 certificates
- 🛡️ **SSL/TLS Management**: Server and client certificate handling
- 🔑 **Role-based Authorization**: Flexible permission system with role hierarchy
- ⚡ **Rate Limiting**: Configurable request rate limiting
- 🚀 **Framework Agnostic**: Works with FastAPI, Flask, Django, and standalone
- 🛠️ **CLI Tools**: Certificate management and security testing
- 📊 **Comprehensive Logging**: Security event logging and monitoring

## Quick Start

### Installation

```bash
# Basic installation
pip install mcp-security-framework

# With framework support
pip install mcp-security-framework[fastapi]
pip install mcp-security-framework[flask]
pip install mcp-security-framework[django]

# Development installation
pip install mcp-security-framework[dev]
```

### Basic Usage

```python
from mcp_security_framework import SecurityManager, SecurityConfig
from mcp_security_framework.schemas.config import AuthConfig, PermissionConfig

# Create configuration
config = SecurityConfig(
    auth=AuthConfig(
        enabled=True,
        methods=["api_key"],
        api_keys={"admin": "admin_key_123"}
    ),
    permissions=PermissionConfig(roles_file="roles.json")
)

# Create security manager
security_manager = SecurityManager(config)

# Validate request
result = security_manager.validate_request({
    "api_key": "admin_key_123",
    "required_permissions": ["read", "write"]
})

if result.is_valid:
    print("Access granted!")
else:
    print(f"Access denied: {result.error_message}")
```

### FastAPI Integration

```python
from fastapi import FastAPI
from mcp_security_framework import create_fastapi_security_middleware, SecurityConfig

# Configuration
config = SecurityConfig(
    auth=AuthConfig(
        enabled=True,
        methods=["api_key", "jwt"],
        api_keys={"user": "user_key_456"}
    ),
    permissions=PermissionConfig(roles_file="roles.json")
)

# Create FastAPI app
app = FastAPI()

# Add security middleware
security_middleware = create_fastapi_security_middleware(config)
app.add_middleware(security_middleware)

@app.get("/secure")
async def secure_endpoint():
    return {"message": "Access granted"}

@app.get("/public")
async def public_endpoint():
    return {"message": "Public access"}
```

### Flask Integration

```python
from flask import Flask
from mcp_security_framework import create_flask_security_middleware, SecurityConfig

# Configuration
config = SecurityConfig(
    auth=AuthConfig(
        enabled=True,
        methods=["api_key"]
    ),
    permissions=PermissionConfig(roles_file="roles.json")
)

# Create Flask app
app = Flask(__name__)

# Add security middleware
security_middleware = create_flask_security_middleware(config)
app.wsgi_app = security_middleware(app.wsgi_app)

@app.route("/secure")
def secure_endpoint():
    return {"message": "Access granted"}
```

## CLI Tools

### Certificate Management

```bash
# Create root CA
mcp-cert create-ca --ca-name "My Root CA" --output-dir ./certs

# Create client certificate
mcp-cert create-client-cert --name "client1" --roles "user,admin" --permissions "read,write"

# Create server certificate
mcp-cert create-server-cert --name "api-server" --domains "api.example.com"
```

### Security Testing

```bash
# Validate configuration
mcp-security validate-config --config-file security_config.json

# Test authentication
mcp-security test-auth --config-file security_config.json --api-key "test_key"
```

## Configuration

### Basic Configuration File

```json
{
  "ssl": {
    "enabled": true,
    "cert_file": "server.crt",
    "key_file": "server.key",
    "ca_cert_file": "ca.crt",
    "verify_mode": "CERT_REQUIRED",
    "min_version": "TLSv1.2"
  },
  "auth": {
    "enabled": true,
    "methods": ["api_key", "jwt", "certificate"],
    "api_keys": {
      "admin": "admin_key_123",
      "user": "user_key_456"
    },
    "jwt_secret": "your_jwt_secret_key",
    "jwt_expiry_hours": 24,
    "public_paths": ["/docs", "/health"]
  },
  "certificates": {
    "ca_dir": "./certs",
    "roles_oid": "1.3.6.1.4.1.99999.1.1",
    "permissions_oid": "1.3.6.1.4.1.99999.1.2",
    "verify_certificates": true,
    "check_revocation": true
  },
  "permissions": {
    "roles_file": "roles.json",
    "deny_by_default": true,
    "case_sensitive": false,
    "allow_wildcard": true
  },
  "rate_limit": {
    "enabled": true,
    "rate_limit": 100,
    "time_window": 60,
    "by_ip": true,
    "by_user": true
  }
}
```

### Roles and Permissions

```json
{
  "roles": {
    "admin": {
      "name": "admin",
      "description": "Administrator role",
      "permissions": ["read", "write", "delete", "admin"],
      "priority": 100
    },
    "user": {
      "name": "user",
      "description": "Regular user role",
      "permissions": ["read", "write"],
      "priority": 50
    },
    "guest": {
      "name": "guest",
      "description": "Guest role",
      "permissions": ["read"],
      "priority": 10
    }
  },
  "role_hierarchy": {
    "roles": {
      "admin": ["user"],
      "user": ["guest"]
    }
  },
  "default_policy": {
    "deny_by_default": true,
    "require_role_match": true,
    "case_sensitive": false,
    "allow_wildcard": true
  }
}
```

## Documentation

- [Installation Guide](docs/installation.md)
- [Configuration Reference](docs/configuration.md)
- [API Reference](docs/api_reference.md)
- [Examples](docs/examples/)
  - [FastAPI Integration](docs/examples/fastapi_integration.md)
  - [Flask Integration](docs/examples/flask_integration.md)
  - [Standalone Usage](docs/examples/standalone_usage.md)
- [Security Guide](docs/security/)
  - [SSL/TLS Setup](docs/security/ssl_tls.md)
  - [Authentication Methods](docs/security/authentication.md)
  - [Authorization and Roles](docs/security/authorization.md)
  - [Certificate Management](docs/security/certificates.md)
- [Troubleshooting](docs/troubleshooting.md)

## Development

### Setup Development Environment

```bash
# Clone repository
git clone https://github.com/mcp-security/mcp-security-framework.git
cd mcp-security-framework

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install development dependencies
pip install -e ".[dev]"

# Install pre-commit hooks
pre-commit install
```

### Running Tests

```bash
# Run all tests
pytest

# Run with coverage
pytest --cov=mcp_security_framework --cov-report=html

# Run specific test categories
pytest -m unit
pytest -m integration
pytest -m "not slow"
```

### Code Quality

```bash
# Format code
black src tests
isort src tests

# Lint code
flake8 src tests
mypy src

# Run all quality checks
tox
```

### Building Documentation

```bash
# Install documentation dependencies
pip install -e ".[docs]"

# Build documentation
sphinx-build -b html docs docs/_build/html
```

## Contributing

We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.

### Development Workflow

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Add tests for new functionality
5. Ensure all tests pass (`pytest`)
6. Format and lint your code (`black`, `isort`, `flake8`, `mypy`)
7. Commit your changes (`git commit -m 'Add amazing feature'`)
8. Push to the branch (`git push origin feature/amazing-feature`)
9. Open a Pull Request

## Security

If you discover a security vulnerability, please report it to us at security@mcp.example.com.

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Support

- 📖 [Documentation](https://mcp-security-framework.readthedocs.io/)
- 🐛 [Issue Tracker](https://github.com/mcp-security/mcp-security-framework/issues)
- 💬 [Discussions](https://github.com/mcp-security/mcp-security-framework/discussions)
- 📧 [Email Support](mailto:support@mcp.example.com)

## Changelog

See [CHANGELOG.md](CHANGELOG.md) for a list of changes and version history.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "mcp-security-framework",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Vasiliy Zdanovskiy <vasilyvz@gmail.com>",
    "keywords": "security, authentication, authorization, ssl, tls, microservices, fastapi, flask",
    "author": null,
    "author_email": "Vasiliy Zdanovskiy <vasilyvz@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/26/98/3d32851d19c286d2eb0309ca7e1c3cfd933df0c1d83b84f138b81b88ab82/mcp_security_framework-0.1.0.tar.gz",
    "platform": null,
    "description": "# MCP Security Framework\n\n[![PyPI version](https://badge.fury.io/py/mcp-security-framework.svg)](https://badge.fury.io/py/mcp-security-framework)\n[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://pycqa.github.io/isort/)\n\nUniversal security framework for microservices with SSL/TLS, authentication, authorization, and rate limiting.\n\n## Features\n\n- \ud83d\udd10 **Multi-method Authentication**: API keys, JWT tokens, X.509 certificates\n- \ud83d\udee1\ufe0f **SSL/TLS Management**: Server and client certificate handling\n- \ud83d\udd11 **Role-based Authorization**: Flexible permission system with role hierarchy\n- \u26a1 **Rate Limiting**: Configurable request rate limiting\n- \ud83d\ude80 **Framework Agnostic**: Works with FastAPI, Flask, Django, and standalone\n- \ud83d\udee0\ufe0f **CLI Tools**: Certificate management and security testing\n- \ud83d\udcca **Comprehensive Logging**: Security event logging and monitoring\n\n## Quick Start\n\n### Installation\n\n```bash\n# Basic installation\npip install mcp-security-framework\n\n# With framework support\npip install mcp-security-framework[fastapi]\npip install mcp-security-framework[flask]\npip install mcp-security-framework[django]\n\n# Development installation\npip install mcp-security-framework[dev]\n```\n\n### Basic Usage\n\n```python\nfrom mcp_security_framework import SecurityManager, SecurityConfig\nfrom mcp_security_framework.schemas.config import AuthConfig, PermissionConfig\n\n# Create configuration\nconfig = SecurityConfig(\n    auth=AuthConfig(\n        enabled=True,\n        methods=[\"api_key\"],\n        api_keys={\"admin\": \"admin_key_123\"}\n    ),\n    permissions=PermissionConfig(roles_file=\"roles.json\")\n)\n\n# Create security manager\nsecurity_manager = SecurityManager(config)\n\n# Validate request\nresult = security_manager.validate_request({\n    \"api_key\": \"admin_key_123\",\n    \"required_permissions\": [\"read\", \"write\"]\n})\n\nif result.is_valid:\n    print(\"Access granted!\")\nelse:\n    print(f\"Access denied: {result.error_message}\")\n```\n\n### FastAPI Integration\n\n```python\nfrom fastapi import FastAPI\nfrom mcp_security_framework import create_fastapi_security_middleware, SecurityConfig\n\n# Configuration\nconfig = SecurityConfig(\n    auth=AuthConfig(\n        enabled=True,\n        methods=[\"api_key\", \"jwt\"],\n        api_keys={\"user\": \"user_key_456\"}\n    ),\n    permissions=PermissionConfig(roles_file=\"roles.json\")\n)\n\n# Create FastAPI app\napp = FastAPI()\n\n# Add security middleware\nsecurity_middleware = create_fastapi_security_middleware(config)\napp.add_middleware(security_middleware)\n\n@app.get(\"/secure\")\nasync def secure_endpoint():\n    return {\"message\": \"Access granted\"}\n\n@app.get(\"/public\")\nasync def public_endpoint():\n    return {\"message\": \"Public access\"}\n```\n\n### Flask Integration\n\n```python\nfrom flask import Flask\nfrom mcp_security_framework import create_flask_security_middleware, SecurityConfig\n\n# Configuration\nconfig = SecurityConfig(\n    auth=AuthConfig(\n        enabled=True,\n        methods=[\"api_key\"]\n    ),\n    permissions=PermissionConfig(roles_file=\"roles.json\")\n)\n\n# Create Flask app\napp = Flask(__name__)\n\n# Add security middleware\nsecurity_middleware = create_flask_security_middleware(config)\napp.wsgi_app = security_middleware(app.wsgi_app)\n\n@app.route(\"/secure\")\ndef secure_endpoint():\n    return {\"message\": \"Access granted\"}\n```\n\n## CLI Tools\n\n### Certificate Management\n\n```bash\n# Create root CA\nmcp-cert create-ca --ca-name \"My Root CA\" --output-dir ./certs\n\n# Create client certificate\nmcp-cert create-client-cert --name \"client1\" --roles \"user,admin\" --permissions \"read,write\"\n\n# Create server certificate\nmcp-cert create-server-cert --name \"api-server\" --domains \"api.example.com\"\n```\n\n### Security Testing\n\n```bash\n# Validate configuration\nmcp-security validate-config --config-file security_config.json\n\n# Test authentication\nmcp-security test-auth --config-file security_config.json --api-key \"test_key\"\n```\n\n## Configuration\n\n### Basic Configuration File\n\n```json\n{\n  \"ssl\": {\n    \"enabled\": true,\n    \"cert_file\": \"server.crt\",\n    \"key_file\": \"server.key\",\n    \"ca_cert_file\": \"ca.crt\",\n    \"verify_mode\": \"CERT_REQUIRED\",\n    \"min_version\": \"TLSv1.2\"\n  },\n  \"auth\": {\n    \"enabled\": true,\n    \"methods\": [\"api_key\", \"jwt\", \"certificate\"],\n    \"api_keys\": {\n      \"admin\": \"admin_key_123\",\n      \"user\": \"user_key_456\"\n    },\n    \"jwt_secret\": \"your_jwt_secret_key\",\n    \"jwt_expiry_hours\": 24,\n    \"public_paths\": [\"/docs\", \"/health\"]\n  },\n  \"certificates\": {\n    \"ca_dir\": \"./certs\",\n    \"roles_oid\": \"1.3.6.1.4.1.99999.1.1\",\n    \"permissions_oid\": \"1.3.6.1.4.1.99999.1.2\",\n    \"verify_certificates\": true,\n    \"check_revocation\": true\n  },\n  \"permissions\": {\n    \"roles_file\": \"roles.json\",\n    \"deny_by_default\": true,\n    \"case_sensitive\": false,\n    \"allow_wildcard\": true\n  },\n  \"rate_limit\": {\n    \"enabled\": true,\n    \"rate_limit\": 100,\n    \"time_window\": 60,\n    \"by_ip\": true,\n    \"by_user\": true\n  }\n}\n```\n\n### Roles and Permissions\n\n```json\n{\n  \"roles\": {\n    \"admin\": {\n      \"name\": \"admin\",\n      \"description\": \"Administrator role\",\n      \"permissions\": [\"read\", \"write\", \"delete\", \"admin\"],\n      \"priority\": 100\n    },\n    \"user\": {\n      \"name\": \"user\",\n      \"description\": \"Regular user role\",\n      \"permissions\": [\"read\", \"write\"],\n      \"priority\": 50\n    },\n    \"guest\": {\n      \"name\": \"guest\",\n      \"description\": \"Guest role\",\n      \"permissions\": [\"read\"],\n      \"priority\": 10\n    }\n  },\n  \"role_hierarchy\": {\n    \"roles\": {\n      \"admin\": [\"user\"],\n      \"user\": [\"guest\"]\n    }\n  },\n  \"default_policy\": {\n    \"deny_by_default\": true,\n    \"require_role_match\": true,\n    \"case_sensitive\": false,\n    \"allow_wildcard\": true\n  }\n}\n```\n\n## Documentation\n\n- [Installation Guide](docs/installation.md)\n- [Configuration Reference](docs/configuration.md)\n- [API Reference](docs/api_reference.md)\n- [Examples](docs/examples/)\n  - [FastAPI Integration](docs/examples/fastapi_integration.md)\n  - [Flask Integration](docs/examples/flask_integration.md)\n  - [Standalone Usage](docs/examples/standalone_usage.md)\n- [Security Guide](docs/security/)\n  - [SSL/TLS Setup](docs/security/ssl_tls.md)\n  - [Authentication Methods](docs/security/authentication.md)\n  - [Authorization and Roles](docs/security/authorization.md)\n  - [Certificate Management](docs/security/certificates.md)\n- [Troubleshooting](docs/troubleshooting.md)\n\n## Development\n\n### Setup Development Environment\n\n```bash\n# Clone repository\ngit clone https://github.com/mcp-security/mcp-security-framework.git\ncd mcp-security-framework\n\n# Create virtual environment\npython -m venv .venv\nsource .venv/bin/activate  # On Windows: .venv\\Scripts\\activate\n\n# Install development dependencies\npip install -e \".[dev]\"\n\n# Install pre-commit hooks\npre-commit install\n```\n\n### Running Tests\n\n```bash\n# Run all tests\npytest\n\n# Run with coverage\npytest --cov=mcp_security_framework --cov-report=html\n\n# Run specific test categories\npytest -m unit\npytest -m integration\npytest -m \"not slow\"\n```\n\n### Code Quality\n\n```bash\n# Format code\nblack src tests\nisort src tests\n\n# Lint code\nflake8 src tests\nmypy src\n\n# Run all quality checks\ntox\n```\n\n### Building Documentation\n\n```bash\n# Install documentation dependencies\npip install -e \".[docs]\"\n\n# Build documentation\nsphinx-build -b html docs docs/_build/html\n```\n\n## Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### Development Workflow\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Make your changes\n4. Add tests for new functionality\n5. Ensure all tests pass (`pytest`)\n6. Format and lint your code (`black`, `isort`, `flake8`, `mypy`)\n7. Commit your changes (`git commit -m 'Add amazing feature'`)\n8. Push to the branch (`git push origin feature/amazing-feature`)\n9. Open a Pull Request\n\n## Security\n\nIf you discover a security vulnerability, please report it to us at security@mcp.example.com.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\n- \ud83d\udcd6 [Documentation](https://mcp-security-framework.readthedocs.io/)\n- \ud83d\udc1b [Issue Tracker](https://github.com/mcp-security/mcp-security-framework/issues)\n- \ud83d\udcac [Discussions](https://github.com/mcp-security/mcp-security-framework/discussions)\n- \ud83d\udce7 [Email Support](mailto:support@mcp.example.com)\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for a list of changes and version history.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Universal security framework for microservices with SSL/TLS, authentication, authorization, and rate limiting",
    "version": "0.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/maverikod/mcp-security-framework/issues",
        "Documentation": "https://mcp-security-framework.readthedocs.io/",
        "Homepage": "https://github.com/maverikod/mcp-security-framework",
        "Repository": "https://github.com/maverikod/mcp-security-framework",
        "Security Policy": "https://github.com/maverikod/mcp-security-framework/security/policy"
    },
    "split_keywords": [
        "security",
        " authentication",
        " authorization",
        " ssl",
        " tls",
        " microservices",
        " fastapi",
        " flask"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "12ad32d12a9e1a359dd7f82597f294a2359a6bd6287142b138dfaf390e244cc3",
                "md5": "88722ce2a59eb52a8755cf81dfe11893",
                "sha256": "1b7a9f6207e2e3a88e9d2b91cc79b0f5f498519ce7fae7608116255009a6b075"
            },
            "downloads": -1,
            "filename": "mcp_security_framework-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "88722ce2a59eb52a8755cf81dfe11893",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 238752,
            "upload_time": "2025-08-19T11:50:18",
            "upload_time_iso_8601": "2025-08-19T11:50:18.522980Z",
            "url": "https://files.pythonhosted.org/packages/12/ad/32d12a9e1a359dd7f82597f294a2359a6bd6287142b138dfaf390e244cc3/mcp_security_framework-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "26983d32851d19c286d2eb0309ca7e1c3cfd933df0c1d83b84f138b81b88ab82",
                "md5": "7ee3f9fa4d08c1dad382749ceb4b8c8a",
                "sha256": "a612238571aec4fcca91cfb60638244c33fd4f0808f0c731cbbdcf8f5c731d23"
            },
            "downloads": -1,
            "filename": "mcp_security_framework-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "7ee3f9fa4d08c1dad382749ceb4b8c8a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 181695,
            "upload_time": "2025-08-19T11:50:20",
            "upload_time_iso_8601": "2025-08-19T11:50:20.491963Z",
            "url": "https://files.pythonhosted.org/packages/26/98/3d32851d19c286d2eb0309ca7e1c3cfd933df0c1d83b84f138b81b88ab82/mcp_security_framework-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-19 11:50:20",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "maverikod",
    "github_project": "mcp-security-framework",
    "github_not_found": true,
    "lcname": "mcp-security-framework"
}
        
Elapsed time: 1.88569s