The CanLII MCP server gives AI assistants access to the CanLII Canadian legal information API - case law and legislation metadata across all federal, provincial, and territorial jurisdictions, in English and French. Vaquill hosts a public instance with bring-your-own-key (BYOK) auth, so your CanLII token is forwarded on every request and never stored. US-focused teams use this when they need a Canadian comparator for cross-border matters.Documentation Index
Fetch the complete documentation index at: https://vaquill.ai/docs/llms.txt
Use this file to discover all available pages before exploring further.
GitHub
Source code, Docker, Workers entry
CanLII API
Upstream API docs
Hosted endpoint
canlii-mcp.vaquill.aiForked from tomilashy/canlii-mcp. The Vaquill fork adds BYOK auth, a
/health route, and a hosted endpoint. Tools are unchanged.Quickstart
Apply for a CanLII API key
Submit the form at canlii.org/en/feedback. Approval typically takes a few business days.
Get an MCP gate token
The hosted endpoint is gated by a bearer token to keep load predictable. Email contact@vaquill.ai to request access, or self-host (see below) if you would rather skip the gate.
Point your client at the hosted endpoint
URL:
https://canlii-mcp.vaquill.ai/mcpHeaders:Authorization: Bearer <MCP_AUTH_TOKEN>X-CanLII-Token: <your-canlii-key>
Client setup
Tools
Seven tools across case law and legislation:Case law
| Tool | Description |
|---|---|
list_case_databases | List all courts and tribunals in the CanLII collection (federal, provincial, territorial) |
list_cases | Browse decisions from a specific court or tribunal database |
get_case | Metadata for a single case - title, citation, date, language, keywords |
get_case_citations | Citation graph - cases cited by, cases citing it, and legislation referenced |
Legislation
| Tool | Description |
|---|---|
list_legislation_databases | List all statute and regulation databases |
list_legislation | Browse statutes or regulations from a specific database |
get_legislation | Metadata for a single piece of legislation |
Authentication
| Mode | Header / env | When |
|---|---|---|
| BYOK (preferred) | X-CanLII-Token: <key> | Hosted or shared deployments |
| Server fallback | CANLII_API env var | Self-hosted single-tenant. Required for stdio. |
| MCP gate | Authorization: Bearer <MCP_AUTH_TOKEN> | Restricts who may use the hosted endpoint |
Self-hosting
Requires Node.js 22+.stdio (from source)
HTTP server
Docker
Cloudflare Workers
The repo ships a Workers-compatible entry point (src/worker.ts).
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
CANLII_API | Yes (server-side) | - | Your CanLII API key. Not needed when callers send X-CanLII-Token. |
PORT | No | 3000 | HTTP server port (HTTP mode only) |
MCP_AUTH_TOKEN | No | - | Bearer token for HTTP authentication. If set, all HTTP requests must include Authorization: Bearer <token>. If unset, the server runs without auth. |
Rate limits
The server enforces CanLII’s published limits automatically:- 1 concurrent request
- 2 requests per second
- 5,000 requests per day (hard cap)
Usage examples
Type these to any connected AI assistant:“List all federal courts and tribunals in Canada.” “Find Supreme Court of Canada decisions on Charter section 7 from 2023.” “Get the citation network for R v Jordan 2016 SCC 27 - which cases cite it and what legislation does it reference?”For US versus Canada comparison work:
“For each Charter section 8 case in the last five years, find the closest US Fourth Amendment analogue using the CourtListener MCP.”
“Pull the metadata for the federal Criminal Code, then list the most recent amendments.”
Related
MCP overview
All Vaquill MCP servers at a glance
Vaquill MCP
Cross-jurisdiction wrapper over the Vaquill API
CourtListener MCP
US federal and state case law and eCFR
Integrations
Chatbots, widgets, browser extensions, automation
Authentication
How Vaquill handles auth across products

