LabDNS
v1.4.1Authoritative lab DNS with overrides, wildcards, suffix forwarding, bounded chaos, and an embedded operator console. YAML desired state; REST, MCP, and UI on the management plane.
MCP Integration Lab stands up DNS, LDAP, TACACS+, RADIUS, mail, NFS, HTTP intercept, NTP, and SSO behind a single MCP endpoint. Configuration is YAML and lives in a profile. Runtime state is ephemeral and a restart wipes it.
{
"mcpServers": {
"integration-lab": {
"url": "http://<lab-host>:8080/mcp",
"headers": {
"Authorization": "Bearer <secrets/mcp-client-token>"
}
}
}
}
Three compose projects meet on mcplab-shared (one /24). Gateway registration is tmpfs. Profiles are the source of truth. Published numbers below are today's default profile: 10053, 3389/3636, 1025, and 20490 are residual (policy is IANA dests 53, 389/636, 25, 2049, HTTPS 443 for LabSSO). TacLab is already native. LabSSO is dest-443. LabMITM is a forward proxy, not dest 443.
Each appliance is a real protocol on the wire. Agents talk to the gateway. Testers talk to the data planes.
Authoritative lab DNS with overrides, wildcards, suffix forwarding, bounded chaos, and an embedded operator console. YAML desired state; REST, MCP, and UI on the management plane.
Native Go directory (labldapd) plus a control plane. Real LDAP/LDAPS on the wire, REST, MCP, and a browser UI.
TACACS+ (legacy + TLS 1.3) and RADIUS lab appliance. REST, MCP, and an embedded operator UI.
Receive-only SMTP sink with an inbox UI, maildev /email compat, native /v1, and MCP. Compose service name stays maildev.
Laboratory HTTP(S) intercepting forward proxy with a flow-inspector UI, native /v1, and MCP. Data plane is unauthenticated; HTTPS intercept is :443 only.
Laboratory NTPv3/v4 unicast with per-IP virtual clocks, an operator console, native /v1, and MCP. Host UDP default is 10123 (ADR 0014); privileged 123 is opt-in. SPA Origins are deny-all.
Laboratory OIDC/OAuth2 and SAML IdP with vendor clothes, an operator console, native /v1, and MCP. Host HTTPS is dest-443; management is 18443. Catalog issuer URLs omit :443.
Archive-backed userspace NFSv3 export with a write overlay. Empty-root .tar.zst; commits every 15m. NFSv4.1 is in the package; this lab stays on v3.
First-party service directory. Agents ask endpoints_list for web/REST URLs and connections_list for protocol client config before they spelunk.
First-party LabScenario orchestrator. Applies profile YAML across appliances via native plan/apply/reset. Named fixture packs at labgraph://fixtures/{id} and fixture.apply. REST, MCP, and an operator console. Empty default scenario is a no-op.
Single streamable-HTTP MCP gateway with tool groups and optional enterprise ACLs. Operator dashboard is GET / in development mode only.
Docker Engine 24+ with Compose v2.24.4+, GNU make, and Go 1.26+. First run vendors the service repos and builds images.
git clone https://github.com/hilather/mcp-integration-lab.git
cd mcp-integration-lab
make up
make smoke
# url: http://<lab-host>:8080/mcp
# Authorization: Bearer $(cat secrets/mcp-client-token)