We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/finizi-app/finizi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
"""Input validation utilities."""
import re
from uuid import UUID
from .errors import MCPValidationError
def validate_uuid(value: str, field_name: str = "id") -> str:
"""
Validate that a string is a valid UUID.
Args:
value: The string to validate
field_name: Name of the field for error messages
Returns:
The validated UUID string in standard format
Raises:
MCPValidationError: If the value is not a valid UUID
"""
if not value:
raise MCPValidationError(
message=f"{field_name} cannot be empty",
field=field_name,
)
try:
# Parse and normalize the UUID
uuid_obj = UUID(value)
return str(uuid_obj)
except ValueError as e:
raise MCPValidationError(
message=f"Invalid UUID format: {str(e)}",
field=field_name,
) from e
def validate_page_params(page: int, per_page: int) -> tuple[int, int]:
"""
Validate pagination parameters.
Args:
page: Page number (1-indexed)
per_page: Number of items per page
Returns:
Tuple of (validated_page, validated_per_page)
Raises:
MCPValidationError: If parameters are invalid
"""
if page < 1:
raise MCPValidationError(
message="Page number must be greater than 0",
field="page",
)
if per_page < 1:
raise MCPValidationError(
message="Items per page must be greater than 0",
field="per_page",
)
if per_page > 100:
raise MCPValidationError(
message="Items per page cannot exceed 100",
field="per_page",
)
return page, per_page
def validate_phone(phone: str) -> str:
"""
Validate Vietnamese phone number format.
Expected format: +84XXXXXXXXX (10-11 digits after +84)
Args:
phone: Phone number to validate
Returns:
The validated phone number
Raises:
MCPValidationError: If phone format is invalid
"""
if not phone:
raise MCPValidationError(
message="Phone number cannot be empty",
field="phone",
)
# Remove all spaces and dashes for validation
cleaned = re.sub(r"[\s-]", "", phone)
# Vietnamese phone pattern: +84 followed by 9-10 digits
pattern = r"^\+84[0-9]{9,10}$"
if not re.match(pattern, cleaned):
raise MCPValidationError(
message=(
"Invalid Vietnamese phone format. "
"Expected format: +84XXXXXXXXX (9-10 digits after +84)"
),
field="phone",
)
return cleaned