Chunk #497
Aus: Tools (Index: 4)
240
Tokens
Synced
Status
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
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 am | 20.12.2025 12:41:11 |
|---|---|
| Analyse-Modell | gemma3:4b-it-qat |
| Embedding-Modell | mxbai-embed-large |
| Qdrant-ID | 8003ad78-605f-4019-b172-3dfd6eb9c8d8 |
| Erstellt | 20.12.2025 12:34:42 |
| Aktualisiert | 20.12.2025 12:53:38 |