CanLII について
CanLIIは、カナダの連邦・州・準州の判例や立法のメタデータをAIアシスタントに提供するMCPサーバーです。案件や立法を検索できますが、APIから文書の全文は取得できません。
主な機能
- 01裁判所・審判機関のデータベース一覧
- 02判例と案件メタデータの閲覧
- 03判例の引用関係を取得
- 04法律・規則データベースの一覧
- 05立法メタデータの閲覧
活用シーン
- 01特定の裁判所や審判機関の判断を探す
- 02案件の引用関係を確認
- 03データベース別に法律や規則を閲覧
MCP 対応
MCPクライアントにCanLII APIのツールを公開し、判例と立法のメタデータを検索できるようにします。APIキーはリクエストごと、またはサーバー設定で指定でき、文書の全文は取得できません。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://canlii-mcp.vaquill.ai/mcpclaude mcp add --transport http vaquill-ai-canlii https://canlii-mcp.vaquill.ai/mcp{"mcpServers":{"vaquill-ai-canlii":{"type":"http","url":"https://canlii-mcp.vaquill.ai/mcp"}}}Cursor で開く{"servers":{"vaquill-ai-canlii":{"type":"http","url":"https://canlii-mcp.vaquill.ai/mcp"}}}VS Code で開く{"mcpServers":{"vaquill-ai-canlii":{"type":"http","url":"https://canlii-mcp.vaquill.ai/mcp"}}}{"mcpServers":{"vaquill-ai-canlii":{"serverUrl":"https://canlii-mcp.vaquill.ai/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://canlii-mcp.vaquill.ai/mcp認証が必要ツール
詳細
canlii-mcp
CanLII のカナダ法律情報 API 用 MCP(Model Context Protocol) サーバーです。AI アシスタントが、連邦、州、準州のすべての管轄区域におけるカナダの判例法および法令のメタデータにアクセスできるようにします。
フォーク元:tomilashy/canlii-mcp。このフォークでは、キー持ち込み(BYOK)認証、
/healthルート、canlii-mcp.vaquill.aiのホスト型エンドポイントが追加されています。ツールに変更はありません。
注: CanLII API が提供するのは、タイトル、引用、日付、キーワード、引用関係などのメタデータのみです。API から文書全文を取得することはできません。
ホスト型エンドポイントを使う(インストール不要)
https://canlii-mcp.vaquill.ai/mcp
ホスト型インスタンスは公開されています。Vaquill トークンは不要です。以下のいずれかの方法で、自分の CanLII キーを指定してください。
-
ヘッダー(推奨。キーが URL に含まれません):
X-CanLII-Token: <your_canlii_api_key> -
URL パラメーター(最も簡単。Claude Desktop コネクター UI や claude.ai web など、ヘッダーに対応していないクライアントでも使えます): URL に
?token=<your_canlii_api_key>を追加します。https://canlii-mcp.vaquill.ai/mcp?token=YOUR_CANLII_API_KEY
CanLII API リクエストフォームからキーを申請してください。サーバーがキーを保存することはなく、サーバー側のフォールバックキーもないため、すべての呼び出しがご自身の CanLII 利用枠に加算されます。
Claude Desktop / Claude Code
{
"mcpServers": {
"canlii": {
"url": "https://canlii-mcp.vaquill.ai/mcp",
"headers": {
"X-CanLII-Token": "YOUR_CANLII_API_KEY"
}
}
}
}
Cursor / VS Code / Windsurf
同じ方法で設定できます。カスタムヘッダー付きの MCP ストリーミング可能 HTTP に対応するクライアントなら、どれでも動作します。stdio のみに対応するクライアントでは、mcp-remote を使ってプロキシしてください。
認証
| モード | ヘッダー | 用途 |
|---|---|---|
| BYOK ヘッダー(推奨) | X-CanLII-Token: <key> | ホスト型/共有デプロイ |
| BYOK URL パラメーター | ?token=<key>(または ?canlii_token=) | Claude Desktop コネクター UI、claude.ai web など、ヘッダーに対応していないクライアント |
| サーバーフォールバック | (env CANLII_API) | セルフホストの単一テナント環境。stdio では必須です。 |
| MCP ゲート | Authorization: Bearer <MCP_AUTH_TOKEN> | 任意。セルフホスト専用です。canlii-mcp.vaquill.ai の公開ホスト型エンドポイントでは使用しないため、ベアラートークンは不要です。 |
ツール
| ツール | 説明 |
|---|---|
list_case_databases | CanLII コレクションに含まれるすべての裁判所および審判機関を一覧表示します |
list_cases | 特定の裁判所/審判機関のデータベースから判決を閲覧します |
get_case | 特定の事件のメタデータ(タイトル、引用、日付、キーワード)を取得します |
get_case_citations | ある事件が引用した事件、その事件を引用した事件、またはその事件が参照する法令を取得します |
list_legislation_databases | すべての制定法および規則のデータベースを一覧表示します |
list_legislation | 特定のデータベースから制定法または規則を閲覧します |
get_legislation | 特定の法令のメタデータを取得します |
必要条件
- Node.js 22+
- CanLII API キー — こちらから申請
使い方
npx 経由の stdio(最速)
{
"mcpServers": {
"canlii": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@tomilashy/canlii-mcp"],
"env": {
"CANLII_API": "your_api_key"
}
}
}
}
stdio(ソースから)
npm install
npm run build
node dist/index.js
MCP 設定に追加します。
{
"mcpServers": {
"canlii": {
"command": "node",
"args": ["/path/to/canlii-mcp/dist/index.js"],
"env": {
"CANLII_API": "your_api_key"
}
}
}
}
HTTP サーバー
PORT=3000 CANLII_API=your_api_key node dist/index.js --transport http
MCP エンドポイントは http://localhost:3000/mcp で利用できます。サーバーはステートレスモードで動作します。各リクエストは独立しており、セッション ID や初期化ハンドシェイクは不要です。クライアントはツールを直接呼び出せます。
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_case_databases","arguments":{"language":"en"}}}'
Docker
docker run -e CANLII_API=your_api_key -e MCP_AUTH_TOKEN=your_secret -p 3000:3000 ghcr.io/tomilashy/canlii-mcp
または Docker Compose を使用します。
services:
canlii-mcp:
image: ghcr.io/tomilashy/canlii-mcp
environment:
CANLII_API: your_api_key
MCP_AUTH_TOKEN: your_secret # optional
ports:
- "3000:3000"
Cloudflare Workers
このサーバーには Workers 互換のエントリーポイント(src/worker.ts)が含まれています。
CLI でデプロイ
npx wrangler secret put CANLII_API
npx wrangler secret put MCP_AUTH_TOKEN # optional
npx wrangler deploy
ダッシュボードからデプロイ(Git に接続)
- Cloudflare Dashboard → Workers & Pages → Create → Connect to Git に移動します
tomilashy/canlii-mcpリポジトリを選択します- Set up your application ページで、次のように設定します。
- Project name:
canlii-mcp - Build command:
npm install && npm run build - Deploy command:
npx wrangler deploy(事前入力済み)
- Project name:
- Advanced settings を展開します。
- Variable name:
CANLII_API - Variable value:CanLII API キー
- Encrypt にチェックを入れて、シークレットとして保存します
- Variable name:
- Deploy をクリックします
MCP エンドポイントは https://canlii-mcp.<your-subdomain>.workers.dev/mcp になります。
設定
| 環境変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
CANLII_API | stdio およびセルフホストのシングルテナントでのみ必要 | — | CanLII API キーです。HTTP モードでは不要です。HTTP モードでは、クライアントがリクエストごとに独自のキーを指定します。 |
PORT | いいえ | 3000 | HTTP サーバーのポート(HTTP モードのみ) |
MCP_AUTH_TOKEN | いいえ | — | HTTP 認証用のベアラートークンです。設定した場合、すべての HTTP リクエストに Authorization: Bearer <token> を含める必要があります。設定しない場合、サーバーは認証なしで動作します。 |
レート制限
サーバーは CanLII の API 制限を CanLII キーごと に自動適用するため、ある呼び出し元の利用状況が別の呼び出し元をスロットリングすることはありません。
- 同時に処理できるリクエストは 1 件
- 1 秒あたり 2 リクエスト
- 1 日あたり 5,000 リクエスト
これらは CanLII 独自のキーごとの制限に準じています。各 X-CanLII-Token には独立した利用枠が割り当てられます(キーのハッシュを使って識別し、キーの生データは保持しません)。1 日の制限を超えたリクエストは、API に送信されず、エラーを返します。
開発
npm install
npm run build # compile TypeScript
npm run watch # watch mode
リリース
このプロジェクトでは、semantic-release を使用し、Semantic Versioning に従ってバージョンを管理しています。コミットメッセージは Conventional Commits の仕様に従います。
| コミットのプレフィックス | リリースの種類 |
|---|---|
fix: | パッチ(1.0.0 → 1.0.1) |
feat: | マイナー(1.0.0 → 1.1.0) |
feat!: または BREAKING CHANGE | メジャー(1.0.0 → 2.0.0) |
main へのプッシュにより、リリースワークフローが実行されます。リリースが作成されると、Docker イメージが自動的にビルドされ、ghcr.io に公開されます。
ライセンス
MIT
コミュニティ
質問やアイデアがある方、または貢献したい方は、Discord で Vaquill コミュニティに参加してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。