法律工作流自动化服务器

一个基于模型上下文协议(MCP)的法律工作流自动化服务器,提供案例检索、法规分析、引用验证、合同条款比较和简报构建等功能,适用于法律研究和辅助工作。

  • by agentic-ops
  • Python
  • 本地部署
  • 39 星标
  • 更新于
在 GitHub 查看 agentic-ops/legal-mcp

使用说明

法律MCP服务器——研究、法律助理和工作流自动化

A. 模型上下文协议 (MCP)服务器 结构化的法律工作流程。这 合法MCP服务器 提供工具、资源, 以及先例检索、法规分析、引文验证的提示, 合同条款比较,并指导脚手架搭建。生产模式为 默认设置:禁用捆绑的示例法律内容,而禁用真实文档 工具和可选的在线法律数据库仍然可用。

此服务器提供法律工作流增强,而不是法律建议。 它 并不能取代律师的审查和判断。

  • 状态: V1——已实施并测试。
  • 运输: stdio、SSE和流式HTTP(通过FastMCP)。
  • 运行时间: Python 3.10+和官方 mcp SDK。

目录


数据流和隐私边界

理解 数据流向何处 在将此服务器连接到之前,这是必不可少的 AI助手或实现实时集成。下图显示了 典型工作流中涉及三个独立的信任边界。

flowchart LR
  user[User]
  aiClient[AI Assistant]
  inference[Inference Provider]
  mcpServer[Legal MCP Server]
  localData[Real local files]
  demoData[Opt-in demo content]
  courtlistener[CourtListener / RECAP]
  pacer[PACER]

  user -->|"prompts and documents"| aiClient
  aiClient -->|"full conversation context"| inference
  aiClient <-->|"MCP tool calls and JSON responses"| mcpServer
  mcpServer -->|"local processing"| localData
  mcpServer -.->|"explicit demo mode"| demoData
  mcpServer -.->|"opt-in, free"| courtlistener
  mcpServer -.->|"opt-in, billable"| pacer
边界 跨越边界的内容 默认行为 隐私说明
You → AI助手 提示、上传的文件、粘贴到聊天中的工具结果 使用AI客户端时始终处于活动状态 您的推理提供者的ToS控制保留、培训和权限,而不是此服务器
AI助手→ MCP服务器 工具参数(文件路径、查询、合约ID)和JSON响应 本地传输(计算机上的stdio/SSE/HTTP) 工具调用在本地进行审计记录(utils.audit);除非您公开服务器,否则响应将保留在您的网络上
MCP服务器→ 外部数据库 向CourtListener或PACER搜索查询 默认情况下已禁用 仅在需要时启用;PACER可能会产生费用(见下文)

关键要点: 此MCP服务器通过以下方式脱机执行本地文档工作流 违约。它不会公开捆绑的样本案例、法规或合同 除非 LEGAL_MCP_DEMO_MODE=true 已明确设置。 在大多数设置中,最高的隐私风险是 推理服务提供商 (OpenAI, Anthropic、谷歌、OpenRouter等)收到您的完整提示上下文-- 包括这些工具返回的摘录。看 AI代理隐私考虑 为了 供应商特定指导。


⚠️ PACER和付费数据库费用(先阅读)

如果您将此MCP(或使用它的AI助手)连接到PACER或其他付费设备 法律数据库,您负责您的所有费用 账户 PACER按每页、每份文档或每次搜索计费。AI代理可以 在几分钟内发出许多请求;在现实世界中进行短暂的测试(约10分钟) 代理会话几乎耗尽了标准PACER帐户的 每季度30美元 免除费用。

为了保护您免受意外费用的影响, 此服务器中的每个实时集成都是 默认情况下禁用 并且必须使用功能标志明确启用,并且 凭据(请参见 实时集成). 更喜欢免费的 法庭听众/RECAP 尽可能通过PACER进行来源。

有关PACER官方计费规则,请参阅 pacer.gov.


存储库结构

文件夹 用途
tools/ MCP工具实施(8个类别的27个工具)
resources/ MCP资源端点(legal:// URI)
prompts/ 工作流提示模板(8个提示)
data/ 离线JSON种子数据(案例、法规、合同、模板、引用)
integrations/ 可选的实时集成(CourtListener/RECAP、PACER)-默认禁用
tests/ pytest测试套件(单元+集成)
.agents/ 与供应商无关的代理技能(法律mcp工具包)

🚀 快速开始

# 1. Install dependencies (uses your user site-packages; a venv also works)
pip install -r requirements.txt

# 2. Run the server (SSE transport on http://127.0.0.1:8000/sse by default)
python main.py

# 3. (Optional) Explore it in the MCP Inspector
npx @modelcontextprotocol/inspector
#    In the Inspector: Transport = SSE, URL = http://127.0.0.1:8000/sse, Connect.

运行不同的运输工具:

python main.py --transport stdio            # for Claude Desktop / CLI clients
python main.py --transport streamable-http  # modern HTTP transport
python main.py --transport sse --port 9000  # custom port

所有标志也从环境变量中读取: MCP_TRANSPORT, HOST, PORT, LOG_LEVEL.

可选演示模式

默认情况下,捆绑的案例、法规和样本合同被禁用。使用 用于演示或测试:

export LEGAL_MCP_DEMO_MODE=true
python main.py

启动时,服务器会发出警告,每个演示导出的有效负载都会开始 与 warning 和 data_mode: "demo"。演示案例匹配不被引用 验证,不得作为真实或当前的法律权威。

直接与MCP CLI/Inspector一起使用

服务器公开了一个模块级 mcp 对象,所以您可以用 MCP-CLI:

mcp dev main.py:mcp     # launches the Inspector wired to this server
mcp run main.py:mcp     # runs the server via the CLI

🧰 能力

工具(27)

类别 工具 目的
研究 search_precedents 对本地案例进行关键字排名的先例搜索
研究 search_case_law 具有相关性排名和摘要的判例法搜索
研究 extract_statute 具有可选立法背景的法规文本
研究 research_legal_issue 跨当地案例、法规和法院听众的多源研究
引文 validate_citation 验证结构和报告格式;不确立存在或良好的法律地位
引文 normalize_citation 规范间距+蓝皮书风格缩写
引文 check_demo_database 检查引文是否出现在显式启用的演示案例数据中
合同 compare_contracts 条款级别因风险标志而异
合同 analyze_clauses 基于规则的条款风险分析;包括 missing_clauses 全合同运行
合同 extract_clauses 模板筛选子句提取
合同 suggest_clause_alternatives 为风险条款精心设计的替代措辞
合同 generate_negotiation_guide 根据条款接受/协商/拒绝指南,使用回退语言和 missing_clauses
合同 deep_analyze_clause 关键字启发式加上可选的MCP LLM采样,用于更深入的推理(当客户端缺乏采样支持时,会回退)
文件 analyze_document 房地产风险分析 .docx / .txt 文件夹;optional contract_type 使能够 missing_clauses
文件 compare_documents 实条款级差异 .docx / .txt 文件
文件 export_analysis_report 导出格式化 .docx 风险报告
文件 extract_contract_metadata 将各方、日期、适用法律、期限、责任上限和付款条件提取为结构化JSON
特权 check_privilege_risk 评估潜在特权文档的人工智能路由风险;参考文献 赫普纳 美国律师协会规则1.6
简报 generate_brief_outline 按案例类型从简要框架中概述
简报 create_argument_structure IRAC风格的论证支架
简报 generate_issue_statement 基于事实+法律的问题陈述框架
分析队列 queue_document_analysis 排队进行本地人工智能风险分析;返回作业ID
分析队列 get_analysis_status 检查排队分析作业的状态(排队/完成/错误)
分析队列 get_analysis_result 检索作业的已完成分析结果
分析队列 list_analysis_jobs 列出所有带有状态和时间戳的作业
集成 integration_status 报告已启用/配置的实时源
集成 search_live_case_law 查询法庭监听员/RECAP或PACER(启用时)

演示模式包括 13个合同模板样本 涵盖新发展区、管理服务区、, DPA、HIPAA BAA、使用条款、隐私政策、顾问协议,加利福尼亚州 录取通知书、邮寄资金安全和Cookie通知。

资源

静态:

  • legal://server-config --启用的工具类别和功能标志环境变量名称(始终可用)
  • legal://case-database --先例指数
  • legal://statute-library --法定材料指数
  • legal://contract-templates --合同/模板索引
  • legal://brief-frameworks --简要大纲模板
  • legal://citation-standards --记者+蓝皮书参考数据
  • legal://integrations --实时集成状态(功能标志/config)

动态模板:

  • legal://case/{case_id}/analysis
  • legal://statute/{statute_id}/context
  • legal://contract/{contract_id}/differ
  • legal://brief/{brief_id}/outline

提示(8)

precedent_analysis, statutory_interpretation, brief_construction, argument_development, contract_review, clause_comparison, citation_validation, authority_integration.

看 WORKFLOW_EXAMPLES.md 用于端到端工作流 演练。


功能标志(工具类别)

每个工具类别都是 默认启用.设置a LEGAL_MCP_ENABLE_* 环境变量 false 在启动服务器以禁用 整个类别——其工具和匹配资源将不会被注册。 没有硬地板:禁用每个类别会导致服务器为零 工具(在生产中避免这种情况)。

随时通过常开资源检查当前状态 legal://server-config.

类别 环境变量 它控制什么
研究 LEGAL_MCP_ENABLE_RESEARCH search_*, extract_statute, research_legal_issue;案件/法规资源
引文 LEGAL_MCP_ENABLE_CITATION validate_citation, normalize_citation, check_demo_database
合同 LEGAL_MCP_ENABLE_CONTRACT 合同工具包括 deep_analyze_clause;合同资源
文件 LEGAL_MCP_ENABLE_DOCUMENT analyze_document, compare_documents, export_analysis_report, extract_contract_metadata
特权 LEGAL_MCP_ENABLE_PRIVILEGE check_privilege_risk
简报 LEGAL_MCP_ENABLE_BRIEF 简短的工具;简要框架资源
分析队列 LEGAL_MCP_ENABLE_ANALYSIS_QUEUE queue_document_analysis, get_analysis_status, get_analysis_result, list_analysis_jobs
集成 LEGAL_MCP_ENABLE_INTEGRATIONS integration_status, search_live_case_law;整合资源

示例(仅禁用本地分析队列):

export LEGAL_MCP_ENABLE_ANALYSIS_QUEUE=false
python main.py

看 .env.example 用于复制粘贴模板,包括实时模板 集成证书。

LEGAL_MCP_DEMO_MODE 与类别标志分开,默认为 false. 关闭演示模式后,依赖种子的工具和资源仍然可以被发现,但 返回 error: "demo_data_disabled"他们从不默默地询问实时消息来源。

1.1.0安全升级

  • 捆绑的案例、法规和合同样本现在要求 LEGAL_MCP_DEMO_MODE=true.
  • verify_citation_integrity 已删除。使用 check_demo_database 仅限 演示查找;它的领域是 found_in_demo_database 和 matched_demo_case.
  • validate_citation 仅检查引文结构和报告格式。 这并不能证明案件存在或仍然是一部好法律。

注意 deep_analyze_clause: 此工具使用MCP sampling/createMessage 向关联客户的法学硕士询问更深层次的条款 推理。大多数MCP客户端(包括Cursor和Claude Desktop)尚未 宣传采样支持——在这些环境中,该工具返回相同的结果 关键字启发式算法 analyze_clauses 加上注释,而不是错误。


🔌 实时集成(PACER和CourtListener/RECAP)

实时法律数据库 默认情况下为可选和禁用。每个都是 由a控制 功能开关 加 API证书,全部通过以下方式提供 环境变量。随时检查当前状态:

# via the tool
search_live_case_law / integration_status
# or the resource
legal://integrations

integration_status 和那个 legal://integrations 仅返回资源 布尔值和非敏感元数据-- 凭证永远不会回显.

法庭听众/RECAP(免费法律项目)——免费,优先

CourtListener公开了一个免费的、有费率限制的 REST API (v4) 这也服务于 RECAP存档 PACER文件。身份验证是 一 Authorization: Token <token> 头球

变量 默认值 描述
COURTLISTENER_ENABLED false 启用集成的功能标志
COURTLISTENER_API_TOKEN (未设置) 来自您的CourtListener个人资料的令牌
COURTLISTENER_BASE_URL https://www.courtlistener.com/api/rest/v4 测试覆盖
export COURTLISTENER_ENABLED=true
export COURTLISTENER_API_TOKEN="your-token-here"   # https://www.courtlistener.com/profile/api/
python main.py

PACER(联邦法院记录)-已付款,默认已付清

PACER使用在 PACER认证API用户指南:

  1. 验证 — POST {auth}/services/cso-auth 与你的 loginId 和 password (以及可选的客户端代码/TOTP密码)。返回a nextGenCSO 令牌。
  2. 搜索 --重复使用 nextGenCSO 令牌作为PACER的cookie 案例定位器(PCL)API。

根据PACER指南,代币为 重复使用 跨请求(客户端缓存 它它不会在每次呼叫时重新进行身份验证。

变量 默认值 描述
PACER_ENABLED false 启用集成的功能标志
PACER_ENVIRONMENT qa qa (非计费测试)或 production (可计费)
PACER_LOGIN_ID (未设置) PACER用户名
PACER_PASSWORD (未设置) PACER密码
PACER_CLIENT_CODE (未设置) 可选客户/账单代码
PACER_OTP_SECRET (未设置) 如果启用2FA,则可选base32 TOTP机密
export PACER_ENABLED=true
export PACER_ENVIRONMENT=qa          # start with the non-billable QA env
export PACER_LOGIN_ID="your-username"
export PACER_PASSWORD="your-password"
python main.py

注册a 非计费QA账户 在 qa-pacer.uscourts.gov 安全测试。 生产账目是可计费的。看 开发者资源.

复制 .env.example 到 .env 用于所有设置的模板。


🐳 Docker(可选)

# Build and run over SSE at http://localhost:8000/sse
docker compose up --build

通过导出变量(或使用 .env 文件旁边 docker-compose.yml)之前 docker compose up:

COURTLISTENER_ENABLED=true COURTLISTENER_API_TOKEN=... docker compose up --build

或者使用普通的Docker:

docker build -t legal-mcp .
docker run --rm -p 8000:8000 \
  -e COURTLISTENER_ENABLED=true -e COURTLISTENER_API_TOKEN=... \
  legal-mcp

🧩 用作代理技能(Claude、Cursor、Codex等)

MCP和 代理技能 是互补的,不是 竞争: MCP是执行层 (该服务器公开的27个工具), 然而 技能是方法论层面 --便携式 SKILL.md 文件 教代理人 哪个 工具链, 以什么顺序,以及 该做什么 表面给用户 对于给定的任务。单独连接MCP服务器可以 没有剧本的代理工具;技巧就是剧本。代理技能 是一个开放的、供应商中立的标准,也是一样的 SKILL.md 作品不变 跨Claude Code、Cursor、Codex CLI、Gemini CLI和其他兼容 代理人。

该回购以 .agents/skills/legal-mcp-toolkit/SKILL.md — 新兴的项目级技能跨代理惯例(公认 原生支持Cursor、Codex CLI和Gemini CLI;Claude Code可以通过以下方式加载它 它的技能安装程序,或者您可以将其符号链接/复制到 .claude/skills/).它 编码八种工作流模式(合同风险分类、谈判准备、, 元数据查找、特权安全人工智能审查、法律研究、简报起草、, 引用清理和批处理分析)作为工具调用序列,因此是一个代理 连接此服务器后,您知道如何组合工具,而不是猜测。

要使用它:

  • 自动地,如果您克隆或分叉此符合repo的代理 在下面发现项目技能 .agents/skills/ (或他们自己 供应商特定路径),供在存储库中工作的任何人使用。
  • 在另一个项目中,复制 legal-mcp-toolkit/ 目录到那个 项目的 .agents/skills/ (或您的个人 ~/.agents/skills/) 在连接此MCP服务器的同时,指南也会与您一起传播。

看 代理技能规范 对于完全开放的标准,这项技能是遵循的。


🖥 建立在法律mcp之上——法律终端(展示)

想看看这个MCP服务器上的完整产品是什么样子的吗? 法律 终端 是一个参考 展示 应用程序——彭博风格、键盘优先的合法工作站 有两个前端(一个React web终端和一个Python TUI)调用相同的命令 此服务器公开了27个工具。

现场演示 legal terminal.up.railway.app --默认情况下以模拟模式运行;无需后端
来源 github/genego-io/legal-terminal --查看以进行评估;专有许可证(非AGPL)

演示是故意的 模拟就绪:面板与夹具脱机工作 数据,以便您可以立即探索用户体验。切换 活着 在状态栏中 (或接线 LiveClient 在仓库中)连接到正在运行的 legal-mcp 通过SSE执行实例,并执行实际的工具调用。

它展示了什么

  • 多面板工作流程 --先例检索(PREC),法规查看器 (STAT),引用控制台(CITE),合同工作台(CTRX),文件 分析器(DOCA),特权检查(PRIV),简短的建设者(BRF),分析 排队(JOBS),集成状态(LIVE),以及更多——每个都映射到MCP 工具名称。
  • 律师助理聊天(F1) --会话层覆盖 research_legal_issue, validate_citation, generate_brief_outline,以及 相关工具。
  • UI中的代理技能 --the WKFL 面板表面相同 legal-mcp-toolkit 工作流 剧本作为可运行的清单。
  • 隐私姿态 — CONF (保密模式)和 PRIV 面板说明 通过路由敏感事项数据 check_privilege_risk 仅限本地 推理选项。
  • 键盘优先用户体验 --Ctrl+K命令面板,助记符命令栏 (PREC breach of contract, CITE 2022 Cal.App.4th 1234),以及F-key模块 快捷方式——一种可以一次性构建的以密度为中心的界面工具 在MCP之后标准化。

Legal Terminal作为 展示 (不是的子模块 此回购)。克隆它以研究客户端架构、面板设计和模拟/直播 客户模式;叉子 这 repo来扩展MCP服务器本身。


🍴 分叉和构建自己的(LLM友好型)

该项目旨在进行分叉和扩展,包括人工智能编码 助理:

  • 可预测的结构。 工具已上线 tools/,资源在 resources/,提示中 prompts/,集成在 integrations/,以及 所有种子数据 data/每个模块都暴露一个 register_* 功能和is 集中布线(tools/__init__.py, resources/__init__.py, prompts/__init__.py).
  • 默认情况下为确定性+离线。 没有隐藏的网络呼叫;活着 来源是可选择的。
  • AGENTS.md 记录如何运行、测试和扩展 服务器,以便代理可以快速浏览仓库。

添加新工具

# tools/my_tools.py
import json
from utils import audit, get_data_manager

def register_my_tools(mcp):
    data = get_data_manager()

    @mcp.tool()
    def my_tool(param: str) -> str:
        """Describe the legal intent clearly."""
        audit("my_tool", param=param)
        return json.dumps({"result": param}, indent=2)

然后打电话 register_my_tools(mcp) 来自 tools/__init__.py资源和 提示遵循相同的模式 @mcp.resource(uri) 和 @mcp.prompt().


🏗️ 建筑学

legal-mcp/
├── main.py                 # FastMCP server entry point (exposes `mcp`)
├── utils.py                # LegalDataManager + CitationParser + audit log
├── tools/                  # MCP tools (research, citation, contract, brief, integrations)
├── resources/              # MCP resources (case, statute, contract, brief, integrations)
├── prompts/                # MCP prompts (research, drafting, analysis, argument)
├── integrations/           # Optional live sources (config, courtlistener, pacer)
├── data/                   # Seed data (cases, statutes, contracts, templates, citations)
├── tests/                  # Unit + integration tests
├── Dockerfile              # Optional container image
├── docker-compose.yml      # Optional compose setup
└── requirements.txt        # Dependencies

服务器初始化 FastMCP 实例,注册所有工具、资源, 并提示、记录审计跟踪并运行所选传输。


🧪 测试、起毛和类型

pip install -r requirements.txt

pytest                 # run the full unit + integration suite
pytest --cov=. --cov-report=term-missing

python -m black .      # format
python -m flake8 .     # lint
python -m mypy .       # type-check

通过集成测试练习工具、资源和提示 内存中的FastMCP API。实时集成已通过 httpx.MockTransport 所以 没有真正的网络呼叫 制造。

如果 pytest, black等。脚本不在您的 PATH 在一段 pip install --user,通过以下方式调用它们 python -m <tool> 如上所示。


🔐 法律和合规说明

  • 审计跟踪。 每次工具/资源调用都会生成一个结构化的审计日志 入口(utils.audit).
  • 确定性核心。 本地数据操作是可重复的,不会 隐藏的网络呼叫。
  • 选择加入外部数据。 PACER和CourtListener被禁用,直到您 使他们能够;PACER可能会产生费用。
  • 不是法律建议。 输出是律师审查的脚手架。

🔒 AI代理隐私考虑

看 数据流和隐私边界 对于一个 数据在典型设置中移动位置的可视化概述。

当AI助手(Claude、GPT-4、Gemini等)调用此MCP服务器时, 这个 默认情况下,MCP服务器本身不进行外部调用 --工具响应 保持在服务器和客户端之间。然而 AI代理自己 推理服务提供商 接收您的完整提示上下文,其中可能包括 您传递给这些工具的文档和查询的摘录。

法律文件——尤其是特权通信、客户信息、, 以及工作成果——根据美国律师协会示范规则1.6承担保密义务 以及等效的州规则。进入 美国诉Heppner案 (纽约州证券交易委员会,2月)。 2026年),一家法院裁定,消费者人工智能输出 没有特权 因为 用户没有合理的保密期望 供应商的标准条款。

根据数据敏感性推荐的姿势

数据类 推荐的AI推理方法
律师-客户特权/工作产品 自托管模型(Ollama,vLLM)或Azure OpenAI/Vertex AI,具有零数据保留+BAA/DPA+区域固定。永远不要使用免费的层API。
机密但非特权 企业云API,无培训合同,修改滥用监控
公共记录/非敏感研究 标准管理云API可接受,并经过标准审查

供应商备注

自托管(最强控制) 在本地运行一个开放式重量模型(Llama、Mistral、Gemma) Ollama 或 vLLM. 没有数据离开你的机器。Ollama默认绑定到环回。合适的 适用于需要严格保密的亲诉讼当事人和预算有限的公司 没有企业云合同。

Azure OpenAI(微软Foundry) 默认情况下,提示不会与OpenAI共享或用于训练。区域 DataZone部署锁定了处理地理位置。为了实现零数据保留, 通过申请修改滥用监测 限制访问程序. HIPAA BAA可用。 隐私文档.

谷歌顶点人工智能/模型花园 根据谷歌的服务特定条款,没有默认培训。地区居住 可配置;仅在美国边界使用保证工作量。避开谷歌 搜索停飞(强制保留30天)。HIPAA BAA可用。 数据治理文档. 您还可以在自己的GCP内部署Model Garden中的开放式重量模型 项目,因此推理完全在VPC内运行。

开放路由器 路由层——提示总是转发给上游推理 供应商。使用 ZDR路由 ("provider": {"zdr": true}), data_collection: "deny",以及欧盟企业 如果您需要区域内处理,请选择路由。相比之下,仍然增加了路由跳数 指导企业租赁;将特权内容视为更高风险 没有企业合同控制。

法律文件代理人的关键做法

  • 最小化有效载荷 --在云端之前编辑名称、SSN、帐号 尽可能推断
  • 审核谁询问什么 --MCP服务器的审核日志(utils.audit) 记录每次工具调用;将其与推理提供者的日志记录配对
  • 律师指导的工作流程 --人工智能辅助研究的文件 由律师指导(与特权分析职位相关-赫普纳)
  • 阅读供应商ToS 在路由客户事务数据之前——ABA意见512 需要它
  • 独立的环境 -永远不要使用dev/ssandbox API密钥(可能缺少 ZDR)关于生产资料的数据

这个服务器是一个研究和分析的脚手架。它不提供法律 建议,并不代替律师审查。关于以下问题 在法律实践中使用道德人工智能,咨询您所在司法管辖区的律师道德 指导和 美国律师协会正式意见512(PDF) (2024).

📖 进一步阅读

💬 集成和开发支持

需要帮助将此合法MCP服务器集成到您的实践工作流程中, 启用PACER或CourtListener/RECAP适配器,或构建自定义法律MCP 工具和扩展?专业集成和开发支持 可用。

我们很乐意为您提供部署、定制集成和量身定制的法律服务 工作流自动化。

📝 许可证

GNU Affero通用公共许可证v3.0(AGPL-3.0).

免费使用、分叉和自托管。如果您将修改后的版本作为网络运行 AGPL-3.0要求您发布更改。那些组织 需要将修改保密,请联系 edwin@genego.io 申请商业许可证。