dev
Start/restart all development servers (backend, frontend, postgres) and verify they're working
SKILL.md
| Name | dev |
| Description | Start/restart all development servers (backend, frontend, postgres) and verify they're working |
Galipo
A legal case management system for personal injury law firms, designed for solo practitioners and small litigation teams.
Galipo operates as both:
- An MCP (Model Context Protocol) server with 41+ tools for Claude AI integration
- A web-based dashboard built with React for managing cases, tasks, deadlines, and legal team collaboration
Features
Case Management
- Track cases from intake through resolution
- Manage case numbers, court assignments, and case status
- Store case summaries, dates of injury, and outcomes
- Search cases by name, number, person, or status
Person Management
- Unified person system supporting clients, defendants, attorneys, judges, experts, witnesses, and more
- Flexible attributes for person-type-specific data (e.g., hourly rates for experts, bar numbers for attorneys)
- Assign persons to cases with specific roles and sides (plaintiff/defendant/neutral)
- Track contact information with multiple phones/emails per person
Task & Deadline Management
- Internal tasks with urgency levels (1-4: Low, Medium, High, Urgent)
- Calendar deadlines for hearings, depositions, filing dates, and other events
- Drag-and-drop task reordering
- Group tasks by urgency or by case
- Link tasks to specific deadlines
Time Tracking
- Log activities with descriptions and time spent
- Categorize by activity type (Meeting, Filing, Research, Drafting, Document Review)
MCP Integration
- 41 tools accessible via Claude AI
- Natural language case management ("Add Maria Martinez as a client to the Jones case")
- Query deadlines, tasks, and case information conversationally
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Frontend (React 19 + Vite) │
│ TypeScript, Tailwind CSS, TanStack Query/Table │
└────────────────────┬────────────────────────────────────────┘
│ /api/v1/*
┌────────────────────▼────────────────────────────────────────┐
│ Backend (FastAPI + FastMCP) │
│ Python 3.12+, SSE transport, Bearer auth │
└────────────────────┬────────────────────────────────────────┘
│
┌────────────────────▼────────────────────────────────────────┐
│ PostgreSQL │
│ 9 core tables + lookup tables, JSONB for flexibility │
└─────────────────────────────────────────────────────────────┘
Tech Stack
Backend
- FastAPI - Web framework
- FastMCP - MCP server framework
- PostgreSQL - Database
- Uvicorn - ASGI server
Frontend
- React 19 - UI framework
- TypeScript - Type safety
- Vite - Build tool
- Tailwind CSS - Styling
- TanStack Query - Server state management
- TanStack Table - Data tables
- @dnd-kit - Drag-and-drop
Quick Start
See SETUP.md for detailed development setup instructions.
# Clone and install
git clone <repo-url>
cd mcp-galipo
# Backend
pip install -r requirements.txt
# Frontend
cd frontend && npm install && cd ..
# Set environment variables
export DATABASE_URL="postgresql://user:pass@localhost:5432/galipo"
export AUTH_USERNAME="admin"
export AUTH_PASSWORD="your-password"
# Run development servers
# Terminal 1: Backend
uvicorn main:app --reload --port 8000
# Terminal 2: Frontend
cd frontend && npm run dev
Connecting to Claude.ai
- Go to Claude.ai
- Open Settings → Integrations (or look for MCP settings)
- Add a new MCP server with your deployment URL:
https://your-deployment-url.com/sse - Save and start a new conversation
Example Commands
- "List all my cases"
- "Show me details for Smith v. Johnson"
- "What events are coming up this week?"
- "Add Maria Martinez as a client to the Jones case"
- "Mark the discovery task as done"
Database Schema
| Table | Purpose |
|---|---|
jurisdictions | Courts and venues |
cases | Legal cases (central entity) |
persons | All people (clients, attorneys, judges, experts, etc.) |
case_persons | Person-to-case assignments with roles |
events | Deadlines, hearings, depositions |
tasks | Internal to-do items |
activities | Time tracking entries |
notes | Case notes |
person_types | Lookup table for person categories |
expertise_types | Lookup table for expert specializations |
MCP Tools
Galipo exposes 41 MCP tools across these categories:
- Cases - Create, update, search, and delete cases
- Persons - Manage people and their case assignments
- Tasks - Add, update, reorder, and bulk-update tasks
- Deadlines - Manage calendar events and deadlines
- Calendar - Combined view of tasks and deadlines
- Activities - Log and manage time entries
- Notes - Add and manage case notes
- Jurisdictions - Manage courts/venues
- Lookup Tables - Manage person types and expertise types
Documentation
- SETUP.md - Development environment setup
- TODO.md - Planned features and known issues
- docs/ - Additional planning documents
Development with Claude Code
The team uses Claude Code for development. Project MCP servers are configured in .mcp.json to enhance the development experience.
Available MCP Servers
| Server | Purpose |
|---|---|
postgres | Query the database using natural language (read-only) |
context7 | Fetch up-to-date library documentation |
sequential-thinking | Structured reasoning for complex problems (use on request) |
puppeteer | Browser automation for UI testing (development only) |
Setup
-
Install dependencies:
# Postgres MCP Pro pip install postgres-mcp -
Set environment variables:
export DATABASE_URL="postgresql://user:pass@localhost:5432/galipo" export CONTEXT7_API_KEY="your-context7-api-key" # Get from https://context7.com -
Restart Claude Code to pick up the MCP servers from
.mcp.json
The MCP servers will then be available in your Claude Code sessions for this project.
Puppeteer MCP (Development Only)
The puppeteer MCP server enables Claude Code to perform browser automation for testing:
- Navigate to URLs
- Click buttons and links
- Type into input fields
- Take screenshots
- Wait for elements
This is useful for end-to-end testing of the web UI during development. No additional setup required - it runs via npx.
Deployment
- Platform: Coolify (or any Docker host)
- Database: PostgreSQL
- Transport: SSE on port 8000
The server runs on port 8000. Your reverse proxy (nginx, Caddy, etc.) should:
- Proxy requests to
localhost:8000 - Support SSE (Server-Sent Events) - ensure no response buffering
- Handle HTTPS termination
License
Proprietary - All rights reserved