nexus-mcp/nexus-mcp/.env.example
nathan 0c9aebf97a feat(nexus): implement sharded architecture
- Create nexus-mcp/ with 6-shard plugin model (identity, workday, audit, itsm, assets, logistics)
- Migrate 31 tools from legacy Identity + Workday servers into unified orchestrator
- Add feature flag control (ENABLE_*) for atomic shard deployment per Gemini design
- Implement SOC 2 audit logging with automatic PII redaction (CC7.2 / CC6.1)
- Create stub shards for ITSM, Assets, Logistics (Red status awaiting credentials)
- Add comprehensive mock data library with drift scenarios for credential-free testing
- Update README.md: reposition from Workday-MCP to Nexus-MCP as primary server
- Document installation, configuration, and shard toggling in Local-Setup.md

Architecture: Orchestrator (main.py) + Shards (src/shards/*.py) + Adapters (lib/)
enables piece-at-a-time deployment. Mock mode (USE_MOCK=true) supports full 53-tool
testing without credentials. Smoke test verified: 33 tools registered successfully.

BREAKING CHANGE: Legacy Identity/ and Workday/ servers deprecated. Users must update
Claude Desktop config to point to nexus-mcp/src/main.py. Legacy folders preserved
for reference pending verification.

Refs: WIS-006, WIS-009, WIS-014-018, Gemini conversation 2026-04-06
2026-04-13 09:20:35 -04:00

75 lines
4.4 KiB
Plaintext

# ─── Mock Mode ────────────────────────────────────────────────────────────────
# Set USE_MOCK=true to run all 53 tools on synthetic data — no credentials needed.
# Every tool checks this flag first; real API clients are never instantiated.
# Drift scenarios pre-seeded in lib/mock_data.py for realistic audit testing.
USE_MOCK=false
# ─── SOC 2 Audit Logging (CC7.2 / CC6.1) ─────────────────────────────────────
# Every tool call is written as a JSONL record to AUDIT_LOG_FILE.
# Records include: event_id, timestamp, tool, shard, action_category,
# sanitised args (passwords/tokens auto-redacted), mock_mode flag,
# status (success|error), latency_ms, and error details.
#
# AUDIT_LOG_FILE — path to the append-only JSONL audit trail
# AUDIT_LOG_STDERR — also emit each record to stderr (for SIEM / syslog forwarding)
# AUDIT_LOGGING_ENABLED — set false only to disable in dev; must be true in prod
AUDIT_LOG_FILE=./logs/nexus_audit.jsonl
AUDIT_LOG_STDERR=true
AUDIT_LOGGING_ENABLED=true
# ─── Feature Flags ────────────────────────────────────────────────────────────
# Set to "true" to enable each shard at startup.
# Set to "false" (or omit) to leave a shard in "holding pattern" mode.
ENABLE_IDENTITY=true # AD + Entra ID tools
ENABLE_WORKDAY=true # Workday HCM tools
ENABLE_ITSM=true # BMC Helix ITSM tools
ENABLE_ASSETS=true # Lansweeper + Intune tools
ENABLE_LOGISTICS=true # FedEx tools
ENABLE_AUDIT=true # Cross-system drift & reporting tools
# ─── Active Directory / LDAP ─────────────────────────────────────────────────
AD_SERVER=ldap://your-dc.company.com
AD_PORT=389
AD_BASE_DN=DC=company,DC=com
AD_USER=CN=svc_account,OU=Service Accounts,DC=company,DC=com
AD_PASSWORD=your_service_account_password
AD_USE_SSL=false
# ─── Microsoft Entra ID (Azure AD) ───────────────────────────────────────────
ENTRA_TENANT_ID=your_tenant_id
ENTRA_CLIENT_ID=your_client_id
ENTRA_CLIENT_SECRET=your_client_secret
# ─── Microsoft Intune (same app registration as Entra) ───────────────────────
# Uses ENTRA_* vars above by default. Override below if separate app needed.
# INTUNE_TENANT_ID=
# INTUNE_CLIENT_ID=
# INTUNE_CLIENT_SECRET=
# ─── Workday ─────────────────────────────────────────────────────────────────
WORKDAY_BASE_URL=https://wd2-impl-services1.workday.com/ccx/api/v1
WORKDAY_TENANT=your_tenant
WORKDAY_CLIENT_ID=your_client_id
WORKDAY_CLIENT_SECRET=your_client_secret
WORKDAY_REFRESH_TOKEN=your_refresh_token
# ─── BMC Helix (ITSM) ────────────────────────────────────────────────────────
HELIX_BASE_URL=https://your-company.helix.bmc.com
HELIX_USERNAME=your_username
HELIX_PASSWORD=your_password
# ─── Lansweeper ───────────────────────────────────────────────────────────────
LANSWEEPER_API_URL=https://api.lansweeper.com/api/v2/graphql
LANSWEEPER_APPLICATION_ID=your_application_id
LANSWEEPER_APPLICATION_SECRET=your_application_secret
LANSWEEPER_SITE_ID=your_site_id
# ─── FedEx ───────────────────────────────────────────────────────────────────
FEDEX_API_URL=https://apis.fedex.com
FEDEX_API_KEY=your_api_key
FEDEX_API_SECRET=your_api_secret
FEDEX_ACCOUNT_NUMBER=your_account_number
# ─── Reporting ────────────────────────────────────────────────────────────────
REPORT_OUTPUT_DIR=./reports