# Docker Compose for Actual Budget MCP Server
# Use this for local testing or alongside your Actual Budget server
version: '3.8'
services:
actual-budget-mcp:
build: .
container_name: actual-budget-mcp
restart: unless-stopped
ports:
- "3000:3000"
environment:
# Required: Your Actual Budget server URL
# If running on the same Docker network as Actual, use the container name
- ACTUAL_SERVER_URL=${ACTUAL_SERVER_URL:-http://actual-budget:5006}
# Required: Your Actual Budget server password
- ACTUAL_PASSWORD=${ACTUAL_PASSWORD}
# Required: Your budget's Sync ID
# Find this in Actual Budget: Settings → Show advanced settings → Sync ID
- ACTUAL_BUDGET_ID=${ACTUAL_BUDGET_ID}
# Optional: If your budget uses end-to-end encryption
- ACTUAL_ENCRYPTION_PASSWORD=${ACTUAL_ENCRYPTION_PASSWORD:-}
# Server settings
- PORT=3000
- MCP_TRANSPORT=http
volumes:
# Persist the Actual data cache
- actual-mcp-cache:/data/actual-cache
# If your Actual Budget is on the same Docker network
# networks:
# - actual-network
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
volumes:
actual-mcp-cache:
# Uncomment if connecting to Actual Budget on same network
# networks:
# actual-network:
# external: true