Swiss Caselaw MCP Server

使用说明(Markdown 格式)

  • 项目简介

    • 该仓库实现了一个 MCP 服务器,遵循 MCP 的核心请求/响应模式,提供工具集供 LLM 客户端调用(如搜索判例、获取判决文本、统计信息、查找引用等),并通过标准输入输出进行 JSON-RPC 通信。
  • 主要功能点

    • 实现 MCP 协议核心接口,包括初始化、工具列表查询、工具调用,以及初始化通知等基础交互。
    • 提供以下工具:
      • search_caselaw:对瑞士联邦法院及 cantonal 法院的判决进行全文检索,支持语言、 canton、法院等级、日期范围等过滤。
      • get_decision:获取指定判决的完整文本与元数据。
      • get_caselaw_statistics:获取数据库统计信息(如总数、日期区间、语言/ canton/ 等分布)。
      • find_citing_decisions:查找引用特定判决的后续判决。
      • analyze_search_results:对匹配查询的结果进行分析汇总(按年份、 canton、等级、语言、法院等分组),并附带重点判决清单。
    • 数据来源:本地 SQLite 数据库 caselaw.sqlite,数据库路径可通过 CASELAW_DB_PATH 环境变量或在默认位置自动定位。
    • 传输方式:MCP 通过标准输入输出(stdio)进行 JSON-RPC 请求/响应,支持初始化、工具查询、工具执行及通知。
    • 错误处理:对无效工具名、执行错误等场景给出明确的 JSON-RPC 错误响应,便于上层 LLM 客户端解析。
  • 安装与运行步骤

    • 确认运行环境
      • 需要 Python 3.x 环境(仓库使用的仅是标准库,无额外依赖)。
    • 数据库准备
      • 将 caselaw.sqlite 数据库放置在可访问的路径上,或通过 CASELAW_DB_PATH 环境变量指向数据库文件。
      • 如未设置 CASELAW_DB_PATH,服务器将按默认搜索顺序在 macOS、Linux 等常见位置查找,若仍未找到则会提示需要提供数据库。
    • 启动服务器
      • 直接运行 mcp_server/server.py 即可启动,若要指定数据库路径,请设置环境变量 CASELAW_DB_PATH,例如在 Linux/macOS 下: CASELAW_DB_PATH=/absolute/path/to/caselaw.sqlite python3 mcp_server/server.py
    • 服务器与 MCP 客户端的对接要点
      • MCP 客户端(如 Claude Code)需要提供服务器的启动信息(命令与参数)以建立连接。以下提供一个示例配置,客户端无需实现服务器端逻辑。
  • 服务器配置示例(JSON,供 MCP 客户端参考使用) { "server_name": "swiss-caselaw", "command": "python3", "args": ["/absolute/path/to/caselaw-repo/mcp_server/server.py"], "env": { "CASELAW_DB_PATH": "/absolute/path/to/caselaw-repo/caselaw.sqlite" }, "notes": "CASELAW_DB_PATH 指向 caselaw.sqlite 数据库;若未设置该变量,服务器将按默认路径尝试定位数据库(macOS: ~/Library/Application Support/swiss-caselaw/caselaw.sqlite;Linux: ~/.local/share/swiss-caselaw/caselaw.sqlite),也可用绝对路径覆盖。" }

  • 基本使用方法(简化流程)

    • 启动后,MCP 客户端可以通过初始化握手获取服务器能力、列出可用工具、再按需调用具体工具(如 search_caselaw、get_decision 等)。
    • 客户端消息格式遵循 MCP JSON-RPC,不需要实现传输层逻辑,客户端只需要提供正确的命令、参数与请求结构即可。
    • 常见工作流:先初始化、获取工具列表,然后调用 search_caselaw 进行检索,得到结果后可调用 get_decision 获取全文、再结合 analyze_search_results/ find_citing_decisions 等工具扩展分析。

服务器信息