关于 canlii
canlii 是通过 CanLII API 提供加拿大法律资料检索的 MCP 服务,适用于法律研究人员。它支持英法双语搜索,并可查询判例引用关系及浏览法规。
主要功能
- 01按关键词搜索判例和法规
- 02浏览法院、案件及法规数据库
- 03查询案件元数据与引用关系
- 04提供英法双语工具
- 05内置 API 请求限速
适用场景
- 01查找特定法律议题的加拿大判例
- 02浏览省级或联邦法规
- 03检查后续案件对某判例的引用
- 04获取案件引文、日期及 CanLII 链接
MCP 相关
该 MCP 服务通过工具向客户端开放 CanLII 案例搜索、案件与法规浏览、元数据查询及引文查询。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
9收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | 全文搜索查询。可包含判例名称、法律概念、法规引用或关键词。 |
| offset | number | 否 | 分页偏移量(默认值为 0)。用于翻页浏览结果。 |
| language | enum | 否 | 语言:'en' 表示英语(默认),'fr' 表示法语en | fr |
| resultCount | number | 否 | 要返回的结果数(1-100,默认值为 10)。为提高 AI 上下文效率,请保持较低值。 |
详细介绍
CanLII MCP 服务
一个通过 CanLII API 搜索加拿大法律信息的 Model Context Protocol (MCP) 服务。可从 Claude Desktop 或 Claude Code 搜索案例、浏览法规并查询引用。
npx canlii-mcp
功能
- 全文搜索 — 按关键词、案例名称或法律概念搜索 CanLII 的全部内容
- 案例引用查询 — 查找后续引用某个案例的案例,以确认该案例是否仍具法律效力
- 法规浏览 — 按司法辖区浏览法规和条例
- 双语支持 — 所有工具(包括引用查询)均支持英语和法语
- 9 个工具 — 搜索、浏览法院、浏览案例、案例元数据、完整引用查询、引用预览、法规数据库、浏览法规、法规元数据
- 内置速率限制 — 串行请求队列遵守 CanLII 的 API 限制(每秒 2 个请求、同时 1 个请求、每天 5,000 个请求)
- 输入验证 — 所有参数均经过正则表达式验证并进行 URI 编码,以防止注入
- 精简轻量 — 仅有 2 个运行时依赖、约 500 行代码,以本地 stdio 进程运行
- 安全优先 — 不访问文件系统、不执行 shell 命令,且仅连接到
api.canlii.org
快速开始
前提条件: Node.js 18+ 和一个 CanLII API 密钥(研究用途免费)。
Claude Desktop — 将以下内容添加到配置文件(macOS 上为 ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"canlii": {
"command": "npx",
"args": ["-y", "canlii-mcp"],
"env": {
"CANLII_API_KEY": "your_api_key_here"
}
}
}
}
保存后重启 Claude Desktop。
Claude Code:
claude mcp add canlii -e CANLII_API_KEY=your_key -- npx -y canlii-mcp
从源代码运行(用于开发):
git clone https://github.com/mohammadfarooqi/canlii-mcp.git
cd canlii-mcp
npm install && npm run build
可用工具(9 个)
search
在 CanLII 的全部内容中进行关键词全文搜索,包括案例、法规和评论。这是法律研究的主要入口。
search({ query: "material change in circumstances Ontario", resultCount: 10 })
get_courts_and_tribunals
列出所有可用的法院和法庭数据库。返回其他工具所需的数据库 ID。
安大略省的主要数据库:onsc(高等法院)、onca(上诉法院)、oncj(司法法院)、csc-scc(加拿大最高法院)。
get_case_law_decisions
浏览特定法院数据库中的判例,按最近添加的顺序排列。支持日期筛选。
get_case_law_decisions({ databaseId: "onsc", resultCount: 20 })
get_case_metadata
获取特定案例的完整详情 — 引用、裁决日期、案号、关键词,以及用于阅读完整裁决的 CanLII URL。
get_case_metadata({ databaseId: "onsc", caseId: "2021onsc8582" })
get_case_citator
查询案例之间的引用关系。使用 citingCases 检查某个案例是否仍具法律效力。
get_case_citator({ databaseId: "csc-scc", caseId: "1996canlii190", metadataType: "citingCases" })
get_case_citator_tease
快速预览引用,最多返回 5 条结果。快速检查时比完整引用查询更快。
get_case_citator_tease({ databaseId: "csc-scc", caseId: "1996canlii190", metadataType: "citingCases" })
get_legislation_databases
列出所有法规数据库。安大略省:ons(法规)、onr(条例)。联邦:cas(法规)、car(条例)。
browse_legislation
列出特定数据库中的法规条目。
browse_legislation({ databaseId: "ons" })
get_legislation_regulation_metadata
获取特定法规或条例的元数据,包括其 CanLII URL。
典型研究工作流
- 搜索 — 使用
search({ query: "gatekeeping parenting time" })查找相关案例 - 获取详情 — 使用
get_case_metadata(...)获取完整引用和 CanLII URL - 检查引用 — 使用
get_case_citator(..., metadataType: "citingCases")确认该案例是否仍具法律效力 - 阅读裁决 — 点击 CanLII URL,在 canlii.org 上阅读全文
API 速率限制
根据 CanLII 的 API 条款:
- 每天 5,000 次查询
- 每秒 2 个请求
- 一次 1 个请求
- 仅可访问元数据 — 无法通过 API 获取完整文档文本
服务内置了速率限制器,会自动执行这些限制。
开发
npm run build # Compile TypeScript
npm run start # Run the server (needs CANLII_API_KEY env var)
项目结构
src/
index.ts # MCP server — tools, rate limiter, stdio transport
schema.ts # Zod schemas for CanLII API responses
贡献
欢迎贡献!本项目旨在通过 AI 工具让加拿大法律研究更加便捷。
贡献方式:
提交 PR:
- Fork 此仓库
- 创建功能分支(
git checkout -b feature/my-improvement) - 进行修改并在本地测试(
npm run build && CANLII_API_KEY=your_key npm run start) - 提交更改并推送到你的 fork
- 发起 pull request,并说明修改内容和原因
如果你发现 CanLII API 响应存在问题、架构不匹配,或有助于法律研究人员的新工具构想,请提交 issue — 即使你不确定如何修复也没关系。我们会一起调查。
安全
此服务旨在保持透明且精简:
- 仅连接到
api.canlii.org— 不进行其他网络调用,不收集遥测数据或分析信息 - API 密钥保留在本地 — 通过环境变量传入,绝不会记录或包含在响应中
- 验证所有输入 — 使用前会通过正则表达式验证数据库 ID、案件 ID 和日期;路径段会进行 URI 编码
- 验证所有 API 响应 — 返回前会通过 Zod 架构进行解析
- 不访问文件系统 — 此服务只向 CanLII 发起 HTTPS 调用
- 不执行 Shell 命令 — 不使用
child_process、exec或spawn - 2 个运行时依赖项 —
@modelcontextprotocol/sdk(Anthropic 官方 MCP SDK)和zod(架构验证) - 内置速率限制器 — 串行请求队列可防止滥用 API
- 采用 MIT 许可证,完全开源 — 可在 src/index.ts(约 350 行)和 src/schema.ts(约 140 行)阅读每一行代码
如果你发现安全问题,请参阅 SECURITY.md。
已知限制
- 不提供判决正文 — 支持全文搜索(搜索案件标题、引文和内容),但 API 无法返回判决全文。你必须点击 CanLII URL,前往 canlii.org 阅读判决。段落编号和直接引语需要通过阅读原文核实。
- 搜索基于关键词,而非语义 — 像“mother gatekeeping sole decision-making”这样的查询可能会返回各种结果。请调整查询,并在查看元数据前核对案件标题。
- 搜索结果不包含案件详情 — 搜索仅返回引文和标题。你需要为每个案件单独调用
get_case_metadata,以获取关键词、主题、判决日期和 CanLII URL。 - 不提供判例引用处理情况指标 — 引证分析工具会显示哪些案件引用了某项判决,但不会说明该判决是被遵循、区分还是推翻。你需要阅读引用该判决的案件来确定其处理情况。
- 引证分析预览最多显示 5 条结果 — 如需全面分析引证,请使用
get_case_citator(完整版)。 - 搜索没有数据库/司法管辖区筛选条件 — 无法在服务端将搜索结果限制在特定法院或省份;请改为在查询中添加司法管辖区关键词(例如,搜索“custody Ontario”,而不是仅搜索“custody”)。
- 搜索端点未记录在官方文档中 — 该端点目前可用,但未列入 CanLII 官方 API 文档,因此可能在不另行通知的情况下发生变化。
- 速率限制严格 — 每日 5,000 次查询,每秒 2 个请求,最多 1 个并发请求(由内置速率限制器自动强制执行)。
许可证
MIT — 详见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。