Initial commit: MCP Hub Community Edition v3.0.0

Community edition generated from private repo via sync pipeline.
Includes 9 plugins (WordPress, WooCommerce, WP Advanced, Gitea, n8n,
Supabase, OpenPanel, Appwrite, Directus) with ~587 tools.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
airano
2026-02-17 08:34:44 +03:30
commit cf62e65c55
237 changed files with 87596 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
"""
Media Pydantic Schemas
Validation schemas for WordPress media library operations.
"""
from pydantic import BaseModel, ConfigDict, Field, HttpUrl, field_validator
class MediaBase(BaseModel):
"""Base media schema"""
model_config = ConfigDict(extra="allow")
title: str | None = Field(None, description="Media title")
alt_text: str | None = Field(None, description="Alternative text")
caption: str | None = Field(None, description="Media caption")
description: str | None = Field(None, description="Media description")
class MediaUpload(MediaBase):
"""Schema for uploading media from URL"""
url: HttpUrl = Field(..., description="Source URL of the media file")
filename: str | None = Field(None, description="Desired filename")
@classmethod
@field_validator("filename")
def validate_filename(cls, v):
if v is not None:
# Basic filename validation
if "/" in v or "\\" in v:
raise ValueError("Filename cannot contain path separators")
if len(v) > 255:
raise ValueError("Filename too long (max 255 characters)")
return v
class MediaUpdate(MediaBase):
"""Schema for updating media metadata"""
# All fields optional for updates
pass
class MediaResponse(BaseModel):
"""Schema for media response data"""
model_config = ConfigDict(extra="allow")
id: int
title: str
alt_text: str
caption: str
description: str
mime_type: str
media_type: str
source_url: str
link: str
date: str