Skip to content
VS Code

ofw mcp for VS Code

io.github.chrischall/ofw-mcp

OurFamilyWizard co-parenting for Claude — messages, calendar, expenses, and journal

client:VS Code transport:stdio runtime:npm

Install ofw mcp in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "ofw-username",
      "description": "OFW_USERNAME",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-password",
      "description": "OFW_PASSWORD",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-write-mode",
      "description": "OFW_WRITE_MODE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-calendar-writes",
      "description": "OFW_CALENDAR_WRITES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-allow-mark-read",
      "description": "OFW_ALLOW_MARK_READ",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-confirm-mark-read",
      "description": "OFW_CONFIRM_MARK_READ",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-fetch-unread-bodies",
      "description": "OFW_FETCH_UNREAD_BODIES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-read-days",
      "description": "OFW_READ_DAYS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-no-read-days",
      "description": "OFW_NO_READ_DAYS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-session-cache",
      "description": "OFW_SESSION_CACHE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-session-file",
      "description": "OFW_SESSION_FILE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-expense-only",
      "description": "OFW_EXPENSE_ONLY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-expense-upload-only",
      "description": "OFW_EXPENSE_UPLOAD_ONLY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-inline-attachments",
      "description": "OFW_INLINE_ATTACHMENTS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-attachments-dir",
      "description": "OFW_ATTACHMENTS_DIR",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-upload-dir",
      "description": "OFW_UPLOAD_DIR",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-cache-identity",
      "description": "OFW_CACHE_IDENTITY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-cache-dir",
      "description": "OFW_CACHE_DIR",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-disable-fetchproxy",
      "description": "OFW_DISABLE_FETCHPROXY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-auto-refresh",
      "description": "OFW_AUTO_REFRESH",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-freshness-ttl-seconds",
      "description": "OFW_FRESHNESS_TTL_SECONDS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-sync-max-requests",
      "description": "OFW_SYNC_MAX_REQUESTS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-request-timeout-ms",
      "description": "OFW_REQUEST_TIMEOUT_MS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "ofw-debug-log",
      "description": "OFW_DEBUG_LOG",
      "password": true
    },
    {
      "type": "promptString",
      "id": "display-tz",
      "description": "DISPLAY_TZ",
      "password": true
    },
    {
      "type": "promptString",
      "id": "fetchproxy-ws-port",
      "description": "FETCHPROXY_WS_PORT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "fetchproxy-ws-host",
      "description": "FETCHPROXY_WS_HOST",
      "password": true
    },
    {
      "type": "promptString",
      "id": "fetchproxy-identity-dir",
      "description": "FETCHPROXY_IDENTITY_DIR",
      "password": true
    }
  ],
  "servers": {
    "ofw-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "ofw-mcp"
      ],
      "env": {
        "OFW_USERNAME": "${input:ofw-username}",
        "OFW_PASSWORD": "${input:ofw-password}",
        "OFW_WRITE_MODE": "${input:ofw-write-mode}",
        "OFW_CALENDAR_WRITES": "${input:ofw-calendar-writes}",
        "OFW_ALLOW_MARK_READ": "${input:ofw-allow-mark-read}",
        "OFW_CONFIRM_MARK_READ": "${input:ofw-confirm-mark-read}",
        "OFW_FETCH_UNREAD_BODIES": "${input:ofw-fetch-unread-bodies}",
        "OFW_READ_DAYS": "${input:ofw-read-days}",
        "OFW_NO_READ_DAYS": "${input:ofw-no-read-days}",
        "OFW_SESSION_CACHE": "${input:ofw-session-cache}",
        "OFW_SESSION_FILE": "${input:ofw-session-file}",
        "OFW_EXPENSE_ONLY": "${input:ofw-expense-only}",
        "OFW_EXPENSE_UPLOAD_ONLY": "${input:ofw-expense-upload-only}",
        "OFW_INLINE_ATTACHMENTS": "${input:ofw-inline-attachments}",
        "OFW_ATTACHMENTS_DIR": "${input:ofw-attachments-dir}",
        "OFW_UPLOAD_DIR": "${input:ofw-upload-dir}",
        "OFW_CACHE_IDENTITY": "${input:ofw-cache-identity}",
        "OFW_CACHE_DIR": "${input:ofw-cache-dir}",
        "OFW_DISABLE_FETCHPROXY": "${input:ofw-disable-fetchproxy}",
        "OFW_AUTO_REFRESH": "${input:ofw-auto-refresh}",
        "OFW_FRESHNESS_TTL_SECONDS": "${input:ofw-freshness-ttl-seconds}",
        "OFW_SYNC_MAX_REQUESTS": "${input:ofw-sync-max-requests}",
        "OFW_REQUEST_TIMEOUT_MS": "${input:ofw-request-timeout-ms}",
        "OFW_DEBUG_LOG": "${input:ofw-debug-log}",
        "DISPLAY_TZ": "${input:display-tz}",
        "FETCHPROXY_WS_PORT": "${input:fetchproxy-ws-port}",
        "FETCHPROXY_WS_HOST": "${input:fetchproxy-ws-host}",
        "FETCHPROXY_IDENTITY_DIR": "${input:fetchproxy-identity-dir}"
      }
    }
  }
}

VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs

ofw mcp in other clients