mcpField
C
canlii

canlii

本地服务
github.com/mohammadfarooqi法律与政务629 周前更新

关于 canlii

canlii 是通过 CanLII API 提供加拿大法律资料检索的 MCP 服务,适用于法律研究人员。它支持英法双语搜索,并可查询判例引用关系及浏览法规。

主要功能

  1. 01按关键词搜索判例和法规
  2. 02浏览法院、案件及法规数据库
  3. 03查询案件元数据与引用关系
  4. 04提供英法双语工具
  5. 05内置 API 请求限速

适用场景

  1. 01查找特定法律议题的加拿大判例
  2. 02浏览省级或联邦法规
  3. 03检查后续案件对某判例的引用
  4. 04获取案件引文、日期及 CanLII 链接

MCP 相关

该 MCP 服务通过工具向客户端开放 CanLII 案例搜索、案件与法规浏览、元数据查询及引文查询。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mohammadfarooqi-canlii": {
"command": "npx",
"args": [
"-y",
"canlii-mcp"
],
"env": {
"CANLII_API_KEY": "<CANLII_API_KEY>"
}
}
}
}
启动命令npx -y canlii-mcp
需要配置的环境变量
CANLII_API_KEY密钥Your CanLII API key (request free at canlii.org/en/feedback/feedback.html)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcanlii-mcp1.1.4

工具

9

收录的工具列表 · 更新于 2 周前

参数类型必填说明
querystring是全文搜索查询。可包含判例名称、法律概念、法规引用或关键词。
offsetnumber否分页偏移量(默认值为 0)。用于翻页浏览结果。
languageenum否语言:'en' 表示英语(默认),'fr' 表示法语en | fr
resultCountnumber否要返回的结果数(1-100,默认值为 10)。为提高 AI 上下文效率,请保持较低值。

详细介绍

CanLII MCP 服务

npm version License: MIT

一个通过 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。

典型研究工作流

  1. 搜索 — 使用 search({ query: "gatekeeping parenting time" }) 查找相关案例
  2. 获取详情 — 使用 get_case_metadata(...) 获取完整引用和 CanLII URL
  3. 检查引用 — 使用 get_case_citator(..., metadataType: "citingCases") 确认该案例是否仍具法律效力
  4. 阅读裁决 — 点击 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 工具让加拿大法律研究更加便捷。

贡献方式:

  • 报告错误或意外的 API 行为 — 提交 issue
  • 提出新工具或改进建议 — 发起讨论
  • 提交包含修复或新功能的 PR

提交 PR:

  1. Fork 此仓库
  2. 创建功能分支(git checkout -b feature/my-improvement)
  3. 进行修改并在本地测试(npm run build && CANLII_API_KEY=your_key npm run start)
  4. 提交更改并推送到你的 fork
  5. 发起 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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。