Skip to main content
Version: v5.7.0

opschain academy mcp

packs:academy

opschain academy mcp --single-learner [flags]

Serves the learner-side tutor lane: the installed OpsChain Academy agent speaks the Model Context Protocol on this command's standard streams — the transport every MCP client launches a local server with — for the learner-local lane's one learner, over the same data directory opschain academy serve --single-learner uses. Your own Claude Code, Claude Desktop or any MCP client becomes the tutor, on the subscription you already pay for: nothing is paid by the estate or by LimePoint, no model key exists on any server, and the conversation never touches the agent.

The lane is read-only. Its four tools answer where you are and never act:

ToolAnswers
learning_pathevery track with whether it is locked and which pack entitlement unlocks it, every exercise's status, the exercise to work on next
current_exercisethe current (or named) exercise: its outcome, the instructions rendered with the scenario seeded for you alone, the project your work must live in, the references, the evidence class it can earn, attempts and hints shown
exercise_hintsthe hints you already took on the exercise page, and the next one not yet shown — nothing is counted as shown
last_checkthe examiner's last verdicts on the exercise, each with its reason, and what became of the evidence bundle

The tools never start, check or reseed an exercise, never hand out an answer and never carry a credential: you still do the work in OpsChain and press Check my work on the exercise page, where the agent's deterministic examiner alone decides. A shared (co-located) agent refuses the command by name — the lane is per learner, and a learner on a shared lab runs a learner-local agent on their own machine for it. Enrol from the agent's page once before the lane answers.

The launcher wires the product in before the agent starts: the targeted OpsChain server (--server, OPSCHAIN_SERVER or the active context — never local mode) becomes the agent's OPSCHAIN_SERVER, and its OPSCHAIN_ACADEMY_TOKEN is a scoped API token minted under your stored opschain login session for that server (the session proved first, an expired login refused by name, the token revoked when the agent exits — "The credential" in opschain docs cli/academy-serve) — or the OPSCHAIN_ACADEMY_TOKEN you set, handed over as given. The agent only ever reads with it. Without an installed agent, a server target or a credential the command refuses by name; the lane works over the data directory, so the launcher does not ask for --academy-server (the agent release this build pins still refuses to start without one — pass it, or set ACADEMY_AGENT_SERVER, as for serve). Diagnostics go to standard error; standard output carries only protocol messages.

Connecting a client​

Claude Code — claude mcp add academy -- opschain academy mcp --single-learner --academy-server https://academy.limepoint.com, or .mcp.json in the project:

{
"mcpServers": {
"academy": {
"command": "opschain",
"args": ["academy", "mcp", "--single-learner", "--academy-server", "https://academy.limepoint.com"]
}
}
}

Claude Desktop — the same object under mcpServers in claude_desktop_config.json (Settings → Developer → Edit Config). Any other MCP client takes the same command and arguments; an OPSCHAIN_SERVER or OPSCHAIN_ACADEMY_TOKEN the client should pass goes in its env block, and --academy-server and --data-dir must name the same Academy Server and data directory your serve uses.

Flags​

Every flag maps onto the agent's own flag of the same meaning and its ACADEMY_AGENT_* environment variable (a flag wins over the environment; only flags you set are passed). --academy-server is the Academy Server, distinct from the global --server, the OpsChain server the agent reads. --single-learner is required: the lane serves the learner-local lane.

FlagMeaning
--academy-server <url>the Academy Server base URL (ACADEMY_AGENT_SERVER)
--listen <addr>address the learner pages listen on (default 127.0.0.1:8070; ACADEMY_AGENT_LISTEN)
--data-dir <dir>directory for the agent's store, deployment key and pack cache (default <opschain home>/academy; ACADEMY_AGENT_DATA_DIR)
--grant-file <path>file holding the registration grant, read at first run (ACADEMY_AGENT_GRANT_FILE)
--key-file <path>file holding the deployment key seed; default <data-dir>/deployment.key (ACADEMY_AGENT_KEY_FILE)
--single-learnerthe learner-local lane: one learner signing evidence with their own key (ACADEMY_AGENT_SINGLE_LEARNER)
--label <text>label shown to Academy administrators for this agent (ACADEMY_AGENT_LABEL)
--session-ttl <duration>browser sign-in lifetime, e.g. 12h (ACADEMY_AGENT_SESSION_TTL)
--sync-interval <duration>offline queue push and pack refresh interval, e.g. 30s (ACADEMY_AGENT_SYNC_INTERVAL)
`--tutor-provider anthropicopenai`
--tutor-model <id>the tutor model id; the provider's default when empty (ACADEMY_AGENT_TUTOR_MODEL)
--tutor-base-url <url>the tutor provider base URL; the provider's default when empty (ACADEMY_AGENT_TUTOR_BASE_URL)
--tutor-key-env <name>the environment variable holding the tutor model key (default ACADEMY_AGENT_TUTOR_KEY; ACADEMY_AGENT_TUTOR_KEY_ENV)
--secure-cookiesmark the learner session cookie Secure, behind TLS (ACADEMY_AGENT_SECURE_COOKIES)

Examples​

$ opschain academy mcp --single-learner --academy-server https://academy.limepoint.com

Exit codes: the agent's own exit status (1 when the lane is refused: a shared agent, or no learner enrolled yet); 2 when no agent is installed, no server is targeted or no credential is available (the message names the fix).

See also​

  • opschain docs cli/academy-serve — the lane that serves the pages this one reads beside.
  • opschain docs packs-academy — the three tutor lanes and what the licence unlocks.