Regeln, python-mcp
25 Regeln in /var/www/code/python-mcp/rules.yaml.
| ID | Titel | Severity |
|---|---|---|
| PYMCP_001_OFFICIAL_SDK_REQUIRED | Offizielles mcp-SDK ist Pflicht | must |
| PYMCP_002_STDIO_DEFAULT_TRANSPORT | stdio ist Default-Transport | must |
| PYMCP_003_STDOUT_RESERVED_FOR_JSONRPC | stdout ist ausschliesslich fuer JSON-RPC reserviert | must |
| PYMCP_004_LOGGING_TO_STDERR_BEFORE_DEPS | logging-Konfiguration zwingend auf stderr und vor Dependencies | must |
| PYMCP_005_WRAPPER_UNBUFFERED | Wrapper-Script erzwingt Unbuffered I/O | must |
| PYMCP_006_TOOL_SIGNATURE_DISCIPLINE | Tool-Funktion: Name, Docstring, vollstaendige Type-Hints | must |
| PYMCP_007_LITERAL_FOR_ENUM_PARAMETERS | Literal[...] fuer Enum-Parameter | must |
| PYMCP_008_BOUNDS_FOR_NUMERIC_PARAMETERS | Numerische Parameter mit Annotated[int|float, Field(ge=, le=)] | must |
| PYMCP_009_TYPED_DICT_RETURN | TypedDict-Returns statt blankes dict oder Any | must |
| PYMCP_010_LAYERED_ARCHITECTURE | DDD/Hexagonal-Schichten: domain, application, infrastructure, presentation | must |
| PYMCP_011_DOMAIN_FRAMEWORK_FREE | Domain bleibt frameworkfrei | must |
| PYMCP_012_APPLICATION_USES_PORTS | Application kennt nur Ports (typing.Protocol) | must |
| PYMCP_013_INFRASTRUCTURE_IS_IO_BOUNDARY | Infrastructure ist die einzige I/O-Heimat | must |
| PYMCP_014_MAXLOC_HARD_LIMITS | MaxLOC-Hartgrenzen pro Schicht | must |
| PYMCP_015_NO_FRAMEWORK_AS_MCP_DRIVER | Kein Application-Framework als MCP-Treiber | must |
| PYMCP_016_NO_MODULE_LEVEL_SINGLETONS | Keine Module-Level-Singletons ausserhalb der Composition | must |
| PYMCP_017_SECRETS_FROM_FILES_OR_ENV | Secrets aus _credentials/ oder ENV, niemals im Code | must |
| PYMCP_018_SANDBOX_TOOL_INPUTS | Tool-Inputs werden gesandboxt | must |
| PYMCP_019_ERROR_MAPPING_AND_TRACEBACK_HYGIENE | Domain-Errors gemappt; Tracebacks bleiben aus der Tool-Antwort | must |
| PYMCP_020_NO_RAW_BACKEND_BODY_IN_TOOL_ERROR | Kein roher Backend-Body in der Tool-Antwort | must |
| PYMCP_021_HTTP_RETRIES_AND_LIFECYCLE | HTTP-Retries, atexit close, request-id propagation | must |
| PYMCP_022_BACKEND_IS_VALIDATION_SOURCE_OF_TRUTH | Backend ist die einzige Validierungsstelle (DRY) | must |
| PYMCP_023_PYPROJECT_AND_LOCKFILE | pyproject.toml + Lockfile sind Pflicht | must |
| PYMCP_024_TESTS_THREE_LAYERS | Tests: Use-Case-Unit + Schema-Drift + E2E (gated) | must |
| PYMCP_025_HEALTH_SUBCOMMAND | --health Subcommand fuer Monitoring | should |