关于 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(模型上下文协议) 服务。让 AI 助手能够访问加拿大所有联邦、省和地区司法辖区的判例法和立法元数据。
Fork 自 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 连接器界面和 claude.ai 网页版): 在 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 连接器界面、claude.ai 网页版 |
| 服务端备用密钥 | (环境变量 CANLII_API) | 可自托管的单租户部署。stdio 必需。 |
| MCP 访问控制 | Authorization: Bearer <MCP_AUTH_TOKEN> | 可选,仅用于自托管。公开托管端点 canlii-mcp.vaquill.ai 不使用此功能,因此无需 bearer 令牌。 |
工具
| 工具 | 描述 |
|---|---|
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
Dashboard 部署(连接到 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 模式下不需要,客户端会在每次请求中携带自己的密钥。 |
PORT | 否 | 3000 | HTTP 服务端口(仅限 HTTP 模式) |
MCP_AUTH_TOKEN | 否 | — | 用于 HTTP 身份验证的 Bearer 令牌。如果设置,所有 HTTP 请求都必须包含 Authorization: Bearer <token>。如果未设置,服务将不启用身份验证。 |
速率限制
服务会自动执行 CanLII 的 API 限制,按 CanLII 密钥分别计算,因此一个调用方的使用量不会限制其他调用方:
- 同一时间 1 个请求
- 每秒 2 个请求
- 每天 5,000 个请求
这些限制与 CanLII 自身按密钥设置的限制一致。每个 X-CanLII-Token 都有独立的配额(以密钥的哈希值作为标识;不会保留原始密钥)。超过每日限制的请求会返回错误,而不会调用 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
社区
有问题、想法,或想参与贡献?加入 Vaquill 社区的 Discord。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。