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,196 @@
"""
Repository Pydantic Schemas
Validation schemas for Gitea repository operations.
"""
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, ConfigDict, Field, field_validator
from .common import GiteaPermissions, GiteaUser
class Repository(BaseModel):
"""Gitea repository model"""
model_config = ConfigDict(extra="allow")
id: int
owner: GiteaUser
name: str
full_name: str
description: str | None = None
empty: bool = False
private: bool = False
fork: bool = False
template: bool = False
parent: Optional["Repository"] = None
mirror: bool = False
size: int = 0
language: str | None = None
languages_url: str | None = None
html_url: str
ssh_url: str
clone_url: str
original_url: str | None = None
website: str | None = None
stars_count: int = 0
forks_count: int = 0
watchers_count: int = 0
open_issues_count: int = 0
open_pr_counter: int = 0
release_counter: int = 0
default_branch: str = "main"
archived: bool = False
created_at: datetime
updated_at: datetime
permissions: GiteaPermissions | None = None
has_issues: bool = True
internal_tracker: dict | None = None
has_wiki: bool = False
has_pull_requests: bool = True
has_projects: bool = False
ignore_whitespace_conflicts: bool = False
allow_merge_commits: bool = True
allow_rebase: bool = True
allow_rebase_explicit: bool = True
allow_squash_merge: bool = True
default_merge_style: str = "merge"
avatar_url: str | None = None
class Branch(BaseModel):
"""Git branch model"""
model_config = ConfigDict(extra="allow")
name: str
commit: dict
protected: bool = False
required_approvals: int | None = None
enable_status_check: bool = False
status_check_contexts: list[str] | None = None
user_can_push: bool = False
user_can_merge: bool = False
class Tag(BaseModel):
"""Git tag model"""
model_config = ConfigDict(extra="allow")
name: str
message: str | None = None
id: str
commit: dict
zipball_url: str | None = None
tarball_url: str | None = None
class FileContent(BaseModel):
"""File content model"""
model_config = ConfigDict(extra="allow")
name: str
path: str
sha: str
size: int
url: str
html_url: str
git_url: str
download_url: str | None = None
type: str # "file" or "dir"
content: str | None = None # Base64 encoded
encoding: str | None = None
target: str | None = None # For symlinks
submodule_git_url: str | None = None
class CreateRepositoryRequest(BaseModel):
"""Request to create a repository"""
model_config = ConfigDict(extra="forbid")
name: str = Field(..., min_length=1, max_length=100, description="Repository name")
description: str | None = Field(None, max_length=500, description="Repository description")
private: bool = Field(default=False, description="Make repository private")
auto_init: bool = Field(default=False, description="Initialize with README")
gitignores: str | None = Field(None, description="Gitignore template")
license: str | None = Field(None, description="License template")
readme: str | None = Field(None, description="Readme template")
default_branch: str | None = Field(None, description="Default branch name")
trust_model: str | None = Field(
None, description="Trust model (default, collaborator, committer, collaboratorcommitter)"
)
@classmethod
@field_validator("name")
def validate_name(cls, v):
"""Validate repository name"""
if not v.replace("-", "").replace("_", "").replace(".", "").isalnum():
raise ValueError(
"Repository name can only contain alphanumeric characters, hyphens, underscores, and dots"
)
return v
class UpdateRepositoryRequest(BaseModel):
"""Request to update a repository"""
model_config = ConfigDict(extra="forbid")
name: str | None = Field(None, min_length=1, max_length=100, description="New repository name")
description: str | None = Field(None, max_length=500, description="Repository description")
website: str | None = Field(None, description="Repository website")
private: bool | None = Field(None, description="Make repository private")
archived: bool | None = Field(None, description="Archive repository")
has_issues: bool | None = Field(None, description="Enable issues")
has_wiki: bool | None = Field(None, description="Enable wiki")
default_branch: str | None = Field(None, description="Default branch")
allow_merge_commits: bool | None = Field(None, description="Allow merge commits")
allow_rebase: bool | None = Field(None, description="Allow rebase")
allow_squash_merge: bool | None = Field(None, description="Allow squash merge")
class CreateBranchRequest(BaseModel):
"""Request to create a branch"""
model_config = ConfigDict(extra="forbid")
new_branch_name: str = Field(..., min_length=1, description="New branch name")
old_branch_name: str | None = Field(None, description="Source branch (default: default branch)")
old_ref_name: str | None = Field(None, description="Source commit SHA or ref")
class CreateTagRequest(BaseModel):
"""Request to create a tag"""
model_config = ConfigDict(extra="forbid")
tag_name: str = Field(..., min_length=1, description="Tag name")
message: str | None = Field(None, description="Tag message")
target: str | None = Field(None, description="Target commit SHA (default: latest)")
class CreateFileRequest(BaseModel):
"""Request to create a file"""
model_config = ConfigDict(extra="forbid")
content: str = Field(..., description="File content (will be Base64 encoded)")
message: str = Field(..., min_length=1, description="Commit message")
branch: str | None = Field(None, description="Branch name (default: default branch)")
author_name: str | None = Field(None, description="Author name")
author_email: str | None = Field(None, description="Author email")
committer_name: str | None = Field(None, description="Committer name")
committer_email: str | None = Field(None, description="Committer email")
new_branch: str | None = Field(None, description="Create new branch for this commit")
class UpdateFileRequest(BaseModel):
"""Request to update a file"""
model_config = ConfigDict(extra="forbid")
content: str = Field(..., description="New file content (will be Base64 encoded)")
message: str = Field(..., min_length=1, description="Commit message")
sha: str = Field(..., description="SHA of the file being replaced")
branch: str | None = Field(None, description="Branch name (default: default branch)")
author_name: str | None = Field(None, description="Author name")
author_email: str | None = Field(None, description="Author email")
committer_name: str | None = Field(None, description="Committer name")
committer_email: str | None = Field(None, description="Committer email")
new_branch: str | None = Field(None, description="Create new branch for this commit")