Skip to content

Quickstart

Start

The fastest repo-backed proof is one approved MCP server manifest, one visible allowed tool, one hidden denied candidate, one allowed call, one denied call, and one audit lookup. This path proves the product boundary without starting production infrastructure.

  • Platform engineers checking the end-to-end governed-call model.
  • Security reviewers looking for allow, deny, hidden discovery, credential mode, and audit evidence.
  • Developers learning the shape of a governed tool before importing their own API.

Use this first when you need proof that the gateway model is more than navigation text:

  • manifest validation happens before registration;
  • registration records the approved server and visible versus hidden tools;
  • the allowed tool call records policy and credential mode;
  • the denied tool is hidden and not routed upstream;
  • audit evidence is keyed by request ID and stays redacted.

Run the source tutorial from the repo root. The important command sequence is:

Terminal window
export REGISTRY=/private/tmp/mcp-first-governed-call-registry.json
go run ./cmd/gatewayctl validate-manifest fixtures/manifests/mcp-server-legal-contract-review.yaml
go run ./cmd/gatewayctl register-server fixtures/manifests/mcp-server-legal-contract-review.yaml --registry "$REGISTRY"
go run ./cmd/gatewayctl call-tool --registry "$REGISTRY" --request fixtures/runtime/m1-tool-call-request.json
go run ./cmd/gatewayctl call-tool --registry "$REGISTRY" --server legal-contract-review --tool contract_escalate --request-id req_m1_002
go run ./tools/mcp-harness eval --only m1-governed-call

Expected behavior:

  • contract_read is visible after registration.
  • contract_escalate remains hidden because it is a denied candidate.
  • the allowed call records policy_decision=allow, credential_mode=service_account, and redacted audit output;
  • the denied call records upstream_attempted=false, credential_mode=none, and a machine reason;
  • the focused eval proves discovery filtering, allowed execution, denied execution, audit events, credential mode evidence, policy version evidence, and secret-free audit output.
  • The manifest is invalid, so registration stops.
  • The registry path is missing or stale in your shell, so subsequent CLI calls cannot see the registered server.
  • The denied candidate returns a non-zero exit by design.
  • A local toolchain is missing Go, Cargo, Node, or npm for broader validation.
  • A public doc must not copy raw customer payloads, tokens, prompt text, response bodies, or private runtime output from a local run.

Type set in Geist, Source Serif 4, and Departure Mono.