feat(mcp): implement Git Operations MCP server with Gitea provider
Implements the Git Operations MCP server (Issue #58) providing: Core features: - GitPython wrapper for local repository operations (clone, commit, push, pull, diff, log) - Branch management (create, delete, list, checkout) - Workspace isolation per project with file-based locking - Gitea provider for remote PR operations MCP Tools (17 registered): - clone_repository, git_status, create_branch, list_branches - checkout, commit, push, pull, diff, log - create_pull_request, get_pull_request, list_pull_requests - merge_pull_request, get_workspace, lock_workspace, unlock_workspace Technical details: - FastMCP + FastAPI with JSON-RPC 2.0 protocol - pydantic-settings for configuration (env prefix: GIT_OPS_) - Comprehensive error hierarchy with structured codes - 131 tests passing with 67% coverage - Async operations via ThreadPoolExecutor Closes: #105, #106, #107, #108, #109 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
179
mcp-servers/git-ops/__init__.py
Normal file
179
mcp-servers/git-ops/__init__.py
Normal file
@@ -0,0 +1,179 @@
|
||||
"""
|
||||
Git Operations MCP Server.
|
||||
|
||||
Provides git repository management, branching, commits, and PR workflows
|
||||
for Syndarix AI agents.
|
||||
"""
|
||||
|
||||
__version__ = "0.1.0"
|
||||
|
||||
from config import Settings, get_settings, is_test_mode, reset_settings
|
||||
from exceptions import (
|
||||
APIError,
|
||||
AuthenticationError,
|
||||
BranchExistsError,
|
||||
BranchNotFoundError,
|
||||
CheckoutError,
|
||||
CloneError,
|
||||
CommitError,
|
||||
CredentialError,
|
||||
CredentialNotFoundError,
|
||||
DirtyWorkspaceError,
|
||||
ErrorCode,
|
||||
GitError,
|
||||
GitOpsError,
|
||||
InvalidRefError,
|
||||
MergeConflictError,
|
||||
PRError,
|
||||
PRNotFoundError,
|
||||
ProviderError,
|
||||
ProviderNotFoundError,
|
||||
PullError,
|
||||
PushError,
|
||||
WorkspaceError,
|
||||
WorkspaceLockedError,
|
||||
WorkspaceNotFoundError,
|
||||
WorkspaceSizeExceededError,
|
||||
)
|
||||
from models import (
|
||||
BranchInfo,
|
||||
BranchRequest,
|
||||
BranchResult,
|
||||
CheckoutRequest,
|
||||
CheckoutResult,
|
||||
CloneRequest,
|
||||
CloneResult,
|
||||
CommitInfo,
|
||||
CommitRequest,
|
||||
CommitResult,
|
||||
CreatePRRequest,
|
||||
CreatePRResult,
|
||||
DiffHunk,
|
||||
DiffRequest,
|
||||
DiffResult,
|
||||
FileChange,
|
||||
FileChangeType,
|
||||
FileDiff,
|
||||
GetPRRequest,
|
||||
GetPRResult,
|
||||
GetWorkspaceRequest,
|
||||
GetWorkspaceResult,
|
||||
HealthStatus,
|
||||
ListBranchesRequest,
|
||||
ListBranchesResult,
|
||||
ListPRsRequest,
|
||||
ListPRsResult,
|
||||
LockWorkspaceRequest,
|
||||
LockWorkspaceResult,
|
||||
LogRequest,
|
||||
LogResult,
|
||||
MergePRRequest,
|
||||
MergePRResult,
|
||||
MergeStrategy,
|
||||
PRInfo,
|
||||
ProviderStatus,
|
||||
ProviderType,
|
||||
PRState,
|
||||
PullRequest,
|
||||
PullResult,
|
||||
PushRequest,
|
||||
PushResult,
|
||||
StatusRequest,
|
||||
StatusResult,
|
||||
UnlockWorkspaceRequest,
|
||||
UnlockWorkspaceResult,
|
||||
UpdatePRRequest,
|
||||
UpdatePRResult,
|
||||
WorkspaceInfo,
|
||||
WorkspaceState,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
# Version
|
||||
"__version__",
|
||||
# Config
|
||||
"Settings",
|
||||
"get_settings",
|
||||
"reset_settings",
|
||||
"is_test_mode",
|
||||
# Error codes
|
||||
"ErrorCode",
|
||||
# Exceptions
|
||||
"GitOpsError",
|
||||
"WorkspaceError",
|
||||
"WorkspaceNotFoundError",
|
||||
"WorkspaceLockedError",
|
||||
"WorkspaceSizeExceededError",
|
||||
"GitError",
|
||||
"CloneError",
|
||||
"CheckoutError",
|
||||
"CommitError",
|
||||
"PushError",
|
||||
"PullError",
|
||||
"MergeConflictError",
|
||||
"BranchExistsError",
|
||||
"BranchNotFoundError",
|
||||
"InvalidRefError",
|
||||
"DirtyWorkspaceError",
|
||||
"ProviderError",
|
||||
"AuthenticationError",
|
||||
"ProviderNotFoundError",
|
||||
"PRError",
|
||||
"PRNotFoundError",
|
||||
"APIError",
|
||||
"CredentialError",
|
||||
"CredentialNotFoundError",
|
||||
# Enums
|
||||
"FileChangeType",
|
||||
"MergeStrategy",
|
||||
"PRState",
|
||||
"ProviderType",
|
||||
"WorkspaceState",
|
||||
# Dataclasses
|
||||
"FileChange",
|
||||
"BranchInfo",
|
||||
"CommitInfo",
|
||||
"DiffHunk",
|
||||
"FileDiff",
|
||||
"PRInfo",
|
||||
"WorkspaceInfo",
|
||||
# Request/Response models
|
||||
"CloneRequest",
|
||||
"CloneResult",
|
||||
"StatusRequest",
|
||||
"StatusResult",
|
||||
"BranchRequest",
|
||||
"BranchResult",
|
||||
"ListBranchesRequest",
|
||||
"ListBranchesResult",
|
||||
"CheckoutRequest",
|
||||
"CheckoutResult",
|
||||
"CommitRequest",
|
||||
"CommitResult",
|
||||
"PushRequest",
|
||||
"PushResult",
|
||||
"PullRequest",
|
||||
"PullResult",
|
||||
"DiffRequest",
|
||||
"DiffResult",
|
||||
"LogRequest",
|
||||
"LogResult",
|
||||
"CreatePRRequest",
|
||||
"CreatePRResult",
|
||||
"GetPRRequest",
|
||||
"GetPRResult",
|
||||
"ListPRsRequest",
|
||||
"ListPRsResult",
|
||||
"MergePRRequest",
|
||||
"MergePRResult",
|
||||
"UpdatePRRequest",
|
||||
"UpdatePRResult",
|
||||
"GetWorkspaceRequest",
|
||||
"GetWorkspaceResult",
|
||||
"LockWorkspaceRequest",
|
||||
"LockWorkspaceResult",
|
||||
"UnlockWorkspaceRequest",
|
||||
"UnlockWorkspaceResult",
|
||||
"HealthStatus",
|
||||
"ProviderStatus",
|
||||
]
|
||||
Reference in New Issue
Block a user