使用说明
CaseLaw MCP Server
法律案例检索与分析服务:提供 标准 MCP(stdio) 与 FastAPI REST 双入口,基于上游开源项目 cncases/cases 的裁判文书检索能力,封装为 AI 可调用的工具层。
免责声明:本项目仅供学习与研究,输出内容不构成法律意见。裁判文书数据的版权与使用合规由使用者自行负责。
功能
核心工具(REST 与 MCP 共用同一业务层,当前版本 0.3.0):
| 工具 | 说明 |
|---|---|
search_cases |
关键词 / 案号检索,可叠加法院、案由、类型、日期筛选 |
get_case_detail |
获取案例详情(含全文) |
get_case_segments |
文书分段(facts/opinion/result 或全文 chunk,控 token) |
summarize_case |
生成结构化摘要 |
compare_cases |
多案例对比(2–5 个,并行拉取 + 详情缓存) |
extract_rules |
提取裁判规则 |
数据适配:
- MockAdapter(默认):内置样例数据,开箱即用
- CaseopenAdapter:对接自建 cncases/cases 实例
技术栈
- Python 3.11+
- FastAPI + Uvicorn(REST)
- MCP Python SDK FastMCP(stdio)
- Pydantic v2 + pydantic-settings
- httpx / BeautifulSoup4 + lxml
安装
git clone https://github.com/245678000000/caselaw-mcp-server.git
cd caselaw-mcp-server
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
cp .env.example .env # 可选
快速开始(Mock)
A. REST API
python run.py
# 或: caselaw-api
- 服务状态: http://127.0.0.1:5000/
- Swagger: http://127.0.0.1:5000/docs
- 健康检查: http://127.0.0.1:5000/health
示例:
curl "http://127.0.0.1:5000/api/v1/search?query=合同"
curl --get "http://127.0.0.1:5000/api/v1/search" --data-urlencode "case_number=(2023)京01民终1234号"
curl "http://127.0.0.1:5000/api/v1/search?query=合同&court=北京&case_type=民事"
curl "http://127.0.0.1:5000/api/v1/cases/1001"
curl "http://127.0.0.1:5000/api/v1/cases/1001/segments?max_chars=2000"
curl "http://127.0.0.1:5000/api/v1/cases/1001/segments?sections=facts,result"
B. 标准 MCP(stdio)
python run_mcp.py
# 或: caselaw-mcp
进程通过 stdio 提供 Model Context Protocol,可被 Claude Desktop、Cursor 等客户端直接挂载。
Cursor / Claude Desktop 配置示例
将路径换成你本机仓库绝对路径:
{
"mcpServers": {
"caselaw": {
"command": "/absolute/path/to/caselaw-mcp-server/.venv/bin/python",
"args": ["/absolute/path/to/caselaw-mcp-server/run_mcp.py"],
"env": {
"ADAPTER_TYPE": "mock"
}
}
}
}
使用 caseopen 后端时:
{
"mcpServers": {
"caselaw": {
"command": "/absolute/path/to/caselaw-mcp-server/.venv/bin/python",
"args": ["/absolute/path/to/caselaw-mcp-server/run_mcp.py"],
"env": {
"ADAPTER_TYPE": "caseopen",
"CASEOPEN_BASE_URL": "http://127.0.0.1:8081"
}
}
}
}
对接 caseopen(真实数据)
- 按 cncases/cases 说明自建检索服务(原始数据体量大,通常需要 ≥320GB 磁盘,索引与转换可能耗时数小时)。
- 配置环境变量后启动本服务:
export ADAPTER_TYPE=caseopen
export CASEOPEN_BASE_URL=http://127.0.0.1:8081
python run.py # REST
# 或
python run_mcp.py # MCP stdio
Caseopen 能力与限制(请知悉)
- 上游以关键词
search为主;法院/案由/类型/日期为客户端 best-effort 过滤(在导出窗口内过滤)。 - CSV 导出最多读取
CASEOPEN_EXPORT_MAX_ROWS行(默认 2000),超出时响应truncated=true,total仅反映窗口内匹配数。 - 请求失败(超时 / 5xx / 网络错误)会按
CASEOPEN_MAX_RETRIES重试。 /health的upstream_ok会探测 caseopen 是否可达。
环境变量
见 .env.example:
| 变量 | 默认 | 说明 |
|---|---|---|
ADAPTER_TYPE |
mock |
mock 或 caseopen |
CASEOPEN_BASE_URL |
http://127.0.0.1:8081 |
caseopen 实例地址 |
APP_HOST |
0.0.0.0 |
REST 监听地址 |
APP_PORT |
5000 |
REST 端口 |
LOG_LEVEL |
INFO |
日志级别 |
REQUEST_TIMEOUT |
30.0 |
上游 HTTP 超时(秒) |
CASE_CACHE_SIZE |
256 |
案例详情进程内 LRU 容量;0 关闭 |
CASEOPEN_MAX_RETRIES |
2 |
上游失败重试次数 |
CASEOPEN_EXPORT_MAX_ROWS |
2000 |
CSV/HTML 导出最大行数 |
CASEOPEN_HEALTH_PATH |
/ |
健康检查路径 |
API 端点(REST)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | / |
服务状态 |
| GET | /health |
健康检查 |
| GET | /docs |
Swagger |
| GET | /api/v1/search |
搜索(query 或 case_number + 可选筛选) |
| GET | /api/v1/cases/{id} |
案例详情 |
| GET | /api/v1/cases/{id}/summary |
摘要 |
| GET | /api/v1/cases/{id}/segments |
文书分段 |
| POST | /api/v1/compare |
对比 {"case_ids":[...]} |
| GET | /api/v1/cases/{id}/rules |
规则提取 |
| GET | /mcp/v1/tools |
HTTP 工具清单(历史兼容) |
| POST | /mcp/v1/tools/{name} |
HTTP 调用工具(历史兼容) |
关于 /mcp/v1
/mcp/v1/* 是早期自造的 HTTP 工具接口,不是 Model Context Protocol 的官方传输(stdio / Streamable HTTP / SSE)。
请优先使用 caselaw-mcp / run_mcp.py(stdio) 对接 Agent 客户端。REST 业务 API 仍在 /api/v1。
架构
app/
├── main.py # FastAPI 入口
├── mcp_server.py # 标准 MCP(FastMCP + stdio)
├── factory.py # 适配器 / CaseService 工厂
├── config.py # 环境变量配置
├── adapters/ # mock | caseopen
├── routers/ # REST + legacy HTTP tools
├── schemas/
├── services/ # 搜索筛选、分段、摘要、对比、规则
└── utils/ # 日志、LRU 缓存、筛选辅助
run.py # REST 入口
run_mcp.py # MCP stdio 入口
测试
ADAPTER_TYPE=mock python -m pytest tests/ -v
License
MIT。上游 cncases/cases 及其数据源另有各自许可与使用限制。
