FND packages · ADRs

Designed as an enterprise product, not a script with tools.

Clear package boundaries: Jenkins HTTP never imports MCP, tools never own raw transport, contracts and error taxonomies are shared.

Layout

Where the weight lives.

cmd/jenkins-mcpProcess entry — stdio default, optional HTTP, admin, gateway, doctor CLIs
internal/jenkinsJenkins client, resilience, pagination, route matrix — no MCP imports
internal/toolsMCP tool registration, budgets, diagnose/compare/survey surfaces
internal/auth · policy · redactIdentity, deny-only RBAC, signed overlays, secret scrubbing
internal/store · archive · logmirrorLocal cache, L1/L2 packs, progressive log materialization
internal/admin · web/adminBFF + embedded React SPA for operators
deploy/local · deploy/gatewayDisposable Docker lab and gateway scaffold
Control planes

Two modes, one binary family.

Local stdio client

Per-user pilot path. Cursor spawns jenkins-mcp serve. Credentials from keyring. RO default. Optional mutations with preview/confirm. This is the supported first production path.

Managed gateway foundation

Team-hosted HTTP path with identity and vault scaffolding. Qualification and multi-tenant mutation isolation remain residual — use for lab / roadmap, not as a silent upgrade claim.

Hard invariants

Architecture decisions you can rely on.

Jenkins is not an AS

ADR 0003 — stock Jenkins is never treated as an OAuth authorization server. External IdP + resource-server path only.

RO + deny-only RBAC

ADR 0004 — global read-only default; overlays deny, they do not invent privilege.

Official MCP Go SDK

ADR 0006 — protocol pin via modelcontextprotocol/go-sdk; contracts stay budgeted (ADR 0010).

Signed policy bundles

ADR 0012 — Ed25519 envelopes for fleet distribution with last-good fallbacks.

Admin SPA embedded

ADR 0014 — reactive admin UI build embedded for single-binary operator flows.

Tool response budgets

Soft 64 KiB targets, hard max ceilings, opaque list pagination — agents cannot request unbounded dumps.

Full ADR index: docs/adr/README.md