Skip to main content
Glama

MCP Git Server

by MementoRC
models.py7.4 kB
"""Pydantic models for GitHub API tools""" from pydantic import BaseModel, field_validator class GitHubGetPRChecks(BaseModel): repo_owner: str repo_name: str pr_number: int status: str | None = None conclusion: str | None = None class GitHubGetFailingJobs(BaseModel): repo_owner: str repo_name: str pr_number: int include_logs: bool = True include_annotations: bool = True class GitHubGetWorkflowRun(BaseModel): repo_owner: str repo_name: str run_id: int include_logs: bool = False class GitHubListWorkflowRuns(BaseModel): repo_owner: str repo_name: str workflow_id: str | None = None actor: str | None = None branch: str | None = None event: str | None = None status: str | None = None conclusion: str | None = None per_page: int = 30 page: int = 1 created: str | None = None exclude_pull_requests: bool = False check_suite_id: int | None = None head_sha: str | None = None class GitHubGetPRDetails(BaseModel): repo_owner: str repo_name: str pr_number: int include_files: bool = False include_reviews: bool = False class GitHubListPullRequests(BaseModel): repo_owner: str repo_name: str state: str = "open" head: str | None = None base: str | None = None sort: str = "created" direction: str = "desc" per_page: int = 30 page: int = 1 class GitHubGetPRStatus(BaseModel): repo_owner: str repo_name: str pr_number: int class GitHubGetPRFiles(BaseModel): repo_owner: str repo_name: str pr_number: int per_page: int = 30 page: int = 1 include_patch: bool = False # GitHub CLI Models class GitHubCLICreatePR(BaseModel): repo_path: str title: str body: str | None = None base: str | None = None head: str | None = None draft: bool = False web: bool = False class GitHubCLIEditPR(BaseModel): repo_path: str pr_number: int title: str | None = None body: str | None = None base: str | None = None add_assignee: list[str] | None = None remove_assignee: list[str] | None = None add_label: list[str] | None = None remove_label: list[str] | None = None add_reviewer: list[str] | None = None remove_reviewer: list[str] | None = None class GitHubCLIMergePR(BaseModel): repo_path: str pr_number: int merge_method: str = "merge" # merge, squash, rebase delete_branch: bool = False auto: bool = False class GitHubCLIClosePR(BaseModel): repo_path: str pr_number: int comment: str | None = None class GitHubCLIReopenPR(BaseModel): repo_path: str pr_number: int comment: str | None = None class GitHubCLIReadyPR(BaseModel): repo_path: str pr_number: int # GitHub Issues Models class GitHubCreateIssue(BaseModel): repo_owner: str repo_name: str title: str body: str | None = None labels: list[str] | None = None assignees: list[str] | None = None milestone: int | None = None @field_validator("milestone") @classmethod def validate_milestone(cls, v: int | None) -> int | None: """Validate milestone ID is positive (GitHub API expects positive integers)""" if v is None: return v return v if v > 0 else None class GitHubListIssues(BaseModel): """Model for GitHub List Issues API with comprehensive filtering options. Complex filtering parameters: - since: ISO 8601 timestamp format (e.g., '2023-01-01T00:00:00Z') to filter issues updated after this time - milestone: Use milestone number as string, '*' for any milestone, 'none' for issues without milestone (e.g., '1', '*', 'none') - labels: List of label names for AND filtering (e.g., ['bug', 'frontend']) """ repo_owner: str repo_name: str state: str = "open" # open, closed, all labels: list[str] | None = None assignee: str | None = None creator: str | None = None mentioned: str | None = None milestone: str | None = None sort: str = "created" # created, updated, comments direction: str = "desc" # asc, desc since: str | None = None per_page: int = 30 page: int = 1 class GitHubUpdateIssue(BaseModel): repo_owner: str repo_name: str issue_number: int title: str | None = None body: str | None = None state: str | None = None # open, closed labels: list[str] | None = None assignees: list[str] | None = None milestone: int | None = None @field_validator("milestone") @classmethod def validate_milestone(cls, v: int | None) -> int | None: """Validate milestone ID is positive (GitHub API expects positive integers)""" if v is None: return v return v if v > 0 else None class GitHubSearchIssues(BaseModel): """Model for GitHub Search Issues API with advanced query capabilities. Supports GitHub's search qualifiers like: - is:issue is:open author:username - label:bug label:"help wanted" - created:2023-01-01..2023-12-31 - updated:>2023-06-01 - milestone:"v1.0" assignee:username """ repo_owner: str repo_name: str query: str # GitHub search query with qualifiers sort: str = "created" # created, updated, comments order: str = "desc" # asc, desc per_page: int = 30 page: int = 1 class GitHubCreateIssueFromTemplate(BaseModel): """Model for creating GitHub issues from predefined templates.""" repo_owner: str repo_name: str title: str template_name: str = "bug_report" # bug_report, feature_request, question, custom template_data: dict | None = None # Additional data for template customization class GitHubBulkUpdateIssues(BaseModel): """Model for bulk updating multiple GitHub issues with common properties.""" repo_owner: str repo_name: str issue_numbers: list[int] # List of issue numbers to update labels: list[str] | None = None assignees: list[str] | None = None milestone: int | None = None state: str | None = None # open, closed @field_validator("milestone") @classmethod def validate_milestone(cls, v: int | None) -> int | None: """Validate milestone ID is positive (GitHub API expects positive integers)""" if v is None: return v return v if v > 0 else None class GitHubEditPRDescription(BaseModel): repo_owner: str repo_name: str pr_number: int description: str class GitHubCreatePR(BaseModel): repo_owner: str repo_name: str title: str head: str base: str body: str | None = None draft: bool = False class GitHubMergePR(BaseModel): repo_owner: str repo_name: str pr_number: int commit_title: str | None = None commit_message: str | None = None merge_method: str = "merge" class GitHubAddPRComment(BaseModel): repo_owner: str repo_name: str pr_number: int body: str class GitHubClosePR(BaseModel): repo_owner: str repo_name: str pr_number: int class GitHubReopenPR(BaseModel): repo_owner: str repo_name: str pr_number: int class GitHubUpdatePR(BaseModel): repo_owner: str repo_name: str pr_number: int title: str | None = None body: str | None = None state: str | None = None base: str | None = None

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MementoRC/mcp-git'

If you have feedback or need assistance with the MCP directory API, please join our Discord server