巴西法院通知服务器

一个生产就绪的MCP服务器,为标准化的巴西电子司法日记(DJEN)数据提供访问,用于LLM代理和AI应用。

  • by PdroBrandao
  • Python
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 PdroBrandao/mcp-djen-server

使用说明

MCP DJEN服务器

面向法学硕士的巴西智能法庭通知

一个生产就绪的MCP(模型上下文协议)服务器,用于标准化LLM代理和AI应用程序对巴西电子司法日记(DJEN)数据的访问。

🎯 现实世界影响

此服务器为 亲密 Pro 系统,处理 566条通知 (测试期)包括:

  • 准确率86.7% 在综合回归测试(v1.5)中
  • <4秒 平均响应时间
  • 非常积极的投资回报率 法律团队
  • 99.5%API成功率 生产中
  • $0.45律师/月 运营成本

🌍 为什么国际公司关心

巴西的法律市场=28B美元的机会(IBGE 2025)。 我们的协议解决了以下司法数据访问问题:

  • LegalTechs扩展到拉丁美洲 -用于区域扩展的标准化API
  • 人工智能团队自动化合规 -生产就绪的法律数据集成
  • 全球法律自动化 -其他司法管辖区的参考实施

国际用例:

  • 墨西哥:AMLO法庭整合
  • 葡萄牙:STJ里斯本数据管道
  • 阿根廷:波德司法联邦一体化

📱 WhatsApp集成愿景

最终目标是让律师能够使用自然语言通过WhatsApp查询他们的法庭通知:

“今天的传票是什么?” → LLM → MCP服务器→ 结构化响应

这个MCP服务器是实现这一愿景的基础设施层。

🏗️ 建筑

流量:

  1. 法学硕士代理人要求法院通知
  2. MCP服务器查询DJEN API
  3. 数据被解析和标准化
  4. 结构化JSON返回LLM

🚀 快速开始

先决条件

  • Python 3.11+
  • Docker(可选)
  • Git

地方发展设置

# Clone repository
git clone https://github.com/PdroBrandao/mcp-djen-server.git
cd mcp-djen-server

# Create virtual environment
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Set environment variables
cp .env.example .env
# Edit .env with your configuration

# Run server
python3 -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

Docker设置

# Build and run with Docker
docker-compose up --build

# Or build manually
docker build -t mcp-djen-server .
docker run -p 8000:8000 mcp-djen-server

环境变量

# Server Configuration
PORT=8000
HOST=0.0.0.0
DEBUG=false

# DJEN API Configuration
DJEN_API_BASE_URL=https://comunicaapi.pje.jus.br/api/v1/comunicacao
DJEN_API_TIMEOUT=30

# Rate Limiting
RATE_LIMIT_PER_MINUTE=100
RATE_LIMIT_PER_HOUR=1000

# Logging
LOG_LEVEL=INFO
LOG_FILE=logs/app.log

# Security
CORS_ORIGINS=*
API_KEY_REQUIRED=false

🧪 测试

自动化测试

# Run all tests
python3 test_server.py

# Test specific endpoints
curl -X GET "http://localhost:8000/health"
curl -X GET "http://localhost:8000/intimations?name=PEDRO%20BRAND%C3%83O&date_start=2025-08-01&date_end=2025-08-06"

手动测试

# Health check
curl http://localhost:8000/health

# Get notifications
curl "http://localhost:8000/intimations?name=PEDRO%20BRAND%C3%83O&date_start=2025-08-01&date_end=2025-08-06"

# Get case details
curl http://localhost:8000/intimations/1234567-89.2024.8.13.0001

# Get available courts
curl http://localhost:8000/courts

📚 api参考

认证

目前,API已开放供开发。生产部署应实施:

  • API密钥验证
  • 每位客户的费率限制
  • 请求日志记录和监控

端点

GET/健康

健康检查端点。

答复:

{
  "status": "healthy",
  "timestamp": "2025-08-06T17:48:25.231962",
  "service": "mcp-djen-server"
}

获取/提示

为律师检索法庭通知。

参数:

  • name (必填):律师全名
  • date_start (必填):开始日期(YYYY-MM-DD)
  • date_end (必填):结束日期(YYYY-MM-DD)
  • oab (可选):OAB注册号

答复:

[
  {
    "date": "2025-08-06",
    "court": "TJMG",
    "lawyer_name": "PEDRO BRANDÃO",
    "oab": "123456/MG",
    "case_number": "1234567-89.2024.8.13.0001",
    "type": "TOMAR_CIÊNCIA",
    "summary": "Intimação para ciência de despacho proferido em 05/08/2025",
    "url": "https://www.tjmg.jus.br/djen/123",
    "deadline": "15 days",
    "actions": ["MANIFESTAR_SE", "CALCULAR_PRAZO"]
  }
]

获取/通知/{case_number}

获取特定案例的详细信息。

GET/法院

获取可用法院列表。

🤖 LLM集成示例

OpenAI函数调用

import openai
import requests

# Configure OpenAI
openai.api_key = "your-api-key"

# Define the function
functions = [
    {
        "name": "get_court_notifications",
        "description": "Get court notifications for a lawyer",
        "parameters": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Lawyer's full name"
                },
                "date_start": {
                    "type": "string",
                    "description": "Start date (YYYY-MM-DD)"
                },
                "date_end": {
                    "type": "string",
                    "description": "End date (YYYY-MM-DD)"
                }
            },
            "required": ["name", "date_start", "date_end"]
        }
    }
]

# User query
user_query = "Quais são as intimações do PEDRO BRANDÃO para hoje?"

# Call OpenAI
response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[{"role": "user", "content": user_query}],
    functions=functions,
    function_call="auto"
)

# Extract function call
if response.choices[0].message.function_call:
    function_call = response.choices[0].message.function_call
    
    # Call MCP Server
    mcp_response = requests.get(
        "https://your-mcp-server.railway.app/intimations",
        params=json.loads(function_call.arguments)
    )
    
    notifications = mcp_response.json()
    print(f"Found {len(notifications)} notifications for PEDRO BRANDÃO")

克劳德集成

import anthropic
import requests

client = anthropic.Anthropic(api_key="your-api-key")

# Define tool
tools = [
    {
        "name": "get_court_notifications",
        "description": "Get court notifications for a lawyer",
        "input_schema": {
            "type": "object",
            "properties": {
                "name": {"type": "string"},
                "date_start": {"type": "string"},
                "date_end": {"type": "string"}
            },
            "required": ["name", "date_start", "date_end"]
        }
    }
]

# Call Claude
response = client.messages.create(
    model="claude-3-sonnet-20240229",
    max_tokens=1000,
    messages=[{"role": "user", "content": "Quais são as intimações do PEDRO BRANDÃO para hoje?"}],
    tools=tools
)

📊 数据结构

输入(DJEN API)

{
  "siglaTribunal": "TJMG",
  "texto": "PEDRO BRANDÃO",
  "dataDisponibilizacaoInicio": "2025-08-01",
  "dataDisponibilizacaoFim": "2025-08-06"
}

输出(MCP服务器)

[
  {
    "date": "2025-08-06",
    "court": "TJMG",
    "lawyer_name": "PEDRO BRANDÃO",
    "oab": "123456/MG",
    "case_number": "1234567-89.2024.8.13.0001",
    "type": "TOMAR_CIÊNCIA",
    "summary": "Intimação para ciência de despacho proferido em 05/08/2025",
    "url": "https://www.tjmg.jus.br/djen/123",
    "deadline": "15 days",
    "actions": ["MANIFESTAR_SE", "CALCULAR_PRAZO"]
  }
]

🔧 技术细节

性能指标

  • 响应时间: 平均<4秒
  • 吞吐量: 100个请求/分钟
  • 正常运行时间: 99.9%(产量)
  • 错误率: 0.5%(基于API实际性能)

应对DJEN特定挑战

1.API不稳定性

  • 实际性能: 99.5%的成功率(5287/5288个请求)
  • 响应时间: 平均95ms,99.30%<500ms
  • 回退数据: 模拟发展响应

2.数据格式不一致

  • 稳健解析: 处理各种DJEN格式
  • 数据标准化: 标准化输出结构
  • 错误恢复: 妥善处理格式错误的数据

3.利率限制

  • 智能缓存: 减少API调用
  • 请求批处理: 优化吞吐量
  • 队列管理: 防止压倒性的DJEN

生产注意事项

安全

  • API密钥验证: 生产所需
  • 请求日志记录: 合规性审计跟踪
  • 数据加密: TLS 1.3适用于所有通信
  • 输入消毒: 防止注射攻击

监控

  • 健康检查: 自动化监控
  • 指标收集: 性能跟踪
  • 警报系统: 主动问题检测
  • 日志聚合: 集中化的日志

可扩展性和容错性

  • 水平缩放: 无状态设计支持多个实例
  • 负载平衡: 每天可接收10000多条通知
  • 断路器: DJEN API故障的自动回退
  • 缓存策略: Redis集成实现高吞吐量
  • 数据库扩展: PostgreSQL用于生产工作负载
  • CDN集成: 面向国际用户的全球内容交付

🗺️ Roadmap

第一阶段:核心功能(当前)

  • ✅ 基本DJEN集成
  • ✅ LLM函数调用
  • ✅ 速率限制
  • ✅ 健康检查

第二阶段:生产准备就绪(2025年第四季度)

  • 🔄 真正的DJEN API集成
  • 🔄 高级错误处理
  • 🔄 综合测试
  • 🔄 安全强化

第三阶段:高级功能(2026年第一季度)

  • 📋 多法庭支持
  • 📋 通知过滤
  • 📋 截止日期计算
  • 📋 文档生成

第四阶段:WhatsApp集成(2026年第二季度)

  • 📱 通过WhatsApp进行自然语言查询
  • 🤖 自主法律代理能力
  • 📊 实时通知警报
  • 🔗 CRM和日历集成

第五阶段:生态系统(2026年第三季度)

  • 📋 插件系统
  • 📋 第三方集成
  • 📋 社区贡献
  • 📋 企业特性

🧑‍💼 对未来的展望

中期目标是将该系统转变为巴西领先的法律情报平台,律师可以通过WhatsApp使用自然语言访问案件的全部状态、截止日期和细节。其愿景是发展成为一个自主的法律代理人,具有集成的RAG和自我评估功能,能够在没有人为验证标准通知的情况下以98%以上的准确率运行。

该MCP服务器是实现这一愿景的基础设施,通过标准化LLM代理人对巴西法院数据的访问。

🤝 贡献

我们欢迎捐款!请查看我们的 贡献指南 了解详情。

开发设置

# Fork and clone
git clone https://github.com/your-username/mcp-djen-server.git
cd mcp-djen-server

# Install development dependencies
pip install -r requirements-dev.txt

# Run tests
pytest

# Run linting
flake8 app/
black app/

代码规范

  • 类型提示: 所有功能都需要
  • 文档字符串 : 谷歌风格
  • 测验: 90%+覆盖率
  • Linting: 零警告

💼 业务影响

法律团队

  • 节省时间: 将人工检查从每天30分钟减少到每天3分钟
  • 准确度: 综合回归测试中为86.7%
  • 顺从: 自动化审计跟踪
  • 成本: 仅需0.45美元/律师/月(非常积极的投资回报率)

实际生产数据(2025年6月至7月)

度量 值 周期
平均成本/律师 每月0.45美元 过去30天
总分析 566 测试期
平均代币/分析 5217 每位律师
每次分析成本 $0.0029 平均值

面向AI开发人员

  • 标准化接口: 一致的API设计
  • 生产就绪: 久经考验的可靠性
  • 文档: 综合指南
  • 技术支持: 活跃社区

对于LegalTech公司

  • 集成: 易于LLM集成
  • 定制: 灵活的体系结构
  • 技术支持: 专业咨询
  • 合作伙伴关系: 收入分享机会

📞 联系

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。


内置于❤️ 巴西法律界