Chunk #497

Aus: Tools (Index: 4)

240 Tokens
Synced Status
« Vorheriger (#3)

Taxonomie

Kategorie Tools
Pfad Tools > MCP-DB Tools > Implementierung (SRP)
Heading-Pfad Tools > MCP-DB Tools > Implementierung (SRP)

Entities

Name Typ
register_select_tool SERVICE
FastMCP TECHNOLOGY
ProtokollLogger SERVICE
QueryValidator CONCEPT
QueryRequest CONCEPT
SelectExecutor SERVICE
QueryResponse SERVICE
QueryStatus CONFIG
Config CONFIG
LogEntry CONCEPT

Keywords

single responsibility principle database selection query validation log entry execution time

Inhalt

Die Tools folgen dem Single Responsibility Principle:

def register_select_tool(mcp: FastMCP):
    logger = ProtokollLogger()

    @mcp.tool()
    def db_select(query, database, max_rows, params) -> dict:
        # 1. Validierung (SRP: QueryValidator)
        valid, error = QueryValidator.validate_query(query, database, max_rows)
        if not valid:
            logger.log(LogEntry(request=query[:200], status="denied", error_message=error))
            return QueryResponse(status=QueryStatus.DENIED, error=error).to_dict()

        # 2. Request erstellen
        request = QueryRequest(
            query=query,
            params=tuple(params) if params else None,
            database=database,
            max_rows=min(max_rows, Config.MAX_ROWS)
        )

        # 3. Ausführung (SRP: SelectExecutor)
        response = SelectExecutor.execute(request)

        # 4. Logging (SRP: ProtokollLogger)
        logger.log(LogEntry(
            request=query[:200],
            status=response.status.value,
            duration_ms=int(response.execution_ms),
            error_message=response.error
        ))

        return response.to_dict()

Clean Content

Die Tools folgen dem Single Responsibility Principle:

```
`def register_select_tool(mcp: FastMCP):
 logger = ProtokollLogger()

 @mcp.tool()
 def db_select(query, database, max_rows, params) -> dict:
 # 1. Validierung (SRP: QueryValidator)
 valid, error = QueryValidator.validate_query(query, database, max_rows)
 if not valid:
 logger.log(LogEntry(request=query[:200], status="denied", error_message=error))
 return QueryResponse(status=QueryStatus.DENIED, error=error).to_dict()

 # 2. Request erstellen
 request = QueryRequest(
 query=query,
 params=tuple(params) if params else None,
 database=database,
 max_rows=min(max_rows, Config.MAX_ROWS)
 )

 # 3. Ausführung (SRP: SelectExecutor)
 response = SelectExecutor.execute(request)

 # 4. Logging (SRP: ProtokollLogger)
 logger.log(LogEntry(
 request=query[:200],
 status=response.status.value,
 duration_ms=int(response.execution_ms),
 error_message=response.error
 ))

 return response.to_dict()`
```

Metadaten

Analysiert am20.12.2025 12:41:11
Analyse-Modellgemma3:4b-it-qat
Embedding-Modellmxbai-embed-large
Qdrant-ID8003ad78-605f-4019-b172-3dfd6eb9c8d8
Erstellt20.12.2025 12:34:42
Aktualisiert20.12.2025 12:53:38