Skip to main content
Glama

canlii-mcp

Сервер MCP (Model Context Protocol) для API канадской правовой информации CanLII. Предоставляет ИИ-ассистентам доступ к метаданным канадского прецедентного права и законодательства по всем федеральным, провинциальным и территориальным юрисдикциям.

Примечание: API CanLII предоставляет только метаданные — названия, цитирования, даты, ключевые слова и связи между цитированиями. Полный текст документов через API недоступен.

Инструменты

Инструмент

Описание

list_case_databases

Список всех судов и трибуналов в коллекции CanLII

list_cases

Просмотр решений из конкретной базы данных суда/трибунала

get_case

Получение метаданных конкретного дела (название, цитирование, дата, ключевые слова)

get_case_citations

Получение дел, на которые ссылается дело, дел, ссылающихся на него, или законодательства, на которое оно ссылается

list_legislation_databases

Список всех баз данных статутов и нормативных актов

list_legislation

Просмотр статутов или нормативных актов из конкретной базы данных

get_legislation

Получение метаданных конкретного законодательного акта

Related MCP server: courtlistener-mcp

Требования

Использование

stdio через npx (самый быстрый способ)

{
  "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)

  1. Перейдите в панель управления Cloudflare → 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: ваш API-ключ CanLII

    • Установите флажок Encrypt, чтобы сохранить его как секрет

  5. Нажмите Deploy

Эндпоинт MCP будет доступен по адресу https://canlii-mcp.<your-subdomain>.workers.dev/mcp.

Конфигурация

Переменная окружения

Обязательно

По умолчанию

Описание

CANLII_API

Да

—

Ваш API-ключ CanLII

PORT

Нет

3000

Порт HTTP-сервера (только в режиме HTTP)

MCP_AUTH_TOKEN

Нет

—

Bearer-токен для HTTP-аутентификации. Если задан, все HTTP-запросы должны включать Authorization: Bearer <token>. Если не задан, сервер работает без аутентификации.

Ограничения частоты запросов (Rate Limits)

Сервер автоматически соблюдает лимиты API CanLII:

  • 1 запрос за раз

  • 2 запроса в секунду

  • 5 000 запросов в день

Запросы, превышающие дневной лимит, возвращают ошибку, не обращаясь к API.

Разработка

npm install
npm run build      # compile TypeScript
npm run watch      # watch mode

Релиз

Этот проект использует семантическое версионирование через semantic-release. Сообщения коммитов следуют спецификации 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

Available Tools

7 tools
get_caseGet CaseA
Read-only
Inspect

Get metadata for a specific case including title, citation, decision date, keywords, and URL.

Inputs: caseId (required), databaseId (required), language.

get_case_citationsGet Case CitationsA
Read-only
Inspect

Get citation information for a case: what it cites, what cites it, or what legislation it references. Note: the CanLII API currently only supports English for this endpoint; French requests will fall back to English.

Inputs: caseId (required), citationType (required), databaseId (required), language.

get_legislationGet LegislationA
Read-only
Inspect

Get metadata for a specific piece of legislation including title, citation, dates, and repeal status.

Inputs: databaseId (required), legislationId (required), language.

list_case_databasesList Case DatabasesA
Read-only
Inspect

List all courts and tribunals in the CanLII collection with their database IDs.

Inputs: language.

list_casesList CasesB
Read-only
Inspect

List decisions from a specific caselaw database. Returns case titles, citations, and IDs.

Inputs: databaseId (required), decisionDateAfter, decisionDateBefore, language, +4 more.

list_legislationList LegislationA
Read-only
Inspect

List statutes or regulations from a specific legislation database.

Inputs: databaseId (required), language.

list_legislation_databasesList Legislation DatabasesA
Read-only
Inspect

List all legislation and regulation databases in the CanLII collection.

Inputs: language.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool targets a distinct operation: retrieving specific case metadata, case citations, legislation, or listing various databases and documents. No functional overlap exists.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern using snake_case, e.g., get_case, list_cases, get_legislation, making the API predictable.

    Tool Count4/5

    7 tools is well-scoped for a legal database API, covering core retrieval and listing operations. Slightly on the smaller side but still appropriate.

    Completeness3/5

    The set covers basic CRUD-like read operations for cases and legislation, but lacks search/full-text query capabilities, which are common in legal research APIs.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      MCP server giving AI agents structured access to Canadian federal, provincial, and municipal government data.
      4
      5
      53 PyPI
      62
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      LegalMCP is a comprehensive US legal MCP server that enables AI assistants to search over 4 million US court opinions, manage Clio practice data, and access PACER federal filings through natural language.
      18
      69
      MIT