Skip to content

Connecting a client

Arrowhead speaks the Model Context Protocol over two transports: stdio for local use and streamable HTTP for a deployed server. Local stdio runs with auth off, so every tool is immediately callable; a deployed HTTP server verifies an OAuth 2.1 bearer token and enforces per-caller scopes. Pick the transport your client supports and give it the command or URL below.

The examples run the server from a source checkout with uv. Replace /path/to/arrowhead with your checkout, or swap the command for the published container image: docker run --rm -i -e ARROWHEAD_TRANSPORT=stdio ghcr.io/jagguvarma15/arrowhead:0.2.832.

Set ARROWHEAD_PROFILE to expose only the tool families a client needs: a coding host wants coding, a documentation service docs, and the default full exposes everything. A smaller profile means fewer tools in the client’s context. The exec family stays hidden until ARROWHEAD_EXEC_ENABLED is set, even under the coding or full profile.

Both links register the published container image over stdio; Docker pulls it on first run.

Add to Cursor Install in VS Code

Register the server with the CLI:

Terminal window
claude mcp add arrowhead -- uv run python -m arrowhead.server

For a deployed HTTP server, add it by URL and supply the bearer token:

Terminal window
claude mcp add --transport http arrowhead https://arrowhead.example/mcp \
--header "Authorization: Bearer $TOKEN"

A project generated by the agent-scaffold CLI consumes arrowhead as a streamable-HTTP MCP server in its local docker stack: the docs profile, ARROWHEAD_TRANSPORT=http, and, because every published port is bound to loopback, auth off with ARROWHEAD_ALLOW_INSECURE_HTTP=true. The scaffold writes the servers a recipe declares into an mcp.json registry at the generated project’s root; the generated agent reads that file at boot and registers each server with its framework’s MCP support. No entry carries a secret value, only env var names. A deployed stack replaces the loopback arrangement with the OAuth 2.1 setup, unchanged.

arrowhead list-tools --json prints the exact catalog such an agent will see under the active profile, including input schemas, for recipe authors who want to pin or document the surface.

A client that pins the tool surface it consented to can read the arrowhead://integrity resource, which returns a sha256 digest of the enabled tools, and compare it each session to detect a later change.

Over HTTP the token’s scopes decide which tools are visible. The retrieval tools need vector:search (for vector_query and hybrid_query) and vector:write (for doc_index), and doc_index additionally requires the ingest action to be granted in the per-resource policy, which the default policy denies. The coding families use repo:read and repo:search for the repository tools, assist:run for the model-backed helpers, exec:run plus the execute action for sandboxed execution, and context:read and context:write for the packer and working sets. The tool reference carries the full tool-to-scope mapping, and the security model describes the authorization model.