|
| 1 | + |
| 2 | +# ============================================================================= |
| 3 | +# OAuth sign-in (dual IdP: Google + Entra ID) — HTTP mode only |
| 4 | +# ============================================================================= |
| 5 | +# "none" (default) keeps today's behavior. "oauth" turns the HTTP surface into |
| 6 | +# an OAuth 2.1 authorization server: users sign in with Google/Microsoft and |
| 7 | +# must have an active row in the mcp_users table (see |
| 8 | +# scripts/manage_mcp_users.py and the FPD_manage_users tool). In the suite |
| 9 | +# deployment FPD points FPD_AUTH_DB_PATH at the shared paid-tier file |
| 10 | +# hosted by PFW (shared bind mount, same host only). |
| 11 | +# FPD_AUTH_MODE=oauth |
| 12 | +# FPD_AUTH_BASE_URL=https://your-public-hostname.example.com |
| 13 | +# FPD_AUTH_JWT_SECRET= # openssl rand -hex 32 — rotating logs everyone out |
| 14 | +# FPD_AUTH_GOOGLE_CLIENT_ID= |
| 15 | +# FPD_AUTH_GOOGLE_CLIENT_SECRET= |
| 16 | +# FPD_AUTH_MS_CLIENT_ID= |
| 17 | +# FPD_AUTH_MS_CLIENT_SECRET= |
| 18 | +# FPD_AUTH_MS_TENANT=common # common | organizations | tenant GUID |
| 19 | +# FPD_AUTH_INTERNAL_TOKEN= # openssl rand -hex 32 — static bearer for headless clients |
| 20 | +# # (fpd:user ONLY as of the M1 hardening pass — |
| 21 | +# # existing internal-gateway tokens keep working |
| 22 | +# # for search/document tools but no longer grants |
| 23 | +# # fpd:admin; this is intended) |
| 24 | +# FPD_AUTH_INTERNAL_ADMIN_TOKEN= # openssl rand -hex 32 — SEPARATE static |
| 25 | +# # bearer granting fpd:user + fpd:admin. Issue |
| 26 | +# # this only to whichever internal caller |
| 27 | +# # actually needs to manage users; most |
| 28 | +# # deployments should leave it unset. |
| 29 | +# FPD_AUTH_REGISTER_URL= # optional "Request access" link |
| 30 | +# FPD_AUTH_ACCESS_TTL=3600 |
| 31 | +# FPD_AUTH_REFRESH_TTL=2592000 |
| 32 | +# FPD_AUTH_DB_PATH=data/mcp_auth.db |
| 33 | + |
| 34 | +# ============================================================================= |
| 35 | +# Shared USPTO rate limiting (off by default) |
| 36 | +# ============================================================================= |
| 37 | +# All 4 USPTO MCPs (citations/pfw/ptab/fpd) can run as containers sharing one |
| 38 | +# host/netns under a SINGLE USPTO API key. USPTO's documented limits are |
| 39 | +# per-KEY (burst=1, no parallel requests; 4-15 req/sec by call type; weekly |
| 40 | +# quotas), so a per-process limiter can't see what the other 3 processes are |
| 41 | +# doing. Setting USPTO_SHARED_RATE_LIMIT_DIR points all of them at one |
| 42 | +# bind-mounted directory; a cross-process token bucket + a bounded pool of |
| 43 | +# concurrency slots, both arbitrated via POSIX file locks (flock — released |
| 44 | +# automatically by the kernel on process death, so it's crash-safe), keep |
| 45 | +# the combined request rate under the shared key's limits. Leave unset for a |
| 46 | +# standalone deployment. |
| 47 | +# USPTO_SHARED_RATE_LIMIT_DIR=/var/run/uspto-shared-rate-limit |
| 48 | +# USPTO_SHARED_RATE_LIMIT_RPS=4.0 # total tokens/sec across ALL 4 MCPs |
| 49 | +# USPTO_SHARED_MAX_CONCURRENT=2 # shared in-flight request slots |
| 50 | + |
| 51 | +# Registration gate for the FPD_manage_users admin tool. Default off: the |
| 52 | +# tool is not registered at all (absent from tools/list) unless this is |
| 53 | +# "true". stdio never needs it (seed admins with scripts/manage_mcp_users.py); |
| 54 | +# in a non-OAuth HTTP deployment it would be protected only by the shared |
| 55 | +# INTERNAL_AUTH_SECRET. **OAuth deployments must set this true** or the admin |
| 56 | +# tool disappears. When enabled + FPD_AUTH_MODE=oauth it is additionally |
| 57 | +# gated behind the fpd:admin scope. |
| 58 | +# FPD_ENABLE_USER_MANAGEMENT=false |
0 commit comments