使用说明
法庭监听MCP服务器
MCP(模型上下文协议)服务器,提供AI代理访问 法庭听众 全面的法律数据库,具有语义搜索、混合搜索、引文验证和研究工具等功能。
旨在通过本地系统存储和运行时与OpenCode和Claude Code一起使用。Vibe采用克劳德编码。
为什么是这个项目?
此MCP服务器是 首先实现CourtListener的语义搜索API (2025年11月发布),通过矢量嵌入实现自然语言法律研究。虽然CourtListener有其他MCP服务器,但它们都使用传统的仅关键字搜索。
主要优势:
- 语义搜索:使用合法域嵌入的自然语言查询
- 混合搜索:将语义理解与所需关键字相结合
- 引文验证:验证法律引用以防止人工智能幻觉
- 全面覆盖12个工具,涵盖900多万个案件,16000多名法官,3353个法院
- 生产就绪:内置了适当的错误处理、速率限制和异步操作
任务:由开发 保卫残疾人 支持民权诉讼,并通过人工智能工具使法律研究更容易获得。
特性
搜索功能
- 语义搜索:使用CourtListener的向量嵌入进行自然语言判例法搜索
- 关键字搜索:布尔运算符、字段化查询和通配符(and、OR、NOT、短语)
- 混合搜索:将语义理解与所需关键字相结合,以提高准确性
- 引文验证:根据1800多万份案件记录验证法律引用
研究工具
- 案例检索:完整的案例元数据、意见文本和备审案件信息
- 法官数据库:搜索16000多名联邦和州法官的简历
- 口头辩论:访问330多万分钟的口头辩论录音
- 法庭信息:浏览和搜索所有司法管辖区的3353个法院
需求
- Python 3.10或更高版本(推荐3.12)
- CourtListener API密钥(在这里免费拿一个)
- MCP兼容客户端(用Claude Code和OpenCode测试)
安装
快速开始
# Clone the repository
git clone https://github.com/DefendTheDisabled/courtlistener-mcp.git
cd courtlistener-mcp
# Install dependencies
pip install -e .
配置
-
复制示例环境文件:
cp .env.example .env -
编辑
.env并添加您的CourtListener API密钥:COURTLISTENER_API_KEY=your_api_token_here获取您的免费API密钥:https://www.courtlistener.com/help/api/rest/
用法
此服务器当前支持 STDIO传输 对于本地MCP客户。未来的版本可能包括基于web的AI平台远程访问的HTTP传输。
开源代码
使用CLI(推荐):
opencode mcp add
按照提示操作:
- 服务器名称:
courtlistener - 类型:
local - 命令:
python - Args:
/absolute/path/to/courtlistener-mcp/src/server.py
手动配置:
添加到您的OpenCode配置(~/.config/opencode/opencode.json 全球,或 opencode.json 在项目根目录中):
{
"mcp": {
"courtlistener": {
"type": "local",
"command": ["python", "/absolute/path/to/courtlistener-mcp/src/server.py"],
"enabled": true
}
}
}
笔记:
- 使用绝对路径(例如。,
C:/Users/YourName/MCP/courtlistener/src/server.py在Windows上) - 您可以安装到您选择的任何目录
- 这
.env服务器目录中的文件将自动加载 - 看 OpenCode MCP文档 详情请见
克劳德代码
使用CLI:
claude mcp add courtlistener python /absolute/path/to/courtlistener-mcp/src/server.py
手动配置:
编辑 ~/.claude/settings.json:
{
"mcpServers": {
"courtlistener": {
"command": "python",
"args": ["/absolute/path/to/courtlistener-mcp/src/server.py"]
}
}
}
笔记:
- 使用绝对路径
- 这
.env服务器目录中的文件将自动加载
其他MCP客户端
此服务器使用STDIO传输并遵循 MCP规范.
电流限制:仅限本地客户端(在您的系统上作为子进程运行)。
未来计划:我们计划开发一个HTTP传输版本,该版本可以通过基于网络的人工智能平台(Claude web、ChatGPT等)远程访问,同时保持安全性和适当的身份验证。
可用工具
搜索工具(4)
| 工具 | 描述 | 用例 |
|---|---|---|
courtlistener_search_cases_semantic |
自然语言案例搜索 | “查找被剥夺医疗服务的囚犯的案例” |
courtlistener_search_cases_keyword |
布尔/字段搜索 | "deliberate indifference" AND prison |
courtlistener_search_cases_hybrid |
语义+必需关键字 | 两者兼而有之:上下文+精度 |
courtlistener_verify_citation |
验证引用 | 验证“429 U.S.97”是否存在并获取详细信息 |
检索工具(4)
| 工具 | 说明 |
|---|---|
courtlistener_get_case |
按集群ID获取完整案例元数据 |
courtlistener_get_opinion |
获取带有引文的完整意见文本 |
courtlistener_get_docket |
获取案卷信息和归档历史记录 |
courtlistener_get_citing_cases |
查找所有引用特定意见的案例 |
研究工具(4)
| 工具 | 说明 |
|---|---|
courtlistener_search_judges |
按姓名、法院或任命信息搜索法官 |
courtlistener_search_oral_arguments |
按案例查找口头辩论录音 |
courtlistener_list_courts |
列出数据库中的所有法院 |
courtlistener_get_court_info |
获取特定法院的详细信息 |
总计:12个工具 提供对CourtListener法律数据库的全面访问。
查询示例
语义搜索(自然语言)
Query: "prisoners denied medical treatment for serious conditions"
返回与第八修正案故意漠视声明语义相关的案例,即使它们没有使用这些确切的术语。
关键字搜索(布尔运算符)
Query: "deliberate indifference" AND prison AND medical
Court: ca9 (Ninth Circuit)
Date Range: 2020-2024
精确的布尔搜索和字段过滤,用于有针对性的研究。
混合搜索(两者兼而有之)
Query: "prison conditions and medical care violations"
Required Terms: ["Eighth Amendment", "deliberate indifference"]
对上下文的语义理解+保证包含特定的法律术语。
引文验证
Text: "In Estelle v. Gamble, 429 U.S. 97 (1976), the Court held..."
验证引文是否存在,返回完整的案例元数据,并提供CourtListener URL。
法官研究
Query: "Sotomayor"
返回传记数据、任命历史、教育和政治派别。
查找引用案例
Opinion ID: 109561 (Estelle v. Gamble)
返回引用此意见的所有后续案件,这对于检查案件是否仍然是好法律至关重要。
速率限制
CourtListener提供 每小时5000个API请求 每个经过身份验证的用户。服务器优雅地处理速率限制错误,并提供清晰的错误消息。
响应格式
所有工具都支持两种输出格式:
- 标记语言 (默认):对话使用的人类可读格式
- JSON:用于程序化处理的结构化数据
使用指定格式 response_format 参数。
故障排除
“找不到API密钥”错误
确保你的 .env 文件与位于同一目录中 server.py 并且包含:
COURTLISTENER_API_KEY=your_actual_key_here
服务器未加载Claude代码
- 检查您是否在MCP配置中使用了绝对路径
- 验证Python是否在您的PATH中:
python --version - 手动测试服务器:
python /path/to/server.py - 检查克劳德代码日志中的启动错误
“超出速率限制”错误
您已达到每小时5000个请求的限制。等待一个小时或使用其他API密钥进行测试。
启动时间慢
如果服务器需要30+秒才能启动:
- 禁用Python安装和项目目录的防病毒扫描
- 这通常是由Windows上的实时恶意软件扫描引起的
未找到引文
CourtListener有1800多万次引用,但可能没有最近的案例或未发表的意见。尝试:
- 检查引文格式(例如,“429 U.S.97”而不是“429 US 97”)
- 如果你没有特定的引用,请改用语义搜索
- 验证案例是否存在 courtlister.com
发展
运行测试
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/
代码格式化
# Format code
black src/
# Sort imports
isort src/
项目结构
courtlistener-mcp/
├── src/
│ ├── __init__.py
│ ├── server.py # FastMCP server with tool registration
│ ├── config.py # Environment configuration
│ └── api_client.py # CourtListener API wrapper
├── tests/
│ └── __init__.py # Test suite
├── .env.example # Environment template
├── .gitignore
├── pyproject.toml # Dependencies and metadata
├── README.md
└── LICENSE
技术栈
- MCP框架: FastMCP 2.x
- HTTP客户端: httpx (与连接池异步)
- 验证: 派丹蒂克 2.x
- 配置: python dotenv
贡献
欢迎投稿!请参阅 贡献.md 作为指导方针。
需要帮助的领域:
- 附加测试覆盖率
- 性能优化
- 文档改进
- Bug报告和修复
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
致谢
相关项目
支持
- 问题:请通过以下方式报告错误和功能请求 GitHub问题
- CourtListener API:有关API相关问题,请参阅 CourtListener的帮助文档
- MCP协议:有关MCP的具体问题,请参阅 MCP文件