法律语义搜索服务器

一个提供AI代理访问CourtListener法律数据库的MCP服务器,具有语义搜索、混合搜索、引用验证和研究工具功能,适用于OpenCode和Claude Code。

  • by DefendTheDisabled
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 DefendTheDisabled/courtlistener-mcp

使用说明

法庭监听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 .

配置

  1. 复制示例环境文件:

    cp .env.example .env
    
  2. 编辑 .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代码

  1. 检查您是否在MCP配置中使用了绝对路径
  2. 验证Python是否在您的PATH中: python --version
  3. 手动测试服务器: python /path/to/server.py
  4. 检查克劳德代码日志中的启动错误

“超出速率限制”错误

您已达到每小时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

技术栈

贡献

欢迎投稿!请参阅 贡献.md 作为指导方针。

需要帮助的领域:

  • 附加测试覆盖率
  • 性能优化
  • 文档改进
  • Bug报告和修复

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

致谢

相关项目

支持