forked from cardosofelipe/fast-next-template
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>
Syndarix MCP Servers
Model Context Protocol (MCP) servers providing tool access for Syndarix agents.
Per ADR-005, all tools require explicit project scoping.
Server Overview
| Server | Priority | Purpose | Phase |
|---|---|---|---|
| llm-gateway | 1 | LLM routing with failover and cost tracking | Phase 2 |
| knowledge-base | 2 | RAG with pgvector for semantic search | Phase 2 |
| git | 3 | Git operations (clone, commit, push, PR) | Phase 2 |
| issues | 4 | Issue tracker sync (Gitea, GitHub, GitLab) | Phase 2 |
| filesystem | 5 | Sandboxed file operations | Phase 5 |
| code-analysis | 6 | AST parsing, linting, type checking | Phase 5 |
| cicd | 7 | CI/CD pipeline management | Phase 5 |
Architecture
Each MCP server is a FastMCP application that:
- Exposes tools via Model Context Protocol
- Requires
project_idfor all operations (explicit scoping) - Uses Redis for pub/sub communication with agents
- Logs all operations to PostgreSQL for audit
┌─────────────────────────────────────────────────────────────┐
│ Agent Runner │
│ │ │
│ ┌─────────────┼─────────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ LLM GW │ │ Git │ │ Issues │ ... (7 total) │
│ │ MCP │ │ MCP │ │ MCP │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
Running Locally
Each MCP server runs as a separate Docker container. See docker-compose.dev.yml for configuration.
# Start all MCP servers (Phase 2+)
docker-compose -f docker-compose.dev.yml up -d llm-gateway knowledge-base git issues
# View logs
docker-compose logs -f llm-gateway
Development
Each server follows the FastMCP pattern:
from fastmcp import FastMCP
mcp = FastMCP("server-name")
@mcp.tool()
def my_tool(project_id: str, ...):
"""Tool with required project scoping."""
# Validate project access
# Execute operation
# Log for audit
pass
See individual server READMEs for specific tool documentation.