mcpField
C
CanLII

CanLII

远程服务
github.com/Vaquill-AI法律与政务72 天前更新
代码仓库

关于 CanLII

CanLII 是供 AI 助手使用的 MCP 服务,提供加拿大联邦、省和地区司法辖区的判例与立法元数据。它支持浏览案件和立法,但 API 不提供完整文档正文。

主要功能

  1. 01列出法院和审裁机构数据库
  2. 02浏览案件及案件元数据
  3. 03查询案件引用关系
  4. 04列出法规和条例数据库
  5. 05浏览立法元数据

适用场景

  1. 01查找特定法院或审裁机构的裁决
  2. 02查看案件的引用关系
  3. 03按数据库浏览法规或条例

MCP 相关

向 MCP 客户端开放 CanLII API 工具,用于浏览判例和立法元数据。API 密钥可随请求提供,也可通过服务端配置;无法获取完整文档正文。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://canlii-mcp.vaquill.ai/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://canlii-mcp.vaquill.ai/mcp需要授权

工具

详细介绍

canlii-mcp

面向 CanLII 加拿大法律信息 API 的 MCP(模型上下文协议) 服务。让 AI 助手能够访问加拿大所有联邦、省和地区司法辖区的判例法和立法元数据。

Fork 自 tomilashy/canlii-mcp。此分支新增了自带密钥(BYOK)身份验证、/health 路由,以及托管端点 canlii-mcp.vaquill.ai。工具保持不变。

注意: CanLII API 仅提供元数据——标题、引文、日期、关键词和引文关系。无法通过 API 获取完整的文档正文。

Discord

使用托管端点(无需安装)

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获取特定立法文件的元数据

要求

用法

通过 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)
  1. 前往 Cloudflare Dashboard → Workers & Pages → Create → Connect to Git
  2. 选择你的 tomilashy/canlii-mcp 仓库
  3. 在 Set up your application 页面上:
    • Project name:canlii-mcp
    • Build command:npm install && npm run build
    • Deploy command:npx wrangler deploy(已预填)
  4. 展开 Advanced settings:
    • Variable name:CANLII_API
    • Variable value:你的 CanLII API 密钥
    • 勾选 Encrypt,将其存储为密钥
  5. 点击 Deploy

MCP 端点位于 https://canlii-mcp.<your-subdomain>.workers.dev/mcp。

配置

环境变量必需默认值说明
CANLII_API仅 stdio 和可自托管的单租户模式需要—你的 CanLII API 密钥。在 HTTP 模式下不需要,客户端会在每次请求中携带自己的密钥。
PORT否3000HTTP 服务端口(仅限 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。

评论

支持 Markdown

第一次接触 MCP?

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

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