Files
syndarix/mcp-servers/git-ops/__init__.py
Felipe Cardoso 9dfa76aa41 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>
2026-01-06 20:48:20 +01:00

180 lines
3.5 KiB
Python

"""
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",
]