Skip to content

Commit 01d6f70

Browse files
committed
Minor changes - exception handling in admin_add_server
Signed-off-by: Satya <[email protected]>
1 parent 90959f0 commit 01d6f70

File tree

3 files changed

+8
-10
lines changed

3 files changed

+8
-10
lines changed

mcpgateway/admin.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -435,12 +435,6 @@ async def admin_add_server(request: Request, db: Session = Depends(get_db), user
435435
except CoreValidationError as ex:
436436
return JSONResponse(content={"message": str(ex), "success": False}, status_code=422)
437437

438-
except ValidationError as ex:
439-
return JSONResponse(content={"message": str(ex), "success": False}, status_code=422)
440-
441-
except IntegrityError as ex:
442-
logger.error(f"Database error: {ex}")
443-
return JSONResponse(content={"message": f"Server already exists with name: {server.name}", "success": False}, status_code=409)
444438
except Exception as ex:
445439
if isinstance(ex, ServerError):
446440
# Custom server logic error — 500 Internal Server Error makes sense
@@ -456,11 +450,11 @@ async def admin_add_server(request: Request, db: Session = Depends(get_db), user
456450

457451
if isinstance(ex, ValidationError):
458452
# Pydantic or input validation failure — 422 Unprocessable Entity is correct
459-
return JSONResponse(content={"message": ErrorFormatter.format_validation_error(ex), "success": False}, status_code=422)
453+
return JSONResponse(content=ErrorFormatter.format_validation_error(ex), status_code=422)
460454

461455
if isinstance(ex, IntegrityError):
462456
# DB constraint violation — 409 Conflict is appropriate
463-
return JSONResponse(content={"message": ErrorFormatter.format_database_error(ex), "success": False}, status_code=409)
457+
return JSONResponse(content=ErrorFormatter.format_database_error(ex), status_code=409)
464458

465459
# For any other unhandled error, default to 500
466460
return JSONResponse(content={"message": str(ex), "success": False}, status_code=500)

mcpgateway/config.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,9 @@ def validate_database(self) -> None:
490490
db_dir.mkdir(parents=True)
491491

492492
# Validation patterns for safe display (configurable)
493-
validation_dangerous_html_pattern: str = r"<(script|iframe|object|embed|link|meta|base|form|img|svg|video|audio|source|track|area|map|canvas|applet|frame|frameset|html|head|body|style)\b|</*(script|iframe|object|embed|link|meta|base|form|img|svg|video|audio|source|track|area|map|canvas|applet|frame|frameset|html|head|body|style)>"
493+
validation_dangerous_html_pattern: str = (
494+
r"<(script|iframe|object|embed|link|meta|base|form|img|svg|video|audio|source|track|area|map|canvas|applet|frame|frameset|html|head|body|style)\b|</*(script|iframe|object|embed|link|meta|base|form|img|svg|video|audio|source|track|area|map|canvas|applet|frame|frameset|html|head|body|style)>"
495+
)
494496

495497
validation_dangerous_js_pattern: str = r"javascript:|vbscript:|on\w+\s*=|data:.*script"
496498
validation_allowed_url_schemes: List[str] = ["http://", "https://", "ws://", "wss://"]

mcpgateway/validators.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ class SecurityValidator:
5252
"""Configurable validation with MCP-compliant limits"""
5353

5454
# Configurable patterns (from settings)
55-
DANGEROUS_HTML_PATTERN = settings.validation_dangerous_html_pattern # Default: '<(script|iframe|object|embed|link|meta|base|form|img|svg|video|audio|source|track|area|map|canvas|applet|frame|frameset|html|head|body|style)\b|</*(script|iframe|object|embed|link|meta|base|form|img|svg|video|audio|source|track|area|map|canvas|applet|frame|frameset|html|head|body|style)>'
55+
DANGEROUS_HTML_PATTERN = (
56+
settings.validation_dangerous_html_pattern
57+
) # Default: '<(script|iframe|object|embed|link|meta|base|form|img|svg|video|audio|source|track|area|map|canvas|applet|frame|frameset|html|head|body|style)\b|</*(script|iframe|object|embed|link|meta|base|form|img|svg|video|audio|source|track|area|map|canvas|applet|frame|frameset|html|head|body|style)>'
5658
DANGEROUS_JS_PATTERN = settings.validation_dangerous_js_pattern # Default: javascript:|vbscript:|on\w+\s*=|data:.*script
5759
ALLOWED_URL_SCHEMES = settings.validation_allowed_url_schemes # Default: ["http://", "https://", "ws://", "wss://"]
5860

0 commit comments

Comments
 (0)